ros自定义消息
ros自定义消息可以根据自身项目需求定义和封装想要的数据类型和数据结构。具体可以参考维基百科关于ros自定义消息部分
这里我只是记录自定义消息的要点部分:
1.首先要在工作空间下功能包中创建一个msg的文件夹用于存放消息文件。创建过程可以通过手动创建,也可以通过以下命令创建
mkdir msg
2.在msg文件中添加消息文件,并在其中添加自定义消息类型。这里给出样例:

object.msg

package.msg package.msg主要是对其他的消息进行了整合,在代码中更好的实现封装。

3.接下来修改包的package.xml文件,在下图所示位置添加"message_generation","message_runtime"对msg的转为C++代码。

这里需要注意的是按照维基百科中添加:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
的时候会报错,后来改为:
<build_depend>message_generation</build_depend>
<exec_depend> message_runtime </exec_depend>
就可以了。
4.修改Cmakelists.txt文件
(1)修改find_packag.
添加对message_generation的依赖,这样就可以生成消息了。 你可以直接在COMPONENTS的列表里增加message_generation。
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
(2)修改 add_message_files
添加你在msg文件夹中定义的所有的msg文件。
add_message_files(
FILES
Locate.msg
Object.msg
Package.msg
Path.msg
)
(3)在 add_message_files后面添加generate_messages()
add_message_files(
FILES
Locate.msg
Object.msg
Package.msg
Path.msg
)
generate_messages()
以上部分已经完成了对ROS自定义消息。
4.测试
通过一下命令可以测试自定义消息是否成功
rosmsg show predict/Object
其中predict是包名(cmakelists.txt文件中工程的名字),Object是消息文件名称。结果:

如果能出现以上结果,表示自定义消息成功了。
5.出错原因
(1)只要按照上面的配置方法自定义消息应该是没有问题了,要注意的是一定要对package.xml,Cmakeliststxt进行正确修改。
(2)还要注意一定要写对包名和消息文件名称,不然就会出现如下错误。

(3)还有一种可能会出现如上错误,就是工作空间路径没有配置正确。只要重新导入ros路径到.bashrc 文件中就可以了
ros自定义消息的更多相关文章
- ROS 自定义消息类型方法
流程 1.在package中新建文件夹名为msg 2.在msg文件夹中创建消息(此处以my_msg.msg)为例,注意的是要以msg为后缀名 内容举例如下: int32 data1 float64 d ...
- ros自定义消息的时候报错ImportError: No module named em
Traceback (most recent call last): File "/opt/ros/kinetic/share/gencpp/cmake/../../../lib/genc ...
- ros中自定义消息 报错 ImportError: No module named em
大家好,欢迎来到我的博客,之前写的都是比较松散的,鉴于工作的原因,之后的随笔将持续更新ROS以及linux使用方面的随笔,欢迎大家留言,相互学习 ——————————————————————————— ...
- Ubuntu 20.04下源码编译安装ROS 2 Foxy Fitzroy
ROS 2 Foxy Fitzroy(以下简称Foxy)于2020年6月5日正式发布了,是LTS版本,支持到2023年5月.本文主要根据官方的编译安装教程[1]完成,并记录编译过程中遇到的问题. 1. ...
- ROS机器人话题之自定义消息
ROS提供了丰富的内建消息,std_msgs包定义了一些基本的类型. 具体例子 首先定义一个消息类型的文件叫做Complex 例Complex.msg float32 real float32 ima ...
- ros中关于节点、话题、服务以及自定义消息等在终端中的常用命令
以下面的计算力图说明 节点相关常用命令 在终端中查看项目中有哪些节点命令:rosnode list 有了节点信息想要查看节点中到底发布订阅了哪些话题,作为服务端服务类型或者作为客户端需要的服务类型以上 ...
- ros下多机器人系统(1)
multi-robot system 经过两个多月的ros学习,对ros的认识有了比较深入的了解,本篇博客主要记录在ros下开发多机器人系统以及对ros更深入的开发.本篇博客是假定读者已经学习完了全部 ...
- 快速了解 Robot Operating System(ROS) 机器人操作系统
http://www.ros.org/ 关于ROS About ROS http://www.ros.org/about-ros/ 机器人操作系统(ROS)是用于编写机器人软件的灵活框架.目的在简化 ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...
随机推荐
- 用CSS添加选中文字的背景色
- Uva1252 Twenty Questions
Twenty Questions https://odzkskevi.qnssl.com/15b7eb4cd1f75f63cee3945b0b845e4f?v=1508411736 [题解] dp[S ...
- Leetcode566.Reshape the Matrix重塑矩阵
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据. 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的 ...
- 使用mybatis的延迟加载
在某些情况下我们需要使用延迟加载技术来提高我们程序查询的性能,通过减少与数据库的连接操作,做到按需加载,这样达到提高程序性能的目的. 首先需要在全局配置文件(SqlMapConfig.xml)中配置全 ...
- 考试总结 模拟27(W)
心得:太弱了,T1问题:理解错了题,矿石可以放到同一处,,太弱了,小凯的疑惑,没什么印象T2问题:拆式子T3问题:换根dp的思想模拟9T1+T2
- SSH 相关基础
检查是否安装: sudo apt-cache policy openssh-client sudo apt-cache policy openssh-server 也可直接用 sudo apt-ca ...
- python实现六大分群质量评估指标(兰德系数、互信息、轮廓系数)
python实现六大分群质量评估指标(兰德系数.互信息.轮廓系数) 1 R语言中的分群质量--轮廓系数 因为先前惯用R语言,那么来看看R语言中的分群质量评估,节选自笔记︱多种常见聚类模型以及分群质量评 ...
- WatchKit编程指南:概览--Watch应用的体系结构
Apple Watch应用程序包含两个部分:Watch应用和WatchKit应用扩展.Watch应用驻留在用户的Apple Watch中,只含有故事板和资源文件,要注意它并不包含任何代码.而Watch ...
- Leetcode884.Uncommon Words from Two Sentences两句话中的不常见单词
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- Leetcode680.Valid Palindrome II验证回文字符串2
给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca" 输出: ...