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. 栈层次架构
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 | # 通用 rqt 壳 |
内部均继承 qt_gui.main.Main,通过 plugin.xml + RecursivePluginProvider 发现插件。
5. 推荐阅读顺序
- python_qt_binding → qt_gui_core → rqt(理解插件如何加载)
- 任选一个 rqt_ 插件*(如 rqt_graph)看
plugin.xml+ Plugin 类 - interactive_markers(与 RViz 3D 交互,独立于 rqt)
- rqt_bag(较复杂,含子插件体系)
6. 小结
ros-visualization 不是单一包,而是 GUI 基础设施 + 大量插件 的集合:底层 qt_gui 管插件生命周期与布局,中层 rqt 接 ROS 发现机制,上层各 rqt_* 提供具体工具;interactive_markers 则服务 3D 可视化交互,与 rqt 栈平行。
正在加载留言…