|
|
前幾天一直在整平衡小車(chē),想用這個(gè)理解一下pid,并調(diào)一調(diào)帶編碼盤(pán)的電機(jī)。
首先談?wù)勎覍?duì)pid算法的理解,剛開(kāi)始以為平衡小車(chē)是采取的串級(jí)pid來(lái)是小車(chē)平衡,就是通過(guò)角度算出此時(shí)的pwm,在通過(guò)這個(gè)pwm去當(dāng)作速度環(huán)的入口參數(shù),通過(guò)編碼盤(pán)來(lái)獲取小車(chē)的速度控制小車(chē)由角度環(huán)指定速度下行駛。但通過(guò)實(shí)踐并不是這樣,速度環(huán)和角度環(huán)應(yīng)該是兩個(gè)獨(dú)立的系統(tǒng),角度環(huán)用來(lái)讓小車(chē)快速的恢復(fù)到平衡狀態(tài),如果初始化陀螺儀時(shí)陀螺儀的角度正好重力重合,那么你的小車(chē)就會(huì)平衡,否則就會(huì)向一個(gè)方向加速,只至倒下,加上速度環(huán)就會(huì)解決這一問(wèn)題,速度環(huán)是為了消除小車(chē)的位移,讓小車(chē)能夠在一定的位移范圍內(nèi)調(diào)整角度,如果下車(chē)像一個(gè)方向一直加速,那么速度環(huán)累計(jì)的位移就會(huì)越來(lái)越大最后達(dá)到一定程度,導(dǎo)致小車(chē)減速甚至反向到達(dá)以前的位置。
再談?wù)劷嵌拳h(huán)的pid公式的理解,角度環(huán)的公式是:車(chē)輪加速度=小車(chē)傾斜角度×kp+小車(chē)角速度×kd 。我對(duì)他的理解就是 小車(chē)傾斜角度×kp 是為了讓小車(chē)能基本的立起來(lái),而
小車(chē)角速度×kd 則是讓小車(chē)能在突然改變角度的時(shí)候能夠做出快速的反應(yīng)增強(qiáng)其穩(wěn)定性。那么角度環(huán)為什么沒(méi)有積分項(xiàng)呢,我將在最后的總結(jié)里講到。
我們?cè)倏纯此俣拳h(huán)的公式:pwm的修正量(我自己給取得,不用在意叫什么名字)=小車(chē)速度×kp+小車(chē)位移×ki (我不懂為什么沒(méi)有微分項(xiàng))。我對(duì)這個(gè)公式的理解則是 小車(chē)速度×kp 是讓小車(chē)不會(huì)一直加速,要知道速度一快,這個(gè)公式計(jì)算出來(lái)的值就越大,最后用角度環(huán)計(jì)算出來(lái)的值加上這個(gè)值就會(huì)越大了,就可以將車(chē)身擺正了。那么基本上就可以解決角度環(huán)一直加速的問(wèn)題,但是如果小車(chē)以一個(gè)比較慢的速度一直向一個(gè)方向移動(dòng)(這種情況是有可能出現(xiàn)的)我們是不允許這種情況發(fā)生的,所以現(xiàn)在就必須要有積分項(xiàng)小車(chē)位移×ki (有大神說(shuō)ki=kp÷200,我試了,的確很好使) 的作用了這個(gè)加上以后就可以消除小車(chē)有大的位移這個(gè)問(wèn)題,讓小車(chē)可以在一個(gè)區(qū)域內(nèi)調(diào)整姿態(tài)。
那么讓小車(chē)立起來(lái)了如何改變方向和速度了。改變速度有兩種方式,一是可以通過(guò)改變給速度環(huán)的的輸入部分先給一個(gè)偏差,這樣速度就會(huì)穩(wěn)定在你給的那個(gè)偏差里,還有一種就是你可以給積分項(xiàng)給一個(gè)偏差,這樣你不動(dòng)的時(shí)候就已經(jīng)有了積分作用,小車(chē)就會(huì)向一邊偏然后慢慢加速直至小車(chē)車(chē)輪產(chǎn)生的積分作用能夠抵消小車(chē)剛開(kāi)始已有的積分作用,然后小車(chē)達(dá)到平衡狀態(tài),勻速運(yùn)動(dòng)(我用的是第二種所以比較清楚)在積分項(xiàng)里還有一個(gè)積分限伏,這個(gè)是非常重要的如果你不加的話小車(chē)可能會(huì)因?yàn)榇蚧蛞贿呉恢奔由纤伲蛘吣銓⑿≤?chē)提起來(lái)時(shí)就會(huì)發(fā)現(xiàn),小車(chē)會(huì)向一邊一直加速然后就停不下來(lái)了,這是因?yàn)樗俣拳h(huán)是一個(gè)正反饋調(diào)節(jié)的過(guò)程,(這點(diǎn)是非常重要的,我剛開(kāi)始以為是一個(gè)負(fù)反饋調(diào)節(jié)的過(guò)程結(jié)果小車(chē)車(chē)輪就一動(dòng)不動(dòng),因?yàn)樗鼤?huì)產(chǎn)生和你運(yùn)動(dòng)方向相反的pwm波),你如果明確這個(gè)你就會(huì)知道積分限伏的重要性,積分限幅就規(guī)定了你最大可以傾斜的角度和你的最大速度,所以收這個(gè)范圍是越大越好,但也不能超過(guò)小車(chē)的極限,你可以將小車(chē)拿起在放下,一直增加這個(gè)范圍,直到小車(chē)會(huì)無(wú)法調(diào)整到平衡狀態(tài)為止。網(wǎng)上有人說(shuō)小車(chē)重心越高越好,說(shuō)什么重心高轉(zhuǎn)動(dòng)慣量越大也好控制,我認(rèn)為這是錯(cuò)的,重心越高,你的電機(jī)能夠產(chǎn)生的扭矩就得越大,才能抵消重力的作用,而且我個(gè)人認(rèn)為,重心越低,能夠偏轉(zhuǎn)的角度就越大,你小車(chē)的最大速度就越大,這是你提高小車(chē)速度的最好方法。
小車(chē)轉(zhuǎn)彎這個(gè)問(wèn)題其實(shí)非常簡(jiǎn)單,就兩行代碼的事,你給在前面工作都做完的條件下,讓左輪的pwm加上一個(gè)值,右輪減去一個(gè)值就行了。但要注意的是,你必須使用兩個(gè)編碼盤(pán)(前面所有功能只要一個(gè)就夠)比如說(shuō)原地打轉(zhuǎn)的時(shí)候位移應(yīng)該是零的但是由于只有一個(gè)編碼盤(pán),就只計(jì)算了一個(gè)輪胎的位移導(dǎo)致積分項(xiàng)越加越大。
最后談?wù)勎覍?duì)pid的理解:
pid其實(shí)就是兩種
增量式: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)化的問(wèn)題
對(duì)于這兩種pid的選擇網(wǎng)上說(shuō)增量式pid的執(zhí)行器件一定要自帶積分效果,以下是我在網(wǎng)上找到的兩種pid之間的區(qū)別。
(1)位置式PID控制的輸出與整個(gè)過(guò)去的狀態(tài)有關(guān),用到了誤差的累加值;而增量式PID的輸出只與當(dāng)前拍和前兩拍的誤差有關(guān),因此位置式PID控制的累積誤差相對(duì)更大;
(2 )增量式PID控制輸出的是控制量增量,并無(wú)積分作用,因此該方法適用于執(zhí)行機(jī)構(gòu)帶積分部件的對(duì)象,如步進(jìn)電機(jī)等,而位置式PID適用于執(zhí)行機(jī)構(gòu)不帶積分部件的對(duì)象,如電液伺服閥。
(3 )由于增量式PID輸出的是控制量增量,如果計(jì)算機(jī)出現(xiàn)故障,誤動(dòng)作影響較小,而執(zhí)行機(jī)構(gòu)本身有記憶功能,可仍保持原位,不會(huì)嚴(yán)重影響系統(tǒng)的工作,而位置式的輸出直接對(duì)應(yīng)對(duì)象的輸出,因此對(duì)系統(tǒng)影響較大。
我對(duì)位置式pid的理解就是 你要用于改變你需要控制狀態(tài)的一個(gè)值=比例項(xiàng)+積分項(xiàng)+微分項(xiàng),這三者之間的取舍需要根據(jù)實(shí)際用途去舍取,積分項(xiàng)是要控制變量偏差的積分比如速度環(huán)里面的積分,速度環(huán)是為了消除小車(chē)一直加速的問(wèn)題,那么你要控制的就是速度,而速度的積分正是位移,微分項(xiàng)則是你要控制的偏差的微分,角度環(huán)控制的是角度,那么其微分則是角速度,這樣我們便可以理解為什么角度環(huán)沒(méi)有積分項(xiàng)(角度積分的不出實(shí)際的物理意義,而速度微分是加速度,這是我不理解的,加速度不就正是我們要控制的量嗎?我們可以將陀螺儀X軸的加速度取出來(lái)(其實(shí)最好重新安裝一個(gè)加速度計(jì),盡量低一點(diǎn))加速度為零,小車(chē)就可以靜止,或者勻速運(yùn)動(dòng),我覺(jué)得加上微分后小車(chē)能夠更快的加速,和更穩(wěn)定平衡,我不理解為什么網(wǎng)上眾多的代碼中都是pi算法)至于參數(shù),你覺(jué)得應(yīng)該調(diào)成多大就多大吧file:///C:\Users\ASUS\AppData\Local\Temp\QBHO~D%B_59OH5TDLN0$I5X.png
我對(duì)增量式pid不是很清楚,增量式pid必須在執(zhí)行器件自帶積分作用的器件,比如步進(jìn)電機(jī),我還沒(méi)用增量式pid調(diào)過(guò)東西,調(diào)了在說(shuō)吧,要是誰(shuí)有這個(gè)方面的資料希望大家能夠分享出來(lái)啊 o( ̄▽ ̄///)
PID部分只是我個(gè)人的看法,有什么問(wèn)題,大佬們指正哦(⊙o⊙)
下面是我寫(xiě)的程序,以及自己總結(jié)的幾種pid的形式,還有網(wǎng)上得一些資料希望對(duì)大家有用
|
評(píng)分
-
查看全部評(píng)分
|