关键词:
概要:这篇主要介绍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学习笔记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文件(原文... 查看详情
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编写一个简单的发布器和... 查看详情