我作PID算法的背景和經歷:本人以前電子信息科學與技術專業,對控制方向頗感興趣,剛上大學時聽到實驗室老師說PID算法,那年在暑假集訓準備全國電子設計競賽,我正在練習作一個之前專科的題目,帆板角度控制系統,還不懂PID是個什麼玩意,老師讓我把PID加到這個題目裏。當時給了一些電子版的一些教程,可是沒看懂。。。。。。。後來對四旋翼很感興趣,想弄一架玩玩再親自寫程序作一架,買了PIX飛控玩了好久,本身也確實作了一個簡單的飛控,我作的飛控只能簡單飛起,沒有啥創新功能。。。(這過程得有一年多,說來話長,由於玩飛機成本高並且效率比較低,最後乾脆不繼續了,反正是把PID如今搞得很熟悉了,這期間也作了平衡車和倒立擺,想問PID問題的能夠聯繫我QQ522414928,隨時在線。)算法
我曾經玩的四旋翼,玩飛機花了很多錢:學習
1.倒立擺與平衡車最通俗的理解與解釋(也是我努力了半天總結的經驗):當年的電子大賽旋轉倒立擺到底有多變態,不少人都認爲1個PID只要參數適中這個問題就能解決,由於平衡車一個PID就可以站起來,不少人都覺得倒立擺跟平衡車同樣,不少人努力了很長時間都覺得機械結構作的很差或程序及參數寫的不對而放棄,我也一直認爲1個PID能解決這個問題,作了一段時間以放棄了結。單純的控制角度跟隨一個PID確實可以讓擺站起來,可是忽略了一個很重要的細節,就是在電機速度很快的時候擺平衡了,並且在擺平衡的時候電機的速度必定會很快,此時就會保持這種電機高速運轉的狀態,可是這種高速旋轉顯然是短暫的平衡,因此用單級PID作的倒立擺會瞬間平衡一下馬上倒下。spa
因此說對於倒立擺這個系統,單級的PID算法是實現不了的,至少須要兩級PID去控制才能站穩。設計
當年作的平衡車,作過好幾個,有單級PID算法的,還有多級PID算法的:3d
如下是研究倒立擺時遇到的PID串級和並集的困擾:
blog
2.折騰了很長時間PID的問題,尤爲是串級PID,之前還想不明白串級PID的外環輸出爲何給內環PID的輸入,後來想明白了。可是,今天又有了新的發現,研究了這麼長時間的串級PID,今天恍然大悟了,把串級PID的公式推導,把串級的兩個PID的兩個公式合併成一個公式不就是並級的PID公式嗎,感謝平衡小車之家的店主提醒,之前歷來沒推導過,居然:串級PID=並級PID,之後研究各類平衡跟蹤的問題徹底不用考慮難以理解的串級pid了,直接一個PID不行,再並一個PID就能夠了,一直糾結的問題原來這麼簡單,而且把串級PID和並級PID都用倒立擺試了一下,結果效果是同樣的。只是並級第二個PID的參數=原來串級外環PID的參數*(乘)原來串級PID內環的參數
用openmv作的PID小球顏色追蹤:教程
旋轉倒立擺:io
想看更多的資料或教程能夠到個人QQ空間https://user.qzone.qq.com/522414928/infocenterclass
或加QQ522414928共同窗習效率