02-02:? ? "恩智浦"杯智能汽車麥克納姆車(H車)非涉密部分詳解
版權(quán)聲明:Copyright ? 2016-2019,Stardust Studio,All Rights Reserved
序言——凡塵
(1)筆者的驅(qū)動芯片為LPC54606,但不限于stm系列單片機(jī)、51、K6X、LPC、樹莓派等單片機(jī);
(2)歡迎各位大牛投稿補(bǔ)充和完善;
(3)筆者一向崇尚開源分享精神,對于關(guān)鍵非涉密技術(shù)除外技術(shù)將會開源分享給各位讀者;
(4)本文參考自參賽隊伍—工程五隊“第十四屆全國大學(xué)生‘恩智浦’杯智能汽車競賽“技術(shù)報告和技術(shù)檢查表,筆者為該隊隊長、星塵工作室室長對上述文本享有修改和撰寫的權(quán)利;
(5)本文采用的是單目攝像頭方案;
(6)方案主板詳細(xì)電路圖和驅(qū)動程序及模塊詳解文檔等,為內(nèi)部涉密文檔僅供內(nèi)部使用,不允予公開;

本文將從以下幾個方面展開詳解:
1.摘要
2.系統(tǒng)總體設(shè)計
3.智能小車機(jī)械結(jié)構(gòu)調(diào)整與優(yōu)化
? ? 3.1 車輪改裝
? ? 3.2編碼器安裝
? ? 3.3電機(jī)增加散熱片輔助散熱
? ? 3.4增加雙拉桅桿
? ? 3.5電機(jī)驅(qū)動板固定
? ? 3.6防撞擋板
? ? 3.7防撞側(cè)板
4.智能車控制硬件設(shè)計說明
? ? 4.1電源穩(wěn)壓模塊
? ? 4.2編碼器驅(qū)動模塊
? ? 4.3電機(jī)驅(qū)動模塊
? ? 4.4.接口及外設(shè)
5.智能車控制軟件設(shè)計說明
? ? 5.1信標(biāo)燈提取及優(yōu)化處理
? ? 5.2PID控制算法介紹
6.開發(fā)工具、制作、安裝、調(diào)試過程說明
? ? 6.1開發(fā)調(diào)試工具
? ? 6.2 LCD液晶屏、按鍵、撥碼開關(guān)調(diào)試
? ? 6.3藍(lán)牙及調(diào)試
7.車模主要參數(shù)
1.摘要
? ? ? ? 本系統(tǒng)以LPC為核心,軟件平臺為IAR EWARM開發(fā)環(huán)境,車模為組委會統(tǒng)一提供的H車模(麥克納姆車)。
? ? ? ? 本文介紹了整個智能車系統(tǒng)的硬件和軟件設(shè)計開發(fā)過程。使用LPC作為主控芯片,用安裝在車頭的攝像頭來采集賽場信息,用編碼器檢測車模速度。整個系統(tǒng)的工作原理是由攝像頭采集賽場信息,與編碼器采集的車模速度信息一起送給單片機(jī),通過程序設(shè)計控制優(yōu)化算法,控制電機(jī)的轉(zhuǎn)速以達(dá)到車模在賽道上的穩(wěn)定高速行駛。
2.系統(tǒng)總體設(shè)計
? ? ? ? 本車以LPC為核心處理器,對各個模塊進(jìn)行協(xié)調(diào)控制。攝像頭為核心傳感器,所獲數(shù)據(jù)經(jīng)過單片機(jī)的分析計算后對信標(biāo)進(jìn)行定位,所得位置以X和Y的坐標(biāo)形式體現(xiàn),X用與橫向移動,Y則反應(yīng)距離遠(yuǎn)近,是加減速的依據(jù),Y與十字準(zhǔn)心偏差和X與十字準(zhǔn)心偏差的余切的絕對值W作為旋轉(zhuǎn)分量的參數(shù)。此外,編碼器獲得對速度的反饋,通過PID算法,使速度穩(wěn)定在給定值附近并能跟隨給定值的變化。考慮對抗因素,智能車還能實現(xiàn)倒車,原地旋轉(zhuǎn)等功能。
? ? ? ? 根據(jù)智能車系統(tǒng)的基本要求,我們設(shè)計了系統(tǒng)結(jié)構(gòu)圖,如圖下圖。在滿足比賽要求的情況下,力求系統(tǒng)簡單高效,因而在設(shè)計過程中盡量簡化硬件結(jié)構(gòu),減少因硬件而出現(xiàn)的問題。

3.智能小車機(jī)械結(jié)構(gòu)調(diào)整與優(yōu)化
? ? 3.1 車輪改裝
? ? ? ? ? ? 車輪上小套筒原先為橡膠材質(zhì),對地面摩擦力太小,導(dǎo)致車子跑動中會打滑,所以將材質(zhì)更換為了發(fā)泡海綿。
? ? 3.2編碼器安裝
? ? ? ? ? ? 編碼器的存在是對調(diào)速系統(tǒng)的重要保證,因此編碼器的安裝正確與否也至關(guān)重要。編碼器的安裝要保證齒輪完美嚙合,齒輪間間隙合適,過大易打壞齒輪,過小會增大傳動阻力。同時也要保證兩個齒輪傳動軸平行,使力的傳動均衡可靠。
? ? 3.3攝像頭、電池和主板的固定及改裝
? ? ? ? ? ? 攝像頭內(nèi)加裝紅外濾光片,對信標(biāo)的紅外進(jìn)行識別,而且對未亮信標(biāo)進(jìn)行識別,傳遞障礙信息。相鄰被點亮信標(biāo)間距離長遠(yuǎn)不同,這要求攝像頭需要有足夠大的視野,常用廣角攝像頭。在安裝位置上,攝像頭應(yīng)盡可能高,以擴(kuò)大視野,從攝像頭的具體高度則在避障參數(shù)測量時確定。攝像頭位置一旦確定,應(yīng)牢牢固定好,確保位置不發(fā)生改變。攝像頭放置在碳素桿上方,這樣可增大攝像頭視野,達(dá)到良好的采圖效果。通過魔術(shù)貼和扎帶可將電池牢固地貼附在車身上,而不至于在車體高速行進(jìn)的過程中將電池甩出。余下的位置用于安放主板。
? ? 3.3電機(jī)增加散熱片輔助散熱
? ? ? ? ? ? 在溫度不是很高時散熱片作用效果比較明顯。
? ? 3.4增加雙拉桅桿
? ? ? ? ? ? 在小車運行過程中可能會發(fā)生側(cè)翻情況,通過雙拉桅桿可對攝像頭所放置的碳素桿進(jìn)行加固。
? ? 3.5電機(jī)驅(qū)動板固定
? ? ? ? ? ? 通過三根塑料柱將驅(qū)動板撐起并固定。
? ? 3.6防撞擋板
? ? ? ? ? ? 智能車在實際運行的過程中有可能會出現(xiàn)撞擊障礙物的情況,因此在前端加裝了撞擊緩沖擋板(實際應(yīng)當(dāng)將前驅(qū)兩個輪子擋住,避免對前輪造成剛性沖擊)。
? ? 3.7防撞側(cè)板
? ? ? ? ? ? 在與其它車進(jìn)行競速過程中可能會遭受側(cè)向撞擊,為防止攝像頭主桿和主控板被撞壞,側(cè)板采用曲面3d打印擋板。
4.智能車控制硬件設(shè)計說明
? ? 4.1電源穩(wěn)壓模塊
? ? ? ? ? ? 穩(wěn)壓模塊采用TPS 7333和TPS7350分別作為3.3V和5V的穩(wěn)壓電源。TPS7333為攝像頭、電位器、、撥碼開關(guān)提供電壓。+5V為陀螺儀、編碼器、單片機(jī)供電,此外還為E3Z-D62光電開關(guān)+12V提供輸入電壓,+12V使用B0512S DC-DC模塊為驅(qū)動芯片提供電壓:


? ? 4.2編碼器驅(qū)動模塊

? ? 4.3電機(jī)驅(qū)動模塊
? ? ? ? ? ? 驅(qū)動電路功率元件為8片Infineon公司生產(chǎn)的opti-MOS 管IRLR7843。其具備三個關(guān)鍵的能效優(yōu)值(FOM),行業(yè)最低的導(dǎo)通電阻、最低的柵極電荷以及最低的輸出電容等。無論在任何負(fù)載條件下,都可使MOSFET功耗降低20%,同時達(dá)到最高的性能。通過額定工作電流可以輕易達(dá)到100A以上,大大提高了電動機(jī)的工作轉(zhuǎn)矩和轉(zhuǎn)速。該驅(qū)動器主要由以下部分組成:PWM號輸入接口、隔離電路、邏輯換向電路、死區(qū)控制電路、電源電路、上橋臂功率 MOSFET 管柵極驅(qū)動電壓泵升電路、功率opti-MOS柵極驅(qū)動電路、橋式功率驅(qū)動電路、緩沖保護(hù)電路等。電路原理圖如圖所示:

? ? 4.4.接口及外設(shè)


5.智能車控制軟件設(shè)計說明
? ? 5.1信標(biāo)燈提取及優(yōu)化處理
? ? ? ? ? ? 我們的總體設(shè)計思想是:首先通過攝像頭判斷信標(biāo)位置,通過單片機(jī)計算出的誤差值并通過PID算法輸出橫縱向移動速度和自轉(zhuǎn)速度,同時根據(jù)信標(biāo)遠(yuǎn)近控制速度輸出。
? ? 5.2PID控制算法介紹
? ? ? ? ? ? 在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PID控制,又稱 PID 調(diào)節(jié)。PID 控制器問世至今已有近 70 年歷史,它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當(dāng)被控對象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時,控制理論的其它技術(shù)難以采用時,系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調(diào)試來確定,這時應(yīng)用 PID 控制技術(shù)最為方便。即當(dāng)我們不完全了解一個系統(tǒng)和被控對象,或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用 PID 控制技術(shù)。PID控制,實際中也有 PI 和 PD 控制。
? ? ? ? ? ? PID控制器是一種線性控制器,它根據(jù)給定值與實際輸出值構(gòu)成控制偏差。
? ? ? ? ? ? 將偏差的比例(P)、積分(I)和微分(D)通過線性組合構(gòu)成控制量,對被控對象進(jìn)行
控制,故稱PID控制器:

? ? ? ? ? ? 比例調(diào)節(jié)作用(P):是按比例反應(yīng)系統(tǒng)的偏差,系統(tǒng)一旦出現(xiàn)了偏差,比例調(diào)節(jié)作用用以減少偏差。比例作用大,可以加快調(diào)節(jié),減少誤差,但是過大的比例使系統(tǒng)的穩(wěn)定性下降,甚至造成系統(tǒng)的不穩(wěn)定。
? ? ? ? ? 積分調(diào)節(jié)作用(I):是使系統(tǒng)消除穩(wěn)態(tài)誤差,提高誤差度。當(dāng)有誤差時,積分調(diào)節(jié)就進(jìn)行,直至無誤差,積分調(diào)節(jié)停止,積分調(diào)節(jié)輸出一常值。積分作用的強(qiáng)弱取決與積分時間Ti,Ti 越小,積分作用就越強(qiáng)。反之Ti 大則積分作用弱,加入積分調(diào)節(jié)可使系統(tǒng)穩(wěn)定性下降,動態(tài)響應(yīng)變慢。
? ? ? ? ? ? 微分調(diào)節(jié)作用(D):微分作用反應(yīng)系統(tǒng)偏差信號的變化率,具有預(yù)見性,能預(yù)見偏差變化的趨勢,因此能產(chǎn)生超前的控制作用,在偏差還沒有形成之前,已被微分調(diào)節(jié)作用消除。因此,可以改善系統(tǒng)得動態(tài)性能。在微分時間選擇合適的情況下,可以減少超調(diào),減少調(diào)節(jié)時間。微分作用對噪聲干擾有放大作用,因此過強(qiáng)的加微分調(diào)節(jié),對系統(tǒng)抗干擾不利。
我們小車采用了下面兩種PID控制算法:
? ? ? ? ? ? ? ? (1)位置式PID控制算法
? ? ? ? ? ? ? ? ? ? ? ? 用矩形數(shù)值積分代替上式中的積分項,對導(dǎo)數(shù)項用后向差分逼近,得到數(shù)字PID控制器的基本算式(位置算式):

? ? ? ? ? ? ? ? ? ? ? ? 其中x0為偏差信號為 0 時的控制作用,是控制量的基礎(chǔ)。
其中T是采樣時間。
? ? ? ? ? ? ? ? (2)增量式PID控制算法
? ? ? ? ? ? ? ? ? ? ? ? 在用計算機(jī)控制的離散系統(tǒng)中,PID的算式為:

? ? ? ? ? ? ? ? ? ? ? ? 那么:

? ? ? ? ? ? ? ? ? ? ? ? 兩式相減得增量式PID的算式:

? ? ? ? ? ? ? ? ? ? ? ? 反映的是第k 次和第 k-1 次之間的增量,而且可以看出,使用增量式 PID只需要保存前兩次的誤差即可。因此代碼簡單高效,并且無積分的累加誤差。
? ? ? ? ? ? ? ? ? ? ? ? 增量型算法與位置型算法相比,具有以下優(yōu)點:
? ? ? ? ? ? ? ? ? ? ? ? (a)增量型算法不需要做累加,控制量增量的確定僅與最近幾次誤差采樣值有關(guān),計算誤差或計算精度問題,對控制量計算影響較小。而位置型算法要用到過去的誤差的累加值,容易產(chǎn)生大的累加誤差。
? ? ? ? ? ? ? ? ? ? ? ? (b)增量型算法得出的是控制量的增量,誤動作影響小,必要時通過邏輯判斷限制或禁止本次輸出,不會嚴(yán)重影響系統(tǒng)的工作,而位置型算法的輸出是控制量全量輸出,誤動作影響大。
? ? ? ? ? ? 根據(jù)我們實際情況的調(diào)試,發(fā)現(xiàn)單一套用PID公式并不能達(dá)到預(yù)期的效果。適當(dāng)對PID公式進(jìn)行優(yōu)化可以達(dá)到更好的效果。根據(jù)智能車系統(tǒng)提出的改進(jìn)方法有不完全微分、微分先行、前饋控制等。對智能車算法的采用最好是知其道,才能達(dá)到用其妙的效果,根據(jù)具體的情況使用PID,不能完全按照理論照本宣科,墨守成規(guī)。
? ? ? ? ? ? 運用PID控制的關(guān)鍵是調(diào)整 KP、KI、KD 三個參數(shù),即參數(shù)整定。PID 參數(shù)的整定方法有兩大類:一是理論計算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過理論計算確定控制器參數(shù);二是工程整定方法,它主要依賴工程經(jīng)驗,直接在控制系統(tǒng)的試驗中進(jìn)行,且方法簡單、易于掌握,在工程實際中被廣泛采用。由于智能車系統(tǒng)是機(jī)電高耦合的分布式系統(tǒng),并且要考慮賽道的具體環(huán)境,要建立精確的智能車運動控制數(shù)學(xué)模型有一定難度,而且我們對車身機(jī)械結(jié)構(gòu)經(jīng)常進(jìn)行修正,模型參數(shù)變化較為頻繁,理論計算整定法可操作性不強(qiáng),最終我們采用了工程整定方法。
6.開發(fā)工具、制作、安裝、調(diào)試過程說明
? ? 6.1開發(fā)調(diào)試工具
? ? ? ? ? ? 軟件開發(fā)工具選用的是 Embedded Workbench for ARM。Embedded Workbench for ARM 是 IAR Systems 公司為ARM微處理器開發(fā)的一個集成開發(fā)環(huán)境(下面簡稱 IAR EWARM)。比較其他的ARM開發(fā)環(huán)境,IAR EWARM具有入門容易、使用方便和代碼緊湊等特點。它為用戶提供一個易學(xué)和具有最大量代碼繼承能力的開發(fā)環(huán)境,以及對大多數(shù)和特殊目標(biāo)的支持。嵌入式IAR Embedded Workbench有效提高用戶的工作效率,通過IAR的DeBug工具,可以大大節(jié)省軟件調(diào)試時間。調(diào)試界面如圖所示:

? ? 6.2 LCD液晶屏、按鍵、撥碼開關(guān)調(diào)試
? ? ? ? ? ? 在小車的調(diào)試過程中需要不斷地修改變量的值來達(dá)到整定參數(shù)的作用,對此我們選用了液晶配合按鍵和撥碼開關(guān)的調(diào)試方法。此外,比賽的時候,修改參數(shù)我們同樣用這個模塊進(jìn)行修改。
? ? 6.3藍(lán)牙及調(diào)試
? ? ? ? ? ? 賽車在同樣的賽道上走過的路都是不一樣的,所以大家無論怎么考慮車的狀態(tài)都是不夠完全的,因此需要有一套完備的方案來解決對運行中的車輛進(jìn)行實時監(jiān)控。 為了解決這個問題,我們使用HC-05藍(lán)牙模塊配合上位機(jī)進(jìn)行實時觀測車模運行狀態(tài)。
7.車模主要參數(shù)

后記——凡塵
時間匆忙,未能用篇幅舉代碼實例幫大家理解和校對錯誤,更多的是結(jié)構(gòu)和整體壓縮的內(nèi)容,如有錯別字和內(nèi)容不合理的地方歡迎大家批評指正,如有想深入探討或是項目需求的朋友歡迎加入QQ群:QQ群:
? ? ? ? 星塵Arduino社區(qū):630581178
? ? ? ? 星塵STM8/32社區(qū):700155855
? ? ? ? 筆者郵箱:fanchen995@gmail.com