Cleanflight中PID Controller模式解释 最近从cc3d原始固件转到cleanflight固件来玩,发现里面有很多不懂的东西。没办法,既然开始玩cleanflight固件还是看看国外大神的论坛学习学习知识吧,学习也不能白学,做个翻译笔记,共享出来给有需要的朋友。只是自己的翻译,如果有不正确的地方请高手指出,共同学习。 原文在这里http://blog.oscarliang.net/pid-controller-0-1-2-cleanflight/,有兴趣的可以看看,这位大神的博客里能学到很多知识
PID Controller 0 – Multiwii PID Controller 1 – Rewrite PID Controller 2 – (Baseflight) LuxFloat PID Controller 3 – MultiWii23 PID Controller 4 – MultiWiiHybrid PID Controller 5 – Harakiri
PID Controller 0 – Multiwii:这个PID算法是Cleanflight固件里面默认算法。也许你知道cleanflight其实就是baseflight固件的一个分支,而baseflight是Multitwii固件的一个分支。因此PID Controller 0是源于最早的Multitwii固件(Multiwii 2.2 – MW2.2 版本以及更早的版本)。 这个PID Controller 0算法有着一些很奇怪的特性来影响PID的值。例如:在PID值里的奇怪的效果,当你增加roll和pitch的P值的时候,roll和pitch旋转的灵敏度也随之降低,而为了达到原来的效果,你在增加Pitch/Roll/的P值的同时还需要增加Pitch/Roll rate的值来补偿。
PID Controller 1 – Rewrite:顾名思义这个算法就是PIDController 0 – Multiwii算法的更新版本。它是源之于Multiwii 2.3版本,在cleanglight文档里介绍的她的运算效果比Multiwii 2.3版本算法有过之而不及。PID值的调整更容易且宽容度更好。 在PIDController 1里面PID的值不在与Pitch/Roll/Yaw rate值有关联,因此在调节P的值时不在影响旋转的灵敏度。在增加P值时不在像PID Controller 0算法那样会降低旋转灵敏度。 在大多数使用PIDController 1算法的飞手反馈中发现:这个算法的反应视乎更直。这个算法更值得推荐给使用rate mode和manual mode模式的每一位飞手。在你使用angle(自稳)和horizon(半自稳)模式时PID效果是有变化的。 PID Controller 2 – (Baseflight) LuxFloat:Multiwii算法是基于8位处理器的,而像最新的飞控Naze32和CC3D则是32位处理器,它们的计算速率大大高于8位处理器。由于处理器的优势PID算法可以使用32位的浮点运算,而无需再源于Multiwii算法。虽然它曾经被叫做“baseflight”,但是他与baseflight何Multiwii没有任何的关系。(这个算法2015年1月29号由原来的baseflight被更名为LuxFloat)。这个算法不受looptime的影响。我相信这个算法在将来一定更有可研究性,他的时效性、综合性即将更适合现在的32位飞控,虽然现在这个算法还不能支持自动调参。
(算法3、4、5是2015年1月29日更新固件后新加入的算法) PID Controller 3 – MultiWii23:这个算法是与MultiWii2.3版本算法一样的,这个算法中roll和pitch的操作与yaw是不一样的,如果你多yaw操作有特殊要求可以试试这个算法。
PID Controller 4 – MultiWiiHybrid:这个算法是MultiWii2.3和MultiWii2.2算法的杂交算法,roll和pitch用的是MultiWii2.2里的算法,yaw用的是MultiWii2.3里的算法。 PID Controller 5 – Harakiri:这个算法是源之于Harakiri固件的算法,这个算法更多的是借助于浮点运算。他的roll和pitch的PID调节也需要不同的looptime进行补偿。此算法在looptime变化的时候PID不需要重新调整。
|