ROS2-014-通信机制补完:通信机制工具(一)综述与命令行工具
2025年4月12日...大约 5 分钟
简介
上一章内容,我们学习了ROS2中的多种通信机制,了解了不同通信模型的实现流程、相关API以及各自的特点。在实际开发当中,我们可能会遇到一些问题:
- 一个完整的机器人系统启动之后,其组成是比较复杂的,可能包含十几个、几十个甚至上百个节点,不同的节点可能又包含一个或多个通信对象(话题发布方、话题订阅方、服务端、客户端、动作服务端、动作客户端、参数服务端、参数客户端),通信时还需要使用到各种各样的msg、srv或action接口消息,那么在开发过程中,如何才能方便的获取这些节点、话题、服务、动作、参数以及接口相关的信息呢?
- 编写通信实现,通信至少涉及到双方,一方编写完毕后,如何验证程序是否可以正常运行呢?
- 话题通信过程中,发布方程序中设置了消息的发布频率,如何判断实际运行中的发布频率是否和设置的频率一致呢?
- ......
ROS2 提供了一些工具可以方便快捷的解决上述问题,并且实际上在当时学习的过程中,我们也有使用过这些工具进行相应的调试操作。在这里我们会对其进行更加系统的阐述。
概念
在ROS2中,通信机制相关的工具有两种类型:
- 命令行工具
- 图形化工具(rqt)
命令行工具是一系列 终端命令 的集合,而图形化工具则是 ROS2 基于 QT框架,针对 机器人 开发的一系列 可视化工具 的集合。通过使用这些工具,我们可以更方便的实现程序调试,提高开发效率,优化用户体验。
一、命令行工具
ROS2中常用的命令如下:
- ros2 node:节点相关 命令行工具
- ros2 interface:接口(msg、srv、action)消息相关 的命令行工具
- ros2 topic:话题通信相关 的命令行工具
- ros2 service:服务通信相关 的命令行工具
- ros2 action:动作通信相关 的命令行工具
- ros2 param:参数服务相关 的命令行工具
关于命令的使用一般都会提供内置的帮助文档,帮助文档的获取方式如下:
可以通过在命令后添加参数 -h
或 参数 --help
的方式查看相应的命令帮助文档,比如:
ros2 node -h
或
ros2 node --help
而命令下参数的使用也同样可以通过添加参数 -h
或参数 --help
的方式查看相应的帮助文档,比如:
ros2 node list -h
或
ros2 node list --help
务必活用参数文档!
这里所介绍的命令行工具并不会覆盖到所有内容,如果对某个比较细节的指令不太了解,可以直接在命令行工具内或者官方文档内查看相应的帮助文档以进行参考。
1.ros2 node
ros2 node
的基本使用语法如下:
info
Output information about a node | 输出 node 信息list
Output a list of avaliable nodes | 输出运行中的 node 列表
2.ros2 interface
ros2 interface
的基本使用语法如下:
list
List all interface types avaliable | 输出所有可用的 interface 消息package
Output a list of avaliable interface types within one package | 输出指定功能包下可提供的 interface 类型列表packages
Output a list of packages that provide interfaces | 输出包含 interface 消息的功能包列表proto
Output an interface prototype | 输出 interface 消息原型show
Output the interface definition | 输出 interface 消息定义格式
3.ros2 topic
ros2 topic
的基本使用语法如下:
bw
Display bandwidth used by topic | 输出话题在消息传输中所占用的带宽delay
Display delay of topic from timestamp in header | 输出从 header 的时间戳内获取到的主题延迟时间echo
Output messages from a topic | 输出指定话题下的消息hz
Print the average publishing rate to screen | 输出消息的平均发布速率info
Print information about a topic | 输出指定 topic 的相关信息list
Output a list of avaliable topics | 输出所有可用(运行中)topic 的列表pub
Publish a message to a topic | 将指定消息发布给指定话题type
Print a topic's type | 输出 topic所使用的接口类型
4.ros2 service
ros2 service
的基本使用语法如下:
call
Call a service | 向特定 service 发送请求/调用相关 serviceecho
Echo a service | 实时显示 service 在被调用时服务器所返回的响应数据find
Output a list of avaliable service of a given type | 输出给定 type 下可用的 service 列表info
Print information about a service | 输出指定 service 的相关信息list
Output a list of avaliable services | 输出所有可用(运行中)service 的列表及其 typetype
Print a service's type | 输出 service 所使用的接口类型
5.ros2 action
ros2 action
的基本使用语法如下:
info
Print information about an action | 输出指定 action 的相关信息list
Output a list of action names | 输出所有可用(运行中) action 的列表send_goal
Send an action goal | 向特定 action 发送请求/调用相关 actiontype
Print an action's type | 输出 action 所使用的接口类型
6.ros2 param
ros2 param
的基本使用语法如下:
delete
Delete parameter | 删除 parameterdescribe
Show descriptive information about declared parameters | 输出 parameter 的描述信息dump
Show all of the parameters of a node in a YAML file format | 将 node parameter 以 YAML 格式写入磁盘文件get
Get parameter | 获得指定 parameterlist
Output a list of avaliable parameters | 输出所有可用(运行中) parameter 的列表load
Load parameter file for a node | 从磁盘文件中加载 parameter 至 nodeset
Set parameter | 设置 parameter