ROS应用开发入门 话题消息的定义和使用

本文是ROS应用开发入门系列,讲解如何定义和使用自定义话题消息。内容包括创建Person.msg,配置CMakeLists.txt和package.xml,通过c++和python实现发布者与订阅者程序,并使用rosmsg工具查看消息信息,最后通过rqt_graph展示信息流关系。

ROS是机器人操作系统的简称,本文介绍ROS应用开发入门,话题消息的定义和使用。发布者Publisher 和订阅者Subscribler 之间通讯都使用话题消息(topic message)。本文先定义一个话题消息,然后一个发布者发送,另一个订阅者接收。先是c++代码,然后是python 代码,你也可选择只看一种你熟悉的。

在前面2文(ROS 应用开发入门 发布者Publisher的编程 和 ROS 应用开发入门 订阅者Subscribler的编程)中,为了减少复杂性,我们使用了和仿真小乌龟通讯,话题消息也是现成的,但本文就要介绍自定义话题消息,这是符合我的实际应用需求。希望你看过前面2文,至少定义好了功能包。

自定义话题消息

在工程包目录下新建一个目录msg

cd ~/catkin_ws/src/learning_topic

mkdir msg

cd msg

然后新建一个Person.msg 文件

nano Person.msg

文件内容为:

string name
uint8  age
uint8  sex

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

回到工程包目录下,打开并编辑package.xml:

 cd ~/catkin_ws/src/learning_topic

nano package.xml

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

添加的位置是参考下面位置,就是<export> 前面注释上面:

 <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>
  <exec_depend>turtlesim</exec_depend>

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

  <!-- The export tag contains other, unspecified, tags -->
  <export>

然后打开并编辑CMakeLists.txt,总共3处

nano CMakeLists.txt

先在find_package 里添加 message_generation
添加后如下所示:

find_package(catkin REQUIRED COMPONENTS
  geometry_msgs
  roscpp
  rospy
  std_msgs
  turtlesim
  message_generation
)

 添加如下代码,也可以作为2行,

add_message_files(
  FILES
  Person.msg
)

generate_messages(
  DEPENDENCIES
  std_msgs
)

添加位置参看如下: 

## Generate added messages and services with any dependencies listed here
# generate_messages(
#   DEPENDENCIES
#   geometry_msgs#   std_msgs
# )


add_message_files(
  FILES
  Person.msg
)

generate_messages(
  DEPENDENCIES
  std_msgs
)

################################################
## Declare ROS dynamic reconfigure parameters ##
################################################

在catkin_pack

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值