Skip to main content

PID控制与调参详解

PID是一种自动控制的算法,他的存在是为了让穿越机准确稳定地响应飞手的控制信号,即使在螺旋桨轻度磨损,或是被风干扰时也能相对稳定地保持飞行姿态。

在Betaflight调参界面中,PID设置页面占了很大的篇幅,穿越机每一个方向上都能单独调节PID参数。理解PID能极大程度帮助飞手理解飞行原理并提升飞行体验。本文将为零数学基础的飞友深入浅出地说明PID基本原理。

什么是闭环控制?#

在解释PID控制理论之前需要先了解闭环和开环控制,这两种控制的定义如下:

  • 闭环控制:根据反馈结果动态调整控制信号。

    案例:冰箱会根据温度实时调整功率,让冰箱内部保持恒温状态。

  • 开环控制:无反馈的结果,控制信号不会实时调整。

    案例:将电风扇开至三挡,电风扇的转速与环境温度无关。

可以看出,当控制结果存在不确定性时,只有通过闭环控制才能取得一个相对准确且稳定的结果。

对于飞手来说,穿越机的控高飞行就是一个典型的闭环控制过程。刚拿到遥控器时,飞手并不知道油门需要推到什么角度才维持飞行高度,所以杆量需要时刻根据飞手观测到的高度来调整。

当然,在能保证结果稳定性的前提下,开环控制是一个成本更低且效率更高的控制方法。韩国著名飞手MCK在X-Fly 2019南京站的比赛中一度丢失画面信号,但是依然依靠记忆盲飞取得碾压性的第一。

闭环控制中涉及三个重要部分,分别是输入值,控制算法和输出值。以飞机控高操作为例,三个值分别为:

  • 输入值:摇杆的杆位
  • 控制算法:在飞手大脑中完成,飞行熟练度越高算法越完善。
  • 输出值:穿越机的高度

对于穿越机来说,电子系统的反馈信号频率远超人脑的反应速度。所以我们需要将控制算法写在芯片中,让飞控取代大脑进行自动闭环控制。而PID控制就是自动闭环控制理论中的重要的算法之一。

什么是PID?#

PID三个字母分别源于比例(Partial),积分(Integral),微分(Differential) 。目前不管是学术界还是圈内关于PID的解释大多比较抽象,但原理其实并不复杂,这里可以举一个简单的例子来帮助理解什么是PID。

假如我们要设计一个算法,根据飞机的来高度调整升力,让穿越机稳定在1米的高度,可以按步骤作以下尝试:

根据距离的差值调整升力#

最直观的控制思路就是观察飞机与目标高度的差值,高于目标则减少升力,低于目标则增大升力。差值越大升力差越大。气压计能获取穿越机的高度,作为控制的输入值发送给飞控。距离和升力之间成比例关系(Partial)。以比例为-1/10为例:

输入值:与目标高度的差值(cm)输出值:飞机的升力(N)
+20↓ 2
+10↓ 1
0保持平衡
-10↑ 1
-20↑ 2

这个算法确实能让飞机在一定高度附近停留,但是与目标距离越远回复的力就越大,就好像是将穿越机拴在了弹簧上,不停上下抖动无法稳定。

harmonic_spring

相信不少飞友在刚入坑的时候就会有一样的问题,解决方法也很简单,控高的时候不能只看高度,还要看飞机的速度。

根据速度的大小调整升力#

在穿越机持续上升并将要达平衡位置时,即升力不再增加也会因为惯性而超出高度。所以我们需要根据速度适当地减少升力,速度越快,则升力越小。如此重复几次以后穿越机就会稳定在固定高度上。速度可以通过单位时间的距离变化量求得,即对时间进行微分(Differential)计算。

damped_spring

根据累计的差值调整升力#

如果穿越机在飞行携带了航拍设备,导致重量增加,前两步中所计算出来的升力没有办法继续将飞机维持在固定高度。而飞行时间越长,这个高度的差值就会越大。这时我们就需要统计这个差值来额外增加升力。差值的计算通过积分(Integral)算法获得,简而言之就是高度差值越大,且持续的时间越长,需要额外补偿的升力就越多。

Betaflight中PID控制什么?#

上文案例中的PID控高算法已普遍用在消费级的无人机中。但是对于不支持自动控高的穿越机来说,PID控制的对象不是高度,而是姿态角或旋转速度。

  • 自稳模式:三组PID参数分别用于控制穿越机三个方向的倾斜角度,倾角大小由加速度计读取。

  • 手动模式:三组PID参数分别用于控制穿越机三个方向的旋转速度,转速大小由陀螺仪计读取。

PID参数如何影响穿越机飞行?#

  • P:用于调整穿越机对指令的响应速度,P越大则能越迅速的让穿越机达到指令对应的姿态。但是P较大会产生持续抖动,P值过大时甚至会放大抖动。
  • I:用于计算累计误差,在不调整杆量的情况下让穿越机保持稳定的飞行姿态。
  • D:用于减少P值产生的抖动,会一定程度降低穿越机响应速度,但是能增加姿态的稳定性。

P和D对于穿越机飞行的影响比较大。而PID调参就是权衡响应速度和飞行稳定性的过程。

PID参数应该如何调整?#

Betaflight中的默认数值已经能够满足绝大多数飞行场景,对于已经能够熟练飞行穿越机的玩家来说,可以尝试调整P值感受响应的快慢,在调整到比较舒适的状态后再调整D值来增强飞行稳定度。