ROS学习笔记-创建订阅cmd_vel话题节点

创建工作空间

cd ~
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
catkin_init_workspace    #初始化工作空间
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash    #将工作空间添加到环境变量

创建功能包

cd ~/catkin_ws/src
catkin_create_pkg mytest std_msgs roscpp

创建节点

cd ~/catkin_ws/src/mytest/src
touch subscriber.cpp

订阅者节点cpp

#include<ros/ros.h>
#include<tf/transform_broadcaster.h>
#include<nav_msgs/Odometry.h>
#include<geometry_msgs/Twist.h>
#include<iostream>
 
void callback(const geometry_msgs::Twist& cmd_vel)
{
	ROS_INFO("Received a /cmd_vel message!");
	ROS_INFO("Linear Components:[%f,%f,%f]",cmd_vel.linear.x,cmd_vel.linear.y,cmd_vel.linear.z);
	ROS_INFO("Angular Components:[%f,%f,%f]",cmd_vel.angular.x,cmd_vel.angular.y,cmd_vel.angular.z);
	// Do velocity processing here:  
    // Use the kinematics of your robot to map linear and angular velocities into motor commands  
//    v_l = ...  
//    v_r = ...  
  
    // Then set your wheel speeds (using wheel_left and wheel_right as examples)  
//    wheel_left.set_speed(v_l)  
//    wheel_right.set_speed(v_r) 
}
 
int main(int argc, char** argv)
{
	ros::init(argc, argv, "cmd_vel_listener");
	ros::NodeHandle n;
	ros::Subscriber sub = n.subscribe("cmd_vel", 1000, callback);    //订阅cmd_vel话题
	ros::spin();
 
/*
//http://answers.ros.org/question/129506/subscriber-not-seeing-cmd_vel-messages/
	ros::Rate loop_rate(10);
	while( n.ok() ) 
	{
   		 ros::spin();
	}
*/
	return 1;
}

修改CMakeLists.txt

vim ~/catkin_ws/src/mytest/CMakeLists.txt
在文件末尾添加如下语句
add_executable(subscriber src/node_subscriber.cpp)
target_link_libraries(subscriber ${catkin_LIBRARIES})

编译节点

cd ~/catkin_ws
catkin_make

运行测试节点

打开一个终端

roscore

打开另一个终端

rosrun mytest subscirber

参考资料

https://blog.csdn.net/qq_29022265/article/details/93652199

https://blog.csdn.net/scliu12345/article/details/45741893

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值