使用命令行工具进行内省
ROS 2 包含一套命令行工具,用于内省 ROS 2 系统。
用法
工具的主要入口点是命令 ros2
,它本身有各种子命令,用于内省和处理节点、主题、服务等。
要查看所有可用的子命令,请运行:
ros2 --help
可用的子命令示例包括:
action
:查看/与ROS动作进行交互bag
:记录/播放rosbagcomponent
:管理组件容器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``子命令。