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

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

被折叠的 条评论
为什么被折叠?



