飞控算法从入门到精通 | 009、升力、阻力与力矩模型
一次炸机让我重新认识升力模型
去年夏天调试一架四轴,悬停时电机转速曲线看着挺漂亮,PID参数也调得中规中矩。结果一拉满油门做急加速,飞机直接翻了个跟头砸进草地里。事后复盘,问题出在升力模型上——我用的还是教科书里那个“升力正比于转速平方”的简化公式,但实际电机在高速区早就偏离了这个关系。
那次之后我彻底明白,飞控里那些看似简单的力与力矩模型,才是算法落地的真正门槛。今天这篇笔记,就把我踩过的坑和实测经验摊开来讲。
升力模型:别被“平方关系”骗了
螺旋桨升力公式大家都熟:F = k * ω²。但实际工程中,这个k不是常数。
第一个坑:桨叶失速效应
当转速超过某个阈值(通常在设计转速的80%左右),桨尖速度接近音速,气流分离加剧,升力系数会急剧下降。我实测过一款10寸桨,转速从8000rpm拉到10000rpm,升力增量只有理论值的60%。如果你还用平方关系去算,PID输出就会过度补偿,导致震荡甚至炸机。
我的修正方案:在代码里加一个非线性补偿表。别用多项式拟合,那玩意儿在边界处容易发散。我习惯用分段线性插值,每500rpm一个采样点,实测数据直接灌进去。代码长这样:
// 升力查表,别用pow()函数,太慢// 这