4. 飞控系统建模:传感器模型、执行器模型与动力学模型

大家好,我是你们的老朋友。今天我们来聊聊飞控系统里最核心、也最「烧脑」的部分——建模。

说实话,我刚入行那会儿,觉得飞控就是写写PID,调调参数。直到有一次,我负责的一个四旋翼项目,在仿真里飞得好好的,一上真机就翻车。后来才发现,问题出在传感器模型太理想了。嗯,从那以后,我再也不敢轻视建模这一步了。

说白了,建模就是给飞控系统「画像」。你画得像,仿真就准;画得不像,代码写得再漂亮也是白搭。今天,我就带大家把传感器、执行器和动力学模型这三块,一个一个掰开揉碎了讲清楚。

核心观点:模型是仿真的灵魂。没有准确的模型,你的控制算法就是「盲人摸象」。

4.1 传感器模型:飞控的「眼睛」和「耳朵」

飞控系统依赖传感器来感知自身状态。常见的传感器有IMU、GPS和气压计。它们各有各的脾气,建模时得区别对待。

4.1.1 IMU(惯性测量单元)

IMU包含加速度计和陀螺仪。我个人的习惯是,把IMU模型拆成三部分:真实值、噪声和偏差。

  • 加速度计模型:测量的是比力(即物体受到的合力减去重力)。模型可以写成:a_meas = a_true + b_a + n_a。其中 b_a 是零偏,n_a 是高斯白噪声。
  • 陀螺仪模型:测量角速度。模型类似:w_meas = w_true + b_g + n_g
  • 噪声参数:通常用「角度随机游走」和「速率随机游走」来描述。这些参数可以从芯片手册里查,或者自己跑 Allan 方差分析得到。

我的经验:我在项目中遇到过,IMU的零偏会随着温度变化。所以,如果你做的是工业级飞控,最好在模型里加一个温度补偿项。否则,冬天和夏天的表现会差很多。

4.1.2 GPS模型

GPS提供位置和速度信息。但它有两个硬伤:更新频率低(通常10Hz),而且有较大的延迟。

模型可以这样写:

// GPS位置测量模型
pos_meas = pos_true + n_pos;  // n_pos ~ N(0, sigma_pos^2)
// GPS速度测量模型
vel_meas = vel_true + n_vel;  // n_vel ~ N(0, sigma_vel^2)
// 注意:需要加入一个延迟环节,比如1阶低通滤波器

为什么要有延迟?因为GPS从接收卫星信号到输出数据,中间有处理时间。我曾经踩过这个坑——仿真里没加延迟,结果融合出来的位置估计总是超前于真实值。

4.1.3 气压计模型

气压计用来测高度。它的模型相对简单,但有个大问题:容易受气流扰动。

  • 模型:h_meas = h_true + n_h + w_ind。其中 n_h 是测量噪声,w_ind 是风扰动项。
  • 避坑指南:我曾经在无人机悬停时,发现高度数据一直在漂。后来发现是螺旋桨下洗气流吹到了气压计上。解决办法是加一个海绵罩,或者在模型里加一个低通滤波器。

4.2 执行器模型:飞控的「手脚」

执行器负责把控制指令变成物理动作。对于四旋翼和固定翼,主要就是电机和舵机。

4.2.1 电机模型

电机模型的核心是:输入PWM信号,输出拉力/推力。但中间有个动态过程。

我常用的模型是:

// 电机一阶动态模型
T(s) = K / (tau * s + 1) * PWM(s)
// 其中:
// K 是电机增益(拉力与PWM的比值)
// tau 是时间常数(通常10-50ms)
// 还要考虑死区:PWM低于某个阈值时,电机不转

你想想看,如果忽略了时间常数,仿真里电机响应是瞬时的,但真机上电机需要时间加速。这会导致控制器的相位裕度被高估,实际飞起来就容易震荡。

4.2.2 舵机模型

舵机用于固定翼的舵面控制。它的模型和电机类似,但多了位置限制和速率限制。

  • 位置限制:舵面只能转±30度左右。
  • 速率限制:舵机转动速度有限,比如 300 deg/s。
  • 模型:可以用一个饱和环节 + 一阶惯性环节来近似。

注意:舵机的死区比电机更明显。我曾经遇到过,小角度指令下去,舵机根本没反应。后来在模型里加了死区补偿,才解决了这个问题。

4.3 动力学模型:飞控的「身体」

动力学模型描述的是飞行器在力作用下的运动规律。四旋翼和固定翼的动力学差别很大,我们分开讲。

4.3.1 四旋翼动力学

四旋翼的动力学可以分解为平动和转动两部分。

  • 平动方程:m * a = F_thrust + F_gravity + F_drag。其中推力由四个电机合力提供。
  • 转动方程:I * alpha = M_roll + M_pitch + M_yaw。力矩由电机转速差产生。
  • 关键参数:转动惯量 I、电机拉力系数、反扭矩系数。这些参数可以通过 CAD 模型估算,或者做实验标定。

我个人习惯用四元数来表示姿态,而不是欧拉角。为什么?因为欧拉角有万向锁问题,而四元数没有。你想想看,如果飞机做90度俯仰,欧拉角就失效了,但四元数依然健壮。

4.3.2 固定翼动力学

固定翼的动力学更复杂,因为涉及气动力的计算。

模型通常包含:

  1. 气动力:升力、阻力、侧力。它们与迎角、侧滑角、空速有关。
  2. 气动力矩:滚转力矩、俯仰力矩、偏航力矩。它们与舵面偏转有关。
  3. 重力:始终指向地心。
  4. 推力:由发动机提供。

我记得有一次,我在仿真里把升力系数设成了常数,结果飞机怎么都拉不起来。后来才意识到,升力系数是迎角的函数,而且在大迎角时会失速。所以,固定翼模型里一定要包含气动导数表。

4.4 知识体系总览

下面这张图,是我用SVG画的本章知识结构。你可以把它当作一个「地图」,方便随时回顾。

飞控系统建模知识体系 传感器模型 执行器模型 动力学模型 子项 • IMU:加速度计 + 陀螺仪 • GPS:位置 + 速度 + 延迟 • 气压计:高度 + 风扰动 子项 • 电机:一阶动态 + 死区 • 舵机:位置限制 + 速率限制 • 时间常数与增益标定 子项 • 四旋翼:平动 + 转动 • 固定翼:气动力 + 力矩 • 四元数 vs 欧拉角 模型是仿真的灵魂 噪声、延迟、死区、动态响应——一个都不能少

4.5 建模的实用建议

最后,我给大家几条实战中的建议:

  • 先简单后复杂:刚开始建模时,别想着一步到位。先搭一个线性模型,跑通了再加非线性项。
  • 参数要标定:模型里的参数,最好通过实验数据来拟合。别光看手册,手册上的值往往偏理想。
  • 验证不可少:模型建好后,一定要用真实飞行数据做回测。如果仿真和真机对不上,说明模型有问题。

一句话总结:建模不是一蹴而就的事,它需要你不断迭代、不断修正。但只要你把传感器、执行器和动力学这三块搞扎实了,后面的控制算法设计就会轻松很多。


专注资料整理