常用 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 的机器人系统。