首页 > 技术文章 > 四旋翼中的PID调节方法 | betaflight固件如何调节PID

cai-zi 2021-02-19 10:49 原文

roll横滚,pitch俯仰,yaw航向

一、PID的作用概述

1、P产生响应速度和力度,是I和D的基础

过小响应慢(虽然无震荡)
过大会产生振荡且不断发散

2、D抑制过冲和振荡,抵抗外界的突发干扰,阻止系统的突变。

过小系统会过冲
过大会减慢响应速度(虽然不引起过冲)

3、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲

过小时消除偏差的速度慢
过大会产生振荡

P----完美的P值能使得gyro的噪音尽可能的低。P值线有一些涟漪是正常的,但是要在一个合理的范围内。较高的P值会会增加噪音以至于影响gyro的曲线,会使增加曲线的涟漪(较慢频率的震荡)。
D----完美的D值是与P值有联系的,更确切的说是在的到完美P值之前得到的,其与P值的重要性相等。然而D值的噪音一般来说都会比P值要大,所以通常都会是D值保持一个较低的值。
I-----I值的调节其实可以忽略,这个值的调节一般在飞行的时候调节。- -般将I值保持较低的值,除非在飞行的时候感觉比较飘或者下降的时候感觉到飞机震荡再去增加I值。较低的I值能使的飞行时特别是激烈飞行时,飞机更流畅。

二、betaflight固件如何调节PID

原帖地址:https://github.com/betaflight/betaflight/wiki/PID-Tuning-Guide

2.1 介绍

总的来讲,要达到良好的调试效果,我们需要在保证机身没有振荡的情况下尽可能用最大的P值,实际上,P值大小与你在一个轴上的控制量成正比。P越小控制量越小,P越大控制量越小。但是问题是如果P的值太高,飞机会开始超调,即超过预期的最终状态。这就会导致飞机不断的过度来回矫正,于是飞机就开始震颤。如果使用高质量的电调和快速的PID循环周期时间能帮助飞控更快更有效的作出矫正。

I 和D仅仅是用来帮助处理当P的调节无法处理的振荡和剩下的一些问题:
I会回顾当前时间那些P值无法矫正的一些累积的错误(漂移),然后对其进行调节。这就是为什么增加I值可以解决一些比如当你改变油门大小的时候俯仰一起变化(但你必须先尝试增加你的P值,如果你的P值太低,那么I需要做的就太多,因为P并没有完成它所有的工作)的问题。

D 会观察当前通道是否太快达到了其预期的值。如果你快速的给飞机一个停止横滚的指令,一个高的P值(就像我们希望的那样)往往会让翻滚过头一点点然后“反弹”。如果你看到很多这样的情况,你可能需要增加一点D的值。增加D的值也可以帮助在快速的转向或是低油门快速下降(“洗浆”进入下洗气流)时出现的一些小振荡。非常重要的是请不要将D调的太大。只有在必要的时候才需要调整它,因为D值太大会引起噪声,噪声会引起电机升温并且可能引起电机烧毁!

2.2 调节步骤

确保你的电机是平衡的,同时你的飞机尽可能的没有振动。如果你没有办法从黑匣子里面读取到非常清晰的陀螺仪曲线的情况下,就去调试PID就像是在没有一个结识的地基就开始造房子一样。以下视频介绍了一种简单的方式如何检查你电机上的振动。如有必要,调整你的低通滤波器使陀螺仪获得清晰的曲线。
https://www.youtube.com/watch?v=vjEsYei12Jw

这些步骤必须要在Acro(手动)模式完成,即使你通常是使用Angel/Horizon模式(自稳/半自稳)的飞手。Angel/Horizon模式有它们自己的叠加PID参数,会影响到飞机的调整(手动参数叠加自稳参数才是自稳模式下的表现,自稳参数对于实际PID参数有叠加影响)。以下所示实例的PID值对应于Rewrite PID控制器(PID控制器#1)。当刚开始调试时,设置TPA的值为0。如果需要,TPA可以以后增加。
先从比BetaFlight固件提供的默认P值略低一点开始,Pitch和Roll的P推荐从4.0开始较好。同时降低I和D的值,为了保证在I和D的影响最小的情况下调整P的值。推荐I值设置为20,D的值设置为5作为初始值。为了消除Yaw轴产生震荡影响PID调试,对于yaw的PID,最好的减小P到默认值的一半,然后将I值降低一点点。Yaw可以放到最后调试。
经过一段时间的飞行调试,增加Roll的P值,直到你推满油门时看见并听见飞机产生非常快速的抖动。然后再设置P值到大概刚才引起抖动的P值的70%。
重复第三步调试Pitch轴
测试一下你的飞机是否能够保持你给定的横滚角度,并且不会慢慢的出现漂移,然后你可以快速的拉满油门爬升,然后收油使得飞机自由落体,快速的来回几次,此时飞机的水平角度应该不会出现明显的变化。如果飞机不能保持水平状态并出现漂移,此时增加一点I值。如果你没有发现飞机出现漂移情况,不要改变I值。等到你调整完全部的PID值之后,你可以通过调整I值的大小来改变一下飞机的手感(I值不会真正影响到最后调试好的P和D值)

重复第五步调试Pitch轴
只有当你的飞机在筋斗/滚转,或者洗桨下落,或者自由落体以后,飞机出现一点点反弹震荡时,才在对应的Roll或者Picth轴上增加D值来克服这种反冲震荡。如果你的飞机没有出现这个情况,请保持一个很低的D值。等你完成了这个调试过程,那么你的PID调试工作差不多完成了80~90%。
通常会把Yaw方向的P放到最后来调整,但是如果你不去调整这个值,还是有可能给飞机带来震荡。你可以把Yaw的P值从默认值的一半开始调整,如果你在迅速向前飞行,或者在punch-out(满油拉起-自由落体)这一过程中,没有发现飞机出现任何震荡,你就可以加5.0的幅值开始增加你的Yaw的P值。直到你在迅速往前飞或者 punch-out(满油拉起-自由落体)从你的FPV镜头开始出现抖动模糊,降低Yaw的P值一点点。如果需要更精细的调整 则需要查看黑匣子里的Yaw P曲线,也许会看到一点点震荡,放大Yaw的陀螺仪曲线查看这个P值是否真的在震荡,如果Yaw的陀螺仪曲线看上去很平整,你就已经调整好啦。


注意:相对于Pitch和Roll的P值,本质上来说Yaw的P值的有效控制力很低,所以Yaw P值的调整区间范围很大,你的调试值和真正好的那个值,偏差很大都不会有太大问题。所以相对于Pitch和Roll的值来说,Yaw的P会出现一个很高的P和I值,和一个很低的D值。如果需要更精细的调整,那么需要条用黑匣子的记录,大部分的P值超调带来的震荡都是由Roll和Picth,如果你调整过后在满油门的时候曲线里面还有震荡,那么就需要看一下是否是Yaw P带来的震荡,如果是,那么减少一点Yaw P值。

最后,来微调P值和I值,就看飞机的自旋是否稳定,一个很低的I值会导致飞机总是在慢慢的漂移,一个比较低的I值会导致这个I值所控制的轴线能够非常自由的调整姿态,但是又能够保持住当前的姿态。一个比较高的I值会导致这个I值控制的轴线能够非常好的保持住当前的姿态,但是你会觉得飞机在转动的时候有一个比较大的惯性(或者说阻尼)来阻止飞机姿态的变化。一个非常高的I值会带来一种机械感,并且会导致震荡。当然也可以通过导出黑匣子里的记录来做精细调整,这会是你的PID调整到达一个完美的状态。
当你在手动模式下完成了所有的调试以后,你就可以去调试Level/Horizon模式的PID,如果你确实会去飞这两种模式(如果你一定要这么做的话)


记住不要过分的去追求一个很干净的陀螺仪曲线,如果你的多轴飞行表现特别好也能够跟上你的手感,就这样出去飞吧!

注意事项:
如果你想从黑匣子记录里面找到过高的P值带来的震荡,这种震荡不会是你想的那种大范围的弧线或者高高低低的尖峰或者低谷。最容易注意到的高P值震荡通常都会在较高的油门值处出现,看起来就像一条紧绷的正弦曲线。在调试的时候你可能听不到也观察不到这种震荡,但是黑匣子记录里面可以很清晰的看到这种震荡。等到你都能听到或者观察到这种震荡时,这种曲线在黑匣子里面已经可以非常明显的找到了。这也是为啥我们一开始建议你直接用观察和听这种方式来粗略的调整p值,然后你再在震荡的基础上降低到70%左右设置值,然后再看曲线来调整。

有种不理想的飞行状态叫bounce-back(反弹震荡),当你快速回中俯仰和横滚时,飞机并不会来一个非常“干净”的停止,也许以下因素是造成这种现象的原因:
1:D值太低
2:P值太高
3:一个非常低的P值(一个很低的P值也会造成飞机的慢慢的震动,因为你想停止的时候,飞机没法提供足够的掌控能力)

如果I值调的不好通常不会带来太大麻烦,所以如果你没有太多时间大致调整一下也是可以的。但是D值是一个很关键的影响因素,并且事实上,如果D值没有调好,那造成的影响非常非常的糟糕。如果噪声抑制不是太好并且P值配合也不好的话,会导致飞机飞的很奇怪,飞行的手感很差不听使唤。

如果你需要更多资讯,可以看看下面的资源
Joshua Bardwell's Practical PID Tuning (Betaflight / Cleanflight)
https://www.youtube.com/playlist?list=PLwoDb7WF6c8ldO8tz0IUi9FNcJdvE2Mh

参考 https://www.moz8.com/forum.php?mod=viewthread&tid=109506

推荐阅读