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(自定义发布文本)的主要内容,如果未能解决你的问题,请参考以下文章

ROS通信机制一---话题通信

ROS话题通信服务通信编程

ROS话题通信章节总结

[ROS通信机制] ---话题通信之自定义msg类型

[ROS通信机制] ---话题通信之自定义msg类型

ROS通信机制一---话题通信