9-使用ros2doctor来定位问题

背景

    当您的ROS 2安装程序没有按预期运行时,您可以使用ros2doctor工具检查它的设置。
    ros2doctor检查ROS 2的所有方面,包括平台、版本、网络、环境、运行系统等,并警告您可能出现的错误和问题原因。

    ros2doctor是ros2cli包的一部分。只要安装了ros2cli(任何正常安装都应该安装),就可以使用ros2doctor。

任务

1 检查你的设置

    用ros2doctor从整体上检查一下ROS 2设置。首先,在一个新的终端中source一下,然后输入命令:

ros2 doctor

    这将对所有设置模块进行检查,并返回警告和错误。
    如果你的ROS 2设置是正常的,你会看到类似这样的消息:

All <n> checks passed

    然而,通常会返回一些警告。UserWarning并不意味着你的设置不可用,它更有可能只是表明某些配置方式不理想。
    如果你收到了一个警告,它看起来像这样:

<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消息。
    大多数检查被归类为警告,而不是错误。如果它确实在您的设置中发现了一个罕见的错误,由UserWarning: error:表示,则认为检查失败。
    您将看到一条类似于以下问题反馈列表的消息:

1/3 checks failed

Failed modules:  network

    error表示系统缺少对ROS 2至关重要的重要设置或功能。应解决错误,以确保系统正常运行。

2 检查系统

    您还可以检查正在运行的ROS 2系统,以确定问题的可能原因。要查看ros2doctor在运行中的系统上的工作情况,可以运行turtlesim节点进行测试。
    打开一个新的终端并source一下,并输入命令:

ros2 run turtlesim turtlesim_node

    打开另一个终端并source,运行turtle_teleop_key:

    现在在自己的终端中再次运行ros2doctor。您将看到上次在安装上运行ros2doctor时出现的警告和错误(如果有)。以下是与系统本身有关的几个新警告:

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

    似乎/turtlesim节点向两个没有被订阅的话题发布数据,ros2doctor认为这可能会导致问题。
    如果您运行命令echo /color_sensor和 echo /pose 来打印显示话题内容,这些警告将消失,因为发布者已经拥有订阅者。
    您可以在turtlesim仍在运行时打开两个新终端,在每个终端中source ros2,并在各自的终端中运行以下命令:

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

    然后再次在其终端运行ros2doctor。没有发布者没有订阅者警告将不存在。(确保在运行echo的终端中输入Ctrl+C)。
    现在尝试退出乌龟窗口或退出teleop并再次运行ros2doctor。由于系统中的一个节点不可用,您将看到更多警告,指示不同话题的发布者没有订阅者或订阅者没有发布者。
    在具有许多节点的复杂系统中,ros2doctor对于识别通信问题的可能原因非常有用。

3 获得一份完整的报告

    虽然ros2doctor会让您知道有关网络、系统等的警告,但使用--report参数运行它将为您提供更多细节,以帮助您分析问题。
    比如如果您收到关于网络设置的警告,并且希望准确地找出是配置的哪个部分导致了警告,那么您可能需要使用--report。
    当您需要根据这个问题搜索解决办法时,可以将报告的相关部分复制并粘贴到ros官网论坛,以便别人可以更好地了解您的问题并提供更好的帮助。
    要获得完整的报告,在终端输入以下命令:

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>']}

    在这里,您可以看到发行版状态是预发布,这解释了为什么它不完全支持。

总结

    ros2doctor将通知您ROS 2设置和运行系统中的问题。通过使用--report参数,可以更深入地了解这些警告背后的信息。
    注意:ros2doctor不是一个调试工具,它不会帮助解决代码中的错误或系统的实现端错误。
    更多信息请参考:https://github.com/ros2/ros2cli/tree/humble/ros2doctor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值