ROSz中自定义消息,并将其放入topic中发布全过程

4 篇文章 1 订阅

ros是机器人操作系统的简称,现多用于自动驾驶中的某些领域中,最近工作中会用到ros采集车辆操作信息,但ros包含的已有的消息类型不足以满足车辆所有操作信息的发布,故需在ros中重新定义消息类型并将其发布。
一、ros内部自带的消息类型:
1、std消息
std消息属于基本数据类型消息。
在这里插入图片描述2、geometry消息
geometry消息属于空间数据描述。
在这里插入图片描述3、sensor消息
sensor消息属于传感器消息
在这里插入图片描述可以看到ros中自带的消息已经很全,但是还是不能够满足项目需求,因此需要自定义消息内容。现将其过程总结如下:
二:自定义消息类型
1、建立和消息相关的文件
该过程为定义自己即将定义的消息包含哪些数据内容,一般需要自己弄清楚具体包含哪些数据类型,该数据类型一定要包含在ros自带的数据类型中,如果自己使用的数据类型不包含在ros基本数据类型中,则在catkin_make的过程中报错。注意:ros中没有double型数据,如果使用可以用float64代替。
(1)第一步需要在自己工作空间中创建msg文件夹

cd workspace
mkdir msg

(2)在msg文件夹中新建一个XXX.msg文件,该文件就包含自定义消息数据。msg文件是ros中定义消息类型的文件,一般放置在工作空间下的msg文件夹中,在工作空间编译的过程中可以使用msg文件生成不同编程语言使用的代码文件。例子:

std_msgs/Header header
float64 speed
float64 acc

以上代码便是自己定义的消息类型,其中std_msgs/Header heade是一个标准格式的头信息。
2、修改CMakeList.txt和package.xml
当我们定义好自己需要的消息类型后,往往会根据工程需要对工程进行编译,此时就需要更改CMakeList.txt和package.xml,修改这两个文件是为了让工程顺利地编译通过。当我们重新定义消息类型后,在编译过程中应当把消息类型的文件包含进去。
(1)package.xml
在修改package.xml,需要将生成新消息的所需的依赖添加进去,需要添加以下内容。

#build 依赖
<build_depend>message_generation</build_depend>
#执行依赖
<exec_depend>message_runtime</exec_depend>

(2)CMakeList.txt
在该文件中需要修改的地方较多,具体如下:在修改过程中,创建工作工作空间时可能会生成一些预先注释好的,需要将其注释去除。

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)
## Generate messages in the 'msg' folder
add_message_files(
   FILES
   XXX.msg
)
generate_messages(
   DEPENDENCIES
   std_msgs
)
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES beginner_tutorials
#  CATKIN_DEPENDS roscpp rospy std_msgs
#  DEPENDS system_lib
   CATKIN_DEPENDS message_runtime
)

通过以上两个过程,创建自定义的消息类型便结束了,随后便是使用

catkin_make

对工程进行编译。在编译完成之后工作空间内部会自动生成XXX.h文件以利于在使用c++编程时进行include
在代码中使用新定义的消息类型时,应该将新生成的XXX.h include进自己的代码中,随后便可像使用其他已有的消息一样对其进行发布和订阅。

include "workspace/XXX.h"

以上便是在ros中添加或自定义消息类型的全过程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值