教程八 RoArm-M1 ROS2中rqt的使用

来自Waveshare Wiki
跳转至: 导航搜索

RoArm-M1 教程目录

RoArm-M1 VirtualBox ROS2中rqt的使用

本文档用于RoArm-M1中rqt工具使用的教学。

rqt简介

在ROS2中,rqt是一个图形化工具集,它允许用户通过用户界面来监视、调试和可视化ROS2系统的不同方面。rqt是ROS(Robot Operating System)的GUI插件框架,可以根据需要加载和使用不同的插件。rqt提供了许多插件,包括话题监视器、节点监视器、服务调用器、参数设置器等。

安装并使用rqt

打开一个新的终端,在终端中输入以下命令来安装rqt及其插件:

sudo apt update
sudo apt install ~nros-humble-rqt*

运行rqt:

rqt

这将打开rqt的主界面,第一次运行rqt,窗口将是空白的,你可以通过以下步骤加载并使用插件:
在rqt主界面顶部的菜单栏中,点击“Plugins”选项。在“Plugins”菜单下,可以看到各种可用的插件选项。选择“Services”>“Service Caller”来调用服务,加载“Service Caller”插件后,会显示在rqt主界面上。
插件使用.png
注意:
rqt可能需要一些时间来定位所有插件。如果您点击“Plugins”后没有看到“Services”或其他插件选项,请关闭rqt并在终端中输入命令rqt --force-discover。

使用rqt_graph来查看ROS2话题

话题(Topic)是节点之间进行消息传递的通信机制。它可以被看作是一种发布者-订阅者模式,其中一个节点发布(发布者)消息到话题,而其他节点可以订阅(订阅者)该话题并接收相应的消息。
在本部分中,我们将使用rqt_graph来可视化节点和话题的变化,以及它们之间的连接,此部分都需要在完成教程五运行串口通信节点后四个窗口都打开的情况下操作。
要运行rqt_graph,请打开一个新的终端并输入以下命令:

rqt_graph

你也可以通过打开rqt在主界面顶部的菜单栏中选择“Plugins”>“Introspection”>“Node graph”来打开rqt_graph,打开后的界面如下:
话题查看.png
此时,可以看到上述的节点和话题,节点以圆形图标表示,话题以矩形图标表示。如果你将鼠标悬停在中心的话题上,你会看到像上面图片中的颜色高亮显示。
高亮部分显示了/joint_state_publisher_gui节点如何通过/joint_states话题与/serial_ctrl、/robot_state_publisher两个节点进行通信。/joint_state_publisher_gui节点发布数据到/joint_states话题,而/serial_ctrl节点和/robot_state_publisher节点订阅该话题以接收数据。
rqt_graph的高亮显示功能在检查具有许多节点和以多种不同方式连接话题的更复杂系统时非常有帮助。

使用命令行工具来查看ROS2话题

rqt_graph是一个图形化工具。现在我们将介绍一些用于查看话题的命令行工具。

ros2 topic list

打开一个新的终端,运行以下命令可以看见系统中当前活动的所有话题:

ros2 topic list

查看话题.png
运行以下命令会显示出相同的话题列表,但这次会在括号中附加数据类型:

ros2 topic list -t

查看话题(数据类型).png
在rqt_graph中取消“Hide(隐藏)”下的所有复选框,可以看见这些话题:
所有话题.png

ros2 topic echo

要查看在话题上发布的数据,请使用以下命令:ros2 topic echo <topic_name>
既然我们知道/joint_state_publisher_gui节点通过/joint_states话题向/robot_state_publisher节点发布数据,让我们使用echo来检查该话题:

ros2 topic echo /joint_states

接着使用控制面板来控制机械臂的运动。同时观察运行echo命令的终端,你将看到每次拖拽时发布的位置数据:
位置数据.png
在本教程中,您使用了rqt_graph和命令行工具来查看多个节点之间通过话题的连接。现在,您应该对数据在ROS2系统中的传输有一个很好的理解。