【ROS2】初级:客户端-使用 ros2doctor 识别问题

目标:使用 ros2doctor 工具识别您的 ROS 2 设置中的问题。

 教程级别:初学者

 时间:10 分钟

 目录

  •  背景

  •  先决条件

  •  任务

    • 1. 检查您的设置

    • 2. 检查系统

    • 3. 获取完整报告

  •  摘要

  •  相关内容

  •  下一步

 背景

当您的 ROS 2 设置未按预期运行时,您可以使用 ros2doctor 工具检查其设置

ros2doctor 检查 ROS 2 的所有方面,包括平台、版本、网络、环境、运行系统等,并会提示您可能的错误及问题原因。

 先决条件

ros2doctor 是 ros2cli 包的一部分。只要你安装了 ros2cli (任何正常的安装都应该有的),你就能使用 ros2doctor 。

本教程使用 turtlesim 来演示一些示例。

 任务

1. 检查您的设置

让我们使用 ros2doctor 整体检查一下你的 ROS 2 设置。首先,在新终端中启动 ROS 2,然后输入命令:

ros2 doctor

这将对您所有的设置模块进行检查,并返回警告和错误。

如果您的 ROS 2 设置完美无缺,您将看到类似这样的消息:

All <n> checks passed

然而,收到一些警告并不罕见。一个 UserWarning 并不意味着你的设置无法使用;它更可能只是表明某些配置的方式不是最理想的。

如果您收到警告,它看起来会是这样的:

<path>: <line>: UserWarning: <message>
cxy@ubuntu2404-cxy:~/ros2_ws$ ros2 doctor
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/package.py: 130: UserWarning: Cannot find the latest versions of packages: test_tf2 test_tracetools test_communication rmw_connextddsmicro test_tracetools_launch [...]. Use `ros2 doctor --report` to see full list.


All 5 checks passed

例如,如果您使用的是不稳定的 ROS 2 发行版, 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 <n> checks passed 消息。

大多数检查被归类为警告而不是错误。通常由您,用户,来确定 ros2doctor 返回的反馈的重要性。如果它确实在您的设置中发现了一个罕见的错误,由 UserWarning: ERROR: 表示,那么检查就被视为失败。

您将看到一条与以下问题反馈列表类似的消息:

1/3 checks failed


Failed modules:  network

错误表明系统缺少对 ROS 2 至关重要的重要设置或功能。应当解决错误以确保系统正常运行。

2. 检查系统

您也可以检查正在运行的 ROS 2 系统,以确定问题的可能原因。要在运行系统上查看 ros2doctor 的工作情况,让我们运行 turtlesim,它有节点在相互积极通信。

启动系统,打开一个新的终端,获取 ROS 2 资源,并输入命令:

ros2 run turtlesim turtlesim_node

打开另一个终端并加载 ROS 2 来运行遥控操作:

ros2 run turtlesim turtle_teleop_key

现在在它自己的终端再次运行 ros2doctor 。如果您有的话,您将看到上次在您的设置上运行 ros2doctor 时出现的警告和错误。在这些之后,将会有一些关于系统本身的新警告:

cxy@ubuntu2404-cxy:~/ros2_ws$ ros2 doctor
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/package.py: 130: UserWarning: Cannot find the latest versions of packages: test_tf2 test_tracetools test_communication rmw_connextddsmicro test_tracetools_launch [...]. Use `ros2 doctor --report` to see full list.
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/topic.py: 42: UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/topic.py: 42: UserWarning: Publisher without subscriber detected on /turtle1/pose.


All 5 checks passed

看起来 /turtlesim 节点发布的数据到两个没有被订阅的主题,而 ros2doctor 认为这可能会导致问题。

如果您运行命令来回显 /color_sensor 和 /pose 主题,那些警告将会消失,因为发布者将会有订阅者。

您可以在 turtlesim 仍在运行的同时,打开两个新的终端,在每个终端中配置 ROS 2,并在各自的终端中运行以下命令来尝试这一操作:

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

再次在其终端运行ros2doctor。发布者没有订阅者警告将会消失。(确保在运行echo的终端中输入Ctrl+C)。

cxy@ubuntu2404-cxy:~/ros2_ws$ ros2 doctor
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/package.py: 130: UserWarning: Cannot find the latest versions of packages: test_tf2 test_tracetools test_communication rmw_connextddsmicro test_tracetools_launch [...]. Use `ros2 doctor --report` to see full list.


All 5 checks passed

现在尝试退出 turtlesim 窗口或退出 teleop 并再次运行 ros2doctor 。你会看到更多警告,表明 publisher without subscriber 或 subscriber without publisher 对于不同的主题,现在系统中的一个节点不可用。

cxy@ubuntu2404-cxy:~/ros2_ws$ ros2 doctor
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/package.py: 130: UserWarning: Cannot find the latest versions of packages: test_tf2 test_tracetools test_communication rmw_connextddsmicro test_tracetools_launch [...]. Use `ros2 doctor --report` to see full list.
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/topic.py: 45: UserWarning: Subscriber without publisher detected on /turtle1/cmd_vel.
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/topic.py: 42: UserWarning: Publisher without subscriber detected on /turtle1/rotate_absolute/_action/feedback.
/home/cxy/ros2_jazzy/build/ros2doctor/ros2doctor/api/topic.py: 42: UserWarning: Publisher without subscriber detected on /turtle1/rotate_absolute/_action/status.


All 5 checks passed

在一个拥有许多节点的复杂系统中, ros2doctor 对于识别通信问题的可能原因将是非常宝贵的。

3. 获取完整报告

当 ros2doctor 会向您发出有关您的网络、系统等的警告时,使用 --report 参数运行它将为您提供更多详细信息,以帮助您分析问题。

您可能需要使用 --report ,如果您收到有关网络设置的警告,并希望准确了解是配置的哪个部分导致了警告。

当您需要开启一个支持票以获得 ROS 2 的帮助时,这也是非常有用的。您可以将报告中相关部分复制并粘贴到票据中,以便帮助您的人更好地理解您的环境并提供更好的协助。

要获取完整报告,请在终端输入以下命令:

ros2 doctor --report

将返回一个信息列表,分为五组:

NETWORK CONFIGURATION
...


PLATFORM INFORMATION
...


RMW MIDDLEWARE
...


ROS 2 INFORMATION
...


TOPIC LIST
...

您可以在运行 ros2 doctor 时,将这里的信息与您收到的警告进行对照。例如,如果 ros2doctor 返回了先前提到的警告,即您的发行版“未得到完全支持或测试”,您可能会查看报告中的 ROS 2 INFORMATION 部分:

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

在这里您可以看到 distribution status 是 prerelease ,这就解释了为什么它没有得到完全支持。

摘要

ros2doctor 将会通知您 ROS 2 设置和运行系统中的问题。您可以通过使用 --report 参数来更深入地了解这些警告背后的信息。

请记住, ros2doctor 不是调试工具;它无法帮助您解决代码中的错误或系统实施方面的问题。

 相关内容 

ros2doctor 的 README https://github.com/ros2/ros2cli/tree/jazzy/ros2doctor 将告诉您更多关于不同参数的信息。您可能也想浏览一下 ros2doctor 仓库,因为它非常适合初学者,是开始贡献的好地方。

88793266ef35f5d72f84b4a32f3b4ecb.png

下一步

您已完成初级教程!

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值