警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

使用 ros2doctor 确定问题

目标 使用 ros2doctor 工具

辅导水平: 初学者

时间 10 分钟

背景介绍

当 ROS 2 设置无法按预期运行时,可以使用 ros2doctor 工具

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

先决条件

ros2doctorros2cli 包装。只要您有 ros2cli 安装(任何正常安装都应安装),您就可以使用 ros2doctor.

本教程使用 海龟 来说明其中的一些例子。

任务

1 检查您的设置

让我们从整体上检查一下 ROS 2 的一般设置,包括 ros2doctor.首先,在新终端中输入 ROS 2 的源代码,然后输入命令:

ros2医生

这将对所有设置模块进行检查,并返回警告和错误信息。

如果您的 ROS 2 设置完好,您会看到类似下面的信息:

所有检查均已通过

不过,被退回一些警告也是常有的事。A 用户警告 并不意味着你的设置无法使用;更可能只是表明某些配置方式不理想。

如果您确实收到了警告,它会显示如下内容:

<path>:<line>:UserWarning: <message>;

例如 ros2doctor 会发现此警告:

用户警告:Distribution <distro>尚未完全支持或经过测试。要获得更稳定的功能,请从 https://index.ros.org/doc/ros2/Installation/ 下载稳定版本。

如果 ros2doctor 在您的系统中只发现警告,您仍将收到 全部 <n>; 检查 通过 留言

大多数检查都被归类为警告,而不是错误。反馈的重要性主要由用户决定 ros2doctor 返回。如果它确实发现了设置中的一个罕见错误,用 用户警告 错误:则认为检查失败。

您将在问题反馈列表后看到类似下面的信息:

1/3 检查失败

故障模块:网络

错误表示系统缺少对 ROS 2 至关重要的重要设置或功能。

2 检查系统

您还可以检查运行中的 ROS 2 系统,找出可能存在问题的原因。查看 ros2doctor 让我们运行 Turtlesim,它的节点之间会主动进行通信。

打开一个新的终端,连接 ROS 2,输入命令启动系统:

ros2 运行 turtlesim turtlesim_node

打开另一个终端,输入 ROS 2 运行远程操作控制:

ros2 run turtlesim turtle_teleop_key

现在运行 ros2doctor 在自己的终端中再次运行。您将看到上次运行时出现的警告和错误。 ros2doctor 如果有的话。随后会出现一些与系统本身有关的新警告:

用户警告:在 /turtle1/color_sensor 上检测到没有订阅者的发布者。
用户警告:在 /turtle1/pose 上检测到没有订阅者的发布者。

看来 /turtlesim 节点向两个未被订阅的主题发布数据,以及 ros2doctor 认为这可能会导致问题。

如果运行命令来呼应 /颜色传感器/姿势 主题,这些警告将消失,因为出版商将拥有订户。

您可以尝试这样做:在海龟模拟器仍在运行时打开两个新终端,在每个终端中查找 ROS 2,然后在各自的终端中分别运行以下命令:

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

然后运行 ros2doctor 再次进入终端。缆线 出版商 不带 订购者 警告将消失。(确保输入 Ctrl+C 在运行 回响).

现在尝试退出 turtlesim 窗口或退出 teleop,然后运行 ros2doctor 再次。您会看到更多警告提示 出版商 不带 订购者订购者 不带 出版商 现在系统中的一个节点无法使用。

在一个有许多节点的复杂系统中、 ros2doctor 这对于找出沟通问题的可能原因是非常宝贵的。

3 获取完整报告

虽然 ros2doctor 会让你了解有关网络、系统等的警告信息,使用 --报告 论据将为您提供更多细节,帮助您分析问题。

您可能需要使用 --报告 如果您收到有关网络设置的警告,并希望准确找出导致警告的配置部分。

您可以将报告的相关部分复制并粘贴到支持票据中,这样帮助您的人员就能更好地了解您的环境并提供更好的帮助。

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

ros2 doctor --report

这将返回一个信息列表,分为五组:

网络配置
...

平台信息
...

RMW 中间件
...

ros 2 信息
...

主题列表
...

您可以将此处的信息与运行 玫瑰2 医生.例如,如果 ros2doctor 返回的警告(如前所述)称,您的发行版 "未得到全面支持或测试",您可以看看 ROS 2 信息 部分:

分配名称:<distro>;
分布类型:ROS2
发行状态:预发行
release platforms : {'<platform>':['<version>']}

在这里您可以看到 分配 地位预释放这就解释了为什么它不完全受支持。

摘要

ros2doctor 会通知你 ROS 2 设置和运行系统中存在的问题。您可以使用 --报告 争论。

请记住 ros2doctor 不是调试工具;它无法帮助您解决代码或系统执行方面的错误。

下一步工作

您已经完成了初级教程!