ROS学习笔记(三):话题及其发布与订阅

ROS学习笔记(三):话题及其发布与订阅

  • 话题(Topic)通信
    • 常用指令
    • 创建消息(msg)
    • 话题的发布与订阅

话题(Topic)通信

话题是一种单向异步通信机制,一般用于连续发送数据的传感器,在节点之间建立联系后,一个发布者可以向多个订阅者发送信息,同样,一个订阅者也可以订阅多个发布者的信息,发布者发布完消息立即返回,不等待反馈。订阅者通过回调函数的方式处理数据。

常用指令

rostopic list能够列出当前已被订阅和发布的所有话题。

rostopic list

rostopic echo可以显示在某个话题上发布的数据。

rostopic echo /topic_name

rostopic hz报告数据发布的速率。

rostopic hz /topic_name

rostopic type命令用来查看所发布话题的消息类型。

rostopic type /topic_name

创建消息(msg)

msg(消息):msg文件就是文本文件,用于描述ROS消息的字段。它们用于为不同编程语言编写的消息生成源代码。下面是一个msg文件的示例:

Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

package.xml添加

message_generation
message_runtime

在构建时,其实只需要message_generation,而在运行时,我们只需要message_runtime。

CMakeLists.txt添加生成消息的依赖项:

# 不要直接复制这一大段,只需将message_generation加在括号闭合前即可
find_package(catkin REQUIRED COMPONENTS
   roscpp
   rospy
   std_msgs
   message_generation
)

添加导出消息的运行时依赖关系:

catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)

添加自己的.msg文件

add_message_files(
  FILES
  mymsg.msg
)

确保generate_messages()函数被调用

generate_messages(
  DEPENDENCIES
  std_msgs
)

话题的发布与订阅

用C++编写发布者和订阅者节点:参考链接。
用Python编写发布者和订阅者节点:参考链接

你可能感兴趣的:(ROS,机器人,ROS,自动驾驶)