ROS 发布和订阅自定义消息数组

本文档详细介绍了在Ubuntu 14.04及ROS Indigo环境下,如何创建并使用自定义消息数组mypath.msg,包括Header和Pose类型。通过编辑package.xml、CMakeLists.txt文件,实现消息的发布与订阅节点mytalk.cpp和mylisten.cpp的编写。最终成功编译并验证消息的接收与发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天学习使用ros发布和订阅自定义的消息以及消息数组,记录,备忘!
说明:
以ubuntu14.04,indigo版本为例
ros工作空间位置:~/workspace/catkin_ws
定义的消息数组为:
std_msgs/Header header
geometry_msgs/Pose[] path
其中Header是由uint32 seq,time stamp,string frame_id组成,它的消息定义在/opt/ros/indigo/share/std_msgs/msg 目录下有详细说明,而Pose是包含了Point和Quaternion类型组成,Point是3维的坐标点,Quaternion是四元数,他们的具体说明在/opt/ros/indigo/share/geometry_msgs/msg目录下。Pose[] 则表示后面定义的path是一个Pose类型的数组。接下来上代码:

cd ~/workspace/catkin_ws/src
#创建功能包
catkin_create_pkg mytest std_msgs rospy roscpp
cd mytest/
mkdir msg && cd msg

新建mypath.msg 的文件,将上面我想创建的两行消息粘贴进来,保存退出。打开mytest目录下的package.xml文件,在下面添加两行:

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

保存退出,然后打开mytest目录下的CMakeLists.txt文件:

  1. 在find_package中添加geometry_msgs message_generation,
  2. 取消add_message_files和FILES以及下面反括号的注释,在下面添加一行mypath.msg
  3. 取消generate_messages所在部分的注释,将geometry_msgs添加进去
  4. 取消catkin_package所在部分的注释,在std_msgs后面添加message_runtime

然后重新catkin_make编译一下,没有报错。进入mytest/src目录下,新建发布消息节点mytalk.cpp,将下面发布消息代码粘贴进去:

#include <ros/ros.h>
#include <geometry_msgs/Pose.h>
#include "mytest/m
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值