一个基于Qt的ROS2生命周期节点可视化管理工具,可以通过图形界面管理不同节点的生命周期状态。
- 节点自动发现: 自动发现网络中的ROS2生命周期节点
- 可视化状态图: 直观显示节点的状态机和可用转换
- 交互式控制: 点击按钮执行状态转换
- 实时监控: 实时监控节点状态变化
- 日志记录: 显示操作日志和错误信息
- 现代UI: 采用暗色主题的现代化界面
- ROS2 Humble 或更高版本
- Qt5 或 Qt6
- CMake 3.16+
- C++17 编译器
- 确保你已经安装了ROS2和必要的依赖:
# 安装Qt开发包
sudo apt update
sudo apt install qtbase5-dev qt5-qmake libqt5-dev
# 安装ROS2生命周期相关包
sudo apt install ros-humble-lifecycle ros-humble-lifecycle-msgs- 克隆并编译项目:
# 进入你的ROS2工作空间
cd ~/ros2_ws/src
# 克隆项目(如果从git获取)
# git clone <repository_url> lifecycle_gui
# 或者直接使用现有的项目目录
# cp -r /path/to/lifecycle_gui .
# 编译
cd ~/ros2_ws
colcon build --packages-select lifecycle_gui
# 激活环境
source install/setup.bash# 方法1: 直接运行
ros2 run lifecycle_gui lifecycle_gui
# 方法2: 使用launch文件
ros2 launch lifecycle_gui lifecycle_gui.launch.py为了测试GUI工具,你可以启动一些示例生命周期节点:
# 终端1: 启动生命周期talker节点
ros2 run lifecycle lifecycle_talker
# 终端2: 启动GUI工具
ros2 run lifecycle_gui lifecycle_gui
# 终端3: 启动生命周期listener节点(可选)
ros2 run lifecycle lifecycle_listener-
左侧面板: 显示发现的生命周期节点列表
- 每个节点显示为一个独立的控制组件
- 包含节点名称、状态指示器和刷新按钮
-
节点控制组件:
- 状态显示: 显示当前节点状态,用颜色编码
- 状态图: 可视化显示状态机和可用转换
- 转换控制: 下拉菜单选择转换,执行按钮触发状态改变
-
右侧面板: 系统日志
- 显示操作记录、错误信息和系统消息
- 可以清空日志记录
- unconfigured (橙色): 未配置状态,节点初始状态
- inactive (金色): 已配置但未激活,资源已准备但未运行
- active (绿色): 激活状态,节点正常运行
- finalized (灰色): 终结状态,节点已关闭
- configuring (天蓝色): 配置中
- activating (淡绿色): 激活中
- deactivating (卡其色): 停用中
- cleaningup (梅色): 清理中
- shuttingdown (浅灰色): 关闭中
- errorprocessing (番茄色): 错误处理中
- configure: unconfigured → inactive
- activate: inactive → active
- deactivate: active → inactive
- cleanup: inactive → unconfigured
- shutdown: 任何状态 → finalized
项目采用模块化设计:
MainWindow: 主窗口,协调各个组件LifecycleManager: ROS2生命周期服务客户端,处理节点发现和状态管理NodeWidget: 单个节点的控制界面StateDiagram: 状态机可视化组件
-
找不到生命周期节点
- 确保目标节点正在运行
- 检查ROS2网络配置
- 点击"Refresh Nodes"按钮手动刷新
-
状态转换失败
- 检查转换是否在当前状态下可用
- 查看日志面板中的错误信息
- 确认节点响应正常
-
编译错误
- 确保安装了所有依赖包
- 检查ROS2环境是否正确设置
- 验证Qt版本兼容性
启用详细日志:
ros2 run lifecycle_gui lifecycle_gui --ros-args --log-level debug项目结构:
lifecycle_gui/
├── CMakeLists.txt
├── package.xml
├── README.md
├── include/lifecycle_gui/
│ ├── main_window.h
│ ├── lifecycle_manager.h
│ ├── node_widget.h
│ └── state_diagram.h
├── src/
│ ├── main.cpp
│ ├── main_window.cpp
│ ├── lifecycle_manager.cpp
│ ├── node_widget.cpp
│ └── state_diagram.cpp
├── ui/
└── launch/
└── lifecycle_gui.launch.py
Apache License 2.0