PROJECT · 工程档案 · 更新于 2026年8月10日
室内无人机自主飞行控制系统
使用 ROS 2、PX4 和 Gazebo 搭建室内无人机控制、仿真验证与飞控联调链路。
- 项目状态
- 已公开
- 时间范围
- 2025.03—至今
- 作者角色
- 嵌入式软件开发 / ROS 2 开发
- 硬件平台
- 无人机平台、飞控、STM32
- 软件环境
- ROS 2 Foxy、PX4、Gazebo、QGroundControl、Linux
- 技术栈
- ROS2-Foxy · C++ · PX4 · MAVLink · px4_msgs · Gazebo · QGroundControl · STM32
- 核心结果
- 完成 ROS 2 功能包、基础 Gazebo/PX4 仿真与飞控接入流程,并沉淀可复用的通信和模式切换排障链路。
- 验证方式
- 通过 colcon 构建、ROS 2 Topic 数据检查、Gazebo 仿真、QGroundControl 参数检查和 PX4 Offboard 链路联调验证当前阶段。
- 当前限制
- 当前公开材料仅确认仿真环境、飞控接入和调试流程,不宣称尚未提供证据的真机自主飞行指标。
- 下一步
- 补充真机测试条件、飞行任务、成功率和异常记录,在证据完整后公开量化结果。
目标
围绕室内无人机自主飞行建立从 ROS 2 控制节点、PX4 Offboard 模式、Gazebo 仿真到真机联调的可复用开发与排障流程。
本人职责
- 使用 ROS 2 C++ 编写和维护功能包,组织节点、Topic、参数与 launch 启动流程。
- 完成 PX4、MAVLink、px4_msgs、Gazebo 和 QGroundControl 的环境配置与链路联调。
- 针对依赖缺失、编译失败、话题无数据和模式切换异常进行日志分析与命令行排查。
系统架构
- ROS 2 节点订阅飞控状态和任务相关数据。
- 控制节点按照 Offboard 要求持续发布控制模式与设定值。
- px4_msgs 与 MAVLink 链路将 ROS 2 指令传递给 PX4。
- Gazebo 用于仿真验证,QGroundControl 用于飞控状态、模式和参数检查。
- 真机阶段通过飞控与 STM32 等嵌入式模块完成系统接入和调试。
硬件与软件环境
- **硬件:**无人机平台、飞控、STM32。
- **机器人软件:**ROS 2 Foxy、PX4、px4_msgs、Gazebo、QGroundControl。
- **开发环境:**Linux、C++、ament_cmake、colcon、Git。
关键实现
- 使用 ament_cmake/colcon 管理 ROS 2 工程构建和依赖。
- 通过 Topic 完成飞控状态订阅、控制指令发布和节点间数据流转。
- 使用 launch 文件统一管理节点启动和参数配置。
- 围绕 PX4 Offboard 流程检查控制模式、设定值发布频率、飞控状态和 MAVLink 通信链路。
问题与排查
- 对依赖缺失和编译失败,结合构建日志、包依赖和工作空间环境逐项定位。
- 对话题无数据,检查节点状态、Topic 名称、消息类型、QoS 和桥接链路。
- 对 Offboard 模式无法进入或保持,检查设定值发布、飞控解锁条件、模式参数和 QGroundControl 状态。
- 将排查步骤整理为“仿真验证—参数配置—通信检查—真机排障”的顺序,减少跨层问题定位成本。
测试方法
- 使用 colcon 完成功能包构建并确认节点可启动。
- 在 Gazebo 中检查仿真模型、飞控状态和控制链路。
- 使用 ROS 2 命令行工具检查节点、Topic、频率和消息内容。
- 使用 QGroundControl 检查 PX4 模式、参数和连接状态。
验证结果
- 已完成 ROS 2 功能包编译和基础仿真环境搭建。
- 已完成飞控接入、状态订阅、指令发布和 Offboard 调试流程的阶段性验证。
- 已形成覆盖构建、仿真、参数、通信和模式切换的可复用排障链路。
当前限制
- 当前公开材料没有完整的真机自主飞行测试条件、任务成功率和稳定运行数据。
- 因此项目页只陈述已验证的构建、仿真、飞控接入和调试流程,不扩展为未被证据支持的飞行成果。
- ROS 2 Foxy 与 Gazebo Classic 已结束官方支持。它们在此作为已验证项目环境记录保留,不代表新项目的推荐版本;新环境需按 PX4 与 ROS 2 官方兼容矩阵重新选择。
下一步
- 明确真机测试场景、任务流程和安全边界。
- 记录飞行成功率、模式切换异常、通信状态和恢复过程。
- 整理可公开的视频、飞行日志和系统照片后补充量化结果。