使用Message
Message按照定义解释就是topic内容的数据类型, 也称之为topic的格式标准。
1、结构与类型
基本的msg包括bool、 int8、 int16、 int32、 int64(以及uint)、 float、 float64、 string、 time、
duration、 header、 可变长数组array[]、 固定长度数组array[C]。
2、操作命令

3、常见message
常见的message类型, 包括std_msgs, sensor_msgs, nav_msgs,geometry_msgs等 。




使用 msg
创建一个 msg
增加Num.msg文件
$ roscd your_packagename
$ mkdir msg
$ echo "int64 num" > msg/Num.msg
- 上面是最简单的例子——在.msg文件中只有一行数据。
- 当然,你可以仿造上面的形式多增加几行以得到更为复杂的消息:
string first_name
string last_name
uint8 age
uint32 score
- 接下来,还有关键的一步:我们要确保msg文件被转换成为C++,Python和其他语言的源代码:
- 查看package.xml, 确保它包含一下两条语句,没有被注释掉,如果被注释了就取消注释:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
或者
<build_export_depend>message_generation</build_export_depend>
<exec_depend>message_runtime</exec_depend>
出错请看;https://blog.csdn.net/fancyop/article/details/79149402 如果有其他依赖也要添加
如果没有,添加进去。
注意:在构建的时候,我们只需要"message_generation"。
然而,在运行的时候,我们只需要"message_runtime"。
在CMakeLists.txt文件中,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息了。
你可以直接在COMPONENTS的列表里增加message_generation,就像这样:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation)
- 找到如下代码块:
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )
# generate_messages(
# DEPENDENCIES
# std_msgs
# )
- 在catkin_package函数中去掉#加入message_runtime依赖
- catkin_package(
- ...
- CATKIN_DEPENDS message_runtime
- ... ...)
- 去掉注释符号#,用你的.msg文件替代Message*.msg,就像下边这样:
add_message_files(
FILES
Num.msg
)
去掉注释符号#
generate_messages(
DEPENDENCIES
std_msgs
)
使用以下命令进行编译:
$ cd ~/catkin_ws/
$ catkin_make
使用 rosmsg验证是否编译成功
以上就是你创建消息的所有步骤。
下面通过rosmsg show命令,检查ROS是否能够识消息。
使用方法:
$ rosmsg show [message type]
- 样例:
$ rosmsg show beginner_tutorials/Num
- 你将会看到:
int64 num
在上边的样例中,消息类型包含两部分: beginner_tutorials
- 消息所在的package Num
- 消息名Num.
如果你忘记了消息所在的package,你也可以省略掉package名。
输入:
$ rosmsg show Num
- 你将会看到:
[beginner_tutorials/Num]:
int64 num
使用Message的更多相关文章
- Eclipse 4.2 failed to start after TEE is installed
--------------- VM Arguments--------------- jvm_args: -Dosgi.requiredJavaVersion=1.6 -Dhelp.lucene ...
- ABP文档 - Javascript Api - Message
本节内容: 显示信息 确认 Message API给用户显示一个信息,或从用户那里获取一个确认信息. Message API默认使用sweetalert实现,为使sweetalert正常工作,你应该包 ...
- 代码的坏味道(20)——过度耦合的消息链(Message Chains)
坏味道--过度耦合的消息链(Message Chains) 特征 消息链的形式类似于:obj.getA().getB().getC(). 问题原因 如果你看到用户向一个对象请求另一个对象,然后再向后者 ...
- java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INSTANCE
Android发出HTTP请求时出现了这个错误: java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INST ...
- POJ2774 Long Long Message [后缀数组]
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 29277 Accepted: 11 ...
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取 ...
- Logstash时区、时间转换,message重组
适用场景 获取日志本身时间 日志时间转Unix时间 重组message 示例日志: hellow@,@world@,@2011-11-01 18:46:43 logstash 配置文件: input{ ...
- Kafka消息时间戳(kafka message timestamp)
最近碰到了消息时间戳的问题,于是花了一些功夫研究了一下,特此记录一下. Kafka消息的时间戳 在消息中增加了一个时间戳字段和时间戳类型.目前支持的时间戳类型有两种: CreateTime 和 L ...
- infopath发布的提示“无法解析SOAP消息”(The SOAP message cannot be parsed)问题解决方案
最近发现一个列表数据过大,每次发布infopath表单提示如下错误: 后来发现一个infopath表单通过list.asmx and Formsservice.asmx来进行发布的. This err ...
- 阶段一:用Handler和Message实现计时效果及其中一些疑问
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 本来是打算继续做天气预报的优化的,但因为某些原因,我要先把之前做的小应用优化一下.所以今天就插播一下用Handle ...
随机推荐
- VS本地调试 Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储
vs2017 调试一致都没啥问题,今天莫名报这个错误,感觉好奇怪,网上搜索了半天也没解决,最后看着错误信息感觉很诡异,我本地调试你给我启动远程调试监测器干嘛,localhost也访问不了,ping了一 ...
- future3.2 Tomcat启动时错误:Cannot rename original file to ...
其日志中第一个警告如下: 警告: Unexpected exception resolving reference java.io.IOException: Cannot rename origina ...
- div模拟textarea文本域轻松实现高度自适应——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1362 一.关于tex ...
- 微信开发e.target.dataset取值undefined
替换为: e.currentTarget.dataset.current
- linux基础学习之软件安装以及常用命令(三)
添加和查看用户: [root@localhost ~]# useradd anderson [root@localhost ~]# cat /etc/passwd 显示如下: [root@localh ...
- Android 退出整个应用程序
我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放 ...
- CentOS 7 搭建PXC 数据库集群
CentOS 7 搭建PXC 数据库集群 PXC( Percona XtraDB Cluster ) 特点如下: 1.同步复制,事务要么在所有节点提交或不提交,保证了数据的强一致性. 2.多主复制,可 ...
- Task15 节点层次笔记
childElementCount : 返回子元素的个数 (不包括文本节点和注释节点) children:返回指定元素的子元素集合,它只返回HTML节点,甚至不返回文本节点,虽然不是标准的DOM属性, ...
- 菜鸟的HTML学习之路
开发网站流程 确定风格.功能(论坛.留言板.支付.用户登录等). 美工制作网页效果图(首页.列表页.内容页). 制作人员切图排版,排成网页形式. 后台程序开始写程序. 前台与后台结合. HTML注释 ...
- github|webstorm
分享本地项目到github 从github上迁出项目到本地