文章目录

  • 消息描述规范
    • 字段
      • 字段类型
      • 字段名
    • 常量
  • 编译消息文件
  • 关于std_msgs

参考:http://wiki.ros.org/msg

ros使用一套简化的消息描述语言来描述ros节点所发布的数据。ros工具可以根据消息描述为消息类型生成不同目标语言的消息代码,消息描述保存在.msg结尾的文件,放在ros包的msg子目录。

rosmsg命令行工具打印消息定义信息,查找使用该消息的源文件

消息描述规范

.msg文件包含字段常量两部分。

一个字段由字段类型和字段名组成,

字段

fieldtype1 fieldname1
fieldtype2 fieldname2
fieldtype3 fieldname3

如:

int32 x
int32 y

字段类型

类型可以是

  • 内置类型,如float32,string,

  • 也可以是自定义类型,geometry_msgs/PoseStamped。

  • 还可以是上面类型的固定或者可变长度的数组/列表。

“float32[] ranges” or “Point32[10] points”

  • 头文件类型

实际上自定义数据类型是由内置类型组成。

内置类型:

Primitive Type Serialization C++ Python2 Python3
bool (1) unsigned 8-bit int uint8_t (2) bool
int8 signed 8-bit int int8_t int
uint8 unsigned 8-bit int uint8_t int (3)
int16 signed 16-bit int int16_t int
uint16 unsigned 16-bit int uint16_t int
int32 signed 32-bit int int32_t int
uint32 unsigned 32-bit int uint32_t int
int64 signed 64-bit int int64_t long int
uint64 unsigned 64-bit int uint64_t long int
float32 32-bit IEEE float float float
float64 64-bit IEEE float double float
string ascii string (4) std::string str bytes
time secs/nsecs unsigned 32-bit ints ros::Time rospy.Time
duration secs/nsecs signed 32-bit ints ros::Duration rospy.Duration

数组类型的原型

Array Type Serialization C++ Python2 Python3
fixed-length no extra serialization 0.11+: boost::array<T, length>, otherwise: std::vector<T> tuple (1)
variable-length uint32 length prefix std::vector<T> tuple (1)
uint8[] see above as above str bytes (2)
bool[] see above std::vector<uint8_t> list of bool

上表的意思是说,可变长度的类型,比如T,那么其数组类型,在C++里的底层实现是std::vector<T>,即类型为T的vector,其他类似。

字段名

字段名会变成目标语言访问消息数据的名字。例如后面学习的std_msgs下的各种内置类型,它的字段名就是data,所以我们在访问该类型的数据时,假如该消息对象叫obj,那么就是obj,data。

只能是字母数字下划线。

常量

constanttype1 CONSTANTNAME1=constantvalue1
constanttype2 CONSTANTNAME2=constantvalue2

例如:

int32 X=123
int32 Y=-123
string FOO=foo
string EXAMPLE="#comments" are ignored, and leading and trailing whitespace removed

整型数赋值只能是10进制。

string类型常量所有空格都会被自动移除。

编译消息文件

package.xml加上以下两句:

<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

一个是构建依赖,一个是运行依赖。

导出消息运行依赖:

catkin_package(...CATKIN_DEPENDS message_runtime ......)

添加你自己的消息文件:

add_message_files(FILESMessage1.msgMessage2.msg
)

添加你的消息所依赖的消息:

 generate_messages(DEPENDENCIESstd_msgs
)

关于std_msgs

ros利用ros内置类型定义了一系列消息类型,这就是std_msgs,它们的字段名都叫data,这在链接可以查找。

消息文件:
https://github.com/ros/std_msgs

ROS 消息描述格式、消息编译、内置消息介绍相关推荐

  1. eslint内置规则介绍

    内置规则 eslint 内置规则介绍 eslint 推荐配置 eslint 内置规则介绍 modules.exports = {// 所有规则页面(https://eslint.org/docs/ru ...

  2. ASP.NET的内置对象介绍

    ASP.NET的内置对象介绍 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cooki Request对象主要是让服务器取得客户端浏览 ...

  3. Hive学习之路(四):Hive内置函数介绍与实现WordCount

    内容简介 一.Hive内置函数介绍 二.Hive常用内置函数介绍 1.数值计算函数 2.字符串操作函数 3.日期函数 4.聚合函数 5.表生成函数 三.使用Hive函数完成WordCount 1.创建 ...

  4. 深入浅出CChart 每日一课——快乐高四第九课 于无声处,CChart内置功能介绍之数据存取篇...

    笨笨长期以来一直使用Origin软件画图和处理数据,但Origin软件没有编程语言的接口.笨笨开发CChart的一个潜在的目标.是想实现Origin软件的功能.当然这是一个不可能达到的目标.Origi ...

  5. Windows2003内置用户组介绍

    内置普通组: Administrators 属于该administators本地组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执行整台计算机的管理任务.内置的系统管理员帐 ...

  6. python提供的内置函数有哪些_python内置函数介绍

    内置函数,一般都是因为使用频率比较频繁,所以通过内置函数的形式提供出来.对内置函数通过分类分析,基本的数据操作有数学运算.逻辑操作.集合操作.字符串操作等. 说起我正式了解内置函数之前,接触到的是la ...

  7. PromQL 中内置函数介绍

    Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理. 某些函数有默认的参数,例如:year(v=vector(time()) instant-vector).其中参数 v 是 ...

  8. 骁龙820A:内置芯片介绍

    高通骁龙820A内置了Hexagon 680 DSP芯片,如下图所示,可见Hexagon 680在其中占据了很重要的位置. DSP中存在专门处理JPEG图像压缩的部分,这部分内容专门只针对JPEG图像 ...

  9. 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程

    原文                   http://blog.csdn.net/zhaoxy_thu/article/details/18883015             本文主要对从安卓系统 ...

最新文章

  1. 2021-04-06 neo4j Service stop failed - service ‘neo4j’ not found 请问怎么解决?
  2. Web.config文件使用
  3. SAP保存操作记录CDHDR和CDPOS表,通过修改屏幕字段,查找SAP字段表和字段
  4. android进程调试(ro.debuggable=1或android:debuggable=true)----JDWP线程
  5. C#调用API弹出打印机属性对话框
  6. 配置tomcat_Tomcat 配置必备的 10 个小技巧,让你轻松玩转Tomcat
  7. python 知识点怎么办_python中的小知识点
  8. 瑞典禁止在5G网络中用华为和中兴设备 同时也将移除老设备
  9. 计算机网络—SR选择重传协议
  10. 【安卓学习积累】Android连续点击事件的实现
  11. 该内存不能read written常见原因
  12. 参加了iDOF2016会议,发表演讲“油田SOA与云平台的系统思考与实践”
  13. 电脑复制粘贴不了怎么办?
  14. 转载:WVGA,QVGA,VGA,HVGA,WQVGA是什么意思?如何区别?
  15. 人间哪知星空遥:荣耀30系列的巡天计划
  16. Flink on Yarn报错:Container released on a *lost* node
  17. 爱了爱了,这样的文字动画让你爱不释手
  18. 先正达将在科创板上会:拟募资650亿元,预计全年收入超2100亿元
  19. 【RAID恢复案例】南京财政局磁盘阵列柜数据恢复成功
  20. Python format方法详解|字符串格式化|format

热门文章

  1. java 正则 小数_java用正则表达式判断是否是小数的方法
  2. apache定时自动启动脚本程序代码-apache-Php教程
  3. linux系统制作裸设备,在unix下和linux下创建裸设备总结
  4. Struts2——开始学习
  5. MD5加密算法解释——Java简单应用(java.security.MessageDigest)
  6. 支持5G LAN的UPF转发模型
  7. MySQL查询本年数据
  8. 闪客工具:微信本地调试工具
  9. 爬虫利器Scrapy之Crawl Spider 模板的使用
  10. error: RC2135 : file not found: