007、牛顿-欧拉方程在飞控中的应用
007、牛顿-欧拉方程在飞控中的应用
从一次炸机说起
去年夏天,我在调试一架四轴飞行器,PID参数调得差不多了,悬停稳得像块石头。客户要求做急加速前飞测试——油门推满,机身前倾30度,全速冲刺。结果第三轮测试,飞机突然剧烈抖动,然后一个侧翻栽进草地。炸机原因?不是PID发散,不是传感器故障,是动力学模型里少算了一项——科里奥利力。
当时用的飞控代码里,角加速度计算只考虑了惯性张量和外力矩,完全忽略了旋转坐标系下的耦合项。牛顿-欧拉方程在飞控里不是摆设,它是你代码里每一行数学运算的物理依据。今天这篇笔记,我们就从最底层的方程开始,把飞控里那些“玄学抖动”的根源挖出来。
牛顿-欧拉方程到底在说什么
飞控的核心问题很简单:电机转,飞机动。但“动”这件事,在三维空间里远比想象中复杂。牛顿-欧拉方程把刚体运动拆成两部分——平动和转动。
平动部分,牛顿第二定律的矢量形式:
m * a = F_ext这里的a是质心加速度,F_ext是合外力。在飞控里,合外力主要是重力、四个电机的拉力、空气阻力。注意,这里的加速度是在惯性坐标系下测量的,不是机体坐标系。很多新手在这里翻车——把机体坐标系下的加速度直接代入牛顿方程,结果算出来的位置全是错的。
转动部分,欧拉方程:
I * α + ω × (I * ω) = τ_extI是惯性张量,3x3矩阵,描述质量分布。α是角加速度。ω是角速度。τ_ext是合外力矩。那个叉乘项ω × (I *
