概要:这篇主要介绍ros2doctor工具

环境:ubuntu20.04,ros2-foxy,vscode

最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.

2.2.11探索ros2doctor工具(原文:https://docs.ros.org/en/foxy/Tutorials/Getting-Started-With-Ros2doctor.html

>>教程>>探索ros2doctor工具

你正阅读的是ros2较老版本(Foxy),但仍然支持的说明文档.想查看最新版本的信息,请看galactic版本链接( https://docs.ros.org/en/galactic/Tutorials.html

探索ros2doctor工具

目标:使用ros2工具诊断ros2配置问题

课程等级:初级

时长:10min

目录

1.背景
2.预备知识
3.步骤
3.1检查你的配置
3.2检查一个系统
3.3获取整体报告
4.总结
5.相关概念
6.下一步

1.背景

当你的ro2并没有如预期那样运行时,你可以使用ros2doctor工具来检查其设置.

ros2doctor可以检测ros2的方方面面,包括平台,版本,网络,环境,运行系统等等,并且警告可能出现的错误以及其缘由.

2.预备知识

ros2doctor是ros2cli包的组成部分.只要你按安装了ros2cli(通常常规安装都有),你就可以使用ros2doctor.

3.步骤

3.1检查你的配置


使用ros2doctor来检测大概的ros2整体配置.首先,新终端source一下ros2环境变量,输入下面指令:

ros2 doctor

这会检查所有的配置模块,并且返回警告和报错.

如果你的系统是没有问题的,你会看见类似消息:

All <n> checks passed

然而,有一些警告返回是挺正常的.一条UserWarning消息并不意味着你的配置不可用的.它更可能仅是一个指导,(提醒)有些东西的配置方式并不理想.

如果你收到警告,样式如同:

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

举例子,如果你使用了一个不稳定ros2版本的,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 checks passed消息.

与报错相反,更多检测是归类为警告.ros2doctor反馈结果的重要性很大程度取决定于你和用户.如果在你配置文件里面发现有一个奇怪的报错,UserWarning: ERROR:开头的,这个检查很可能被认为是有错的.

你看到一条跟下面列举的类似反馈消息:

1/3 checks failed

Failed modules:  network

报错表示系统丢失重要的设置,或者缺少对ro2来说很必要的函数.错误应该被解决,保证系统功能正常.

3.2检查一个系统

你也检测一个运行中的ros2系统,找出问题的可能缘由.为了看ros2doctor检查一个运行中的系统,让我们新开一个终端,其可以让节点间活跃地通信.

新开终端来启动系统,source一下ros2环境变量,输入如下指令:

ros2 run turtlesim turtlesim_node

新开另一个终端,source一下ros2环境变量,运行teleop控制:

ros2 run turtlesim turtle_teleop_key

现在在之前终端再次运行ros2doctor.如果(的确是)有错误的话,你会看见这些跟上次对配置运行ros2doctor出现一样警告和报错.后面几个新警告是和系统本身有关的:

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

似乎/turtlesim节点发布数据到两个话题,但话题并没有订阅,所以ros2doctor就认为导致问题的出现.

如果你对话题/color_sensor和话题/pose运行echo指令,这些警告就会消失,因为发布器有了侦听器.

你可以尝试这样子,当turtlesim还在运行时,新开两个终端,各自都source一下ros2环境变量,分别在终端里面运行如下指令:

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

然后在终端再次运行ros2doctor,发布器缺少侦听器的警告会消失(确保你运行echo指令的终端都输入ctrl+c进行终止)

现在尝试终止turtlsim或者teleop终端,再次运行ros2doctor.你会看到更多根据不同话题提示publisher without subscriber或者subscriber without publisher的警告,(由于)现在系统缺少了其中节点.

在有很多节点的复杂系统中,ros2doctor在找出通信问题的有可能原因上面,是发挥不小作用的.

3.3获取整体报告

虽然ros2doctor可能让你知道网络,系统等等的警告,但运行它带上--report参数的话,可以给你更多细节内容,这有助于你分析问题.

如果你网络设置出现警告,想去找出哪一部分配置导致问题的出现,你可能想要使用--report参数.

当你需要一张快捷ros2帮助票(复制到网上求助)时,这也是非常有帮助的.你可以复制和张贴相关报告部分到小票上,这样子,帮助你的那些人可以更好理解你的情况,提供更好的援助.

为了获取完整的,终端输入下面指令:

ros2 doctor --report

其会返回列表中5大类信息:

NETWORK CONFIGURATION
...

PLATFORM INFORMATION
...

RMW MIDDLEWARE
...

ROS 2 INFORMATION
...

TOPIC LIST
...

你可以在这里反复核对运行ros2doctor得到的警告信息.例如,如果ros2doctor返回之前提及的警告信息,你的发行版是“不完全支持或测试”,你可能得看看报告中ROS 2 INFORMATION部分.

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

这里你看到distribution status(版本状态)是prerelease(提前发布的),这也说明了它为啥不完全支持.

4.总结

ros2doctor会告诉你在ros2设置和运行中系统的问题.你可以使用参数--report来查看看警告背后更深层次的信息.

记住,ros2doctor并不是一个调错的工具,对你的代码错误和系统实现方面,没有帮助.

5.相关概念

ros2doctor文档(https://github.com/ros2/ros2cli/tree/foxy/ros2doctor)会告诉你更多不一样的参数.你也愿意看ros2doctor报告,因为它对初学者相当友好,并且是很有价值.

6.下一步

你已经完成了初学教程!

其他

个人认为重点:

理解ros2doctor指令操作;报告获取;反馈内容如何查看,报告内容怎么看.

这课程是在等毕业证那十几天搞的,室友问,现在在线翻译这么强大,为啥还在这里瞎折腾呢?我说,我的目地是好好认真看一下,了解一下,自己折腾,目前是我想到最好的办法来获得最佳效果,即使这翻译有点别扭,哈哈哈.

###############
不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈

原文链接:https://blog.csdn.net/qq_45701501/article/details/119280907