ROS通信机制包括话题通信、服务通信和参数服务器三种通信方式,各原理及代码实现如下表
功能 | 博客链接 | 说明 |
---|---|---|
VScode配置 ROS 环境 | VScode创建ROS项目 ROS集成开发环境 | 使用VScode使用配置了ROS开发环境,实现ROS开发的第一步 |
话题通信理论 | ROS话题通信流程理论 | 介绍了话题通信机制的原理 |
ROS话题通信机制实操C++ | ROS话题通信机制实操C++ | 手把手的用C++实现了话题通信机制 |
ROS话题通信机制实操Python | ROS话题通信机制实操Python | 手把手的用Python实现了话题通信机制 |
ROS话题通信流程自定义msg格式 | ROS话题通信流程自定义msg格式 | 介绍了如何准备话题通信机制自定义msg数据格式,及相关配置 |
ROS话题通信机制自定义msg实战C++ | ROS话题通信机制自定义msg实战C++ | 手把手的用C++实现了话题通信机制自定义msg数据通信 |
ROS话题通信机制自定义msg实战Python | ROS话题通信机制自定义msg实战Python | 手把手的用Python实现了话题通信机制自定义msg数据通信 |
服务通信理论 | ROS服务通信流程理论 | 介绍了服务通信机制的原理 |
ROS服务通信自定义srv | ROS服务通信自定义srv | 介绍了如何准备服务通信机制自定义srv数据格式,及相关配置 |
ROS服务通信机制实操C++ | ROS服务通信机制实操C++ | 手把手的用C++实现了服务通信机制 |
ROS服务通信机制实操Python | ROS服务通信机制实操Python | 手把手的用Python实现了话题通信机制 |
参数服务器理论 | ROS参数服务器理论模型 | 介绍了参数服务器的原理 |
ROS参数服务器增删改查实操C++ | ROS参数服务器增删改查实操C++ | 用 C++ 实现了参数服务器的的增删改查操作 |
ROS参数服务器增删改查实操Python | ROS参数服务器增删改查实操Python | 用 Python 实现了参数服务器的的增删改查操作 |
在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息… std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型
需求
创建自定义消息,该消息包含人的信息:姓名、身高、年龄等。
流程
1.按照固定格式创建 msg 文件
2.编辑配置文件
3.编译生成可以被 Python 或 C++ 调用的中间文件
实现步骤
定义msg文件
在 plumbing_pub_sub
功能包下创建一个 msg 文件夹,添加文件 Person.msg
编辑配置文件
-
package.xml中添加编译依赖与执行依赖
在plumbing_pub_sub
功能包下的package.xml
文件添加如图所示的编译依赖和执行依赖<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>
-
CMakeLists.txt编辑 msg 相关配置
-
加入 message_generation
在CMakeLists.txt中找到find_package
添加message_generation编译依赖,如图所示:
-
配置 msg 源文件
在CMakeLists.txt中找到
add_message_files
配置自己定义的msg文件,如图所示:
-
添加生成消息时依赖
std_msgs
在CMakeLists.txt中找到generate_messages
添加生成依赖,如图所示:
-
添加执行时依赖
在CMakeLists.txt中找到catkin_package
添加执行依赖,如图所示:
-
编译
-
按快捷键
ctrl + shift + B
编译
-
编译成功后生成的文件
-
C++ 需要调用的中间文件(…/topic_ws/devel/include/plumbing_pub_sub/xxx.h)
-
Python 需要调用的中间文件(…/topic_ws/devel/lib/python2.7/dist-packages/plumbing_pub_sub/msg)