ROS定制并使用自己的msg
来源:互联网 发布:手机淘宝代理怎么发货 编辑:程序博客网 时间:2024/06/05 13:09
本文为个人学习笔记,仅作为日后使用是方便自己使用,不做过多的讲解,如果有需要了解具体定制细节,可以参考官网教程或者大神的博客。
1.在需要使用自定义msg的包里创建msg文件夹,专门用来存放自定义的msg文件。
mkdir msgvim msg_name.msg
2.编辑自定义的msg文件,设置需要的消息内容,这里官网上对于消息定义类型的定义。
msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:
- int8, int16, int32, int64 (plus uint*)
- float32, float64
- string
- time, duration
- other msg files
- variable-length array[] and fixed-length array[C]
在ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息。在msg文件的第一行经常可以看到
3.修改package.xml文件,确保它包含以下两个语句。
<build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>
4.修改CMakeLists.txt文件。
你需要确保你设置了运行依赖
catkin_package( ... CATKIN_DEPENDS message_runtime ... ...)
# add_message_files(# FILES# Message1.msg# Message2.msg# )
去掉注释符号#,用你的.msg文件替代Message*.msg,就像下边这样:
add_message_files( FILES Num.msg)
手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。 确保添加了如下代码:
在Hydro和新版的ROS中,需要添加将如下代码进行修改:
# generate_messages(# DEPENDENCIES# std_msgs# )
generate_messages( DEPENDENCIES std_msgs)
在早期的版本中(ROS wiki 中文教程中),你只需要添加如下代码即可(注意:是早期版本,新版本还需要添加具体内容):
generate_messages()
现在,你已经生成自己的消息源代码了。
5.查看msg是否已经成功定义。
rosmsg show [message type]
样例:
rosmsg show beginner_tutorials/Num
6.在CMakeLists.txt中找到如下部分:
# generate_messages(# DEPENDENCIES# # std_msgs # Or other packages containing msgs# )
去掉注释并附加上所有你消息文件所依赖的那些含有.msg文件的package(这个例子是依赖std_msgs,不要添加roscpp,rospy),结果如下:
generate_messages( DEPENDENCIES std_msgs)
由于增加了新的消息,所以我们需要重新编译我们的package:
catkin_make
所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码。生成的C++头文件将会放置在~/catkin_ws/devel/include/beginner_tutorials/。Python脚本语言会在~/catkin_ws/devel/lib/python2.7/dist-packages/beginner_tutorials/msg目录下创建。lisp文件会出现在~/catkin_ws/devel/share/common-lisp/ros/beginner_tutorials/msg/路径下。
遇到了一个重新编译时自定义消息调用找不到头文件的问题。解决方法是从垃圾箱里把原来头文件存放目录中找到相应文件,放到新的编译位置。
7.现在就可以在代码中使用我们自己定义好的msg了。
c++中需要include对应的msg头文件,例如:
#include <package_name/massage_name.h>
声明类似如下代码:
package_name::massage_name::ConstPtr& input
python中需要import相应的msg库,例如:
from package_name.msg import massage_name
声明类似如下代码:
output = massage_name()
- ROS定制并使用自己的msg
- ROS:定制自己的消息类型msg
- ROS:定制自己的消息类型msg
- ROS:定制自己的消息类型msg
- ros 创建自己的msg srv 注意
- ros定制自己的消息类型
- 在ROS中定义并使用自己的消息类型
- ROS的msg和srv
- ROS中几种常用的msg
- ROS msg
- ROS自定义msg类型及使用
- ROS自定义msg类型以及使用
- 创建ROS的msg和srv
- ROS的学习(十一)ROS的msg和srv
- ROS(二) 创建一个ROS的msg和srv
- 基于ros---一个完整的实现topic 发布和监听的类和msg的简单使用(使用c++)
- ros定义msg消息
- ROS Kinetic: msg & srv
- Linux I2C设备驱动编写
- 半闲居士视觉SLAM十四讲笔记(4)李群与李代数
- Hadoop原理---HDFS中的NameNode和DataNode
- 遮掩层
- MapReduce、Tez、Storm、Spark四个框架的异同
- ROS定制并使用自己的msg
- Linux基础学习笔记之文件的三个时间戳
- 好看的checkbox、radio
- RemoteViews的用途
- 嵌入式软件工程师经典面试题
- 我的第一次
- 《C语言及程序设计》教学视频 <18 链表中结点的插入和删除> 示例代码
- 半闲居士视觉SLAM十四讲笔记(5)相机与图像
- ionic实现App动态更新,热更新