ros-visualization 源码总览

ros-visualization 源码总览

工作区路径:/home/cp/work2/ros2Learn/ros2_humble/src/ros-visualization
文档输出:/home/cp/work2/ros2Learn/ros2doc/ros-visualization/

ros-visualization 是 ROS 2 可视化与 GUI 工具栈:提供 RViz 交互标记、Qt/rqt GUI 框架,以及大量 introspection 插件(话题图、plot、bag 回放等)。


1. 顶层目录与文档索引

目录 包数 版本(代表) 文档
interactive_markers/ 1 2.3.3 interactive_markers源码详细分析.md
python_qt_binding/ 1 1.1.3 python_qt_binding源码详细分析.md
tango_icons_vendor/ 1 0.1.1 tango_icons_vendor源码详细分析.md
qt_gui_core/ 6 2.2.5 qt_gui_core源码详细分析.md
rqt/ 5 1.1.9 rqt源码详细分析.md
rqt_bag/ 2 1.1.6 rqt_bag源码详细分析.md
rqt_action/ 1 2.0.1 rqt_action源码详细分析.md
rqt_console/ 1 2.0.3 rqt_console源码详细分析.md
rqt_graph/ 1 1.3.2 rqt_graph源码详细分析.md
rqt_msg/ 1 1.2.0 rqt_msg源码详细分析.md
rqt_plot/ 1 1.1.5 rqt_plot源码详细分析.md
rqt_publisher/ 1 1.5.0 rqt_publisher源码详细分析.md
rqt_py_console/ 1 1.0.2 rqt_py_console源码详细分析.md
rqt_reconfigure/ 1 1.1.4 rqt_reconfigure源码详细分析.md
rqt_service_caller/ 1 1.0.5 rqt_service_caller源码详细分析.md
rqt_shell/ 1 1.0.2 rqt_shell源码详细分析.md
rqt_srv/ 1 1.0.3 rqt_srv源码详细分析.md
rqt_topic/ 1 1.5.1 rqt_topic源码详细分析.md

2. 栈层次架构

应用层可视化库GUI 框架基础层rviz2\n(ros2/rviz)rqt / rqt_graph / rqt_bag ...interactive_markers\nServer/Clientrqt\nrqt_gui + providersqt_gui_core\nqt_gui + plugin_managerpython_qt_binding\nPyQt/PySidetango_icons_vendorvisualization_msgsrclpy / rclcpp

3. 功能分组

3.1 3D 交互(非 RViz 本体)

  • interactive_markers:Server/Client 协议,供 RViz、Nav2、MoveIt 等实现可拖拽 3D 控件

3.2 GUI 基础设施

  • python_qt_binding:统一 PyQt5/PySide2 导入
  • tango_icons_vendor:非 Linux 平台 Tango 图标
  • qt_gui_core:通用 Qt 插件框架(Perspective、Dock、PluginManager)
  • rqt:ROS 专用 qt_gui 入口 + Python/C++ 插件 Provider

3.3 rqt 插件(Introspection / Tools)

插件 功能
rqt_graph 计算图可视化
rqt_topic 话题调试信息
rqt_plot 数值曲线
rqt_console /rosout 日志
rqt_bag bag 回放/录制 GUI
rqt_reconfigure 动态参数
rqt_publisher 手动发消息
rqt_service_caller 调用 service
rqt_msg / rqt_srv / rqt_action 类型 introspection
rqt_shell / rqt_py_console 终端 / Python 控制台

4. 典型启动链

1
2
3
4
5
6
# 通用 rqt 壳
ros2 run rqt_gui rqt_gui

# 独立插件
ros2 run rqt_graph rqt_graph
ros2 run rqt_bag rqt_bag

内部均继承 qt_gui.main.Main,通过 plugin.xml + RecursivePluginProvider 发现插件。


5. 推荐阅读顺序

  1. python_qt_bindingqt_gui_corerqt(理解插件如何加载)
  2. 任选一个 rqt_ 插件*(如 rqt_graph)看 plugin.xml + Plugin 类
  3. interactive_markers(与 RViz 3D 交互,独立于 rqt)
  4. rqt_bag(较复杂,含子插件体系)

6. 小结

ros-visualization 不是单一包,而是 GUI 基础设施 + 大量插件 的集合:底层 qt_gui 管插件生命周期与布局,中层 rqt 接 ROS 发现机制,上层各 rqt_* 提供具体工具;interactive_markers 则服务 3D 可视化交互,与 rqt 栈平行。

文章互动

阅读 --

留言

0 条留言

正在加载留言…