使用命令行工具进行自省
ROS 2 包含一套用于自检 ROS 2 系统的命令行工具。
用法
工具的主要入口点是命令“ros2”,它本身有各种子命令,用于自省和处理节点、主题、服务等。
要查看所有可用的子命令,请运行:
ros2 --help
可用的子命令示例包括:
action
: Introspect/interact with ROS actionsbag
: Record/play a rosbagcomponent
: Manage component containersdaemon
: Introspect/configure the ROS 2 daemondoctor
: Check ROS setup for potential issuesinterface
: Show information about ROS interfaceslaunch
: Run/introspect a launch filelifecycle
: Introspect/manage nodes with managed lifecyclesmulticast
: Multicast debugging commandsnode
: Introspect ROS nodesparam
: Introspect/configure parameters on a nodepkg
: Introspect ROS packagesrun
: Run ROS nodessecurity
: Configure security settingsservice
: Introspect/call ROS servicestest
: Run a ROS launch testtopic
: Introspect/publish ROS topicstrace
: Tracing tools to get information on ROS nodes execution (only available on Linux)wtf
: An alias fordoctor
示例
要使用命令行工具生成典型的 talker-listener 示例,可以使用 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 包提供了一个 security
子命令,如果安装了 sros2
包,该子命令会被 ros2
工具自动检测到。