Skip to content

cmeng3952/ros2-lifecycle-gui

Repository files navigation

ROS2 Lifecycle GUI

一个基于Qt的ROS2生命周期节点可视化管理工具,可以通过图形界面管理不同节点的生命周期状态。

功能特性

  • 节点自动发现: 自动发现网络中的ROS2生命周期节点
  • 可视化状态图: 直观显示节点的状态机和可用转换
  • 交互式控制: 点击按钮执行状态转换
  • 实时监控: 实时监控节点状态变化
  • 日志记录: 显示操作日志和错误信息
  • 现代UI: 采用暗色主题的现代化界面

系统要求

  • ROS2 Humble 或更高版本
  • Qt5 或 Qt6
  • CMake 3.16+
  • C++17 编译器

安装和编译

  1. 确保你已经安装了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
  1. 克隆并编译项目:
# 进入你的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

使用方法

启动GUI工具

# 方法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

界面说明

  1. 左侧面板: 显示发现的生命周期节点列表

    • 每个节点显示为一个独立的控制组件
    • 包含节点名称、状态指示器和刷新按钮
  2. 节点控制组件:

    • 状态显示: 显示当前节点状态,用颜色编码
    • 状态图: 可视化显示状态机和可用转换
    • 转换控制: 下拉菜单选择转换,执行按钮触发状态改变
  3. 右侧面板: 系统日志

    • 显示操作记录、错误信息和系统消息
    • 可以清空日志记录

状态说明

主要状态(Primary States)

  • unconfigured (橙色): 未配置状态,节点初始状态
  • inactive (金色): 已配置但未激活,资源已准备但未运行
  • active (绿色): 激活状态,节点正常运行
  • finalized (灰色): 终结状态,节点已关闭

转换状态(Transition States)

  • 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: 状态机可视化组件

故障排除

常见问题

  1. 找不到生命周期节点

    • 确保目标节点正在运行
    • 检查ROS2网络配置
    • 点击"Refresh Nodes"按钮手动刷新
  2. 状态转换失败

    • 检查转换是否在当前状态下可用
    • 查看日志面板中的错误信息
    • 确认节点响应正常
  3. 编译错误

    • 确保安装了所有依赖包
    • 检查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

参考资料

About

A Qt-based GUI tool for managing ROS2 lifecycle nodes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published