【ROS2学习笔记】rqt 模块化可视化工具
前言
本系列博文是本人的学习笔记,自用为主,不是教程,学习请移步其他大佬的相关教程。前几篇学习资源来自鱼香ROS大佬的详细教程,适合深入学习,但对本人这样的初学者不算友好,后续笔记将以@古月居的ROS2入门21讲为主,侵权即删。
一、学习目标
- 理解 rqt 的核心定位 ——轻量化、模块化的可视化工具,解决 RViz“功能过重、操作繁琐” 的痛点
- 掌握 rqt 的安装与启动(1 行命令搞定)
- 熟练使用 6 个核心模块:日志显示、图像显示、话题发布 / 服务调用、数据曲线绘制、数据包管理、节点可视化
- 清晰区分 rqt 与 RViz 的适用场景(知道什么时候该用哪个工具)
- 记住 rqt 的核心优势:“按需加载模块,轻量化操作,专注单一功能”
二、先搞懂:rqt 是什么?为什么需要它?
2.1 一句话定义:ROS 的 “工具箱式可视化工具”
rqt(ROS Qt-based Toolkit)是基于 Qt 开发的模块化可视化工具集,它把 “日志查看、图像显示、话题调试” 等功能拆分成一个个独立的 “小模块”,需要哪个功能就加载哪个,不用像 RViz 那样加载整个三维环境,轻量化且操作简单。
2.2 为什么用 rqt?(对比 RViz,解决小白痛点)
你有没有过这些困扰?
- 只想看个摄像头图像,却要启动 RViz、添加 Image 显示项、配置参考系 —— 步骤繁琐;
- 调试节点时,想实时看日志输出,却要开多个终端切换 —— 效率低;
- 想临时发布一个话题(比如控制机器人速度),却要写代码或记复杂命令 —— 麻烦。
rqt 的出现就是为了解决这些问题,它的优势和 RViz 的区别如下:
对比维度 | rqt(模块化工具集) | RViz(三维可视化平台) |
---|---|---|
核心特点 | 轻量化、模块化(按需加载功能) | 重量级、一体化(专注三维场景可视化) |
操作复杂度 | 简单(每个模块 1-2 步操作) | 较复杂(需配置参考系、显示项、话题等) |
适用场景 | 1. 快速查看图像 / 日志2. 临时发布话题 / 调用服务3. 画简单数据曲线 | 1. 三维场景可视化(如机器人模型、点云、路径)2. 多传感器数据融合显示 |
启动速度 | 快(秒级启动) | 较慢(需加载三维环境) |
结论:rqt 适合 “轻量级、单一功能” 的调试(比如只看图像、发话题),RViz 适合 “复杂三维场景” 的可视化(比如机器人导航、点云重建)。
三、rqt 基础:安装与启动(超简单!)
3.1 安装 rqt(ROS2 Humble 为例)
打开终端,执行 1 行命令即可安装 rqt 核心包(包含大部分常用模块):
# 安装ROS2 Humble对应的rqt包
sudo apt install ros-humble-rqt
- 若需要更全的模块(如数据包管理、高级调试),可安装扩展包(可选):
sudo apt install ros-humble-rqt-* # 安装所有rqt相关扩展模块
3.2 启动 rqt
安装完成后,终端输入 1 个命令直接启动:
rqt
- 预期效果:弹出 rqt 主窗口,默认是 “空白界面”,顶部有
Plugins
菜单(核心入口,所有模块都从这里加载)。
3.3 rqt 主界面初识(小白必看)
rqt 界面很简洁,核心操作都围绕 “顶部 Plugins 菜单”:
界面元素 | 作用 | 小白操作场景 |
---|---|---|
顶部Plugins 菜单 | 加载 / 卸载 rqt 模块(核心入口) | 想查看图像→Plugins→Visualization→Image View |
中间工作区 | 显示加载的模块界面 | 加载 Image View 后,这里显示摄像头图像 |
底部状态栏 | 显示模块状态(如话题连接情况) | 话题连接成功→显示 “Connected” |
右侧Config 按钮 | 保存 / 加载 rqt 配置(可选) | 常用模块配置好后,保存为 “my_config”,下次直接加载 |
四、rqt 核心模块实战(小白一步到位)
每个模块都按 “打开路径 → 操作步骤 → 应用场景” 的逻辑讲解,确保你能跟着做、用得上。
4.1 模块 1:日志显示(rqt_console)—— 调试节点必备
作用:
集中显示所有 ROS 节点的日志输出(INFO
/WARN
/ERROR
),不用开多个终端切换,方便调试。
操作步骤:
- 打开模块:顶部
Plugins
→Logging
→Console
; - 筛选日志(可选):
- 顶部下拉框选日志级别(
INFO
/WARN
/ERROR
),比如只看错误日志; - 输入 “关键词” 过滤(如输入 “turtle”,只看小海龟节点的日志);
- 顶部下拉框选日志级别(
- 启动一个节点测试(比如小海龟):
bash
ros2 run turtlesim turtlesim_node # 启动小海龟仿真器
- 效果:rqt Console 窗口会实时显示小海龟节点的
INFO
日志(如 “Starting turtlesim with node name '/turtlesim'”)。
应用场景:
- 调试节点时,快速定位错误(比如节点启动失败的
ERROR
日志); - 监控多个节点的运行状态(如同时看相机、激光雷达节点的日志)。
4.2 模块 2:图像显示(rqt_image_view)—— 看摄像头图像超简单
作用:
轻量化显示图像话题(如相机、深度图像),比 RViz 少了 “配置参考系” 的步骤,1 步到位。
操作步骤:
- 打开模块:顶部
Plugins
→Visualization
→Image View
; - 选择图像话题:
- 窗口顶部下拉框会列出所有已发布的图像话题(如
/image_raw
、/rgb/image_raw
); - 选你要查看的话题(比如 Gazebo 仿真相机的
/image_raw
);
- 窗口顶部下拉框会列出所有已发布的图像话题(如
- 效果:窗口实时显示图像,支持鼠标滚轮缩放、点击查看像素值(右下角显示 x/y 坐标和 RGB 值)。
应用场景:
- 快速验证相机是否工作(真实 USB 相机或 Gazebo 仿真相机);
- 调试图像处理节点(比如看图像裁剪、滤波后的效果)。
4.3 模块 3:话题发布 / 服务调用(rqt_publisher + rqt_service_caller)—— 临时调试神器
3.1 话题发布(rqt_publisher)—— 不用写代码,临时发话题
作用:
手动发布 ROS 话题(如/cmd_vel
控制机器人速度、/turtle1/cmd_vel
控制小海龟),适合临时调试。
操作步骤(以控制小海龟为例):
- 打开模块:顶部
Plugins
→Topics
→Publisher
; - 添加话题:
- 点击左下角
+
号 → 输入话题名/turtle1/cmd_vel
,消息类型geometry_msgs/msg/Twist
→ 点击OK
;
- 点击左下角
- 设置话题数据:
- 展开
twist
→ 展开linear
→ 把x
设为2.0
(小海龟前进速度 2m/s); - 展开
angular
→ 把z
设为1.8
(小海龟左转角速度 1.8rad/s);
- 展开
- 启动发布:
- 勾选话题名前的
Enabled
复选框 → 小海龟开始运动; - 想停止时,取消勾选
Enabled
即可。
- 勾选话题名前的
3.2 服务调用(rqt_service_caller)—— 手动触发服务
作用:
手动调用 ROS 服务(如小海龟的/spawn
生成新海龟、/kill
删除海龟),不用写客户端代码。
操作步骤(以生成新海龟为例):
- 打开模块:顶部
Plugins
→Services
→Service Caller
; - 选择服务:
- 顶部下拉框选服务名
/spawn
(小海龟生成服务);
- 顶部下拉框选服务名
- 设置服务参数:
x
设为5.0
,y
设为5.0
(新海龟的位置);theta
设为0.0
(朝向);name
设为turtle2
(新海龟名字);
- 调用服务:点击
Call
按钮 → 小海龟窗口生成turtle2
。
应用场景:
- 临时控制机器人运动(发布
/cmd_vel
); - 调试服务节点(如验证
/spawn
服务是否正常工作)。
4.4 模块 4:数据曲线绘制(rqt_plot)—— 直观看数据变化
作用:
把 ROS 话题的数值数据(如速度、位置)绘制成实时曲线,直观观察数据变化趋势(比如机器人速度是否稳定)。
操作步骤(以绘制小海龟速度为例):
- 打开模块:顶部
Plugins
→Visualization
→Plot
; - 添加要绘制的话题字段:
- 点击左下角
+
号 → 输入话题字段/turtle1/cmd_vel/linear/x
(小海龟 x 轴速度) → 点击OK
;
- 点击左下角
- 发布速度话题(触发曲线):
- 用 rqt_publisher 发布
/turtle1/cmd_vel
,把linear/x
在0~2
之间切换;
- 用 rqt_publisher 发布
- 效果:窗口实时绘制 “时间 - 速度” 曲线,x 轴是时间,y 轴是速度值,能看到速度的变化趋势。
应用场景:
- 调试机器人运动控制(如看速度是否平稳,有无突变);
- 分析传感器数据(如看激光雷达某一方向的距离变化)。
4.5 模块 5:数据包管理(rqt_bag)—— 录制 / 回放 ROS 数据
作用:
录制 ROS 话题数据到.bag
文件(数据包),后续可以回放数据,复现测试场景(比如复现机器人的一次导航过程)。
操作步骤(录制小海龟速度话题为例):
- 打开模块:顶部
Plugins
→Recording
→Bag
; - 录制数据:
- 点击左上角
Record
按钮 → 勾选要录制的话题(如/turtle1/cmd_vel
) → 点击Start Recording
; - 选择保存路径,输入文件名(如
turtle_vel.bag
) → 开始录制;
- 点击左上角
- 停止录制:点击
Stop Recording
; - 回放数据:
- 点击左上角
Play
按钮 → 选择刚才保存的turtle_vel.bag
→ 点击Start Playing
; - 启动小海龟节点 → 小海龟会按录制时的速度运动。
- 点击左上角
应用场景:
- 复现 bug 场景(录制出问题时的话题数据,后续反复回放调试);
- 分享测试数据(把
.bag
文件发给别人,复现你的测试结果)。
4.6 模块 6:节点可视化(rqt_graph)—— 看节点关系图
作用:
生成 ROS 节点、话题、服务的关系图(类似 “思维导图”),直观看到 “哪个节点发布了哪个话题”“哪个节点订阅了哪个话题”。
操作步骤:
- 打开模块:顶部
Plugins
→Introspection
→Node Graph
; - 启动节点测试(如小海龟 + 键盘控制):
ros2 run turtlesim turtlesim_node # 节点1:小海龟仿真器 ros2 run turtlesim turtle_teleop_key # 节点2:键盘控制
- 效果:窗口显示两个节点(
/turtlesim
、/teleop_turtle
),以及它们之间的话题/turtle1/cmd_vel
(teleop_turtle
发布,turtlesim
订阅)。
应用场景:
- 调试节点通信(比如检查 “节点是否正确订阅了话题”“话题名是否写错”);
- 理解复杂系统的节点关系(如导航系统中 “地图节点”“定位节点”“规划节点” 的通信关系)。
五、rqt vs RViz 终极对比(小白再也不混淆)
维度 | rqt | RViz |
---|---|---|
核心定位 | 模块化工具集(单一功能轻量化) | 三维可视化平台(复杂场景一体化) |
操作复杂度 | 低(1-2 步加载模块,无需配置参考系) | 中(需配置 Fixed Frame、显示项、话题) |
适用场景 | 1. 快速看图像 / 日志2. 临时发话题 / 调服务3. 画数据曲线4. 录 / 放数据包5. 看节点关系 | 1. 显示机器人三维模型2. 可视化点云 / 激光扫描3. 显示导航路径 / 坐标系4. 多传感器数据融合显示 |
启动速度 | 快(秒级) | 较慢(需加载三维环境) |
资源占用 | 低(只加载所需模块) | 高(加载整个三维渲染引擎) |
六、复习要点总结(小白必背)
核心命令:
- 安装:
sudo apt install ros-humble-rqt
; - 启动:
rqt
; - 加载模块:顶部
Plugins
→ 选择对应模块(如Image View
)。
- 安装:
6 个核心模块及用途:
- 日志显示(Console):看节点日志,调试错误;
- 图像显示(Image View):轻量化看相机图像;
- 话题 / 服务(Publisher/Service Caller):临时发话题、调服务;
- 数据曲线(Plot):绘制度量数据变化;
- 数据包(Bag):录制 / 回放 ROS 数据;
- 节点图(Node Graph):看节点通信关系。
工具选择原则:
- 轻量化、单一功能 → 用 rqt;
- 三维场景、多数据融合 → 用 RViz。
rqt 是 ROS 调试的 “瑞士军刀”,小巧灵活,掌握这 6 个模块,能解决 80% 的日常调试需求!