找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4622|回復: 3
打印 上一主題 下一主題
收起左側(cè)

平衡小車

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:250245 發(fā)表于 2018-6-23 11:24 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
前幾天一直在整平衡小車,想用這個理解一下pid,并調(diào)一調(diào)帶編碼盤的電機。

首先談談我對pid算法的理解,剛開始以為平衡小車是采取的串級pid來是小車平衡,就是通過角度算出此時的pwm,在通過這個pwm去當作速度環(huán)的入口參數(shù),通過編碼盤來獲取小車的速度控制小車由角度環(huán)指定速度下行駛。但通過實踐并不是這樣,速度環(huán)和角度環(huán)應該是兩個獨立的系統(tǒng),角度環(huán)用來讓小車快速的恢復到平衡狀態(tài),如果初始化陀螺儀時陀螺儀的角度正好重力重合,那么你的小車就會平衡,否則就會向一個方向加速,只至倒下,加上速度環(huán)就會解決這一問題,速度環(huán)是為了消除小車的位移,讓小車能夠在一定的位移范圍內(nèi)調(diào)整角度,如果下車像一個方向一直加速,那么速度環(huán)累計的位移就會越來越大最后達到一定程度,導致小車減速甚至反向到達以前的位置。

再談談角度環(huán)的pid公式的理解,角度環(huán)的公式是:車輪加速度=小車傾斜角度×kp+小車角速度×kd         。我對他的理解就是   小車傾斜角度×kp    是為了讓小車能基本的立起來,而

小車角速度×kd      則是讓小車能在突然改變角度的時候能夠做出快速的反應增強其穩(wěn)定性。那么角度環(huán)為什么沒有積分項呢,我將在最后的總結(jié)里講到。

我們再看看速度環(huán)的公式:pwm的修正量(我自己給取得,不用在意叫什么名字)=小車速度×kp+小車位移×ki          (我不懂為什么沒有微分項)。我對這個公式的理解則是     小車速度×kp   是讓小車不會一直加速,要知道速度一快,這個公式計算出來的值就越大,最后用角度環(huán)計算出來的值加上這個值就會越大了,就可以將車身擺正了。那么基本上就可以解決角度環(huán)一直加速的問題,但是如果小車以一個比較慢的速度一直向一個方向移動(這種情況是有可能出現(xiàn)的)我們是不允許這種情況發(fā)生的,所以現(xiàn)在就必須要有積分項小車位移×ki    (有大神說ki=kp÷200,我試了,的確很好使) 的作用了這個加上以后就可以消除小車有大的位移這個問題,讓小車可以在一個區(qū)域內(nèi)調(diào)整姿態(tài)。

那么讓小車立起來了如何改變方向和速度了。改變速度有兩種方式,一是可以通過改變給速度環(huán)的的輸入部分先給一個偏差,這樣速度就會穩(wěn)定在你給的那個偏差里,還有一種就是你可以給積分項給一個偏差,這樣你不動的時候就已經(jīng)有了積分作用,小車就會向一邊偏然后慢慢加速直至小車車輪產(chǎn)生的積分作用能夠抵消小車剛開始已有的積分作用,然后小車達到平衡狀態(tài),勻速運動(我用的是第二種所以比較清楚)在積分項里還有一個積分限伏,這個是非常重要的如果你不加的話小車可能會因為打滑,而向一邊一直加上速,或者你將小車提起來時就會發(fā)現(xiàn),小車會向一邊一直加速然后就停不下來了,這是因為速度環(huán)是一個正反饋調(diào)節(jié)的過程,(這點是非常重要的,我剛開始以為是一個負反饋調(diào)節(jié)的過程結(jié)果小車車輪就一動不動,因為它會產(chǎn)生和你運動方向相反的pwm波),你如果明確這個你就會知道積分限伏的重要性,積分限幅就規(guī)定了你最大可以傾斜的角度和你的最大速度,所以收這個范圍是越大越好,但也不能超過小車的極限,你可以將小車拿起在放下,一直增加這個范圍,直到小車會無法調(diào)整到平衡狀態(tài)為止。網(wǎng)上有人說小車重心越高越好,說什么重心高轉(zhuǎn)動慣量越大也好控制,我認為這是錯的,重心越高,你的電機能夠產(chǎn)生的扭矩就得越大,才能抵消重力的作用,而且我個人認為,重心越低,能夠偏轉(zhuǎn)的角度就越大,你小車的最大速度就越大,這是你提高小車速度的最好方法。

小車轉(zhuǎn)彎這個問題其實非常簡單,就兩行代碼的事,你給在前面工作都做完的條件下,讓左輪的pwm加上一個值,右輪減去一個值就行了。但要注意的是,你必須使用兩個編碼盤(前面所有功能只要一個就夠)比如說原地打轉(zhuǎn)的時候位移應該是零的但是由于只有一個編碼盤,就只計算了一個輪胎的位移導致積分項越加越大。


最后談談我對pid的理解:

pid其實就是兩種  

增量式:pwm =Kp[e(k)-e(k-1)] Ki*e(k) Kd[e(k)-2e(k-1) e(k-2)]

位置式:pwm =Kp*e(k) Ki*∑e(k) Kd[e(k)-e(k-1)]

其他形式的pid只是為了解決積分飽和和讓算法更加優(yōu)化的問題

對于這兩種pid的選擇網(wǎng)上說增量式pid的執(zhí)行器件一定要自帶積分效果,以下是我在網(wǎng)上找到的兩種pid之間的區(qū)別。

      (1)位置式PID控制的輸出與整個過去的狀態(tài)有關,用到了誤差的累加值;而增量式PID的輸出只與當前拍和前兩拍的誤差有關,因此位置式PID控制的累積誤差相對更大;

  (2 )增量式PID控制輸出的是控制量增量,并無積分作用,因此該方法適用于執(zhí)行機構帶積分部件的對象,如步進電機等,而位置式PID適用于執(zhí)行機構不帶積分部件的對象,如電液伺服閥。

 。3 )由于增量式PID輸出的是控制量增量,如果計算機出現(xiàn)故障,誤動作影響較小,而執(zhí)行機構本身有記憶功能,可仍保持原位,不會嚴重影響系統(tǒng)的工作,而位置式的輸出直接對應對象的輸出,因此對系統(tǒng)影響較大。


   我對位置式pid的理解就是   你要用于改變你需要控制狀態(tài)的一個值=比例項+積分項+微分項,這三者之間的取舍需要根據(jù)實際用途去舍取,積分項是要控制變量偏差的積分比如速度環(huán)里面的積分,速度環(huán)是為了消除小車一直加速的問題,那么你要控制的就是速度,而速度的積分正是位移,微分項則是你要控制的偏差的微分,角度環(huán)控制的是角度,那么其微分則是角速度,這樣我們便可以理解為什么角度環(huán)沒有積分項(角度積分的不出實際的物理意義,而速度微分是加速度,這是我不理解的,加速度不就正是我們要控制的量嗎?我們可以將陀螺儀X軸的加速度取出來(其實最好重新安裝一個加速度計,盡量低一點)加速度為零,小車就可以靜止,或者勻速運動,我覺得加上微分后小車能夠更快的加速,和更穩(wěn)定平衡,我不理解為什么網(wǎng)上眾多的代碼中都是pi算法)至于參數(shù),你覺得應該調(diào)成多大就多大吧file:///C:\Users\ASUS\AppData\Local\Temp\QBHO~D%B_59OH5TDLN0$I5X.png

  我對增量式pid不是很清楚,增量式pid必須在執(zhí)行器件自帶積分作用的器件,比如步進電機,我還沒用增量式pid調(diào)過東西,調(diào)了在說吧,要是誰有這個方面的資料希望大家能夠分享出來啊 o( ̄▽ ̄///)

PID部分只是我個人的看法,有什么問題,大佬們指正哦(⊙o⊙)

下面是我寫的程序,以及自己總結(jié)的幾種pid的形式,還有網(wǎng)上得一些資料希望對大家有用

QQ圖片20180623110854.jpg (3.3 MB, 下載次數(shù): 60)

QQ圖片20180623110854.jpg

平衡小車資料.rar

10.13 MB, 下載次數(shù): 30, 下載積分: 黑幣 -5

平衡小車.rar

6.12 MB, 下載次數(shù): 31, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:250245 發(fā)表于 2018-6-23 11:26 | 只看該作者
哎呀不小心 上傳來三張圖,算了不改了
回復

使用道具 舉報

板凳
ID:361002 發(fā)表于 2018-6-28 15:04 | 只看該作者
謝謝分享
回復

使用道具 舉報

地板
ID:423971 發(fā)表于 2020-8-13 09:42 | 只看該作者
受益了 感謝分享  最近也是在搞平衡小車
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表