01
ArduPilot概述
项目起源、发展历程、核心特点、主要应用领域(无人机、无人车、无人船等)
起源应用
02
源码获取与编译
Git仓库克隆、子模块更新、编译环境搭建(Linux/WSL)、首次编译(SITL仿真)
GitSITL
03
顶层架构解析
主循环(AP_Mainloop)、调度器(Scheduler)、任务(Task)的运作机制
调度任务
04
硬件抽象层(HAL)
HAL体系结构、板级支持包(BSP)、外设驱动框架(UART、I2C、SPI、GPIO、ADC、PWM)
HALBSP
05
库(Libraries)体系
核心库(AP_Math、AP_Param、AP_Logger)、传感器库、执行器库
AP_MathAP_Logger
06
参数系统(AP_Param)
参数定义、参数存储(FRAM/EEPROM)、参数表结构、地面站参数交互
参数EEPROM
07
传感器融合与EKF
扩展卡尔曼滤波器(EKF2/EKF3)原理、传感器数据对齐、状态估计流程
EKF融合
08
姿态与位置控制
角度控制、角速率控制、位置控制、高度控制环路详解
控制环路
09
导航系统
GPS导航、光流导航、视觉导航(Optical Flow)、组合导航策略
GPS光流
10
任务规划与执行
任务(Mission)数据结构、航点(Waypoint)导航、任务指令(MAV_CMD)解析
Mission航点
11
MAVLink通信协议
MAVLink消息定义、消息收发机制、mavlink-router、地面站交互
MAVLink地面站
12
日志系统(AP_Logger)
日志格式(.bin/.log)、日志类型(DF_LOG_*)、日志下载与分析
日志分析
13
故障保护(Failsafe)
电池低压保护、遥控器信号丢失保护、GPS丢失保护、EKF故障保护机制
Failsafe保护
14
EKF状态估计深入
协方差矩阵、状态向量、测量更新、时间更新、GPS/IMU融合细节
EKF协方差
15
电机混控(Motor Mixing)
多旋翼混控矩阵、固定翼混控、车船混控、自定义混控器
混控矩阵
16
RC输入与输出
RC协议(SBUS、PPM、DSM)、RC通道映射、Servo输出、ESC校准
RCSBUS
17
电池监测与电源管理
电池监测器(Battery Monitor)、电流/电压传感器、电源模块、智能电池
电池电源
18
光流与距离传感器
光流传感器(Optical Flow)、激光雷达(LiDAR)、声纳(Sonar)、障碍物规避
光流LiDAR
19
CAN总线与DroneCAN
CAN硬件接口、DroneCAN协议、CAN节点(ESC、GPS、空速计)配置
CANDroneCAN
20
脚本系统(Lua Scripting)
Lua脚本引擎集成、脚本API、自定义行为编写、脚本调试
Lua脚本
21
模块开发入门
模块目录结构、模块注册机制、模块初始化与更新、模块参数定义
模块注册
22
编写一个简单的传感器驱动
以I2C气压计为例,实现探测、初始化、读取、校准
驱动I2C
23
编写一个自定义控制器
继承AC_AttitudeControl,实现自定义姿态控制算法
控制器姿态
24
编写一个自定义导航模式
继承AC_Mode,实现一个简单的悬停/返航模式
导航模式悬停
25
编写一个日志模块
定义新的日志消息类型,在代码中记录自定义数据
日志自定义
26
编写一个MAVLink命令处理模块
处理自定义MAVLink命令,实现地面站交互
MAVLink命令
27
单元测试与仿真测试
使用SITL进行模块测试、编写单元测试(Catch2)、调试技巧(GDB)
测试SITL
28
代码规范与贡献指南
ArduPilot编码风格(clang-format)、Pull Request流程、代码审查要点
规范PR
29
实战项目一:避障传感器驱动
为四旋翼添加一个自定义的避障传感器驱动并集成到EKF
实战避障
30
实战项目二:跟随模式
开发一个自定义的跟随模式(Follow Me),利用GPS和MAVLink实现
跟随GPS