ROS学习(四)---利用c++订阅小乌龟速度话题

(1)创建cpp文件

方法一:打开 Visual Studio Code,在功能包名称/src子文件夹上单击鼠标右键,选择 New File 新建一个代码文件。新建的代码文件命名为 turtle_vel_node.cpp。

方法二:在 功能包名称/src中打开终端,确保目录路径为 功能包名称/src,运行下面指令

touch turtle_vel_node.cpp

粘贴下面内容: 

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>

void callback(const geometry_msgs::Twist &cmd_vel)
{
    ROS_INFO("Received a /cmd_vel message!");
    ROS_INFO("Linear Velocity: [%f,%f,%f]",
             cmd_vel.linear.x, cmd_vel.linear.y, cmd_vel.linear.z );
    ROS_INFO("Angular velocity:[%f,%f,%f]",
             cmd_vel.angular.x, cmd_vel.angular.y, cmd_vel.angular.z);
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "turtle_vel_rece_node");
    ros::NodeHandle n;
    ros::Subscriber sub = n.subscribe("/turtle1/cmd_vel", 1000, callback);
    ros::spin();
    return 1;
}

(2)配置编译文件

代码编写完毕,需要将文件名添加到编译文件里才能进行编译。打开你设定功能包的目录下CMakeLists.txt,在文件末尾,为 turtle_vel_node.cpp 添加新的编译规则。内容如下:

add_executable(turtle_vel_node src/turtle_vel_node.cpp)
add_dependencies(turtle_vel_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(turtle_vel_node ${catkin_LIBRARIES})

新建终端,进入ROS的工作空间,然后执行如下指令开始编译

cd ~/catkin_ws/
catkin_make

(3)测试结果

roscore

新建终端,运行 turtlesim 功能包中的 turtlesim_node 节点,打开乌龟窗口。

rosrun turtlesim turtlesim_node

新建终端,在终端中输入以下指令:

rosrun turtle_vel_ctrl_pkg turtle_vel_node

由于 turtle_vel_ctrl_node 节点尚未启动运行,turtle_vel_node 节点处于等待接收速度状态。

新建终端窗口,输入以下指令:

rosrun turtle_vel_ctrl_pkg turtle_vel_ctrl_node

小乌龟以0.1m/s的速度缓慢向前移动。同时可以看到在第3个终端程序中显示从主题“/turtle1/cmd_vel”接收到的小乌龟的运行速度,可用rostopic list查看节点存在情况。

测试结果:

(4)查看节点网络情况

rqt_graph

会弹出一个窗口,显示当前 ROS 里的节点网络情况。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值