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自定义消息的更多相关文章

  1. ROS 自定义消息类型方法

    流程 1.在package中新建文件夹名为msg 2.在msg文件夹中创建消息(此处以my_msg.msg)为例,注意的是要以msg为后缀名 内容举例如下: int32 data1 float64 d ...

  2. ros自定义消息的时候报错ImportError: No module named em

    Traceback (most recent call last):  File "/opt/ros/kinetic/share/gencpp/cmake/../../../lib/genc ...

  3. ros中自定义消息 报错 ImportError: No module named em

    大家好,欢迎来到我的博客,之前写的都是比较松散的,鉴于工作的原因,之后的随笔将持续更新ROS以及linux使用方面的随笔,欢迎大家留言,相互学习 ——————————————————————————— ...

  4. Ubuntu 20.04下源码编译安装ROS 2 Foxy Fitzroy

    ROS 2 Foxy Fitzroy(以下简称Foxy)于2020年6月5日正式发布了,是LTS版本,支持到2023年5月.本文主要根据官方的编译安装教程[1]完成,并记录编译过程中遇到的问题. 1. ...

  5. ROS机器人话题之自定义消息

    ROS提供了丰富的内建消息,std_msgs包定义了一些基本的类型. 具体例子 首先定义一个消息类型的文件叫做Complex 例Complex.msg float32 real float32 ima ...

  6. ros中关于节点、话题、服务以及自定义消息等在终端中的常用命令

    以下面的计算力图说明 节点相关常用命令 在终端中查看项目中有哪些节点命令:rosnode list 有了节点信息想要查看节点中到底发布订阅了哪些话题,作为服务端服务类型或者作为客户端需要的服务类型以上 ...

  7. ros下多机器人系统(1)

    multi-robot system 经过两个多月的ros学习,对ros的认识有了比较深入的了解,本篇博客主要记录在ros下开发多机器人系统以及对ros更深入的开发.本篇博客是假定读者已经学习完了全部 ...

  8. 快速了解 Robot Operating System(ROS) 机器人操作系统

     http://www.ros.org/ 关于ROS About ROS http://www.ros.org/about-ros/ 机器人操作系统(ROS)是用于编写机器人软件的灵活框架.目的在简化 ...

  9. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

随机推荐

  1. 【html、CSS、javascript-3】几个基本元素

    HTML 元素指的是从开始标签到结束标签的所有代码. 开始标签 元素内容 结束标签 <h1> h标签用来表示标题 </h1> <p> p标签表示一个段落 </ ...

  2. 基于RBAC权限管理的后台管理系统

    在摸爬滚打中渐渐理解了RBAC权限管理是个什么玩意. RBAC的基本概念: **RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构成了访问权限三元 ...

  3. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---策略模式之MiniDuckSimulator[转]

     1  2{<HeadFirst设计模式>之策略模式 }  3{ 本单元中的类为策略类           }  4{ 编译工具: Delphi7.0           }  5{ E- ...

  4. python 显示彩色文本

    实现过程:      终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.      转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用 ...

  5. 工作记录--使用FFmpeg将一个视频文件中音频合成到另一个视频中

    由于工作需要,临时被老大吩咐去研究一个FFmpeg工具,通过linux命令行去将一个视频中的音频提取出来并合成到另一个视频中,最终的效果是要保证2个视频中的音频都在一个视频中播放. 但是本人对FFmp ...

  6. oracle创建定时任务

    一.dmbs_job dbms_job涉及到的知识点 1.创建job: variable jobno number; dbms_job.submit(:jobno, —-job号  'your_pro ...

  7. Object Pool 对象池的C++11使用(转)

    很多系统对资源的访问快捷性及可预测性有严格要求,列入包括网络连接.对象实例.线程和内存.而且还要求解决方案可扩展,能应付存在大量资源的情形. object pool针对特定类型的对象循环利用,这些对象 ...

  8. 二叉树总结—建树和4种遍历方式(递归&&非递归)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013497151/article/details/27967155 今天总结一下二叉树.要考离散了 ...

  9. vue+axios 对restful 请求封装

    礼拜天来公司整理项目,项目是最近开始重构的,里面的各种http请求接口是restful结构的(为了提升项目的比格),整理一下笔记 [restful介绍][1]博主讲的很详细 技术栈: vue + vu ...

  10. GBRT(GBDT)(MART)(Tree Net)(Tree link)

    源于博客 GBRT(梯度提升回归树)有好多名字,标题全是它的别名. 它是一种迭代的回归树算法,由多棵回归树组成,所有树的结论累加起来得到最终结果.在被提出之初与SVM一起被认为是泛化能力较强的算法. ...