EthanMBoos/maf_aerial
GitHub: EthanMBoos/maf_aerial
围绕 PX4 构建的纯 C++ 无人机自主任务框架,通过行为树编排任务、MAVLink 直连飞控、Protobuf 定义 C2 接口,无中间件依赖。
Stars: 0 | Forks: 0
# MAF 航拍
[](https://opensource.org/licenses/MIT)
[](https://isocpp.org/)
[](docs/MVP_PLAN.md)
围绕 PX4 构建的无人机原生 C++ 任务与集成层。MAF 并不试图取代自动驾驶仪。PX4 负责飞行控制和故障保护;MAF 负责任务逻辑、协议集成以及外部指令边界。ROS 是可选的,仅在有用的边缘场景中使用。

## 系统架构
| 部分 | 职责 | 示例 |
|------|----------------|----------|
| **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, 中间件, 任务编排, 任务逻辑, 地面站, 微型飞行器, 指挥控制, 提示词注入, 数据擦除, 无中间件, 无人机, 无人系统, 机器人, 自主飞行, 自动驾驶框架, 航点规划, 行为树, 请求拦截, 边缘计算, 遥测, 飞行控制