EthanMBoos/maf_aerial

GitHub: EthanMBoos/maf_aerial

围绕 PX4 构建的纯 C++ 无人机自主任务框架,通过行为树编排任务、MAVLink 直连飞控、Protobuf 定义 C2 接口,无中间件依赖。

Stars: 0 | Forks: 0

# MAF 航拍 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![C++](https://img.shields.io/badge/C%2B%2B-20-00599C?logo=cplusplus&logoColor=white)](https://isocpp.org/) [![Status](https://img.shields.io/badge/Status-Design%20Phase-orange)](docs/MVP_PLAN.md) 围绕 PX4 构建的无人机原生 C++ 任务与集成层。MAF 并不试图取代自动驾驶仪。PX4 负责飞行控制和故障保护;MAF 负责任务逻辑、协议集成以及外部指令边界。ROS 是可选的,仅在有用的边缘场景中使用。 ![ModalAI Starling](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/bee46e793d182357.png) ## 系统架构 | 部分 | 职责 | 示例 | |------|----------------|----------| | **PX4** | 飞行控制、状态估计、飞行模式、内置故障保护 | Offboard 接受、RTL、降落、稳定 | | **MAF 核心运行时** | 围绕 PX4 的任务逻辑与协议集成 | 任务 BT、航点目标生成、记录器、Gateway 网桥 | | **ROS 边缘适配器** | ROS 生态系统发挥优势的可选集成 | 传感器、相机、bag 记录、可视化、第三方工具 | | **Gateway / UI** | 外部操作员与机群边界 | Tower 集成、UI、遥测数据消费者 | ## 契约精简 - Gateway/UI → MAF:任务与操作员指令 - MAF → PX4:Offboard 目标与模式请求 - PX4 → MAF:飞行器状态与健康信息 - MAF → Gateway/UI:归一化遥测数据与确认信息 关键在于保持每个边界小而明确,以便在增加更多飞行器和接口时,系统架构仍具有良好的扩展性。 ## 故障行为 - 断开 Gateway 连接:MAF 将继续基于上一次有效的任务状态运行。 - 终止任务节点:PX4 将根据 offboard 丢失和故障保护配置进行回退。 - 终止 MAF 运行时:PX4 仍然是安全最高权威。 如果以上测试均通过,则说明边界划分正确。 ## 主要组成 - **PX4** 仍然是飞行控制栈。MAF 应当对其进行配置和指挥,而不是重复其功能。 - **MAF 核心 C++ 代码** 负责任务序列化、Gateway 转换和遥测数据归一化。 - **ROS 适配器** 在被使用时,仅位于系统边缘以提供集成便利,而非用于定义系统。 - **Gateway** 保留在飞行器边界之外,通过单一的桥接与 MAF 通信。 对于第一阶段,上述设计应能编译成一个简洁具体的形态: - 库:`libmaf_contracts`、`libmaf_core`、`libmaf_behavior_aerial`、`libmaf_px4_adapter` - 第一阶段生产二进制文件(两个进程):`maf_aerial`(任务 + PX4 适配器 + Gateway 链路)和 `maf_recorder`(独立的黑匣子) - 用于未来拆分和切片调试的独立目标:`maf_mission_aerial`、`maf_px4_adapter`、`maf_gateway_link` - 调试目标:`maf_aerial_composed`(所有模块链接到一个二进制文件中以便单步调试) - 可选适配器:`maf_ros_bridge` ## 文档 | 文档 | 目的 | |----------|---------| | [ARCHITECTURE_DECISIONS.md](docs/ARCHITECTURE_DECISIONS.md) | 以 PX4 为中心的模型、契约、设计理由及已知缺陷 | | [GRAPH_VS_CONTRACTS.md](docs/GRAPH_VS_CONTRACTS.md) | 如何将 Zenoh 作为传输层,而不是重建 ROS 风格的应用图 | | [LEARNING_ARCHITECTURE.md](docs/LEARNING_ARCHITECTURE.md) | 回放、仿真、学习模块以及跨具身迁移如何适应当前以 PX4 为中心的运行时 | | [PERCEPTION_AND_SENSOR_FLOW.md](docs/PERCEPTION_AND_SENSOR_FLOW.md) | 相机、激光雷达、传感器融合和局部规划如何融入以 C++ 为主的架构 | | [ZENOH_RUNTIME_MODEL.md](docs/ZENOH_RUNTIME_MODEL.md) | 当原生 Zenoh 承载 MAF 契约时,一个以 C++ 为主的运行时的样子 | | [MVP_PLAN.md](docs/MVP_PLAN.md) | 围绕 PX4 SITL 的第一阶段实现 | | [SUPERVISOR_STATE_MACHINE.md](docs/SUPERVISOR_STATE_MACHINE.md) | 用于就绪状态、权限管理、暂停/恢复和降级模式的轻量级第一阶段监督器 | | [RUNTIME_COMPOSITION.md](docs/RUNTIME_COMPOSITION.md) | 单一二进制启动模型、内部模块图、线程布局和调试方法 | | [DOCKER_DEPLOYMENT.md](docs/DOCKER_DEPLOYMENT.md) | 容器 | | [DEPLOYING_STARLING.md](docs/DEPLOYING_STARLING.md) | VOXL 2 部署 | ## 相关项目 - [Tower](https://github.com/EthanMBoos/Tower) — 地面 UI / 外部操作员边界 - [tower-server](https://github.com/EthanMBoos/tower-server) — 为 ROS bridge 提供支持的外部 Gateway
标签:BehaviorTree.CPP, C++, C2接口, MAVLink, Protobuf, PX4, ROS, UAV, 中间件, 任务编排, 任务逻辑, 地面站, 微型飞行器, 指挥控制, 提示词注入, 数据擦除, 无中间件, 无人机, 无人系统, 机器人, 自主飞行, 自动驾驶框架, 航点规划, 行为树, 请求拦截, 边缘计算, 遥测, 飞行控制