ROS2学习笔记19--探索ros2doctor工具
Posted 鸿_H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS2学习笔记19--探索ros2doctor工具相关的知识,希望对你有一定的参考价值。
概要:这篇主要介绍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
指令操作;报告获取;反馈内容如何查看,报告内容怎么看.
这课程是在等毕业证那十几天搞的,室友问,现在在线翻译这么强大,为啥还在这里瞎折腾呢?我说,我的目地是好好认真看一下,了解一下,自己折腾,目前是我想到最好的办法来获得最佳效果,即使这翻译有点别扭,哈哈哈.
#####################
不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈
以上是关于ROS2学习笔记19--探索ros2doctor工具的主要内容,如果未能解决你的问题,请参考以下文章