2.11.1 目标
使用ros2doctor工具确定ROS 2安装设置中的问题。
2.11.2 教程级别
入门
2.11.3 学习时间
10分钟
2.11.4 内容
2.11.4.1 背景知识
当ROS 2安装程序不能按预期运行时,可以使用ros2doctor工具检查其设置。
工具ros2doctor可以检查ROS 2的各个方面,包括平台、版本、网络、环境、正在运行的系统等,并警告您可能的错误和产生问题的原因。
2.11.4.2 前提条件
ros2doctor工具仅在ROS 2 Eloquent和更高的发行版中可以使用。
ros2doctor工具是ros2cli软件包的一部分。只要您安装了ros2cli(任何常规安装都应该已经安装好了ros2cli),就可以使用ros2doctor工具。
本教程使用turtlesim来展示一些示例。
2.11.4.3 任务
(1)检查您的安装设置
让我们使用ros2doctor工具检查一下您的ROS 2一般设置。首先,在新终端中source ROS 2安装文件,然后输入以下命令:
ros2 doctor
这会对所有安装模块进行检查,并返回警告和错误。
如果您的ROS 2安装完好无损,则会看到类似下面的消息:
All <n> checks passed
但是,返回一些警告消息并不罕见。一个「用户警告」并不意味着您的安装不可用;这很可能只是表明某些配置不理想。
如果您确实收到警告消息,它看起来会像下面这样:
<path>: <line>: UserWarning: <message>
例如,如果您使用不稳定的ROS 2发行版,ros2doctor会发现此警告:
UserWarning: Distribution <distro> is not fully supported or tested. To get more consistent features, download a stable version at https:// index.ros.org/doc/ros2/ Installation/
如果ros2doctor仅在系统中找到一些警告消息,您仍将会收到「All <n> checks passed」的消息。
大多数检查都被归类为警告而不是错误。主要由用户您自己决定ros2doctor返回的反馈消息的重要性。如果在您的安装设置中确实发现了不常见的错误,用「UserWarning:ERROR:」来指示,则认为检查不能通过。
您会在问题反馈列表后面看到一条类似于下面这样的消息:
1/3 checks failed
Failed modules: network
一个错误表明系统缺少对ROS 2至关重要的重要安装或功能。您应该解决这些错误,以确保系统正常运行。
(2)检查系统
还可以检查一个运行中的ROS 2系统,以找出产生问题的可能原因。要查看ros2doctor工具在一个运行中的系统上的工作情况,让我们运行Turtlesim,它的各个节点之间都在积极地进行通信。
通过打开一个新终端、source ROS 2安装文件、并输入以下命令来启动该系统:
ros2 run turtlesim turtlesim_node
打开另一个终端并source ROS 2安装文件来运行teleop控制节点:
ros2 run turtlesim turtle_teleop_key
现在在它自己的终端中再次运行ros2doctor。您将会看到上次运行ros2doctor时遇到的在安装设置上的警告和错误(如果有的话)。后面会跟着与Turtlesim系统本身相关的一些新的警告消息:
UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
UserWarning: Publisher without subscriber detected on /turtle1/pose.
似乎/turtlesim节点在将数据发布到两个尚未订阅的话题上,ros2doctor工具认为这可能会出现问题。
如果运行命令来回显(echo)/color_sensor和/pose话题,则这些警告将会消失,因为发布者将会拥有订阅者。
您可以在turtlesim仍在运行时打开两个新终端、在每个终端中source ROS 2安装文件并分别运行以下命令来尝试此操作:
ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose
然后再次在其终端中运行ros2doctor。「没有订阅者的发布者」警告消息将会消失。(请确保在运行echo的两个终端中按下Ctrl + C键来停止运行)。
现在尝试退出turtlesim窗口或者退出Teleop并再次运行ros2doctor。 由于系统中的一个节点不可用,您将会看到更多针对不同话题的「没有订阅者的发布者」或者「没有发布者的订阅者」的警告消息。
在一个有许多节点的复杂系统中,ros2doctor工具对于确定造成通信问题的可能原因将会非常有用。
(3)获得一个完整的报告
尽管ros2doctor工具会让您知道有关网络、系统等的警告消息,但使用--report参数运行它会为您提供更多详细信息,以帮助您分析问题。
如果收到有关您的网络设置的警告消息,并且想确切地找出网络配置中是哪个部分导致了该警告消息,则可能要使用--report参数。
当您需要打开支持通知单以获取ROS 2帮助时,这也会非常有用。您可以将报告的相关部分复制并粘贴到该通知单中,以便帮助您的人可以更好地了解您的环境并提供更好的帮助。
要获取完整的报告,请在终端中输入以下命令:
ros2 doctor --report
这会返回归为五类的一个信息列表:
NETWORK CONFIGURATION
...
PLATFORM INFORMATION
...
RMW MIDDLEWARE
...
ROS 2 INFORMATION
...
TOPIC LIST
...
您可以对照从运行ros2 doctor收到的警告来交叉检查此处的信息。 例如,如果ros2doctor返回您的发行版「未完全支持或未经过测试」的警告消息(如前所述),则可以查看报告的ROS 2 INFORMATION部分:
distribution name : <distro>
distribution type : ros2
distribution status : prerelease
release platforms : {'<platform>': ['<version>']}
在这里您可以看到「发行状态」为「预发行」,这就解释了为什么不完全支持该发行版。
2.11.5 小结
ros2doctor工具会通知您ROS 2安装设置和运行系统中的问题。您可以使用--report参数更深入地了解这些警告消息背后的信息。
请记住,ros2doctor工具不是调试工具;它不会帮助您解决代码或系统实现方面的错误。
2.11.6 相关内容
ros2doctor工具的自述文件(README)会告诉您更多有关不同参数的信息。您可能还想看看ros2doctor的存储库,因为它相当适合初学者,并且是开始进行贡献的好地方。
2.11.7 下一步
至此您已经完成了所有入门级教程!
*英语原文地址:http:// docs.ros.org/en/foxy/Tu torials/Getting-Started-With-Ros2doctor.html#ros2doctor