ros2学习笔记19--探索ros2doctor工具(代码片段)

鸿_H 鸿_H     2022-12-15     804

关键词:

概要:这篇主要介绍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.预备知识

ros2doctorros2cli包的组成部分.只要你按安装了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学习笔记16--详述ros2接口(代码片段)

概要:这篇主要进一步介绍ros2接口.环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.8拓展ros2接口(原文:https://docs.ros.org/en/foxy/Tutorials... 查看详情

ros2学习笔记25--ros2话题统计编写教程(c++)(代码片段)

概要:这篇内容主要介绍用c++编写能够统计话题的侦听器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.1ros2话题统计教程(C++)(... 查看详情

ros2学习笔记15--创建自定义ros2接口文件msg和srv(代码片段)

概要:这篇主要介绍如何创建定制型ros2接口文件msg和srv环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.7创建自定义ros2消息msg和srv文件(原文&#x... 查看详情

ros2学习笔记10--使用ros2bag进行录制和回放数据(代码片段)

概要:这篇主要介绍使用ros2bag进行录制和回放数据环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.1.10录制和回放数据(原文:https://docs.ros.or... 查看详情

ros2学习笔记28--ros2环境下,多激光雷达启动的launch文件编写样式参考(代码片段)

背景:一次需要读取多个velodyne的雷达点云数据,但是ros2知识缺少,一番折腾终有成果.1.准备velodyne的ros2版本驱动链接:https://github.com/ros-drivers/velodyne/tree/ros22.launch文件编写2.1官方 查看详情

ros2学习笔记20--创建一个action(代码片段)

概要:这篇内容主要介绍如何创建一个action环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.3.1创建一个动作(原文:https://docs.ros.org/en/foxy/Tutori... 查看详情

ros2学习笔记11--工作空间的创建(代码片段)

概要:这篇主要介绍工作空间的创建环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.1创建工作空间(原文:https://docs.ros.org/en/foxy/Tutorials/Wor... 查看详情

ros2学习笔记29--项目从ros1迁移到ros2的经验参考(代码片段)

环境:ubuntu20.04,ros-foxy(ros2),vscode背景:项目需要,一直折腾把ros1下面的包升级到ros2版本.以下纯属个人查找资料摸索,自我理解所得,有错误的地方,望大佬们不吝赐教.1.消失的句柄ro... 查看详情

ros2学习笔记9--创建一个launch文件(代码片段)

概要:这篇主要介绍launch文件环境:ubuntu20.04,ros2-foxy,vscode最后没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.1.9创建一个launch文件(原文:https://docs.ros.org/en/foxy/Tutorials/Launch-Files... 查看详情

ros2学习笔记18-velodyne16雷达点云在ros2中可视化案例参考(代码片段)

环境:ubuntu20.04,ros-foxy,vscode,velodyne-16背景:练习如何将velodyne-16雷达点云数据在ros2中读取并可视化.折腾了很久,并没有找到类似案例,所以自己总结一下.1.修改电脑ip这里修改自己电脑ip,跟大多数... 查看详情

ros2学习笔记24--用colcon对包进行编译(代码片段)

概要:这篇内容主要介绍用colcon对包进行编译环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.6用colcon对包进行编译(原文:https://docs.ros.org/en/foxy/Tu... 查看详情

ros2学习笔记27--实现自定义内存分配器(代码片段)

概要:这篇内容主要介绍如何实现自定义内存分配器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.3实现自定义内存分配器(原文:https://docs.ros.or... 查看详情

ros2学习笔记17--在类中使用参数(c++)(代码片段)

概要:这篇主要介绍在类中使用参数(C++)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.9在类中使用参数(C++)(... 查看详情

ros2学习笔记22--使用launch启动/监听多个node节点(代码片段)

概要:这篇内容主要介绍如何使用launch启动/监听多个node节点环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.4使用launch启动/监听多个node节点ÿ... 查看详情

ros2学习笔记23--将多个node节点组合到单一进程中(代码片段)

概要:这篇内容主要介绍将多个node节点组合到单一进程中环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.5多个node节点组合到单一进程中(原文:ht... 查看详情

ros2学习笔记26--使用快速dds查找服务作为查找协议(社区贡献)(代码片段)

概要:这篇内容主要介绍使用快速DDS查找服务作为查找协议(社区贡献)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.2使用快速DDS查找服务作为... 查看详情

ros2学习笔记21--编写action服务器和客户端(c++)(代码片段)

概要:这篇内容主要介绍如何使用C++来编写动作服务器和客户端环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.3.2编写动作服务器和客户端(... 查看详情

ros2学习笔记13--编写一个简单的发布器和侦听器(c++)(代码片段)

概要:这篇主要介绍编写发布器和侦听器的简单套路(C++)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.3编写一个简单的发布器和... 查看详情