我做PID算法的背景和经历:本人之前电子信息科学与技术专业,对控制方向颇感兴趣,刚上大学时听到实验室老师说PID算法,那年在暑假集训准备全国电子设计竞赛,我正在练习做一个以前专科的题目,帆板角度控制系统,还不懂PID是个什么玩意,老师让我把PID加到这个题目里。当时给了一些电子版的一些教程,但是没看懂。。。。。。。后来对四旋翼很感兴趣,想弄一架玩玩再亲自写程序做一架,买了PIX飞控玩了很久,自己也确实做了一个简单的飞控,我做的飞控只能简单飞起,没有啥创新功能。。。(这过程得有一年多,说来话长,因为玩飞机成本高而且效率比较低,最后干脆不继续了,反正是把PID现在搞得很熟悉了,这期间也做了平衡车和倒立摆,想问PID问题的可以联系我QQ522414928,随时在线。)

我曾经玩的四旋翼,玩飞机花了不少钱:

1.倒立摆与平衡车最通俗的理解与解释(也是我努力了半天总结的经验):当年的电子大赛旋转倒立摆到底有多变态,很多人都认为1个PID只要参数适中这个问题就能解决,因为平衡车一个PID就能够站起来,很多人都以为倒立摆跟平衡车一样,很多人努力了很长时间都以为机械结构做的不好或程序及参数写的不对而放弃,我也一直认为1个PID能解决这个问题,做了一段时间以放弃告终。单纯的控制角度跟随一个PID确实能够让摆站起来,但是忽略了一个很重要的细节,就是在电机速度很快的时候摆平衡了,而且在摆平衡的时候电机的速度一定会很快,此时就会保持这种电机高速运转的状态,但是这种高速旋转显然是短暂的平衡,所以用单级PID做的倒立摆会瞬间平衡一下立刻倒下。

  所以说对于倒立摆这个系统,单级的PID算法是实现不了的,至少需要两级PID去控制才能站稳。

 

当年做的平衡车,做过好几个,有单级PID算法的,还有多级PID算法的:

     以下是研究倒立摆时遇到的PID串级和并集的困扰:

  2.折腾了很长时间PID的问题,尤其是串级PID,以前还想不明白串级PID的外环输出为什么给内环PID的输入,后来想明白了。
但是,今天又有了新的发现,研究了这么长时间的串级PID,今天恍然大悟了,把串级PID的公式推导,把串级的两个PID的两个公式合并成
一个公式不就是并级的PID公式吗,感谢平衡小车之家的店主提醒,以前从来没推导过,竟然:串级PID=并级PID,以后研究各种平衡跟踪的问题完
全不用考虑难以理解的串级pid了,直接一个PID不行,再并一个PID就可以了,一直纠结的问题原来这么简单,并且把串级PID和并级PID都用倒立
摆试了一下,结果效果是一样的。只是并级第二个PID的参数=原来串级外环PID的参数*(乘)原来串级PID内环的参数

结果:串级PID=并级PID,MD其实是一个玩意,但是并级PID要比串级PID更容易实现一些
 

 用openmv做的PID小球颜色追踪:

旋转倒立摆:

想看更多的资料或教程可以到我的QQ空间https://user.qzone.qq.com/522414928/infocenter

或加QQ522414928共同学习

多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。