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. Android中Activity的android:windowSoftInputMode属性

    转载 https://blog.csdn.net/qiutiandepaomo/article/details/84028558 windowSoftInputMode属性主要是用来设置窗口软键盘的交 ...

  2. 转载 WPF -- 控件模板 (ControlTemplate)(一) https://blog.csdn.net/qq_23018459/article/details/79899838

    ControlTemplate(控件模板)   https://blog.csdn.net/qq_23018459/article/details/79899838 WPF包含数据模板和控件模板,其中 ...

  3. mysql查询某个字段并修改

    比如我存储的数据,有的是 山东,有的是山东省 我想统一改为山东省 UPDATE t_security SET province = REPLACE( province, '山东', '山东省' ) W ...

  4. php数字转人民币金额大写

    numToRmb.php <?php header("content-type:text/html;charset=utf-8"); function numToRmb($n ...

  5. LintCode刷题笔记-- InterLeaving

    标签: 动态规划 解题思路 1. 这道题最重要的是,存在三个字符串,但是并不需要两个二维矩阵来进行解,因为可以使用i+j-1来代表s3的下标,这样就可以通过i和j来遍历s3了.因为对于任何一个合法的交 ...

  6. CWnd::Attach()具体解释

    CWnd::Attach Attaches a Windows window to a CWnd object. BOOL Attach(    HWND hWndNew ); Parameters ...

  7. SpringBoot 使用 @Value 从 YAML文件读取属性

    在 YAML中有如下配置 paypal: mode:live 在类中,通过 @Value属性读取 @Value("${paypal.mode}") private String m ...

  8. yii常用操作数据

    yii常用操作数据.php <?php defined('YII_DEBUG') or define('YII_DEBUG', true); //当在调试模式下,应用会保留更多日志信息,如果抛出 ...

  9. c中函数指针和回调函数

    函数指针: 指向函数的指针.(定义的函数会分配一块内存,同变量一样存在首地址)示例如下: int Func(int x); /*声明一个函数*/ int (*p) (int x); /*定义一个函数指 ...

  10. JQuery--val()、html()、text()

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...