ROS编程第二步:自定义消息

使用ros自带的消息显然满足不了我们的需要,这个时候我们就要自定义消息了。
假如我们想自定义消息是:一个person,并且它有如下属性

string name
uint8 sex
uint8 age

uint8 unknown = 0
uint8 male = 1
uint8 female = 2

你可能会问, 下面三行是什么意思? 其实,上面的三行如果是属性的话,下面三行的作用其实是常值属性,也就是我们 一旦调用 person.male 的话,我们就得到了 数字1 .

如何在ros中起作用呢?
一 .
在如下路径下面建立 Person.msg
home/工作空间名/src/功能包名
内容就是

string name
uint8 sex
uint8 age

uint8 unknown = 0
uint8 male = 1
uint8 female = 2

二 .
更改package.xml文件 添加下面两行

 <build_depend>message_generation</build_depend>
   <exec_depend>message_runtime</exec_depend>

解释: ros为我们提供了 自定义消息的 一套方法, 也即是我们的自定义消息要依赖 message_generation ,同时执行时要依赖 message_runtime.
这个runtime 就相当于ros 为 我们自己定义的消息开辟的 运行空间,和ros内置的消息划清界限,方便运行管理。

三.
更改 CMakelists
先在文件前面的
find_package(catkin REQUIRED COMPONENTS){}
花括号里面中添加:

 message_generation

其次 , 向下翻, 找找一个# 包围起来的
Declare ROS dynamic reconfigure parameters
在它上面添加

add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)

解释:
ros有自己的消息管理系统,你想把自己定义的消息放进去, 就要做出上面的声明, 第一句话代表了 你想把自己的 msg 文件添加到ros的消息系统中去,第二句话代表了你自己的消息在产生中也依赖了ros标准消息(例如 uint8)

最后,向下翻, 找找一个# 包围起来的 Build,
上面有个catkin_package{}
但是内容全部被注释掉了, 这个时候打开 CATKIN_DEPENDS,同时在这一行后面追加上 message_runtime

然后保存 ,回到工作空间目录 ,进行一下catkin_make 和 source devel/setup.bash

报错的话再仔细看看有没有拼错就好了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值