使用命令行工具进行内省

ROS 2 包含一套命令行工具,用于内省 ROS 2 系统。

用法

工具的主要入口点是命令 ros2,它本身有各种子命令,用于内省和处理节点、主题、服务等。

要查看所有可用的子命令,请运行:

ros2 --help

可用的子命令示例包括:

  • action:查看/与ROS动作进行交互

  • bag:记录/播放rosbag

  • component:管理组件容器

  • daemon:查看/配置ROS 2守护进程

  • doctor:检查ROS设置是否存在潜在问题

  • interface:显示有关ROS接口的信息

  • launch:运行/查看启动文件

  • lifecycle:查看/管理具有受控生命周期的节点

  • multicast:多播调试命令

  • node:查看ROS节点

  • param:查看/配置节点上的参数

  • pkg:查看ROS包

  • run:运行ROS节点

  • security:配置安全设置

  • service:查看/调用ROS服务

  • test:运行ROS启动测试

  • topic:查看/发布ROS主题

  • trace:跟踪工具,用于获取有关ROS节点执行的信息(仅在Linux上可用)

  • wtf``doctor``的别名

示例

要使用命令行工具生成典型的发布者-订阅者示例,可以使用“topic”子命令在主题上发布和回显消息。

在一个终端中发布消息:

$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"
publisher: beginning loop
publishing #1: std_msgs.msg.String(data='Hello world')

publishing #2: std_msgs.msg.String(data='Hello world')

在另一个终端中回显接收到的消息:

$ ros2 topic echo /chatter
data: Hello world

data: Hello world

幕后

ROS 2使用分布式发现过程使节点能够相互连接。由于这个过程故意不使用集中式发现机制,因此ROS节点要发现ROS图中的所有其他参与者可能需要一些时间。因此,后台运行的长期守护程序存储有关ROS图的信息,以提供更快的查询响应,例如节点名称列表。

当首次使用相关命令行工具时,守护程序将自动启动。您可以运行``ros2 daemon --help``获取与守护程序交互的更多选项。

实现

``ros2``命令的源代码可在https://github.com/ros2/ros2cli上获得。

``ros2``工具已作为一个可通过插件进行扩展的框架实现。例如,如果安装了``sros2``包,则``ros2``工具会自动检测到`sros2 <https://github.com/ros2/sros2>`__包提供的``security``子命令。