简介
当ROS 2安装程序未按预期运行时,可以使用 ros2 doctor工具检查其设置。 ros2 doctor检查ROS 2的所有方面,包括平台,版本,网络,环境,正在运行的系统等,并警告您可能的错误和问题原因。
ros2 doctor仅在Eloquent及更高的版本中可以使用。
ros2 doctor是ros2cli包的一部分。只要我们安装了ros2cli,我们就能够使用ros2 doctor,通常我们安装ros2的时候就安装了这个包。
检查您的安装设置
让我们使用ros2doctor工具检查一下您的ROS 2一般设置。首先,在新终端中source ROS 2安装文件,然后输入以下命令:
ros2 doctor
这会对所有安装模块进行检查,等待一会,并返回警告和错误。
如果您的ROS 2安装完好无损,则会看到类似下面的消息:
All checks passed
但是,返回一些警告消息并不罕见。一个“用户警告”并不意味着您的安装不可用;这很可能只是表明某些配置不理想。
如果您确实收到警告消息,它看起来会像下面这样:
<path>: <line>: UserWarning: <message>
大多数检查都被归类为警告而不是错误。主要由用户您自己决定ros2doctor返回的反馈消息的重要性。如果在您的安装设置中确实发现了不常见的错误,用“UserWarning:ERROR:”来指示,则认为检查不能通过。
您会在问题反馈列表后面看到一条类似于下面这样的消息:
1/3 checks failed
Failed modules: network
一个错误表明系统缺少对ROS 2至关重要的重要安装或功能。您应该解决这些错误,以确保系统正常运行。
检查系统
还可以检查一个运行中的ROS 2系统,以找出产生问题的可能原因。要查看ros2doctor工具在一个运行中的系统上的工作情况,让我们运行Turtlesim,它的各个节点之间都在积极地进行通信。
通过打开一个新终端、source ROS 2安装文件、并输入以下命令来启动该系统:
ros2 run turtlesim turtlesim_node
打开另一个终端并source ROS 2安装文件来运行teleop控制节点:
ros2 run turtlesim turtle_teleop_key
现在在它自己的终端中再次运行ros2 doctor。
ros2 doctor
您将会看到上次运行ros2doctor时遇到的在安装设置上的警告和错误(如果有的话)。后面会跟着与Turtlesim系统本身相关的一些新的警告消息:
UserWarning: Publisher without subscriber detected on
/turtle1/color_sensor.UserWarning: Publisher without subscriber detected on /turtle1/pose.
似乎/turtlesim节点在将数据发布到两个尚未订阅的话题上,ros2 doctor工具认为这可能会出现问题。
如果运行命令来回显(echo)/color_sensor和/pose话题,则这些警告将会消失,因为发布者将会拥有订阅者。