ROS 消息描述格式、消息编译、内置消息介绍
文章目录
- 消息描述规范
- 字段
- 字段类型
- 字段名
- 常量
- 编译消息文件
- 关于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 消息描述格式、消息编译、内置消息介绍相关推荐
- eslint内置规则介绍
内置规则 eslint 内置规则介绍 eslint 推荐配置 eslint 内置规则介绍 modules.exports = {// 所有规则页面(https://eslint.org/docs/ru ...
- ASP.NET的内置对象介绍
ASP.NET的内置对象介绍 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cooki Request对象主要是让服务器取得客户端浏览 ...
- Hive学习之路(四):Hive内置函数介绍与实现WordCount
内容简介 一.Hive内置函数介绍 二.Hive常用内置函数介绍 1.数值计算函数 2.字符串操作函数 3.日期函数 4.聚合函数 5.表生成函数 三.使用Hive函数完成WordCount 1.创建 ...
- 深入浅出CChart 每日一课——快乐高四第九课 于无声处,CChart内置功能介绍之数据存取篇...
笨笨长期以来一直使用Origin软件画图和处理数据,但Origin软件没有编程语言的接口.笨笨开发CChart的一个潜在的目标.是想实现Origin软件的功能.当然这是一个不可能达到的目标.Origi ...
- Windows2003内置用户组介绍
内置普通组: Administrators 属于该administators本地组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执行整台计算机的管理任务.内置的系统管理员帐 ...
- python提供的内置函数有哪些_python内置函数介绍
内置函数,一般都是因为使用频率比较频繁,所以通过内置函数的形式提供出来.对内置函数通过分类分析,基本的数据操作有数学运算.逻辑操作.集合操作.字符串操作等. 说起我正式了解内置函数之前,接触到的是la ...
- PromQL 中内置函数介绍
Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理. 某些函数有默认的参数,例如:year(v=vector(time()) instant-vector).其中参数 v 是 ...
- 骁龙820A:内置芯片介绍
高通骁龙820A内置了Hexagon 680 DSP芯片,如下图所示,可见Hexagon 680在其中占据了很重要的位置. DSP中存在专门处理JPEG图像压缩的部分,这部分内容专门只针对JPEG图像 ...
- 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程
原文 http://blog.csdn.net/zhaoxy_thu/article/details/18883015 本文主要对从安卓系统 ...
最新文章
- Windows客户端C/C++编程规范“建议”——函数
- undefined reference to 'typeinfo for android::Thread'
- Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析
- 定时任务 - 定时任务弊端与优化方案
- 【算法系列之十四】最大子序和
- Jenkins自动编译库并上传服务器
- property属性[Python]
- C++Primer第四版 阅读笔记 第二部分 “容器和算法”
- petshop 数据库
- 多线程同步执行,CountDownLatch使用
- Python中常见的字符串小笔试题
- 中国移动java开发笔试_中国移动苏州研发中心面试经验
- Qt+STK项目配置
- 你了解实时3D渲染吗?实时渲染软件和应用场景科普来了
- 实施整体变更控制-管理过程
- flea-db使用之JPA封装介绍
- java-net-php-python-jsp学生社团信息演示录像2019计算机毕业设计程序
- Lacking counting POJ.NO 2386
- 2自由度悬架LQR控制
- 网站搭建教程(详细步骤)