拋磚引玉--消除零飄單車分享
01 前 言
各位同學(xué),各位車友大家好,我們是西華大學(xué)單車組消除零飄隊(duì),很高興能和大家分享我們隊(duì)伍備戰(zhàn)第十七屆全國(guó)大學(xué)生智能汽車競(jìng)賽平衡單車組的備賽過(guò)程,首先還是要感謝我的兩個(gè)隊(duì)友從始至終的堅(jiān)持和指導(dǎo)老師的大力支持,如果沒(méi)有他們的堅(jiān)持我是不可能堅(jiān)持下來(lái)的。
我們組由兩個(gè)大二和一個(gè)大一組成,在備賽過(guò)程中我們一致認(rèn)為平衡單車組備賽難度大,不易上手,因此此次將從介紹動(dòng)量輪平衡單車原理開(kāi)始,然后介紹硬件設(shè)計(jì)思路包括無(wú)刷驅(qū)動(dòng)板的設(shè)計(jì),最后介紹串級(jí)PID的原理和其參數(shù)整定以及圖像處理元素我們的一些小思路,希望能夠起到拋磚引玉的效果,幫助更多剛剛開(kāi)始做車的車友。開(kāi)源鏈接將會(huì)放到文章末尾。
▲ 圖1.1 國(guó)賽前車模成品02 原理簡(jiǎn)介
分析動(dòng)量輪保持平衡原理時(shí),我們假設(shè)電單車受到非本我力矩導(dǎo)致單車的平衡狀態(tài)發(fā)生了改變,與設(shè)想的運(yùn)動(dòng)狀態(tài)出現(xiàn)不同時(shí),ICM20602六軸陀螺儀會(huì)檢測(cè)此時(shí)單車角度,與設(shè)想角度進(jìn)行求差,動(dòng)量輪系統(tǒng)則會(huì)根據(jù)主控傳遞過(guò)來(lái)的誤差時(shí)時(shí)調(diào)整轉(zhuǎn)速,進(jìn)而產(chǎn)生控制力矩來(lái)平衡非本我力矩對(duì)姿態(tài)的影響,實(shí)現(xiàn)動(dòng)量輪對(duì)電單車的姿態(tài)控制。
通過(guò)對(duì)單車的模型進(jìn)行簡(jiǎn)化為一階倒立擺模型我們可以得到以下結(jié)論。
- 1:是整車的質(zhì)量;
- 2:是動(dòng)量輪的質(zhì)量;
- R:是動(dòng)量輪的半徑;
- L:是桿長(zhǎng)。
當(dāng)整個(gè)系統(tǒng)向順時(shí)針?lè)较騼A斜 θ 角時(shí),慣性輪以 的角加速度順時(shí)針加速能使整個(gè)系統(tǒng)靜止或繞原點(diǎn) O 勻速旋轉(zhuǎn)。所以,如果讓整個(gè)系統(tǒng)由傾斜狀態(tài)恢復(fù)平衡,則慣性輪角加速度必須大于上述公式。此時(shí)整個(gè)系統(tǒng)將以角加速度
加速向豎直平衡位置運(yùn)動(dòng),從而實(shí)現(xiàn)平衡。
03 硬件設(shè)計(jì)
根據(jù)上一部分對(duì)原理的介紹,我們可以知道為了更好的平衡單車,我們希望動(dòng)量輪整體質(zhì)量占整個(gè)車身質(zhì)量的比重越大越好,在無(wú)法改變動(dòng)量輪質(zhì)量的前提下,減少車身質(zhì)量成了一個(gè)很好的選擇,同樣受限于單車的大小,我們希望單車硬件的大小能盡可能的小和輕,因此在還沒(méi)有考慮使用無(wú)刷的時(shí)候,我們?cè)O(shè)計(jì)出了主控一體板,該主驅(qū)一體板供電可以從5.5V-36V。
▲ 圖3.1 系統(tǒng)電源總設(shè)計(jì)框圖穩(wěn)壓部分我們使用了TPS5430DDAR,該芯片輸入電壓范圍廣,穩(wěn)壓電壓可調(diào),輸出電壓紋波小,輸出電流最大可到3A,可以為后續(xù)的LDO穩(wěn)壓器件提供小的電壓差以減少LDO穩(wěn)壓器件的發(fā)熱。電源總體設(shè)計(jì)圖和PCB正反面3D視圖如下圖所示。
▲ 圖3.2 一體板正面3D視圖▲ 圖3.3 一體板反面3D視圖對(duì)于無(wú)刷驅(qū)動(dòng)板。我們使用了英飛凌的TC264的作為主控單元,使用IR2181作為預(yù)驅(qū)芯片,國(guó)產(chǎn)EG2181可以代替,在選用MOS管的時(shí)候考慮到無(wú)刷電機(jī)正反轉(zhuǎn)時(shí)會(huì)產(chǎn)生較大的電流,為了避免MOS被擊穿,我們選用的國(guó)產(chǎn)的HYG006N04LS1TA TOLL,該MOS管耗散功率高達(dá)428W可以很好地滿足較大功率無(wú)刷電機(jī)的使用,PCB 3D視圖如圖2.3所示。
▲ 圖3.4 無(wú)刷驅(qū)動(dòng)板PCB3D視圖04 串激PID
串級(jí)控制系統(tǒng)是改善控制質(zhì)量的有效方法之一,在過(guò)程控制中得到了廣泛的應(yīng)用。所謂串級(jí)控制,就是采用兩個(gè)(或兩個(gè)以上)控制器串聯(lián)工作,外環(huán)控制器的輸出作為內(nèi)環(huán)控制器的設(shè)定值,由內(nèi)環(huán)控制器的輸出去操縱控制閥,從而對(duì)外環(huán)被控量具有更好的控制效果。這樣的控制系統(tǒng)被稱為串級(jí)系統(tǒng)。
PID串級(jí)控制就是串級(jí)控制中的兩個(gè)(或兩個(gè)以上)控制器均為PID控制器。在這里我也解釋一下為什么要用串級(jí)PID。打一個(gè)很簡(jiǎn)單的比喻,拿倒車入庫(kù)來(lái)說(shuō)明,我們需要控制的對(duì)象是位置,但是我們操控的車的速度,當(dāng)車離車庫(kù)較遠(yuǎn)時(shí)我們希望車跑快一點(diǎn),當(dāng)車離車庫(kù)進(jìn)一點(diǎn)的時(shí)候我們希望車跑慢一點(diǎn)。所以控制思路是這樣的,現(xiàn)獲取當(dāng)先位置和目標(biāo)位置做期望速度差獲得位置外環(huán),位置外環(huán)的輸出為內(nèi)環(huán)速度環(huán)的輸入,這樣子我們可以使車平穩(wěn)的到達(dá)車庫(kù)。
同樣的我們對(duì)于單車直立環(huán)也是這樣的思路,我們實(shí)際希望控制的單車的角度,但是控制角度需要控制角速度,在此基礎(chǔ)上在引入速度正反饋來(lái)加快整個(gè)過(guò)程的響應(yīng),圖3.1為平衡環(huán)串級(jí)PID的流程圖。
▲ 圖4.1 平衡環(huán)串激PID控制流程圖圖中,最外環(huán)是速度環(huán),其次是角度內(nèi)環(huán),最后是角速度內(nèi)環(huán)。速度環(huán)的輸出通過(guò)程序設(shè)置為0,目的是為了讓動(dòng)量輪的輸出相對(duì)于動(dòng)量輪的速度形成正反饋,這樣當(dāng)平衡車有傾倒趨勢(shì)時(shí),動(dòng)量輪電機(jī)會(huì)輸出更大的動(dòng)能,使恢復(fù)力加強(qiáng),讓小車保持平衡。角度環(huán)和角速度環(huán)對(duì)于角度都是負(fù)反饋,這樣可以使小車盡可能地穩(wěn)定在設(shè)定平衡角附近。同時(shí),為了保證內(nèi)環(huán)更好地響應(yīng),我們讓內(nèi)環(huán)執(zhí)行5次后,與之相應(yīng)地的外環(huán)執(zhí)行一次。
對(duì)串級(jí)PID的調(diào)試,我們可以對(duì)各個(gè)環(huán)的控制器依次調(diào)試。
首先是角速度內(nèi)環(huán),我們希望它可以抑制角速度,所以在單獨(dú)調(diào)節(jié)角速度環(huán)時(shí),我們可以隨便給個(gè)P量,然后左右晃動(dòng)小車,此時(shí)應(yīng)該會(huì)有阻尼感,動(dòng)量輪在角速度環(huán)的作用下,想要抑制我們的晃動(dòng),如果我們并沒(méi)有感受到阻尼作用,而是有加速的感覺(jué),那么就說(shuō)明此時(shí)角速度環(huán)的方向是反的,我們可以給輸出加個(gè)負(fù)號(hào),讓輸出反向即可。
然后是角度環(huán),我們希望它能根據(jù)角度的偏移,而固定輸出一個(gè)轉(zhuǎn)速,但是它的方向同樣應(yīng)該抑制角度的偏移,單獨(dú)調(diào)試角度環(huán)時(shí),我們可以給一個(gè)較大的P量,然后讓小車由垂直狀態(tài)稍微傾斜,也能感受到阻尼感,那么就說(shuō)明方向正確。
最后是速度環(huán),我們希望速度環(huán)不是抑制速度的增加,而是讓速度更快,這樣就可以讓動(dòng)量輪輸出更多的角動(dòng)量以達(dá)到平衡,速度環(huán)方向的測(cè)試方法也很簡(jiǎn)單,首先把輸出限幅,然后給一個(gè)較大的P量,我們快速的波動(dòng)一下飛輪,此時(shí)因?yàn)橛辛顺跛俣?,在速度環(huán)的作用下,飛輪應(yīng)該越轉(zhuǎn)越快。
初步調(diào)節(jié)以后,我們可以在通過(guò)相應(yīng)的PID參數(shù)進(jìn)一步調(diào)試增加系統(tǒng)的穩(wěn)定性。在對(duì)于角速度內(nèi)環(huán),我們采用的PI控制,不使用D控制器是因?yàn)樗鼤?huì)引入角速度的高頻振蕩。I參數(shù)可以抑制角速度的漂移,如果小車穩(wěn)定是,動(dòng)量輪依然有朝大體上朝一邊轉(zhuǎn)動(dòng)的現(xiàn)象,可以嘗試增加I參數(shù)改善;對(duì)于角度環(huán),我們采用PD控制,不使用I控制器是因?yàn)槎嘀豂控制器是不必要的,而且會(huì)使系統(tǒng)響應(yīng)延遲。D參數(shù)可以起到加速響應(yīng)和預(yù)測(cè)響應(yīng)的效果,如果小車在平衡位置不斷地振蕩,可以適當(dāng)增加D參數(shù),也可以同時(shí)適當(dāng)?shù)販p小P參數(shù),提高小車地穩(wěn)定性。對(duì)于速度外環(huán),我們采用單P控制,需要注意的是,P參數(shù)過(guò)大會(huì)造成系統(tǒng)超調(diào),這時(shí)需要適當(dāng)減小P參數(shù)。
在調(diào)試過(guò)程中,我們可以通過(guò)無(wú)線串口發(fā)送數(shù)據(jù)給上位機(jī)實(shí)時(shí)顯示,進(jìn)而達(dá)到更好的調(diào)試效果。
05 攝像頭處理
對(duì)于三叉的處理,剛開(kāi)始我們的思路和網(wǎng)上的思路大差不差,也是尋找左右拐點(diǎn)和中拐點(diǎn),這個(gè)思路本身并沒(méi)有很大的問(wèn)題,但是對(duì)于單車可能不那么適用,尤其是在單車速度較快時(shí)(0.7m/s)以上的時(shí)候,在途進(jìn)十字的時(shí)候以及出十字的時(shí)候,但是整車的傾斜角度較大,造成圖像傾斜,在此時(shí)圖像非常像三叉。
對(duì)于此種情況,我們提出了新的解決辦法,在識(shí)別左右拐點(diǎn)后,引入圖像每行的白點(diǎn)數(shù)和圖像的寬度加以判斷,在直道上我們會(huì)采集整個(gè)賽道的寬度并儲(chǔ)存到數(shù)組中,需要使用的調(diào)用即可,三叉的整個(gè)圖像寬度變化是先減少,再增大,利用這個(gè)思路,我們可以增加三叉的限制條件,以減小誤判的可能。
在判斷的基礎(chǔ)上,很多思路都是補(bǔ)出左右邊線,然后根據(jù)左右邊線來(lái)找中線,我們的思路是單邊巡線,在判斷到三叉后,通過(guò)左邊線加上賽道寬度的一半或者右邊線減去賽道寬度的一半來(lái)補(bǔ)出中線,補(bǔ)線的時(shí)間可以是編碼器積分也可以是定時(shí)(推薦編碼器積分)。
對(duì)于環(huán)島我們剛開(kāi)始是使用純攝像來(lái)判斷,但是為了更加穩(wěn)定的判斷,我的建議是加上一個(gè)中電感來(lái)判斷,通過(guò)攝像頭來(lái)判斷左右環(huán)島,使用攝像頭路過(guò)環(huán)島的時(shí)候,我們會(huì)發(fā)現(xiàn)有抖動(dòng),在此時(shí)我們建議寫一個(gè)函數(shù),在左右兩邊某一邊丟線過(guò)多時(shí),我們使用另一邊加減賽道寬度來(lái)補(bǔ)出賽道的中線,這樣子就可以讓小車比直的通過(guò)環(huán)島,也方便電感的輔助判斷,判斷到左右環(huán)島后,通過(guò)切換掃線方式來(lái)切入環(huán)島,環(huán)島內(nèi)通過(guò)陀螺儀積分來(lái)判斷出環(huán)島,出環(huán)島后切換掃線模式,讓小車走直道,許多小車在小環(huán)島的時(shí)候可能會(huì)內(nèi)切賽道,我們建議在進(jìn)入環(huán)島時(shí)適當(dāng)減小偏差來(lái)讓小車更加平穩(wěn)。
最后我們也給出為什么不使用純電磁的原因,首先無(wú)刷電機(jī)對(duì)于電感影響較大,其次電感對(duì)于三叉的判斷不太準(zhǔn)確換場(chǎng)地后尤其明顯,最后電磁會(huì)使單車的結(jié)構(gòu)更加復(fù)雜。
06 總 結(jié)
感謝父母的支持,感謝隊(duì)友的支持,感謝指導(dǎo)老師的幫助,感謝實(shí)驗(yàn)室伙伴幫助,希望智能車能越來(lái)越好,引入更加新穎的元素,促進(jìn)智能車競(jìng)賽的發(fā)展。最后我想附上一張截圖,很有意思的等式:
跑步跑的行 = 能熬夜能熬夜 =車調(diào)的好可以得出:
跑步跑的好 = 車車調(diào)的好