Publisher_消息发布 and Subscriber_消息订阅
创建一个Publisher(n.advertise)
消息发布,发布速度消息给turtle
ros::Publisher turtle_pub;
发布到一个话题上
//发布到话题名:"/turtle1/cmd_vel" 消息缓存数量10
//发布的消息的类型:geometry_msg::Twist
//rostopic list 查看当前有那些话题
turtle_pub=n.advertise<geometry_msg::Twist>("/turtle1/cmd_vel",10);
//定义发布频率 10次每秒
ros::Rate loop_rate(10);
//geometry_msg::Twist变量名:vel_msg
//用定义的发布者变量去发布具体的消息vel_msg(含三轴角速度和线速度)
while(ros::ok()){
geometry_msg::Twist vel_msg;
turtle_pub.publish(vel_msg);
loop_rate.sleep();
}
创建一个Subscriber(n.subscribe)
订阅消息,订阅turtle的速度消息
ros::Subscriber turtle_sub;
发布到一个话题上
//订阅话题名下的消息:"/turtle1/pose" 消息缓存数量10 订阅到后要做什么 callback
//pose上是turtle的姿态消息
turtle_sub=n.subscribe("/turtle1/pose",10 , callback);
//阻塞进程不结束,一直检测"/turtle1/pose"上的消息,调用callback
ros::spin();
callback消息处理
//pose话题下的消息类型:ConstPtr& msg 里面有:msg->x,msg->y;
//节点名:turtlesim 消息内容定义的名字:Pose 变量名:ConstPtr& msg
void posecallback(const turtlesim::Pose::ConstPtr& msg)
浙公网安备 33010602011771号