您的位置:首页 > 其它

创建ROS消息发布器(publisher)、订阅器(subscriber)

2016-01-13 20:19 253 查看
发布器和订阅器都是可执行文件。对C++语言,我们在.cpp文件中创建,并编译生成可执行文件,

一、发布器:
1、cd到包目录下,然后在src文件夹下创建.cpp文件;
2、.cpp文件包括以下部分:
①包含(include)依赖库,如ros/ros.h、std_msgs/String.h、sstream等
②主函数部分: ros::init(argc,argv,"talker"); // 向ROS系统注册当前节点
ros::NodeHandle n; // 为当前节点定义一个节点句柄

// 向ROS节点网络广播:当前节点要向chatter话题发布消息std_msgs/String,

// 消息缓冲区大小为1000,需要这个消息的可以来和当前节点连接
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter",1000);

ros::Rate loop_rate(10);   // 定义消息发布频率
while(ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "Hello word" ;
msg.data = ss.str();
chatter_pub.publish(msg);   //发布消息
ros::spinOnce();
loop_rate.sleep();      //休眠响应时间
}

二、订阅器:
1、cd到包目录下,然后在src文件夹下创建.cpp文件;
2、.cpp文件包括以下部分:
①包含(include)依赖库,如ros/ros.h、std_msgs/String.h等
②回调函数部分:void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
消息以指针传递,在此函数体内完成对消息的处理
}

③主函数部分: ros::init(argc,argv,"listener");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("chatter",1000,chatterCallback);
ros::spin();

三、CMakeLists.txt文件的设置:
1、添加可执行文件,即add_executable(talker src/talker.cpp);
add_executable(listener src/talker.cpp);

2、添加目标连接库,即target_link_libraries(talker ${catkin_LIBRARIES});
target_link_libraries(listener ${catkin_LIBRARIES});

3、添加对生成的消息文件的依赖项,即add_dependencies(talker beginner_tutorials_generate_messages_cpp);

add_dependencies(listener beginner_tutorials_generate_messages_cpp);

推荐博文:

二叉树相关练习题(C++)

经典排序算法的C++实现


与字符串有关的一些典型问题的C++解法

一些可以用动态规划(DP)算法解决的问题(C++)

排列组合相关笔试面试题(C++)

与概率相关的算法题C++解法(附证明过程)

二分查找的巧妙运用(C++)

位运算在算法题中的使用(C++)

链表相关练习题(C++)

用实例讲解栈和队列(C++)

一些智力题的C++解法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: