第二章 无人机动力学建模:牛顿-欧拉方程、刚体运动学、四旋翼动力学模型推导、模型参数辨识方法

各位同学,欢迎来到第二章。说实话,动力学建模是整个飞控算法的基石。你想想看,如果连无人机怎么动、受什么力都搞不清楚,那后面的抗干扰控制就是空中楼阁。我个人习惯,每次接手一个新机型,第一件事就是重新梳理一遍动力学模型。这章内容有点硬核,但啃下来之后,你会发现后面的路好走很多。

2.1 牛顿-欧拉方程:刚体运动的基本法则

先聊点基础的。无人机在空中飞,本质上就是一个刚体在三维空间里的运动。描述这种运动,最经典的工具就是牛顿-欧拉方程。说白了,牛顿管平动,欧拉管转动。

牛顿方程(平动部分)

m * dV/dt = F_ext

这里 m 是质量,V 是速度矢量,F_ext 是合外力。嗯,这里要注意,我们通常在地面坐标系下写这个方程,但力是在机体坐标系下产生的。所以实际计算时,需要做坐标变换。

欧拉方程(转动部分)

J * dω/dt + ω × (J * ω) = M_ext

J 是惯性张量矩阵,ω 是角速度,M_ext 是合外力矩。那个叉乘项 ω × (J * ω) 是陀螺力矩,很多新手会忽略它。我在项目中遇到过,有一次调试四旋翼,发现偏航通道总是有奇怪的振荡,查了半天才发现是陀螺力矩没补偿到位。

核心要点:牛顿-欧拉方程把无人机的运动分解成了两个独立的部分——平动和转动。但实际飞行中,这两者是耦合的。比如你倾斜机身(转动),就会产生水平方向的力(平动)。

2.2 刚体运动学:位置、姿态与速度的关系

动力学告诉我们力怎么产生加速度,运动学则告诉我们加速度怎么变成位置和姿态。我个人习惯把运动学看作是「几何关系」的集合。

位置运动学

dP/dt = V

很简单,位置的变化率就是速度。

姿态运动学:这部分稍微复杂点。我们常用四元数或者欧拉角来描述姿态。我个人更推荐四元数,因为它没有万向锁问题。

dq/dt = 0.5 * q ⊗ ω

这里 q 是四元数,ω 是机体角速度,⊗ 表示四元数乘法。你想想看,用四元数做姿态更新,只需要做几次乘法和加法,计算量小,还不会出奇点。我在早期项目里用过欧拉角,结果在大角度机动时直接炸了——姿态解算发散,飞机翻了个跟头掉下来。从那以后,我再也不敢在飞控里直接用欧拉角做积分了。

实战技巧:如果你用欧拉角做显示或者给用户看,没问题。但内部姿态解算和控制器,请务必用四元数。这是血的教训换来的经验。

2.3 四旋翼动力学模型推导

好,现在我们把牛顿-欧拉方程和运动学结合起来,推导四旋翼的完整动力学模型。四旋翼有四个电机,每个电机产生一个向上的拉力 f_i 和一个反扭矩 τ_i。

力和力矩的分配

总拉力: F = f1 + f2 + f3 + f4
滚转力矩: Mx = l * (f2 - f4)
俯仰力矩: My = l * (f3 - f1)
偏航力矩: Mz = τ1 - τ2 + τ3 - τ4

这里 l 是电机到重心的距离。注意偏航力矩的符号,取决于电机旋转方向。通常我们采用「X型」布局,对角电机同向旋转。

完整的动力学方程

m * dV/dt = F * R * e3 - m * g * e3 - k_d * V
J * dω/dt = M - ω × (J * ω) - k_m * ω

其中 R 是旋转矩阵,e3 = [0,0,1]^T,k_d 是空气阻尼系数,k_m 是转动阻尼系数。这两个阻尼项,很多教材里会忽略,但实际飞行中它们的影响不可小觑。我记得有一次做悬停精度测试,发现飞机总是慢慢往下飘,加了阻尼补偿后才稳住。

避坑指南:我曾经在模型里忽略了空气阻尼,结果仿真时一切完美,真机一飞就抖。后来发现是阻尼项让系统有了额外的相位滞后,控制器没考虑到。所以,模型越精确,控制器设计越靠谱。

2.4 模型参数辨识方法

模型建好了,参数怎么来?总不能靠猜吧。参数辨识就是干这个的。我把它分为两步:先辨识静态参数,再辨识动态参数。

静态参数辨识

  • 质量 m:直接称重,简单粗暴。
  • 惯性张量 J:可以用三线摆法或者 CAD 软件估算。我习惯用 SolidWorks 建模,直接导出惯性参数,精度够用。
  • 力臂 l:拿尺子量,或者从图纸上读。

动态参数辨识

  • 电机拉力系数 k_f:把电机固定在拉力台上,测不同油门下的拉力,拟合曲线。
  • 电机扭矩系数 k_t:同样用拉力台,但需要测反扭矩。或者用经验公式 k_t ≈ 0.01 * k_f。
  • 空气阻尼系数 k_d 和 k_m:这个比较麻烦。我常用的方法是做自由衰减实验——给飞机一个初始扰动,记录响应曲线,然后用最小二乘法拟合。

一个简单的参数辨识流程

1. 称重得到 m
2. CAD 建模得到 J
3. 拉力台实验得到 k_f, k_t
4. 悬停实验,记录油门和姿态数据
5. 用最小二乘法拟合 k_d, k_m
6. 验证:用辨识出的参数做仿真,对比真机响应

重要提醒:参数辨识不是一劳永逸的。电池电压变化、桨叶磨损、甚至温度变化都会导致参数漂移。我建议每次换电池或者换桨后,至少做一次快速验证。如果发现模型和真机偏差超过 10%,就需要重新辨识了。

2.5 本章小结

这一章我们走完了从牛顿-欧拉方程到四旋翼完整动力学模型的推导过程,也聊了参数辨识的实战方法。你想想看,有了这个模型,我们就可以在仿真里测试控制器,而不必每次都拿真机去冒险。我个人习惯,所有新算法都会先在模型上跑几百个小时,确认没问题了再上真机。

下一章,我们会基于这个模型,开始设计姿态控制器。到时候你会发现,模型越准,控制器调起来越顺手。嗯,今天就到这里,大家回去把模型推导自己手算一遍,别光看。

课后练习:找一个开源四旋翼的 CAD 模型,导出惯性参数。然后搭建一个简单的拉力台,测一下你手头电机的 k_f 和 k_t。把数据记录下来,下一章我们会用到。


公众号:蓝海资料掘金营,微信deep3321