ROS2学习之旅(19)——学会使用ros2doctor

当ROS 2程序没有按预期运行时,可以使用ros2doctor工具检查其设置。

ros2doctor检查ROS 2的所有方面,包括平台、版本、网络、环境、运行系统等,并警告可能出现的错误和问题原因。

ros2doctorros2cli包的一部分。

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

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

运行ros2doctor:

UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
UserWarning: Publisher without subscriber detected on /turtle1/pose.

它似乎认为/turtlesim节点向两个未订阅的主题发布数据,而ros2doctor认为这可能会导致问题。

如果运行命令显示/color_sensor/pose主题,这些警告将消失,因为发布者将拥有订阅者。

可以在turtlesim运行时打开两个新终端,终端中运行以下命令:

ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose

然后再次在其终端中运行ros2doctorpublisher without subscriber警告将消失。(确保在运行echo的终端中输入Ctrl+C)

在具有许多节点的复杂系统中,ros2doctor对于识别通信问题的可能原因非常有用。

3.得到完整的报告

虽然ros2doctor可以知道有关网络、系统等的警告,但使用--report参数运行它将提供更多细节,以帮助分析问题。

如果得到一个关于网络设置的警告,并且希望确切地找出是配置的哪一部分导致了该警告,此时可以使用--report

当需要ROS 2的帮助时,它也非常有用。可以将报告的相关部分复制并粘贴,以便帮助的人能够更好地了解环境并提供更好的帮助。

要获取完整的报告,在终端中输入以下命令:

ros2 doctor --report

它将返回一个信息列表,其中分为五组:

NETWORK CONFIGURATION
...

PLATFORM INFORMATION
...

RMW MIDDLEWARE
...

ROS 2 INFORMATION
...

TOPIC LIST
...

可以对照运行ros2 doctor得到的警告来交叉检查这里的信息。例如,如果ros2doctor返回了警告:not fully supported or tested,可以查看报告的ROS 2 INFORMATION部分:

distribution name      : <distro>
distribution type      : ros2
distribution status    : prerelease
release platforms      : {'<platform>': ['<version>']}

可以看到distribution statusprerelease,这解释了为什么它不被完全支持。

4.总结

ros2doctor会通知ROS 2安装和运行系统中的问题,可以使用--report参数更深入地了解这些警告背后的信息。

请记住,ros2doctor不是一个调试工具,它不会帮助解决代码中的错误或系统的实现方面的错误。

如果给您带来帮助,希望能给点个关注,以后还会陆续更新有关机器人的内容,点个关注不迷路~欢迎大家一起交流学习。
都看到这了,点个推荐再走吧~
未经允许,禁止转载。

posted @ 2021-07-15 20:06  Love&Robot  阅读(425)  评论(0编辑  收藏  举报