【ROS2学习笔记】rqt 模块化可视化工具

前言

本系列博文是本人的学习笔记,自用为主,不是教程,学习请移步其他大佬的相关教程。前几篇学习资源来自鱼香ROS大佬的详细教程,适合深入学习,但对本人这样的初学者不算友好,后续笔记将以@古月居的ROS2入门21讲为主,侵权即删。

一、学习目标

  1. 理解 rqt 的核心定位 ------轻量化、模块化的可视化工具,解决 RViz"功能过重、操作繁琐" 的痛点
  2. 掌握 rqt 的安装与启动(1 行命令搞定)
  3. 熟练使用 6 个核心模块:日志显示、图像显示、话题发布 / 服务调用、数据曲线绘制、数据包管理、节点可视化
  4. 清晰区分 rqt 与 RViz 的适用场景(知道什么时候该用哪个工具)
  5. 记住 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),不用开多个终端切换,方便调试。

操作步骤:
  1. 打开模块:顶部PluginsLoggingConsole

  2. 筛选日志(可选):

    • 顶部下拉框选日志级别(INFO/WARN/ERROR),比如只看错误日志;
    • 输入 "关键词" 过滤(如输入 "turtle",只看小海龟节点的日志);
  3. 启动一个节点测试(比如小海龟): bash

    复制代码
    ros2 run turtlesim turtlesim_node  # 启动小海龟仿真器
  4. 效果:rqt Console 窗口会实时显示小海龟节点的INFO日志(如 "Starting turtlesim with node name '/turtlesim'")。

应用场景:
  • 调试节点时,快速定位错误(比如节点启动失败的ERROR日志);
  • 监控多个节点的运行状态(如同时看相机、激光雷达节点的日志)。

4.2 模块 2:图像显示(rqt_image_view)------ 看摄像头图像超简单

作用:

轻量化显示图像话题(如相机、深度图像),比 RViz 少了 "配置参考系" 的步骤,1 步到位。

操作步骤:
  1. 打开模块:顶部PluginsVisualizationImage View
  2. 选择图像话题:
    • 窗口顶部下拉框会列出所有已发布的图像话题(如/image_raw/rgb/image_raw);
    • 选你要查看的话题(比如 Gazebo 仿真相机的/image_raw);
  3. 效果:窗口实时显示图像,支持鼠标滚轮缩放、点击查看像素值(右下角显示 x/y 坐标和 RGB 值)。
应用场景:
  • 快速验证相机是否工作(真实 USB 相机或 Gazebo 仿真相机);
  • 调试图像处理节点(比如看图像裁剪、滤波后的效果)。

4.3 模块 3:话题发布 / 服务调用(rqt_publisher + rqt_service_caller)------ 临时调试神器

3.1 话题发布(rqt_publisher)------ 不用写代码,临时发话题
作用:

手动发布 ROS 话题(如/cmd_vel控制机器人速度、/turtle1/cmd_vel控制小海龟),适合临时调试。

操作步骤(以控制小海龟为例):
  1. 打开模块:顶部PluginsTopicsPublisher
  2. 添加话题:
    • 点击左下角+号 → 输入话题名/turtle1/cmd_vel,消息类型geometry_msgs/msg/Twist → 点击OK
  3. 设置话题数据:
    • 展开twist → 展开linear → 把x设为2.0(小海龟前进速度 2m/s);
    • 展开angular → 把z设为1.8(小海龟左转角速度 1.8rad/s);
  4. 启动发布:
    • 勾选话题名前的Enabled复选框 → 小海龟开始运动;
    • 想停止时,取消勾选Enabled即可。
3.2 服务调用(rqt_service_caller)------ 手动触发服务
作用:

手动调用 ROS 服务(如小海龟的/spawn生成新海龟、/kill删除海龟),不用写客户端代码。

操作步骤(以生成新海龟为例):
  1. 打开模块:顶部PluginsServicesService Caller
  2. 选择服务:
    • 顶部下拉框选服务名/spawn(小海龟生成服务);
  3. 设置服务参数:
    • x设为5.0y设为5.0(新海龟的位置);
    • theta设为0.0(朝向);
    • name设为turtle2(新海龟名字);
  4. 调用服务:点击Call按钮 → 小海龟窗口生成turtle2
应用场景:
  • 临时控制机器人运动(发布/cmd_vel);
  • 调试服务节点(如验证/spawn服务是否正常工作)。

4.4 模块 4:数据曲线绘制(rqt_plot)------ 直观看数据变化

作用:

把 ROS 话题的数值数据(如速度、位置)绘制成实时曲线,直观观察数据变化趋势(比如机器人速度是否稳定)。

操作步骤(以绘制小海龟速度为例):
  1. 打开模块:顶部PluginsVisualizationPlot
  2. 添加要绘制的话题字段:
    • 点击左下角+号 → 输入话题字段/turtle1/cmd_vel/linear/x(小海龟 x 轴速度) → 点击OK
  3. 发布速度话题(触发曲线):
    • 用 rqt_publisher 发布/turtle1/cmd_vel,把linear/x0~2之间切换;
  4. 效果:窗口实时绘制 "时间 - 速度" 曲线,x 轴是时间,y 轴是速度值,能看到速度的变化趋势。
应用场景:
  • 调试机器人运动控制(如看速度是否平稳,有无突变);
  • 分析传感器数据(如看激光雷达某一方向的距离变化)。

4.5 模块 5:数据包管理(rqt_bag)------ 录制 / 回放 ROS 数据

作用:

录制 ROS 话题数据到.bag文件(数据包),后续可以回放数据,复现测试场景(比如复现机器人的一次导航过程)。

操作步骤(录制小海龟速度话题为例):
  1. 打开模块:顶部PluginsRecordingBag
  2. 录制数据:
    • 点击左上角Record按钮 → 勾选要录制的话题(如/turtle1/cmd_vel) → 点击Start Recording
    • 选择保存路径,输入文件名(如turtle_vel.bag) → 开始录制;
  3. 停止录制:点击Stop Recording
  4. 回放数据:
    • 点击左上角Play按钮 → 选择刚才保存的turtle_vel.bag → 点击Start Playing
    • 启动小海龟节点 → 小海龟会按录制时的速度运动。
应用场景:
  • 复现 bug 场景(录制出问题时的话题数据,后续反复回放调试);
  • 分享测试数据(把.bag文件发给别人,复现你的测试结果)。

4.6 模块 6:节点可视化(rqt_graph)------ 看节点关系图

作用:

生成 ROS 节点、话题、服务的关系图(类似 "思维导图"),直观看到 "哪个节点发布了哪个话题""哪个节点订阅了哪个话题"。

操作步骤:
  1. 打开模块:顶部PluginsIntrospectionNode Graph

  2. 启动节点测试(如小海龟 + 键盘控制):

    复制代码
    ros2 run turtlesim turtlesim_node  # 节点1:小海龟仿真器
    ros2 run turtlesim turtle_teleop_key  # 节点2:键盘控制
  3. 效果:窗口显示两个节点(/turtlesim/teleop_turtle),以及它们之间的话题/turtle1/cmd_velteleop_turtle发布,turtlesim订阅)。

应用场景:
  • 调试节点通信(比如检查 "节点是否正确订阅了话题""话题名是否写错");
  • 理解复杂系统的节点关系(如导航系统中 "地图节点""定位节点""规划节点" 的通信关系)。

五、rqt vs RViz 终极对比(小白再也不混淆)

维度 rqt RViz
核心定位 模块化工具集(单一功能轻量化) 三维可视化平台(复杂场景一体化)
操作复杂度 低(1-2 步加载模块,无需配置参考系) 中(需配置 Fixed Frame、显示项、话题)
适用场景 1. 快速看图像 / 日志2. 临时发话题 / 调服务3. 画数据曲线4. 录 / 放数据包5. 看节点关系 1. 显示机器人三维模型2. 可视化点云 / 激光扫描3. 显示导航路径 / 坐标系4. 多传感器数据融合显示
启动速度 快(秒级) 较慢(需加载三维环境)
资源占用 低(只加载所需模块) 高(加载整个三维渲染引擎)

六、复习要点总结(小白必背)

  1. 核心命令

    • 安装:sudo apt install ros-humble-rqt
    • 启动:rqt
    • 加载模块:顶部Plugins → 选择对应模块(如Image View)。
  2. 6 个核心模块及用途

    • 日志显示(Console):看节点日志,调试错误;
    • 图像显示(Image View):轻量化看相机图像;
    • 话题 / 服务(Publisher/Service Caller):临时发话题、调服务;
    • 数据曲线(Plot):绘制度量数据变化;
    • 数据包(Bag):录制 / 回放 ROS 数据;
    • 节点图(Node Graph):看节点通信关系。
  3. 工具选择原则

    • 轻量化、单一功能 → 用 rqt;
    • 三维场景、多数据融合 → 用 RViz。

rqt 是 ROS 调试的 "瑞士军刀",小巧灵活,掌握这 6 个模块,能解决 80% 的日常调试需求!

相关推荐
charlie1145141913 小时前
精读C++设计模式20 —— 结构型设计模式:桥接模式
开发语言·c++·学习·设计模式·桥接模式·c++23·概论
丰锋ff4 小时前
英一2010年真题学习笔记
笔记
A9better4 小时前
嵌入式开发学习日志32——stm32之PWM
stm32·单片机·嵌入式硬件·学习
快码加编~5 小时前
无法解析插件 org.apache.maven.plugins:maven-site-plugin:3.12.1
java·学习·maven·intellij-idea
托比-马奎尔5 小时前
Maven学习
java·学习·maven
海梨花5 小时前
【从零开始学习RabbitMQ】
分布式·学习·rabbitmq
程序员大雄学编程5 小时前
「机器学习笔记2」机器学习系统设计:从理论到实践
人工智能·笔记·机器学习
魏郴5 小时前
外卖项目技术亮点总结笔记
笔记
佛系彭哥6 小时前
C语言笔记(2)
c语言·笔记