3. 模型与参数校准:如何确保仿真模型与实际无人机一致?
做仿真联调最怕什么?最怕仿真里飞得稳稳当当,一上真机就炸。我见过太多团队,花了几周调参,结果实飞第一秒就翻。问题出在哪?模型和真机对不上。
说白了,你的仿真模型再漂亮,如果气动系数是猜的、传感器噪声是编的、执行器延迟是估的,那仿真就是一场自欺欺人的表演。今天我们就聊聊,怎么把模型校准到「敢上真机」的程度。
3.1 气动模型校准:别让升力系数骗了你
气动模型是飞控仿真的地基。我习惯把校准分成三步:
- 静力校准——测升力、阻力、力矩系数
- 动导数校准——测阻尼、交叉耦合
- 失速特性校准——测大迎角下的非线性行为
很多团队只做第一步,觉得 CFD 算出来的系数直接拿来用就行。嗯,这里要注意——CFD 算的是理想状态,真实机翼表面有公差、有漆层、有装配间隙,这些都会改变气动特性。
我在一个固定翼项目中遇到过,CFD 给的升力系数偏高了 8%。仿真里 15° 迎角还能拉得住,实飞 12° 就抖振了。后来我们用风洞数据重新拟合了系数,才把问题解决。
| 参数 | CFD 值 | 风洞实测值 | 偏差 |
|---|---|---|---|
| CL_alpha (升力线斜率) | 5.73 /rad | 5.21 /rad | -9.1% |
| CD0 (零升阻力) | 0.025 | 0.031 | +24% |
| Cm_alpha (俯仰力矩斜率) | -0.85 /rad | -0.72 /rad | +15.3% |
3.2 传感器模型校准:噪声不是越小越好
传感器模型最容易犯的错,是把噪声设得太理想。你想想看,真机上的 IMU 有振动耦合、有温度漂移、有安装偏差,这些在仿真里不体现,实飞就会「惊喜」不断。
我建议的做法是:
- IMU 噪声模型:用 Allan 方差分析实测数据,提取角度随机游走和速率随机游走参数
- 磁力计模型:加入硬铁和软铁校准残差,别假设完美校准
- 气压计模型:考虑气流扰动和温度梯度,加一个低通滤波延迟
- GPS 模型:模拟多路径效应和卫星几何变化,不要用固定精度
我曾经接手过一个项目,仿真里 GPS 定位精度一直 0.5 米,实飞时经常跳到 2 米。查了半天,发现仿真里用的是理想高斯噪声,而实际环境有建筑物反射。后来我们在模型里加了多路径误差项,仿真和实飞的定位偏差才基本吻合。
3.3 执行器模型校准:延迟是隐形杀手
执行器模型里,延迟是最容易被忽略的参数。很多仿真里舵机响应是理想的——指令发出,角度立刻到位。但真机不是这样。
执行器模型至少包含三个要素:
- 传输延迟——从飞控输出到舵机收到信号的时间
- 上升时间——舵机从 0° 到目标角度的时间
- 死区——小信号下舵机不响应的区域
我习惯用示波器实测舵机的响应曲线,然后拟合成一阶或二阶传递函数。举个例子:
% 舵机响应模型(一阶滞后 + 延迟)
% 实测数据:阶跃响应 10° 到 50°
% 拟合结果:延迟 8ms,时间常数 22ms
G_servo = exp(-0.008*s) * (1 / (0.022*s + 1));
你看,8ms 的延迟在仿真里可能感觉不到,但在高频控制回路里,它会引入相位滞后。如果控制律设计时没考虑这个延迟,实飞时可能会出现高频振荡。
| 执行器类型 | 典型延迟 | 典型时间常数 | 死区 |
|---|---|---|---|
| 微型舵机 (9g) | 5-10 ms | 15-25 ms | ±1° |
| 标准舵机 (20kg) | 8-15 ms | 20-40 ms | ±0.5° |
| 无刷电机 (电调) | 2-5 ms | 10-30 ms | ±2% 油门 |
3.4 参数调优的常见陷阱
模型校准完了,接下来是参数调优。这里陷阱很多,我挑几个最常见的说说。
陷阱一:过度拟合仿真数据
有些人调参时,把仿真里的跟踪误差压到 0.1° 以内,觉得完美了。但实飞时扰动一上来,系统就发散。为什么?因为参数被优化到了仿真里的特定噪声模式上,而不是系统的真实特性。
我的做法是:在仿真里加入不同频率和幅度的扰动,看参数是否还能保持稳定。如果只在一种工况下表现好,那这个参数不可靠。
陷阱二:忽略执行器饱和
仿真里控制量可以无限大,但真机不行。舵机有最大角度,电机有最大转速。如果调参时没考虑饱和,实飞时控制量一限幅,系统可能直接失稳。
我建议在仿真模型里显式加入饱和环节,并且用「抗饱和补偿」技术。具体来说:
% 带饱和的执行器模型
function u_sat = saturate(u, u_min, u_max)
if u > u_max
u_sat = u_max;
elseif u < u_min
u_sat = u_min;
else
u_sat = u;
end
% 抗饱和:把饱和差值反馈回积分器
delta_u = u - u_sat;
end
陷阱三:增益调得过高
这是新手最容易犯的错。仿真里增益调高一点,响应更快,看起来更「猛」。但实飞时结构弹性、传感器噪声、执行器延迟都会限制增益上限。
我记得有个项目,仿真里把滚转增益调到了 8.0,响应时间 0.2 秒,看着很漂亮。实飞第一次滚转,机翼就出现了明显的弹性振荡。后来降到 4.5 才稳定下来。
3.5 校准流程与验证闭环
说了这么多,最后总结一下我个人的校准流程。下面这张图展示了从模型校准到实飞验证的完整闭环:
这个闭环的核心思想是:模型校准不是一次性的。每次实飞后,把飞行日志里的数据拿回来,反向校准模型参数。我一般会做 3-5 轮这样的迭代,直到仿真和实飞的响应曲线基本重合。