3. PID控制原理
在嵌入式飞控系统中,PID控制器是姿态稳定与轨迹跟踪的核心算法。理解比例(P)、积分(I)、微分(D)三项的物理意义与数学模型,是进行参数整定和代码实现的前提。本章将从控制对象的动态特性出发,剖析三项各自的作用机理,并结合飞控中的典型场景(如悬停抗风、定高保持、角速度阻尼)说明参数变化对超调量、稳态误差和振荡特性的具体影响。
3.1 比例项(P):系统的“刚性”来源
比例项的输出与当前误差成正比,数学表达式为 u_p(t) = Kp · e(t)。在飞控中,当飞行器偏离期望姿态角(如横滚角期望为0°,实际为5°)时,比例项会立即产生一个与偏差角度成正比的矫正力矩。Kp越大,矫正力度越强,系统“刚性”越好,对扰动的抑制越迅速。
3.1.1 物理意义与数学模型
从控制论角度看,比例项相当于一个刚度可调的弹簧。假设四旋翼在悬停时受到侧风扰动,机体产生2°的横滚倾斜。若Kp=100,则输出矫正量为200单位(假设输出量纲为PWM增量)。这个矫正量直接驱动电机差速旋转,产生恢复力矩。比例项的响应是即时的,没有任何延迟,这是它能够快速抑制初始偏差的根本原因。
3.1.2 对系统响应的影响
- 超调量:Kp增大,系统响应速度加快,但惯性作用下容易冲过目标位置,导致超调增大。例如Kp从50增至150时,阶跃响应的超调量可能从5%升至25%。
- 稳态误差:单纯比例控制无法完全消除稳态误差。因为当误差趋近于零时,比例输出也趋近于零,无法维持克服恒定扰动(如持续侧风)所需的力矩。飞控中常见现象是:Kp足够大时,悬停姿态误差可减小到1°以内,但无法做到0°。
- 振荡趋势:Kp过大会使系统呈现欠阻尼特性,表现为高频低幅振荡。在飞控调试中,若听到电机周期性“嗡嗡”声且机体高频抖动,往往是Kp过大所致。
3.2 积分项(I):消除稳态误差的“累积器”
积分项的输出与误差对时间的累积成正比,数学表达式为 u_i(t) = Ki · ∫₀ᵗ e(τ)dτ。它的核心价值在于:即使误差很小,只要持续存在,积分项就会不断累积,最终产生足够的控制量来消除这个误差。
3.2.1 物理意义与数学模型
在飞控中,积分项可以类比为“记忆”机制。例如,当四旋翼持续受到一个方向的风力时,比例项只能提供与当前误差成正比的矫正力,而积分项会记住“这个误差已经持续了3秒”,并逐渐增加输出,直到误差完全消失。数学上,积分项的输出是误差曲线与时间轴围成的面积。
3.2.2 对系统响应的影响
- 稳态误差:积分项是消除稳态误差的唯一手段。对于恒定扰动(如重心偏移、持续风载),积分项能够实现无差调节。在定高模式中,若不加积分项,飞行器高度可能稳定在期望值下方10cm处;加入适当Ki后,高度误差可收敛到±1cm以内。
- 超调与振荡:积分项具有“滞后”特性,它累积的是历史误差。当系统已经回到目标值时,积分项中累积的“历史债”仍会继续输出,导致超调。Ki过大时,系统会出现低频大幅振荡(0.1-0.5Hz),表现为飞行器上下“呼吸”或左右“甩尾”。
- 积分饱和:当执行器达到饱和(如电机满油门)时,误差无法继续减小,但积分项仍在累积,导致控制量长期处于饱和状态。一旦误差反向,积分项需要很长时间才能“消化”,造成大幅超调甚至失控。
3.3 微分项(D):预测趋势的“阻尼器”
微分项的输出与误差变化率成正比,数学表达式为 u_d(t) = Kd · de(t)/dt。它根据误差的变化趋势提前施加反向控制,起到阻尼作用。在飞控中,微分项通常作用于角速度环(内环),直接抑制角速度变化。
3.3.1 物理意义与数学模型
微分项相当于一个阻尼器。当飞行器快速接近目标姿态时,虽然当前误差还很大,但误差变化率为负(正在减小),微分项会输出一个“刹车”信号,防止冲过头。在数学上,微分项是误差曲线的切线斜率。实际飞控中,由于角速度传感器(陀螺仪)直接测量角速度,微分项常通过角速度反馈实现,而非对角度误差求导。
3.3.2 对系统响应的影响
- 超调量:微分项能显著减小超调。它提供的阻尼力与运动方向相反,消耗系统动能。Kd从0增至合适值时,超调量可从30%降至5%以下。
- 振荡抑制:微分项增加系统阻尼比,使振荡快速衰减。在飞控中,适当增加Kd能消除高频抖动,使机体“变稳”。
- 噪声放大:微分项对高频噪声极其敏感。陀螺仪数据中的微小噪声经微分后会被放大数十倍,导致电机频繁加减速,增加功耗和磨损。因此,飞控中必须对微分项进行低通滤波。
Kd * (gyro_rate - last_gyro_rate) / dt,而非对角度误差求导。这是因为角速度本身就是角度的微分,直接使用陀螺仪数据更干净、更稳定。同时,建议在微分项前加入一阶低通滤波器(截止频率约50-100Hz),以抑制高频噪声。
3.4 参数整定方法与飞控实战案例
飞控PID调参是一个从“粗调”到“精调”的迭代过程。以下通过一个四旋翼姿态控制的实际案例,展示参数调整的完整闭环。
3.4.1 案例背景与初始现象
某四旋翼飞行器(轴距450mm,重量1.5kg)在手动模式下进行悬停测试。初始PID参数为:Kp=4.0,Ki=0.05,Kd=0.5(角速度环)。试飞发现:飞行器在悬停时持续左右摇摆(频率约2Hz),幅度约±5°,且无法稳定在期望高度,存在约20cm的持续高度偏差。
3.4.2 分析判断过程
| 现象 | 可能原因 | 对应参数 |
|---|---|---|
| 2Hz高频摇摆 | Kp过大,系统欠阻尼 | 降低Kp |
| 高度持续偏差20cm | Ki过小,无法消除稳态误差 | 增大Ki |
| 摇摆衰减慢 | Kd不足,阻尼不够 | 增大Kd |
3.4.3 实际操作步骤与结果
- 第一步:降低Kp至3.0。高频摇摆幅度从±5°降至±2°,但响应变慢,姿态回正时间从0.8s增至1.5s。
- 第二步:增大Kd至1.2。摇摆基本消失,姿态稳定在±1°以内,回正时间缩短至0.6s。但电机声音变得尖锐,说明微分噪声开始显现。
- 第三步:增大Ki至0.15。高度偏差从20cm逐渐收敛至3cm,最终稳定在±1cm。但出现轻微的低频“呼吸”现象(约0.3Hz)。
- 第四步:加入积分限幅(限制积分输出不超过总控制量的25%),并增加微分低通滤波(截止频率80Hz)。低频呼吸消失,整体响应平稳。
最终参数为:Kp=3.2,Ki=0.12,Kd=1.0。飞行器悬停姿态误差±0.8°,高度误差±1.5cm,抗风能力明显提升。
3.4.4 风险与代价
调参过程中,Kd从0.5增至1.2时,电机温度升高了约8℃(从45℃升至53℃),这是因为微分噪声导致电机频繁加减速。增加低通滤波后,电机温度回落至48℃。这说明:微分项是一把双刃剑,在提供阻尼的同时也引入了噪声和功耗代价。
3.5 常见误区与总结复盘
误区二:忽视积分限幅。在飞控中,积分饱和是导致“甩尾”和“翻机”的常见原因。必须实现积分限幅和积分分离。
误区三:微分项直接对角度求导。正确做法是使用陀螺仪角速度作为微分项输入,这样更平滑且物理意义明确。
3.5.1 参数影响总结表
| 参数 | 增大时的效果 | 过大时的风险 | 飞控调试建议 |
|---|---|---|---|
| Kp | 响应加快,稳态误差减小 | 超调增大,高频振荡 | 先调Kp至临界振荡的60%-80% |
| Ki | 消除稳态误差 | 低频振荡,积分饱和 | 最后调Ki,必须加限幅 |
| Kd | 阻尼增强,超调减小 | 噪声放大,响应迟缓 | 配合低通滤波使用 |
3.5.2 调参顺序建议
工程上推荐的调参顺序为:先P,再D,最后I。具体流程是:先将Ki和Kd设为0,增大Kp至系统出现轻微振荡;然后加入Kd消除振荡,使系统临界稳定;最后加入Ki消除稳态误差,并设置积分限幅。这个顺序能够快速定位每个参数的作用范围,避免参数间的相互干扰。