ROS系列
第二部分: 消息发布器和订阅器
文章目录
前言
在上一篇简单的程序上进行增加,学习ROS中的消息订阅与发布,实现节点间的通信
具体流程详见以下链接:
https://blog.csdn.net/hltt3838/article/details/107633168
一、发布者、订阅者、话题消息
新建一个功能包:Topic_example
该功能包包含两个节点程序:publish_node.cpp和subscribe_node.cpp
发布节点(publish_node)会从话题(Topic)发布节点,订阅节点(subscribe_node)能够从话题订阅消息。本次消息的传递的内容是String类型的消息,“How are you?”
当自定义话题消息时,也可以有不同类型的数据。
二、具体程序步骤
1.创建功能包
创建一个功能包,名称为:ros_topic。
添加依赖包:
message_generation
std_msgs(ROS标准消息功能包)
roscpp(在ROS中使用C/C++的客户端程序库)
cd ~/Desktop/test/catkin_ws/src
catkin_create_pkg ros_topic message_generation std_msgs roscpp
2.修改功能包配置文件(package.xml)
ROS的必备配置文件package.xml包含了功能包信息的XML文件,包含了描述功能包名称、作者、许可证和依赖包的信息。需要利用编辑器修改文件以匹配当前节点。
本项目无修改。
3.修改构建配置文件(CMakeLists.txt)
ROS的构建系统catkin基本上使用CMake,CMakeLists.txt文件中描述了构建环境,设置了可执行文件的创建、依赖包优先创建、链接创建等。
重点关注以下几点,可能需要修改:
1、依赖包
查看是否完整,构建消息需要的依赖包有:message_generation、std_msgs、roscpp
2、消息声明
声明我们在节点中要使用的.msg文件,假设是MsgSimple.msg
3、设置依赖性的选项
可能会由于std_msg没安装,构建时发生错误,需要generation
4、catkin功能包选项
直接在原有的文件内容上,打开“开关”就行
5、设置包含目录
6、publisher节点和subscriber节点的构建选项
配置可执行文件、目标链接库和其他依赖项
4.创建消息文件
在上一步骤中,我们给将要创建的消息命名为MsgSimple.msg
MsgSample.msg中内容:
time stamp
int32 data
5.创建发布者节点
在ros_topic/src中创建一个执行发布者节点函数的源代码。
6.创建订阅者节点
7.构建(build)节点
ros_topic功能包中构建了消息文件、发布者节点、订阅者节点。
消息文件在ros_topic/msg中,发布者/订阅者的源代码在ros_topic/src中。
8.运行发布者/订阅者
这里将涉及到3个终端
终端1输入并保持运行:roscore
终端2作为发布者,输入以下语句将使用ROS_INFO()函数将信息显示到屏幕上:
source devel/setup.bash
rosrun ros_topic topic_publisher
终端3作为1个订阅者节点或者使用rostopic等查看运行的发布者节点发布的消息:
rostopic echo /ros_msg
总结
概念性的知识还需要再了解下