# 逆流流光的工作测试仓库 **Repository Path**: nllg2002/ros2_work ## Basic Information - **Project Name**: 逆流流光的工作测试仓库 - **Description**: 逆旅流光的WSL Ubuntu22.04LTS ROS2公开仓库,用于个人工作和学习的代码分享,希望对你有所帮助。 ^.^ - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-26 - **Last Updated**: 2026-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, Qt, ros2, Linux, Ubuntu ## README # ROS2 学习与 Qt 集成项目 本仓库是一个 ROS2(Robot Operating System 2)学习项目,包含 ROS2 基础教程、多线程计算示例以及 Qt/QML 与 ROS2 的集成实践。通过本项目,您可以系统地学习 ROS2 开发并掌握机器人图形界面的实现方法。 ## 项目特点 - **系统化学习路径**:提供完整的 ROS2 学习路线,从基础入门到进阶应用循序渐进 - **Qt/ROS2 集成**:包含多个 Qt 与 ROS2 结合的示例项目,涵盖 QML 和 Widgets 两种界面方式 - **多线程实践**:提供 CPU 密集型计算的多线程实现示例 - **容器化支持**:提供 Docker 容器配置,便于快速部署和开发环境搭建 - **跨平台兼容**:代码支持 Linux 和 Windows 平台 ## 项目结构 项目目录结构清晰,各模块职责明确: ``` ros2_work/ ├── QtCmakeTest/ # Qt CMake 测试项目 ├── ros2_Workspace/ # ROS2 工作空间示例 │ ├── demo02/ # 参数传递示例 │ ├── demo04_cpp_pkg/ # ROS2 C++ 包模板 │ └── demo05_pi/ # 多线程计算圆周率 ├── ros2_ws/ # ROS2 与 Qt 集成工作空间 │ └── ros2_qt_demo/ # Qt/ROS2 集成演示 └── README.md # 学习路线文档 qml_test/ # QML 与 ROS2 集成项目 untitled03/ # QML 测试项目 widget_test/ # Qt Widgets 测试项目 ``` ## 环境要求 ### 基础环境 - Ubuntu 20.04 LTS 或更高版本 - ROS2 Humble Hawksbill 或更高版本 - Qt 6.x - CMake 3.16 或更高版本 - GCC/G++ 9 或更高版本 ### 安装 ROS2 ```bash # 添加 ROS2 软件源 sudo apt update sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl -y sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/rosdistro/ros.key # 安装 ROS2 sudo apt update sudo apt install ros-humble-desktop # 配置环境变量 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc ``` ### 安装 Qt6 ```bash # Ubuntu 系统 sudo apt install qt6-base-dev qt6-base-dev-tools qtdeclarative6-dev qtquickcontrols2-6-dev # 或从 Qt 官网下载安装包 # 下载地址:https://www.qt.io/download ``` ## 构建与运行 ### ROS2 工作空间构建 ```bash # 创建工作空间 mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src # 克隆项目(如果需要) git clone # 构建工作空间 cd ~/ros2_ws colcon build # 配置环境 source install/setup.bash ``` ### Qt 项目构建 ```bash # 进入项目目录 cd ros2_work/QtCmakeTest # 创建构建目录 mkdir build && cd build # 配置并构建 cmake .. cmake --build . # 运行程序 ./QtCmakeTest ``` ### QML 项目运行 ```bash cd qml_test mkdir build && cd build cmake .. cmake --build . ./appqml_test ``` ## 核心功能模块 ### 1. ROS2 基础示例 包含参数传递、节点创建、多线程计算等基础功能的实现示例。 **demo02 参数传递示例**:演示如何在 ROS2 节点中接收和传递命令行参数。 **demo05_pi 多线程计算**:使用 C++11 多线程实现圆周率计算,展示并行计算在 ROS2 中的应用。 ### 2. ROS2 Qt 集成 ros2_qt_demo 展示了如何将 ROS2 与 Qt 框架结合,实现机器人数据可视化界面。 **主要功能**: - ROS2 话题订阅与发布 - Qt 信号槽机制与 ROS2 回调的桥接 - 实时数据显示界面 - 自定义 Qt Widgets 界面开发 **核心组件**: - `mainwindow.cpp/h`:主窗口实现,负责界面管理和数据展示 - `rclcomm.cpp/h`:ROS2 通信管理类,处理节点初始化和消息收发 - `main.cpp`:应用程序入口,初始化 ROS2 和 Qt 环境 ### 3. QML 与 ROS2 集成 qml_test 项目使用 Qt Quick 技术实现现代化的 ROS2 图形界面。 **技术特点**: - QML 声明式语法构建 UI - ROS2 节点生命周期管理 - 定时器驱动的 ROS2 spin 机制 - C++ 与 QML 交互 **核心实现**: - `RosInterface` 类:封装 ROS2 节点,提供 C++ 接口给 QML - `main.qml`:使用 QML 构建用户界面 - `main.cpp`:初始化 Qt/QML 环境和 ROS2 节点 ## Docker 部署 项目提供完整的 Docker 容器配置,支持两种运行方式: ### 标准运行方式 ```bash cd qml_test docker build -t ros2-qml-test . docker run -it --rm ros2-qml-test ``` ### ROS Qt 开发环境 ```bash cd qml_test docker build -f Dockerfile.ros_qt -t ros2-qt-dev . docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ros2-qt-dev ``` **Docker 环境变量配置**: | 变量 | 说明 | |------|------| | QT_VERSION | Qt 版本号(如 6.5.3) | | QT_DIR_ARCH | Qt 架构目录(如 gcc_64) | | DEBIAN_FRONTEND | 设置为 noninteractive 避免交互 | ## 学习路线 本仓库配套的 README.md 提供了完整的 ROS2 学习路线: 1. **基础入门**(2-4周):ROS2 概念、安装配置、基本操作 2. **核心功能**(4-6周):话题、服务、动作、参数 3. **进阶应用**(6-8周):导航、SLAM、性能优化 4. **项目实践**(8周以上):综合应用与调试 ## 常见问题 ### 编译错误 如果遇到 Qt6 相关的编译错误,请确保已正确安装 Qt6 开发包: ```bash sudo apt install qt6-base-dev qt6-base-dev-tools ``` ### ROS2 环境问题 确保每次打开新终端时正确加载 ROS2 环境: ```bash source /opt/ros/humble/setup.bash ``` 或在 `~/.bashrc` 中添加上述命令实现自动加载。 ### 权限问题 运行 Docker 时如遇到权限问题,请将当前用户加入 docker 组: ```bash sudo usermod -aG docker $USER newgrp docker ``` ## 许可证 本项目采用 MIT 许可证开源,详情请参阅 LICENSE 文件。 ## 参考资源 - [ROS2 官方文档](https://docs.ros.org/en/humble/) - [Qt 官方文档](https://doc.qt.io/) - [ROS2 与 Qt 集成教程](https://docs.ros.org/en/humble/How-To-Guides/Using-Qt-Creator.html) ## 贡献指南 欢迎提交 Issue 和 Pull Request 贡献代码。请确保代码风格与项目保持一致,并添加适当的注释说明。