ROS话题通信总结2(自定义发布文本)
Posted Z_FIEND°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS话题通信总结2(自定义发布文本)相关的知识,希望对你有一定的参考价值。
ROS话题通信总结2(自定义发布文本)
前言:
- 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty.... 但是,这些数据一般只包含一个 data 字段
- 结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息... std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型
一、ROS话题通信总结1:https://blog.csdn.net/qq_33001335/article/details/117121210?spm=1001.2014.3001.5502
二、msg是什么?
- msgs只是简单的文本文件,每行具有字段类型和字段名称,可以使用的字段类型有:
-
int8, int16, int32, int64 (或者无符号类型: uint*)
-
float32, float64
-
string
-
time, duration
-
other msg files
-
variable-length array[] and fixed-length array[C]
三、配置msg文件
1.定义msg文件
- 1.于功能包下创建一个msg文件夹
- 2.于msg文件夹添加一个.msg文件
- 3.输入要输出的数据以及其对应的数据类型,如下图(我打算输出一个人的姓名.年龄.身高.)
2.编辑配置文件
- 1.package.xml中添加编译依赖与执行依赖
<build_depend>message_generation</build_depend>#55行
<exec_depend>message_runtime</exec_depend>#64行
- 2.CMakeLists.txt编辑 msg 相关配置
find_package(catkin REQUIRED COMPONENTS#对应代码10-15行
roscpp
rospy
std_msgs
message_generation
)
# 需要加入 message_generation,必须有 std_msgs
## 配置 msg 源文件#对应代码51-54行
add_message_files(
FILES
Person.msg#这个填你对应的.msg文件的名称
)
# 生成消息时依赖于 std_msgs#对应代码71-74行
generate_messages(
DEPENDENCIES
std_msgs
)
#执行时依赖#对应代码105-110行
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES demo02_talker_listener
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
# DEPENDS system_lib
)
3.编译
编译后的中间文件查看:
C++ 需要调用的中间文件(.../工作空间/devel/include/包名/xxx.h)
Python 需要调用的中间文件(.../工作空间/devel/lib/python3/dist-packages/包名/msg)
到此完成自定义文本文件的配置
以上是关于ROS话题通信总结2(自定义发布文本)的主要内容,如果未能解决你的问题,请参考以下文章