37649| 1
|
[教程] PID控制与调参详解 |
本帖最后由 恐刀酷 于 2021-10-27 10:29 编辑 PID是一种自动控制的算法,他的存在是为了让穿越机准确稳定地响应飞手的控制信号,即使在螺旋桨轻度磨损,或是被风干扰时也能相对稳定地保持飞行姿态。 在Betaflight调参界面中,PID设置页面占了很大的篇幅,穿越机每一个方向上都能单独调节PID参数。理解PID能极大程度帮助飞手理解飞行原理并提升飞行体验。本文将为零数学基础的飞友深入浅出地说明PID基本原理。 什么是闭环控制?在解释PID控制理论之前需要先了解闭环和开环控制,这两种控制的定义如下:
可以看出,当控制结果存在不确定性时,只有通过闭环控制才能取得一个相对准确且稳定的结果。 对于飞手来说,穿越机的控高飞行就是一个典型的闭环控制过程。刚拿到遥控器时,飞手并不知道油门需要推到什么角度才维持飞行高度,所以杆量需要时刻根据飞手观测到的高度来调整。 当然,在能保证结果稳定性的前提下,开环控制是一个成本更低且效率更高的控制方法。韩国著名飞手MCK在X-Fly 2019南京站的比赛中一度丢失画面信号,但是依然依靠记忆盲飞取得碾压性的第一。 闭环控制中涉及三个重要部分,分别是输入值,控制算法和输出值。以飞机控高操作为例,三个值分别为:
对于穿越机来说,电子系统的反馈信号频率远超人脑的反应速度。所以我们需要将控制算法写在芯片中,让飞控取代大脑进行自动闭环控制。而PID控制就是自动闭环控制理论中的重要的算法之一。 什么是PID?PID三个字母分别源于比例(Partial),积分(Integral),微分(Differential) 。目前不管是学术界还是圈内关于PID的解释大多比较抽象,但原理其实并不复杂,这里可以举一个简单的例子来帮助理解什么是PID。 假如我们要设计一个算法,根据飞机的来高度调整升力,让穿越机稳定在1米的高度,可以按步骤作以下尝试: 根据距离的差值调整升力最直观的控制思路就是观察飞机与目标高度的差值,高于目标则减少升力,低于目标则增大升力。差值越大升力差越大。气压计能获取穿越机的高度,作为控制的输入值发送给飞控。距离和升力之间成比例关系(Partial)。以比例为-1/10为例:
这个算法确实能让飞机在一定高度附近停留,但是与目标距离越远回复的力就越大,就好像是将穿越机拴在了弹簧上,不停上下抖动无法稳定。 相信不少飞友在刚入坑的时候就会有一样的问题,解决方法也很简单,控高的时候不能只看高度,还要看飞机的速度。 根据速度的大小调整升力在穿越机持续上升并将要达平衡位置时,即升力不再增加也会因为惯性而超出高度。所以我们需要根据速度适当地减少升力,速度越快,则升力越小。如此重复几次以后穿越机就会稳定在固定高度上。速度可以通过单位时间的距离变化量求得,即对时间进行微分(Differential)计算。 根据累计的差值调整升力如果穿越机在飞行携带了航拍设备,导致重量增加,前两步中所计算出来的升力没有办法继续将飞机维持在固定高度。而飞行时间越长,这个高度的差值就会越大。这时我们就需要统计这个差值来额外增加升力。差值的计算通过积分(Integral)算法获得,简而言之就是高度差值越大,且持续的时间越长,需要额外补偿的升力就越多。 为什么要调PID?由于惯性等其他变量的存在,使飞机没法快速准确地停留在目标高度,这就是我们需要调PID的原因。 PID在穿越机调参中的主要作用有两个:
第一种情况现在已经基本不会出现,一般默认PID就可以飞的比较稳了。 所以如果你是刚入门不懂PID原理的新手,不建议自行调整PID。 如果你已经掌握了基本的飞行技巧和原理,想进一步优化你的飞行手感,就可以开始调整PID了。 这个过程可能很痛苦,需要你花大量的时间,不断地进行微调,然后实践,再微调,实践……直到找到你最喜欢的飞行手感为止。 PID的原理在动态控制中,我们通过调整PID三个参数来获得动力,同时消除振荡,找到对你当前的飞行场景来说更优的手感。 P(Partial)是比例的简称。 “P”单元控制着控制系统的所有动力,以达到所需的输出。如果“P”单元没有足够的输出,无人机就没有足够的动力来反馈你的控制命令;如果“P”单元输出过大,无人机就会反应过度,发生振荡。 它的特点和弹簧完全一致。 简单来说,它的作用就是测量无人机当前位置与目标位置的距离。这个距离越远,就需要更大的力给掰回去。 P越大,“弹簧”越硬,回复的速度越快,震动的频率也越高。 如果闭环控制中只有P,结果就是飞机会持续无休止地振荡,这个时候就要引入D来消除振荡。 D(Differential)是微分的简称。 D就是通过微分的方法来计算运动速度。用人话来说,就是D越大在物体运动时的阻力就越大。这个阻力和物体的运动方向相反。 你可以把它想象成把振动的物体丢到液体里的过程。 D越大,液体密度越大,“物体”在运动时的阻力就越大,就能更快静止下来。 稍微加一点D,P带来的振幅会变小,无人机会更快地停在目标位置。 但如果D值过大,这个阻力会抵消回复力,让控制变得非常迟钝,整个运动过程就会显得有些油腻。 I(Integral)是积分的简称。 “I”单元对外界干扰或存在的系统误差进行纠正,以确保最后的输出符合预期。 飞机会不停地检测位置是否存在偏差,如果存在的偏差越大、持续时间越长,就会产生一个越大的力来矫正。 一般情况下,我们可以把I值设的高一点,但需要注意的是,I值过大也会产生振荡。
总的来说,P、I、D三个值是互相影响的关系,要调整到最佳比例,需要反复不断地实践。 Betaflight中PID控制什么?上文案例中的PID控高算法已普遍用在消费级的无人机中。但是对于不支持自动控高的穿越机来说,PID控制的对象不是高度,而是姿态角或旋转速度。
PID参数如何影响穿越机飞行?
P和D对于穿越机飞行的影响比较大。而PID调参就是权衡响应速度和飞行稳定性的过程。 PID参数应该如何调整?Betaflight中的默认数值已经能够满足绝大多数飞行场景,对于已经能够熟练飞行穿越机的玩家来说,可以尝试调整P值感受响应的快慢,在调整到比较舒适的状态后再调整D值来增强飞行稳定度。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed