ROS 通信机制:ROS是进程(也称为
Nodes
)的分布式框架。 这些进程甚至还可分布于不同主机协同工作,所以结点之间如何通信非常重要!
⭐ 基本通信机制一:话题通信(发布订阅模式) 【用于不断更新的、少逻辑处理的数据传输场景】 👉话题通信理论图解必懂 指路
- ROS Master 负责保管 Talker 📢和 Listener 注册的信息,并匹配话题相同的 Talker📢 与 Listener 👂
- 帮助 Talker 📢与 Listener 👂 建立连接
- 连接建立后,Talker 📢 可以发布消息,发布的消息会被 Listener 👂订阅
自定义 message
的三步实现:创建 msg 文件 → 编辑配置文件 → 编译
- 还不了解一般简单话题通信的友友,请先查看 👉 发布方简单实现, 订阅方简单实现
💜 根据需求创建 msg 文件 msgxxx.msg
正确路径:工作空间 / src / 功能包 / msg / msgxxx.msg 👉 ROS 文件结构指路
- 每行包括字段类型和字段名称;可选择的字段类型如下:
- int8, int16, int32, int64 (或者无符号类型: uint*)
- float32, float64
- string
- time, duration
- other msg files
- variable-length array[] and fixed-length array[C]
- 示例
person.msg
内容如下:string name uint16 age
💜 编辑配置文件
package.xml
中添加编译依赖与执行依赖
正确路径:工作空间 / src / 功能包 / package.xml 👉 ROS 文件结构指路
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
修改 CMakeLists.txt
正确路径:工作空间 / src / 功能包 / CMakeLists.txt 👉 ROS 文件结构指路
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs # 需要加入 message_generation,必须有 std_msgs
message_generation ##
)
add_message_files(
FILES
msgxxx.msg ##
)
generate_messages( # 生成消息时依赖于 std_msgs
DEPENDENCIES
std_msgs ##
)
catkin_package( # 执行时依赖
# INCLUDE_DIRS include
# LIBRARIES demo02_talker_listener
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime ##
# DEPENDS system_lib
)
- 对于 C++,还需要进行多一步的配置 (可执行文件相关配置不熟悉的友友 👉快速体验)
add_dependencies(可执行文件名称 ${PROJECT_NAME}_generate_messages_cpp)
💜 编译后即可正常使用
- 建议使用 VSCode 进行编译等操作 👉 ROS + VSCode 开发环境快速搭建指路
编译会自动生成:(可自己打开对应目录查看、学习)
- C ++ 需要调用的中间文件(工作空间 / devel / include / 功能包 / msgxxx).
- Python 需要调用的中间文件(工作空间 / devel / lib / python3 / dist-packages / 功能包 / msg / msgxxx).
【C++ 版】使用时
#include "功能包名/msgxxx.h"
,创建实例功能包名::msgxxx x, x.name=?, x.age=? ...
即可使用消息~)
- 自定义消息类型:功能包名::msgxxx
- 👉 点击跳转完整使用代码参考
【python 版】使用时
from pkg.msg import msgxxx
,创建实例x=msgxxx(), x.name=?, x.age=? ...
即可使用消息~)
- 自定义消息类型:msgxxx
- 👉 点击跳转完整使用代码参考
希望对你有帮助呀!!💜💜 如操作遇到任何问题,欢迎大家留言互助 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【ROS 学习笔记】谢谢你的支持!
另外,使用ROS需要 C++ 或者Python的编程经验,我的博客主页也有相关的教程发布,需要的友友自取!
参考资料: ROS理论与实践在线文档, B站视频教程