01
PX4位置控制器概述
了解PX4多旋翼位置控制器的整体架构、数据流以及在整个飞控系统中的位置。
架构数据流
02
源码获取与编译环境搭建
从GitHub拉取PX4源码,配置Ubuntu下的交叉编译环境,完成首次编译。
环境编译
03
位置控制器核心文件解析
深入分析mc_pos_control_main.cpp,理解主循环与状态机。
源码状态机
04
位置控制器的数学基础
回顾四元数、旋转矩阵、坐标系变换(NED与机体坐标系)。
四元数坐标系
05
位置环PID控制器实现
解析位置环的PID算法,理解比例、积分、微分项在源码中的具体实现。
PID位置环
06
速度环PID控制器实现
解析速度环的PID算法,理解限幅、积分分离等技巧。
速度环积分分离
07
姿态解算与期望生成
分析如何将位置/速度控制器的输出转化为期望姿态(倾斜角度)。
姿态期望生成
08
限幅与保护机制
研究源码中的速度限幅、加速度限幅、倾斜角限幅等安全逻辑。
安全限幅
09
参数系统详解
梳理与位置控制器相关的参数(MPC_XY_VEL_MAX, MPC_Z_VEL_MAX等),理解其作用。
参数调参
10
日志系统与调试
利用ulog进行数据记录,使用FlightPlot或PlotJuggler分析控制器性能。
ulog调试
11
仿真环境搭建
配置Gazebo + PX4 SITL仿真环境,为后续修改提供测试平台。
SITLGazebo
12
修改一:调整位置环PID参数
通过修改源码中的默认PID参数,观察飞行器响应变化。
调参实验
13
修改二:增加前馈控制项
在速度环中引入前馈控制,提升跟踪性能。
前馈跟踪
14
修改三:实现自适应限幅
根据飞行状态动态调整速度/加速度限幅值。
自适应限幅
15
修改四:替换位置环控制器
将PID控制器替换为简单的P控制器,对比效果。
P控制器对比
16
修改五:添加抗积分饱和机制
在积分项中加入抗饱和逻辑,防止深度积分。
抗饱和积分
17
修改六:修改期望姿态生成逻辑
改变倾斜角映射方式,实现更激进的转弯。
姿态映射激进
18
修改七:实现高度与位置解耦控制
独立调整Z轴控制逻辑,改善定高表现。
解耦定高
19
修改八:添加外部扰动观测器
在源码中嵌入简单的扰动观测器,提升抗风性。
扰动观测抗风
20
修改九:实现轨迹跟踪模式
修改控制器以支持基于时间的轨迹跟踪(如直线、圆)。
轨迹跟踪
21
修改十:优化起飞与降落逻辑
调整位置控制器在起飞/降落阶段的特殊处理。
起飞降落
22
单元测试编写
学习使用Google Test为修改后的控制器函数编写单元测试。
测试Google Test
23
硬件在环测试(HITL)
将修改后的固件刷入Pixhawk,进行硬件在环仿真验证。
HITLPixhawk
24
实飞测试准备
检查安全开关、遥控器失控保护、GPS星数等,确保实飞安全。
安全检查
25
实飞测试与数据采集
进行悬停、定点、航线飞行,采集飞行日志。
实飞日志
26
实飞数据分析
对比修改前后的日志,评估性能提升(超调量、稳态误差、抗风性)。
分析性能
27
常见问题排查
分析修改后可能出现的震荡、漂移、炸机风险及解决方案。
排查风险
28
代码规范与提交
遵循PX4代码规范,使用Git进行版本管理,提交Pull Request。
GitPR
29
进阶:集成外部路径规划器
修改位置控制器接口,接收来自Mavros的外部轨迹指令。
Mavros路径规划
30
课程总结与展望
回顾整个修改流程,探讨未来方向(如MPC、L1制导律)。
总结展望