PX4 v1.16 源码解读总目录

一、系列说明

本系列基于 PX4 Autopilot v1.16.0 源码展开,围绕多旋翼飞控的核心执行链路,分五大模块逐层剖析。

覆盖模块

  • 平台层(Board/SOC/BSP/uORB/WorkQueue)
  • Commander 决策层(飞行模式状态机)
  • EKF2 状态估计(延迟时间融合卡尔曼滤波)
  • Navigator 导航(自动任务/RTL/围栏)
  • mc_pos_control 位置控制(串级 PID + 推力映射)

文档约定

  • 代码块以 PX4 v1.16.0 为准,不同版本细节可能存在差异
  • 数学公式以 LaTeX 形式展示
  • Mermaid 流程图用于替代丢失的原始截图
  • 文中链接均为本系列内部交叉引用

二、各模块文档索引

01-平台层(8 篇)

序号 标题 关键概念
01 Board 层硬件配置 GPIO/ADC/PWM/HRT/PX4IO
02 SOC 与 BSP 层平台抽象 STM32F7/NUTTX/HAL
03 固件编译与烧写流程 make/CMake/Bootloader
04 交叉编译顺序详解 Kconfig/CMake/Ninja/链接
05 模块入口与运行模式 ModuleBase/WorkQueue/线程
06 uORB 通信机制(上) Topic/DeviceNode/Manager
07 uORB 通信机制(下) WorkQueue集成/dt/HRT
08 DShot 电机转向修改 DShot/MAVLink/NSH

02-Commander 决策层(7 篇)

序号 标题 关键概念
01 Commander 模块框架 主循环/状态机/健康监控
02 参数系统与 Kconfig PARAM_DEFINE/Kconfig
03 飞行模式编码与映射 nav_state/MAVLink custom_mode
04 控制模式生成逻辑 vehicle_control_mode flags
05 模式需求位图 mode_req_bitmask/传感器依赖
06 Commander 核心调度 arm/disarm/failsafe/mode切换
07 HomePosition 管理 Home设定/RTL基准/Failsafe

03-状态估计-EKF2(10 篇)

序号 标题 关键概念
01 EKF2 目录与层级架构 延迟融合架构/目录结构
02 common.h 数据结构 imuSample/gnssSample/parameters
03 RingBuffer 环形缓冲区 延迟对齐/pop_first_older_than
04 State.h 状态向量 24维状态/ESKF/协方差P
05 EKF2 应用管理层 EKF2.cpp/多实例/Selector
06 ekf.cpp 核心主循环 update/predictState/初始化
07 协方差矩阵预测 P=FPF’+Q/初始化/约束
08 融合调度 control.cpp controlFusionModes/新息门
09 高度融合与多源仲裁 多高度源/参考切换/航向融合
10 辅助函数与卡尔曼更新 measurementUpdate/精度报告

04-Navigator 导航(4 篇)

序号 标题 关键概念
01 Navigator 模块架构总览 7 层架构/输入输出/与上下游接口
02 navigation.h 与数据协议 NAV_CMD/mission_item_s
03 Navigator 主循环与模式调度 run()/MissionBase/RTL策略树
04 围栏安全与精确降落 Geofence/PrecLand状态机

05-位置控制(3 篇)

序号 标题 关键概念
01 mc_pos_control 总览 全局控制链路/模块架构
02 MulticopterPositionControl 主循环 多级滤波/EKF重置保护/起飞状态机
03 PositionControl 串级控制算法 位置P+速度PID+推力映射+抗饱和

本系列持续更新中,内容以 PX4 v1.16.0 为基准。
如有错误或遗漏,欢迎私信联系交流。