开始使用ros2doctor [待校准@7450]
Goal目标: using使用 ros2doctor
工具识别ROS 2设置中的问题。 [待校准@7451]
教程级别: 初学者 [Alyssa@7088]
时间: 10分钟 [Alyssa@7452]
背景
当您的ROS 2设置没有按预期运行时,您可以使用 ros2doctor
工具检查其设置。 [待校准@7453]
[需手动修复的语法]``ros2doctor`` checksROS 2的所有方面,包括平台、版本、网络、环境、运行系统等,并警告您可能出现的错误和问题原因。 [待校准@7454]
先决条件
ros2doctor
is part of the ros2cli
package. As long as you have ros2cli
installed (which any normal install should have), you will be able to use ros2doctor
. [待校准@7455]
本教程使用 turtlesim 来说明一些示例。 [待校准@7456]
任务
1检查您的设置 [待校准@7457]
让我们用 ros2doctor
作为一个整体来检查你的一般ROS 2设置。首先,在新终端中源文件ROS 2,然后输入命令: [待校准@7458]
ros2 doctor
这将对所有安装模块进行检查,并返回警告和错误。 [待校准@7459]
如果您的ROS 2设置处于完美状态,您将看到类似以下的消息: [待校准@7460]
All <n> checks passed
然而,返回一些警告并不罕见。 UserWarning
并不意味着你的设置是不可用的; 它更可能只是一个迹象,表明某些东西是以一种不理想的方式配置的。 [待校准@7461]
如果您确实收到警告,它将如下所示: [待校准@7462]
<path>: <line>: UserWarning: <message>
例如,如果您使用的是不稳定的ROS 2分布,则 ros2doctor
会发现此警告: [待校准@7463]
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
信息。 [待校准@7464]
大多数检查被归类为警告而不是错误。这主要取决于你,用户,来确定反馈 ros2doctor
回报的重要性。如果它确实在您的设置中发现了一个罕见的错误,如 “用户警告: 错误:” 所示,则检查被视为失败。 [待校准@7465]
您将在问题反馈列表后看到类似的消息: [待校准@7466]
1/3 checks failed
Failed modules: network
错误表明系统缺少对ROS 2至关重要的重要设置或功能。应解决错误以确保系统正常运行。 [待校准@7467]
2检查系统 [待校准@7468]
您还可以检查正在运行的ROS 2系统,以确定问题的可能原因。为了看到 ros2doctor
在一个正在运行的系统上工作,让我们运行Turtlesim,它有彼此主动通信的节点。 [待校准@7469]
通过打开一个新终端,采购ROS 2,并输入以下命令来启动系统: [待校准@7470]
ros2 run turtlesim turtlesim_node
打开另一个终端和源文件ROS 2以运行teleop控件: [待校准@7471]
ros2 run turtlesim turtle_teleop_key
现在在自己的终端再次运行 ros2doctor
。您将看到上次在设置上运行 ros2doctor
时出现的警告和错误 (如果有)。追踪这些将是与系统本身相关的几个新警告: [待校准@7472]
UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
UserWarning: Publisher without subscriber detected on /turtle1/pose.
似乎 /turtlesim
节点将数据发布到两个未订阅的话题, ros2doctor
认为这可能会导致问题。 [待校准@7473]
如果你运行命令来回应 /color_sensor
和 /pose
话题,这些警告将消失,因为出版商将有订阅者。 [待校准@7474]
您可以在turtlesim仍在运行时打开两个新终端,在每个终端中采购ROS 2,并在它们自己的终端中运行以下每个命令来尝试此操作: [待校准@7475]
ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose
然后再次在终端运行 ros2doctor
。 publisher without subscriber
警告将会消失。(确保在运行 echo
的终端中输入 “ctrl + c”)。 [待校准@7476]
现在尝试退出turtlesim窗口或退出teleop并再次运行 ros2doctor
。既然系统中的一个节点不可用,你会看到更多关于不同话题的警告指示 publisher without subscriber
或 subscriber without publisher
。 [待校准@7477]
在一个有许多节点的复杂系统中, ros2doctor
对于识别通讯问题的可能原因是非常宝贵的。 [待校准@7478]
3获取完整报告 [待校准@7479]
而 ros2doctor
会让你知道关于你的网络、系统等的警告。,用 --report
的参数运行它会给你更多的细节来帮助你分析问题。 [待校准@7480]
如果您收到有关网络设置的警告,并想确切找出导致警告的配置部分,您可能希望使用 --report
。 [待校准@7481]
当您需要打开支持票以获得ROS 2的帮助时,这也非常有帮助。您可以将报告的相关部分复制并粘贴到票证中,以便帮助您的人员可以更好地了解您的环境并提供更好的帮助。 [待校准@7482]
要获取完整报告,请在终端中输入以下命令: [待校准@7483]
ros2 doctor --report
它将返回分类为五组的信息列表: [待校准@7484]
NETWORK CONFIGURATION
...
PLATFORM INFORMATION
...
RMW MIDDLEWARE
...
ROS 2 INFORMATION
...
TOPIC LIST
...
你可以在这里对照你从运行 ros2 doctor
中得到的警告核对信息。例如,如果 ros2doctor
返回了警告 (前面提到过),即您的分布 “没有得到完全支持或测试”,您可以查看报告的 ROS 2 INFORMATION
部分: [待校准@7485]
distribution name : <distro>
distribution type : ros2
distribution status : prerelease
release platforms : {'<platform>': ['<version>']}
在这里你可以看到 distribution status
是 prerelease
,这解释了为什么它没有得到完全支持。 [待校准@7486]
总结
ros2doctor
will inform you of problems in your ROS 2 setup and running systems. You can get a deeper look at information behind those warnings by using the --report
argument. [待校准@7487]
请记住, ros2doctor
不是调试工具; 它对代码或系统实现方面的错误没有帮助。 [待校准@7488]
下一步
您已经完成了初级教程! [待校准@7490]