当前位置 博文首页 > txr152111的博客:12th 自定义msg的使用之消息订阅方(C++)
编写发布订阅实现,要求发布方以10HZ(每秒10次)的频率发布自定义消息,订阅方订阅自定义消息并将消息内容打印输出。
在模型实现中,ROS master 不需要实现,而连接的建立也已经被封装了,需要关注的关键点有三个:发布方、接收方、数据(此处为自定义消息)
流程:
创建文件:
编写内容:
#include<ros/ros.h>
/* #include<std_msgs/String.h> */
#include<plumbing_pub_sub/Person.h> //刚刚自定义的头文件
/*
订阅方:订阅人的消息
1.包含头文件
2.初始化节点
3.创建ros的节点句柄
4.创建订阅者对象
5.编写回调函数,处理订阅的数据
6.spin() ,调用回调函数必须要有这句话
*/
void doPerson(const plumbing_pub_sub::Person::ConstPtr& person )
{
ROS_INFO("订阅人的信息:%s,%d,%.2f",person->name.c_str(),person->age,person->height);
}
int main(int argc,char *argv[])
{
setlocale(LC_ALL,"");
// 2.初始化节点
ros::init(argc,argv,"Person_msgs_sub");
// 3.创建ros的节点句柄
ros::NodeHandle nh;
// 4.创建订阅者对象
ros::Subscriber sub=nh.subscribe("LiaoTian",10,doPerson);
//5.处理订阅的数据
//6.调用spin()函数
ros::spin();
return 0;
}
配置编译文件CMakelist.txt:
编译:Ctrl + Shift +B