常用 ROS 命令

在机器人系统中,可能同时运行少量到数十个节点。每个节点都有唯一的名称,它们之间通过话题、服务、消息、参数等方式进行通信。一个常见的挑战是:当您需要自定义一个节点与另一个已有节点通信时,如何获取该节点所使用的话题和消息格式?

ROS 提供了一组实用的命令行工具,用于获取不同节点的各种信息。常用命令如下:

  • rosnode: 管理节点
  • rostopic: 管理话题
  • rosservice: 管理服务
  • rosmsg: 管理消息类型 (msg)
  • rossrv: 管理服务消息类型 (srv)
  • rosparam: 管理参数

这些命令是动态的,与静态的文件系统命令不同。在 ROS 程序启动后,这些命令可以让您动态获取运行中的节点或参数的信息。

rosnode

rosnode 用于获取 ROS 节点的信息。

  • rosnode ping: 测试与某节点的连通性
  • rosnode list: 列出所有活跃的节点
  • rosnode info: 打印某节点的信息
  • rosnode machine: 列出运行在指定机器上的节点
  • rosnode kill: 终止某节点
  • rosnode cleanup: 清理无法连接的节点

rostopic

rostopic 包含命令行工具,用于显示有关 ROS 话题的调试信息,如发布者、订阅者、发布频率以及 ROS 消息。它还包含一个用于动态检索话题信息并与之交互的实验性 Python 库。

  • rostopic bw: 显示话题的带宽使用情况
  • rostopic delay: 显示带 header 的话题延迟
  • rostopic echo: 在屏幕上打印消息
  • rostopic find: 按类型查找话题
  • rostopic hz: 显示话题的发布频率
  • rostopic info: 显示话题的信息
  • rostopic list: 列出所有活跃的话题
  • rostopic pub: 向话题发布数据
  • rostopic type: 打印话题的类型

示例:

  • rostopic list(-v): 打印当前正在运行的话题名称(使用 -v 可显示如发布者与订阅者数量等详细信息)。
  • rostopic pub /topic_name msg_type "msg_content": 向话题发布消息。
  • rostopic echo /topic_name: 获取并打印当前话题上正在发布的消息。
  • rostopic info /topic_name: 获取话题的详细信息,包括消息类型、发布者和订阅者信息。
  • rostopic hz /topic_name: 显示话题的发布频率。
  • rostopic bw /topic_name: 显示话题的带宽使用情况。

2.4.3 rosmsg

rosmsg 是用于显示 ROS 消息类型信息的命令行工具。

  • rosmsg show: 显示某条消息的描述
  • rosmsg info: 显示关于某条消息的详细信息
  • rosmsg list: 列出所有消息类型
  • rosmsg md5: 显示某条消息的 MD5 校验和
  • rosmsg package: 列出某个软件包中所有的消息
  • rosmsg packages: 列出所有包含消息的软件包

示例:

  • rosmsg list: 列出当前 ROS 环境中所有的消息类型。
  • rosmsg packages: 列出所有包含消息类型的软件包。
  • rosmsg package <package_name>: 列出指定软件包中的所有消息。
  • rosmsg show <msg_name>: 显示某条特定消息的描述。
  • rosmsg info <msg_name>: 类似于 rosmsg show,提供消息类型的信息。
  • rosmsg md5 <msg_name>: 生成消息的 MD5 校验和,用于数据完整性检查。

2.4.4 rosservice

rosservice 包含用于列出和查询 ROS 服务的命令行工具。

  • rosservice args: 打印服务所需的参数
  • rosservice call: 使用提供的参数调用服务
  • rosservice find: 按类型查找服务
  • rosservice info: 打印服务的信息
  • rosservice list: 列出所有活跃的服务
  • rosservice type: 打印服务的类型
  • rosservice uri: 打印服务的 ROSRPC URI

示例:

  • rosservice list: 列出所有活跃的服务。
  • rosservice args /service_name: 打印某特定服务所需的参数。
  • rosservice call /service_name "args": 使用提供的参数调用服务。
  • rosservice find <service_type>: 按消息类型查找服务。
  • rosservice info /service_name: 获取服务的详细信息。
  • rosservice type /service_name: 获取服务的类型。
  • rosservice uri /service_name: 获取服务的 URI。

2.4.5 rossrv

rossrv 是用于显示 ROS 服务类型信息的命令行工具,语法与 rosmsg 非常相似。

  • rossrv show: 显示某条服务消息的描述
  • rossrv info: 显示关于某条服务消息的详细信息
  • rossrv list: 列出所有服务消息类型
  • rossrv md5: 显示某条服务消息的 MD5 校验和
  • rossrv package: 列出某个软件包中所有的服务消息
  • rossrv packages: 列出所有包含服务消息的软件包

示例:

  • rossrv list: 列出当前 ROS 环境中所有的服务消息类型。
  • rossrv packages: 列出所有包含服务消息的软件包。
  • rossrv package <package_name>: 列出指定软件包中的所有服务消息。
  • rossrv show <srv_name>: 显示某条特定服务消息的描述。
  • rossrv info <srv_name>: 类似于 rossrv show,提供服务消息类型的信息。
  • rossrv md5 <srv_name>: 生成服务消息的 MD5 校验和,用于数据完整性检查。

2.4.6 rosparam

rosparam 包含命令行工具,用于通过 YAML 编码文件在参数服务器上获取与设置 ROS 参数。

  • rosparam set: 设置参数
  • rosparam get: 获取参数
  • rosparam load: 从外部文件加载参数
  • rosparam dump: 将参数导出到外部文件
  • rosparam delete: 删除参数
  • rosparam list: 列出所有参数

示例:

  • rosparam list: 列出参数服务器上的所有参数。
  • rosparam set <param_name> <value>: 设置具有特定值的参数。
  • rosparam get <param_name>: 获取特定参数的值。
  • rosparam delete <param_name>: 删除特定参数。
  • rosparam load <file_name.yaml>: 从 YAML 文件加载参数。
  • rosparam dump <file_name.yaml>: 将当前参数导出到 YAML 文件。

这些命令使您能够动态地与 ROS 生态系统的不同组件交互,提供了一种强大的方式来管理和监控基于 ROS 的机器人系统。