ROS中通过std_msgs封装一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty......。这些数据一般只包含一个data字段,结构的单一意味着功能上的局限性。
msgs只是简单的文本文件,每行具有字段类型喝字段名称,可以使用的字段类型有:
int8,int16,int32,int64(或者无符号类型:uint*)
float32,float64
string
time,duration--->持续时间
other msg files
variable-length array[] and fixed-length array[c]--->变长数组和定长数据
ROS中还有一种特殊类型:Header,标头包含时间戳和ROS中常用的坐标帧信息,会经常看到msg文件的第一行具有Header标头。
流程:
1.按照固定格式创建msg文件
2.编辑配置文件
3.编译生成可以被python或c++调用的中间文件
1.定义msg文件
功能包下新建msg目录,添加文件Person.msg
2.编辑配置文件
package.xml中添加编译依赖与执行依赖
CMakeLists.txt编辑msg相关配置
#需要加入message_generation,必须有std_msgs
#配置msg源文件
#生成消息时依赖于std_msgs
#执行时依赖
注意:find_package(编译依赖)如果有问题,会导致编译失败;如果find_package没问题catkin_package(运行依赖)有问题,会导致编译成功运行有问题。
3.编译
编译后的中间文件查看:
C++需要调用的中间文件(.../工作空间/devel/include/包名/xxx.h)
Python需要调用的中间文件(.../工作空间/devel/lib/python*/dist-packages/包名/msg)