簡 介: 本文設(shè)計(jì)的智能車系統(tǒng)以 為核心控制單元,通過CMOS攝像頭檢測賽道信息,使用數(shù)字?jǐn)z像頭采集賽道的灰度圖,通過動態(tài)閾值算法生成二值化圖像數(shù)組,提取黑色引導(dǎo)線,用于賽道識別;通過光電編碼器檢測模型車的實(shí)時速度,使用PID控制算法調(diào)節(jié)驅(qū)動左右電機(jī)的轉(zhuǎn)速,實(shí)現(xiàn)了對車運(yùn)動速度和運(yùn)動方向的閉環(huán)控制。為了提高模型車的速度和穩(wěn)定性,使用C#、MFC上位機(jī)等調(diào)試工具,進(jìn)行了大量硬件與軟件測試。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)設(shè)計(jì)方案確實(shí)可行。
學(xué) 校:北京科技大學(xué)
隊(duì)伍名稱:北京科技大學(xué)智能視覺組
參賽隊(duì)員:范一鳴
潘依涵
陳云青
指導(dǎo)教師:馬飛
引 言
隨著信息技術(shù)的發(fā)展,汽車的電子化模塊越來越多,智能汽車領(lǐng)域受到了大量的關(guān)注。受教育部高等教育司委托(教高司函[2005]201號文),高等學(xué)校自動化專業(yè)教學(xué)指導(dǎo)分委員會主辦全國大學(xué)生智能汽車競賽,以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械等多個學(xué)科交叉的科技創(chuàng)意性比賽。
參賽選手須使用競賽秘書處統(tǒng)一指定并負(fù)責(zé)采購競賽車模,自行采用 32 位微控制器作為核心控制單元,自主構(gòu)思控制方案及系統(tǒng)設(shè)計(jì),包括傳感器信號采集處理、控制算法及執(zhí)行、動力電機(jī)驅(qū)動、轉(zhuǎn)向舵機(jī)控制等,完成智能汽車工程制作及調(diào)試,于指定日期與地點(diǎn)參加場地比賽。參賽隊(duì)伍之名次(成績)由賽車現(xiàn)場成功完成賽道比賽時間為主,技術(shù)方案及制作工程質(zhì)量評分為輔來決定。
本屆全國大學(xué)生智能汽車競賽分競速賽和創(chuàng)意賽,競速比賽分為基礎(chǔ)四輪組、節(jié)能信標(biāo)組、智能視覺組、電磁越野組、雙車接力組、全向行進(jìn)組、單車?yán)M、??苹A(chǔ)組八個組別,分別進(jìn)行比賽,我隊(duì)參與智能視覺組比賽。此次比賽按照官方規(guī)定需使用C型車模,使用指定NXP系列單片機(jī),完成本次比賽設(shè)計(jì)。
本篇技術(shù)報(bào)告主要包括機(jī)械系統(tǒng)、硬件系統(tǒng)、軟件系統(tǒng)等,詳盡地闡述了我們的設(shè)計(jì)方案,具體表現(xiàn)在硬件電路的設(shè)計(jì)以及控制算法的部分想法,希望能和其他學(xué)校的同學(xué)交流溝通,更進(jìn)一步。
第一章 方案設(shè)計(jì)
1.1系統(tǒng)概述
攝像頭車的系統(tǒng)整體結(jié)構(gòu)如圖所示。微處理器通過采集模擬CMOS攝像頭的硬件二值化信號,得到賽道邊沿信息;通過采集陀螺儀數(shù)據(jù)分析計(jì)算過橋信息;通過采集光電編碼器對車輪轉(zhuǎn)速的脈沖計(jì)數(shù),得到車行進(jìn)的速度數(shù)據(jù)。通過微處理器對圖像處理,對角度、速度進(jìn)行PID控制,最后PWM波輸出驅(qū)動電機(jī)、舵機(jī)。
第二章 智能車機(jī)械
根據(jù)今年組委會的相關(guān)規(guī)定以及智能視覺組比賽規(guī)則使用新C車模完成任務(wù),因此需要合理的方案完成任務(wù)。在比賽備戰(zhàn)之初,我們就對該車模進(jìn)行了詳細(xì)的系統(tǒng)分析。但由于新C型車模精度不是很高,因此在規(guī)則允許范圍內(nèi)盡量改造車模,提高車模整體精度,以提高車輛行駛的穩(wěn)定性。本章將主要介紹智能汽車車模的機(jī)械結(jié)構(gòu)及調(diào)整方案。
2.1車體機(jī)械方案
根據(jù)十六屆智能車競賽細(xì)則對智能視覺組的要求,我們選擇新C車模完成任務(wù)。
2.2四輪車模機(jī)械建模
此次競賽的四輪賽車車模選用由東莞市博思電子數(shù)碼科技有限公司提供的新C型車模。車模外形如圖2.1所示:
▲ 圖圖2 1 四輪車模俯視圖
2.2.1四輪車模前輪傾角的調(diào)整
四輪車模后橋固定,對于后橋并無大的改動。在調(diào)試過程中,我們發(fā)現(xiàn)前輪對于車模的運(yùn)行影響較大,并且由于前輪軸和車輪之間的間隙較大,對車高速時轉(zhuǎn)向中心的影響較大,會引起高速轉(zhuǎn)向下模型車的轉(zhuǎn)向不足。然而這里是規(guī)則中嚴(yán)禁改動的部分,所以為了盡可能降低轉(zhuǎn)向舵機(jī)負(fù)載,我們對前輪的安裝角度,即前輪定位進(jìn)行了調(diào)整。
前輪定位的作用是保障汽車直線行駛的穩(wěn)定性,轉(zhuǎn)向輕便和減少輪胎的磨損。前輪是轉(zhuǎn)向輪,它的安裝位置由主銷內(nèi)傾、主銷后傾、前輪外傾和前輪前束等4種可調(diào)參數(shù)決定,實(shí)現(xiàn)轉(zhuǎn)向輪、主銷和前軸等三者在車架上的位置關(guān)系。
在實(shí)際調(diào)試中,我們發(fā)現(xiàn)適當(dāng)增大內(nèi)傾角可以增大轉(zhuǎn)彎時車輪和地面的接觸面積,從而增大車了地面的摩擦程度,使車轉(zhuǎn)向更靈活,減小因摩擦不夠而引起的轉(zhuǎn)向不足的情況。并且我們智能視覺組設(shè)計(jì)的車模相對于往屆車模來說重心更高,更靠前,所以我們對于主銷后傾做了一些調(diào)整。
2.2.2底盤高度的調(diào)整
在保證順利通過坡道的前提下,底盤盡量降低,從整體上降低模型車的重心,可使模型車轉(zhuǎn)彎時更加穩(wěn)定、高速。但是過低的底盤會造成上橋剮蹭底盤等的現(xiàn)象,對車模正常行駛造成影響。
2.2.3齒輪嚙合以及編碼器的安裝
考慮到智能視覺組需要停車這一問題,我們對于車子齒輪嚙合需要較高的要求,如果嚙合不好,對于車子正常行駛和停車正不正都有較大影響。為了更為精確的獲得電機(jī)轉(zhuǎn)速的返回值,本次車模上安裝的是與上屆相同的編碼器。最終綜合考慮了讀數(shù)精準(zhǔn)和重心分布兩大因素,用齒輪進(jìn)行了安裝配合,盡量使得傳動齒輪軸保持平行,傳動部分輕松、流暢,不存在過大噪音,卡齒,丟數(shù)情況。如圖2.2所示。
▲ 圖圖2 2 編碼器安裝
2.2.4 舵機(jī)安裝結(jié)構(gòu)的安裝
考慮到主板的安裝方便以及車模轉(zhuǎn)向性能,我們對舵機(jī)安裝結(jié)構(gòu)進(jìn)行了較大的調(diào)整。比賽車模的轉(zhuǎn)向是通過舵機(jī)帶動左右橫拉桿實(shí)現(xiàn)。舵機(jī)的轉(zhuǎn)動速度和功率是一定,要想加快轉(zhuǎn)向機(jī)構(gòu)的響應(yīng)速度,唯一的辦法就是優(yōu)化舵機(jī)的安裝位置及其力矩延長桿的長度。由于功率是速度與力矩乘積的函數(shù),過分追求速度,必然要損失力矩,力矩太小也會造成轉(zhuǎn)向遲鈍,因此設(shè)計(jì)時就要綜合考慮轉(zhuǎn)向機(jī)構(gòu)響應(yīng)速度與舵機(jī)力矩之間的關(guān)系,通過優(yōu)化得到一個最佳的轉(zhuǎn)向效果。利用實(shí)際參數(shù)經(jīng)計(jì)算,我們得出了一套可以穩(wěn)定高效工作的參數(shù)及結(jié)構(gòu)。
最終,我們設(shè)計(jì)了一套舵機(jī)連片(轉(zhuǎn)向拉桿),綜合考慮了速度與力矩的關(guān)系,并根據(jù)模型車底盤的具體結(jié)構(gòu),簡化了安裝方式,實(shí)現(xiàn)了預(yù)期目標(biāo)。
關(guān)于舵機(jī)的安裝方式,我們實(shí)驗(yàn)室較為主流的有直立式安裝和倒置式安裝,我們的舵機(jī)安裝如圖2.3所示。
▲ 圖圖2 3 舵機(jī)安裝
2.2.5 舵機(jī)轉(zhuǎn)角分析
車模的轉(zhuǎn)向運(yùn)動主要是靠舵機(jī)和前輪來實(shí)現(xiàn)的,因此,關(guān)于舵機(jī)和前輪轉(zhuǎn)向關(guān)系的分析就顯得尤為重要。依據(jù)數(shù)學(xué)建模,通過MATLAB進(jìn)行分析后,得出了如下結(jié)果。
右前輪轉(zhuǎn)角(綠色)及舵機(jī)轉(zhuǎn)角(紅色)關(guān)于轉(zhuǎn)彎半徑關(guān)系圖,如圖2.4所示。
舵機(jī)轉(zhuǎn)角關(guān)于(右)前輪轉(zhuǎn)角關(guān)系圖,如圖2.5所示。
由以上兩圖得出結(jié)論:
舵機(jī)轉(zhuǎn)角變化范圍即使較小,轉(zhuǎn)彎半徑的變化也會很大,因而對多級的控制顯得尤為很重要。
前輪打角越小,隨著打角變化,轉(zhuǎn)彎半徑變化越明顯,即小轉(zhuǎn)角對半徑的變化會更加明顯,因而從前橋到舵機(jī)連片的機(jī)械固定需牢靠,盡量減少虛位。
舵機(jī)轉(zhuǎn)角關(guān)于前輪轉(zhuǎn)角呈線性變化,在思路上為通過舵機(jī)轉(zhuǎn)角改變從而獲得所要前輪轉(zhuǎn)角提供便利。改變前束,獲得新的右前輪轉(zhuǎn)角(綠色)及舵機(jī)轉(zhuǎn)角(紅色)關(guān)于轉(zhuǎn)彎半徑關(guān)系圖,如圖2.6。通過與圖2.4的對比,獲得兩種前輪方案對轉(zhuǎn)角的影響,從而選擇合適的方案。
▲ 圖2.6
2.2.6 攝像頭的安裝
為了降低整車重心,需要嚴(yán)格控制CMOS攝像頭的安裝位置和重量,我們自行設(shè)計(jì)了輕巧的鋁合金夾持組件并采用了碳纖維管作為安裝CMOS的主桅,這樣可以獲得最大的剛度質(zhì)量比,整套裝置具有很高的定位精度和剛度,使攝像頭便于拆卸和維修,具有賽場快速保障能力。攝像頭的安裝如圖2.7所示。
▲ 圖2.7
2.2.7 運(yùn)用mini攝像頭完成任務(wù)設(shè)計(jì)
在mini攝像頭固定的設(shè)計(jì)時,由于mini攝像頭需要旋轉(zhuǎn),我們用了一個小金屬舵機(jī)帶動mini旋轉(zhuǎn),這樣既可以減小體積,又可以減輕重量,固定方式和CMOS攝像頭一樣,該方案具有高穩(wěn)定性以及高魯棒性的優(yōu)點(diǎn)。經(jīng)過實(shí)際測試后,該方案可行性得到了驗(yàn)證。
第三章 電路設(shè)計(jì)說明
3.1硬件方案設(shè)計(jì)
我們主要從系統(tǒng)的穩(wěn)定性、可靠性、高效性、實(shí)用性、簡潔等方面來考慮硬件的整體設(shè)計(jì)。從最初方案設(shè)定到最終方案的敲定,我們經(jīng)歷各種討論與大的改動才有了如下的硬件方案。
可靠性與穩(wěn)定性是一個系統(tǒng)能夠完成預(yù)設(shè)功能的最大前提。在原理圖與PCB的設(shè)計(jì)過程中,我們考慮到各個功能模塊的電特性以及之間的耦合作用。對易受干擾的模塊做了電磁屏蔽作用,而其他部分則做了相應(yīng)的接地、濾波、模擬與數(shù)字電路的隔離等。
高效與實(shí)用性是指本系統(tǒng)的各模塊能充分完美的實(shí)現(xiàn)相應(yīng)的功能。從以下兩點(diǎn)可以體現(xiàn)出:
視頻信號的提取一般有三種方法:片內(nèi)AD轉(zhuǎn)化、基于TLC5510的8位并行AD、硬件二值化。第一種方通過片內(nèi)AD轉(zhuǎn)換把連續(xù)的模擬視頻信號轉(zhuǎn)為數(shù)字信號存儲起來。第二種方法通過外部AD芯片直接把視頻信號轉(zhuǎn)為并行的數(shù)字信號,而處理芯片只要通過普通IO來讀取存儲;前者不需要外部電路但浪費(fèi)系統(tǒng)時間,對于主頻不高的處理芯片會造成很大負(fù)擔(dān)。而后者雖然精度高但浪費(fèi)過多的硬件資源。硬件二值化是通過比較器去捕捉視頻信號的跳變沿,這不僅減少了采集時間,也節(jié)約硬件資源,還省去了許多存儲空間。但硬件二值化靈活性差,在面對復(fù)雜光線環(huán)境,固定閾值無法根據(jù)需求動態(tài)調(diào)整局部閾值,無法解決光線分布不均勻的賽道環(huán)境。數(shù)字信號雖然占用運(yùn)算資源,但在芯片運(yùn)算能力滿足的條件下,可以通過程序復(fù)雜算法應(yīng)對光線分布不均勻的賽道環(huán)境,適應(yīng)能力更強(qiáng)。
對于電機(jī)驅(qū)動,由于新C車模電機(jī)對驅(qū)動性能要求高。我們設(shè)計(jì)了由單獨(dú)的驅(qū)動芯片組成驅(qū)動器,該驅(qū)動器瞬間驅(qū)動電流最大可以達(dá)到幾十安。
簡潔是指在滿足了可靠、高效的要求后,為了盡量減輕車模的負(fù)載,降低模型車的重心位置,應(yīng)使電路設(shè)計(jì)盡量簡潔,盡量減少元器件使用數(shù)量,縮小電路板面積,使電路部分重量輕,易于安裝。在設(shè)計(jì)完原理圖后,注重PCB板的布局,優(yōu)化電路的走線,整齊排列元器件,最終做到電路板的簡潔。
3.2傳感器選擇
3.2.1攝像頭選擇
- COMS與CCD
CCD攝像頭具有對比度高、動態(tài)特性好的優(yōu)點(diǎn),但需要工作在12V電壓下,對于整個系統(tǒng)來說過于耗電,而且CCD體積大,質(zhì)量重,會抬高車體的重心,這對于高速情況下小車的行駛非常不利。
與之相比,COMS攝像頭具有體積小、質(zhì)量輕、功耗低,圖像動態(tài)特性好等優(yōu)點(diǎn),因?yàn)樾≤噷D像的清晰度,分辨率要求并不高,所以選用COMS攝像頭。
對于攝像頭的選擇,主要考慮以下幾個參數(shù):
- 芯片大小自動增益分辨率最小照度信噪比標(biāo)準(zhǔn)功率掃描方式
其中芯片大小主要會對視場的范圍會有影響,掃描方式主要有追行掃描以及隔行掃描,像ov5116就是隔行掃描。
市面上的攝像頭主要分為數(shù)字和模擬兩種,數(shù)字?jǐn)z像頭主要有OV7620,OV6620,OV7670,OV7725,模擬攝像頭主要有OV5116,BF3003,MT9V136。大多數(shù)攝像頭都支持sccb通信,可以很好的實(shí)現(xiàn)單片機(jī)與攝像頭之間的交互。
智能車的攝像頭隊(duì)圖像的分辨率要求并不高,但是對動態(tài)特性要求非常高,特別是小車在高速行駛?cè)霃澔蛘叱鰪澋臅r候,圖像變化較大,這就對攝像頭的自動增益有較高的要求。一般來說,在攝像頭圖像發(fā)生突變時,感光芯片本身會有一段適應(yīng)時間,這段時間要求越小越好。
我們先后試用了OV5116、MT9V022、OV7725、BF3003、MT9V136以及PC1030N等攝像頭,后四種均為彩色攝像頭,在經(jīng)過硬件二值化后可以取其有效信息,與黑白數(shù)字?jǐn)z像頭得到的信息類似。經(jīng)過對比,雖然后四種攝像頭圖像效果更好,動態(tài)性能也更好,但是在彎道、回環(huán)等元素中由于自動曝光導(dǎo)致得到賽道信息不準(zhǔn)確,在智能車應(yīng)用中MT9V022已足夠滿足需求,因此我們最終選擇了MT9V022數(shù)字?jǐn)z像頭。
3.2.2陀螺儀選擇
本屆大賽對陀螺儀的型號沒有限制,經(jīng)過挑選我們最終確定陀螺儀使用L3G4200D。
L3G4200D該產(chǎn)品為ST推出采用一個感應(yīng)結(jié)構(gòu)檢測三條正交軸向運(yùn)動的3軸數(shù)字陀螺儀。L3G4200D是三軸共用一個感應(yīng)結(jié)構(gòu),這一突破性概念可以消除軸與軸之間的信號干擾,避免輸出信號收到干擾信號的影響。
3.2.3編碼器選擇
為了使用閉環(huán)控制,我們在汽車模型上附加了編碼器。經(jīng)過機(jī)械和電路性能的考慮和挑選,最終我們選用了ABI Mini增量式旋轉(zhuǎn)編碼器。
和其他元件相比,選用編碼器可以使電路更加完善,信號更加精確。編碼器功耗低,重量輕,抗沖擊抗震動,精度高,壽命長,非常實(shí)用。編碼器內(nèi)部無上拉電阻,因此編碼器接口出需要設(shè)計(jì)上拉電阻。同時為了保證波形的穩(wěn)定,主控板上使用了74HC14非門隔離。微處理器自身具有正交解碼功能,因此這里無需使用任何外圍計(jì)數(shù)輔助器件,只需要將接口連接到單片機(jī)上相應(yīng)的接口即可。接口如圖3.1和圖3.2所示。
▲ 圖3.1 編碼器接口
▲ 圖3.2 非門電路
3.3電路模塊實(shí)現(xiàn)
3.3.1電源管理模塊
首先了解一下不同電源的特點(diǎn),電源分為開關(guān)電源和線性電源,線性電源的電壓反饋電路是工作在線性狀態(tài),開關(guān)電源是指用于電壓調(diào)整的管子工作在飽和和截至區(qū)即開關(guān)狀態(tài)的。線性電源一般是將輸出電壓取樣然后與參考電壓送入比較電壓放大器,此電壓放大器的輸出作為電壓調(diào)整管的輸入,用以控制調(diào)整管使其結(jié)電壓隨輸入的變化而變化,從而調(diào)整其輸出電壓,但開關(guān)電源是通過改變調(diào)整管的開和關(guān)的時間即占空比來改變輸出電壓的。
從其主要特點(diǎn)上看:線性電源技術(shù)很成熟,制作成本較低,可以達(dá)到很高的穩(wěn)定度,波紋也很小,而且沒有開關(guān)電源具有的干擾與噪音,開關(guān)電源效率高、損耗小、可以降壓也可以升壓,但是交流紋波稍大些。
電源模塊對于一個控制系統(tǒng)來說極其重要,關(guān)系到整個系統(tǒng)是否能夠正常工作,因此在設(shè)計(jì)控制系統(tǒng)時應(yīng)選好合適的電源模塊。競賽規(guī)則規(guī)定,比賽使用智能汽車競賽統(tǒng)一配發(fā)的標(biāo)準(zhǔn)車模用7.2V 2000mAh Ni-cd供電或者使用鋰電池(兩節(jié)18650,2AH,配備保護(hù)板),我們在多次嘗試對比之后選擇采用鋰電池。而路徑識別的CCD傳感器均使用的是3.3V的電源。單片機(jī)系統(tǒng)、陀螺儀、編碼器需要5V電源,伺服電機(jī)工作電壓范圍為4V到6V(為提高伺服電機(jī)響應(yīng)速度,采用7.2V 供電),直流電機(jī)可以使用鋰電池直接供電,智能汽車電壓調(diào)節(jié)電路示例見圖3.3。
▲ 圖3 3 電源管理模塊原理圖
在電源管理模塊中,我們選用了5片TPS7350和2片TPS7333,其中DCDC5-12和IR2184S共用一個5V電源,邏輯元件和編碼器共用另一個5V電源,OpenArt mini單獨(dú)使用一個5V電源,主單片機(jī)單獨(dú)使用一個5V電源,其余模塊共用3.3V電源。為了使攝像頭的供電穩(wěn)定,滿足攝像頭在高速下的運(yùn)行要求,我們外加了一塊5V電源單獨(dú)給攝像頭供電。
16屆規(guī)則規(guī)定,AI視覺組的微控制器使用 NXP 公司的任意一款單片機(jī)。經(jīng)過考慮,我們決定采用 微處理器作為主控單片機(jī)。我們最先使用TPS7350作為 微處理器的供電芯片,但是在實(shí)際使用過程中發(fā)現(xiàn)TPS7350容易出現(xiàn)過熱保護(hù)的問題,考慮到 微處理器的功耗比較大,我們決定不采用LDO作為 微處理器最小系統(tǒng)的供電芯片,而是更換為DC-DC降壓芯片。我們向后嘗試了AOZ1280CI和MP1584EN這兩款芯片,實(shí)際使用一段時間后,我們最終確定使用MP1584EN。其原理圖和PCB布局如下:
▲ 圖3 4 ME1584EN-3.3V穩(wěn)壓原理圖
▲ 圖3 5 ME1584EN-3.3V穩(wěn)壓PCB布局
3.3.2電機(jī)驅(qū)動模塊
常用的電機(jī)驅(qū)動有兩種方式:
一、集成電機(jī)驅(qū)動芯片;
二、采用N溝道MOSFET和專用柵極驅(qū)動芯片設(shè)計(jì)。市面上常見的集成H橋式電機(jī)驅(qū)動芯片中,33886型芯片性能較為出色,該芯片具有完善的過流、欠壓、過溫保護(hù)等功能,內(nèi)部MOSFET導(dǎo)通電阻為120毫歐,具有最大5A的連續(xù)工作電流。使用集成芯片的電路設(shè)計(jì)簡單,可靠性高,但是性能受限。由于比賽電機(jī)內(nèi)阻僅為幾毫歐,而集成芯片內(nèi)部的每個MOSFET導(dǎo)通電阻在120毫歐以上,大大增加了電樞回路總電阻,此時直流電動機(jī)轉(zhuǎn)速降落較大,驅(qū)動電路效率較低,電機(jī)性能不能充分發(fā)揮。
由于分立的N溝道MOSFET具有極低的導(dǎo)通電阻,大大減小了電樞回路總電阻。另外,專門設(shè)計(jì)的柵極驅(qū)動電路可以提高M(jìn)OSFET的開關(guān)速度,使PWM控制方式的調(diào)制頻率可以得到提高,從而減少電樞電流脈動。并且專用柵極驅(qū)動芯片通常具有防同臂導(dǎo)通、硬件死區(qū)、欠電壓保護(hù)等功能,可以提高電路工作的可靠性。
1.專用柵極驅(qū)動芯片的選擇:IR公司號稱功率半導(dǎo)體領(lǐng)袖,所以我們主要在IR公司的產(chǎn)品中進(jìn)行選擇。其中IR2184型半橋驅(qū)動芯片可以驅(qū)動高端和低端兩個N溝道MOSFET,能提供較大的柵極驅(qū)動電流,并具有硬件死區(qū)、硬件防同臂導(dǎo)通等功能。使用兩片 IR2184型半橋驅(qū)動芯片可以組成完整的直流電機(jī)H橋式驅(qū)動電路。由于其功能完善,價格低廉容易采購,所以我們選擇它進(jìn)行設(shè)計(jì),如圖3.4所示。
▲ 圖3 6 IR2184應(yīng)用圖
2.MOSFET的選擇:選擇MOSFET時主要考慮的因素有:耐壓、導(dǎo)通內(nèi)阻和封裝。智能汽車電源是額定電壓為7.2V的電池組,由于電機(jī)工作時可能處于再生發(fā)電狀態(tài),所以驅(qū)動部分的元件耐壓值最好取兩倍電源電壓值以上,即耐壓在16V以上。而導(dǎo)通內(nèi)阻則越小越好。封裝越大功率越大,即同樣導(dǎo)通電阻下通過電流更大,但封裝越大柵極電荷越大,會影響導(dǎo)通速度。常用的MOSFET封裝有TO-220、TO-252、SO-8等,TO-252封裝功率較大、而柵極電荷較小。于是我們最終選擇了IR公司TO-252封裝的LR7843型N溝道MOSFET,VDSS=55伏、RDS(on)=8.0毫歐、ID=110安。
3、驅(qū)動電路的原理分析及元件參數(shù)確定
▲ 圖3 7 電機(jī)驅(qū)動分析圖
這個驅(qū)動設(shè)計(jì)單從信號邏輯上分析比較容易理解,但要深入的理解和更好的應(yīng)用,就需要對電路做較深入的分析,對一些外圍元件的參數(shù)確定做理論分析計(jì)算。圖3.8中IC是一個高壓驅(qū)動芯片,驅(qū)動2個半橋MOSFET。Vb,Vs為高壓端供電;Ho為高壓端驅(qū)動輸出;COM為低壓端驅(qū)動供電,Lo為低壓端驅(qū)動輸出;Vss為數(shù)字電路供電.此半橋電路的上下橋臂是交替導(dǎo)通的,每當(dāng)下橋臂開通,上橋臂關(guān)斷時Vs腳的電位為下橋臂功率管Q2的飽和導(dǎo)通壓降,基本上接近地電位,此時Vcc通過自舉二極管D對自舉電容C2充電使其接近Vcc電壓.當(dāng)Q2關(guān)斷時Vs端的電壓就會升高,由于電容兩端的電壓不能突變,因此Vb端的電平接近于Vs和Vcc端電壓之和,而Vb和Vs之間的電壓還是接近Vcc電壓.當(dāng)Q2開通時,C2作為一個浮動的電壓源驅(qū)動Q2;而C2在Q2開通其間損失的電荷在下一個周期又會得到補(bǔ)充,這種自舉供電方式就是利用Vs端的電平在高低電平之間不停地?cái)[動來實(shí)現(xiàn)的。
由于自舉電路無需浮動電源,因此是最便宜的,如圖所示自舉電路給一只電容器充電,電容器上的電壓基于高端輸出晶體管源極電壓上下浮動。圖2.6中的D和C2是IR2184在脈寬調(diào)制(PWM)應(yīng)用時應(yīng)嚴(yán)格挑選和設(shè)計(jì)的元器件,根據(jù)一定的規(guī)則進(jìn)行計(jì)算分析;并在電路實(shí)驗(yàn)時進(jìn)行調(diào)整,使電路工作處于最佳狀態(tài),其中D是一個重要的自舉器件,應(yīng)能阻斷直流干線上的高壓,其承受的電流是柵極電荷與開關(guān)頻率之積,為了減少電荷損失,應(yīng)選擇反向漏電流小的快恢復(fù)二極管,芯片內(nèi)高壓部分的供電都來自圖中自舉電容C2上的電荷;為保證高壓部分電路有足夠的能量供給應(yīng)適當(dāng)選取C2的大小.
MOSFET具有相似的門極特性,開通時需要在極短的時間內(nèi)向門極提供足夠的柵電荷,在自舉電容的充電路徑上,分布電感影響了充電的速率,下橋臂功率管的最窄導(dǎo)通時間應(yīng)保證自舉電容有足夠的電荷以滿足柵極所需要的電荷量再加上功率器件穩(wěn)態(tài)導(dǎo)通時漏電流所失去的電荷量.因此,從最窄導(dǎo)通時間為最小值考慮,自舉電容應(yīng)足夠小;綜上所述,在選擇自舉電容大小時應(yīng)考慮,既不能太大影響窄脈沖的驅(qū)動性能;也不能太小影響寬脈沖的驅(qū)動要求,應(yīng)從功率器件的工作頻率、開關(guān)速度、門極特性等方面進(jìn)行選擇、估算后調(diào)試而定。
3.3.3視頻處理模塊
我們的智能模型車自動控制系統(tǒng)中使用黑白全電視信號格式CMOS攝像頭采集賽道信息。攝像頭視頻信號中除了包含圖像信號之外,還包括了行同步信號、行消隱信號、場同步信號、場消隱信號以及數(shù)字信號等。因此,若要對視頻信號進(jìn)行采集,就必須通過SCCB設(shè)置數(shù)字?jǐn)z像頭的部分參數(shù)。
3.3.4 OpenArt mini
對于AI視覺組來說,要完成AI部分的識別二維碼、數(shù)字、水果、動物等任務(wù),OpenArt mini是必不可少的。我們購買了逐飛的成品攝像頭,通過串口將識別的信息與主單片機(jī)進(jìn)行通信,從而執(zhí)行對應(yīng)的任務(wù)。
3.3.5接口及外接模塊
對于單片機(jī)最小系統(tǒng)、陀螺板、視頻模塊、OpenArt mini,我們在主板上設(shè)計(jì)了外接接口,用于連接。
▲ 圖 3.8:微處理器 控制最小系統(tǒng)接口
▲ 圖3 9:微處理器 圖像最小系統(tǒng)接口
我們最小系統(tǒng)的原理圖參考了龍邱公司、NXP公司的 微處理器最小系統(tǒng)原理圖,我們更改了內(nèi)核供電方案,屏蔽了沒有使用到的引腳。在軟件上,我們使用了龍邱公司提供的開源庫。
在調(diào)試過程之中,我們需要實(shí)時的了解與掌握一些車的運(yùn)行狀態(tài),比如說傳感器的狀態(tài),舵機(jī)的轉(zhuǎn)角等,調(diào)試時用OLED顯示屏將這些參數(shù)顯示出來,讓我們實(shí)時的監(jiān)測車的狀態(tài),從而做出判斷,這樣很大程度的方便了對車的調(diào)試。
第四章 智能車控制軟件
高效的軟件程序是智能車高速平穩(wěn)自動尋線的基礎(chǔ)。我們設(shè)計(jì)的智能車系統(tǒng)采用CMOS攝像頭進(jìn)行賽道識別,圖像采集及校正處理就成了整個軟件的核心內(nèi)容。在智能車的轉(zhuǎn)向和速度控制方面,我們使用了魯棒性很好的經(jīng)典PID控制算法,配合使用理論計(jì)算和實(shí)際參數(shù)補(bǔ)償?shù)霓k法,使智能車能夠穩(wěn)定快速尋線。
4.1賽道中心線提取及優(yōu)化處理
4.1.1原始圖像的特點(diǎn)
在單片機(jī)采集圖像信號后需要對其進(jìn)行處理以提取主要的賽道信息,同時,由于交叉道、起點(diǎn)線的存在,光線、雜點(diǎn)、賽道遠(yuǎn)處圖像不清楚的干擾,圖像效果會大打折扣。因此,在軟件上必須排除干擾因素,對賽道進(jìn)行有效識別,并提供盡可能多的賽道信息供決策使用。
在圖像信號處理中我們提取的賽道信息主要包括:賽道兩側(cè)邊沿點(diǎn)位置、通過校正計(jì)算的賽道中心位置,中心點(diǎn)規(guī)劃面積,賽道變化幅度,賽道類型判別。
由于攝像頭自身的特性,圖像會產(chǎn)生梯形式變形,這使得攝像頭看到的信息不真實(shí)。因此我們利用賽道進(jìn)行測量,創(chuàng)建函數(shù)還原出了真實(shí)賽道信息。原始圖像是一個將數(shù)字圖像經(jīng)模擬電路轉(zhuǎn)換得到的二維數(shù)據(jù)矩陣,矩陣的每一個元素對應(yīng)一個像素點(diǎn),近處的圖像大,黑線為梯形狀。
程序上將每一行的黑白跳變點(diǎn)(跳變點(diǎn)按從右到左的順序)記錄下來,保存到兩個二維數(shù)組里(分別表示上升沿、下降沿)。通過遍歷上升沿和下降沿可以完成賽道邊沿的提取。
攝像頭采集到幾種典型賽道圖像如圖4.1~圖4.4所示。
4.1.2賽道邊沿提取
邊沿提取算法的基本思想如下:
(1) 直接逐行掃描原始圖像,根據(jù)設(shè)定的閾值提取黑白跳變點(diǎn);
(2) 賽道寬度有一個范圍,在確定的賽道寬度范圍內(nèi)提取有效賽道邊沿,這樣可以濾除不在寬度范圍內(nèi)的干擾;
(3) 利用賽道的連續(xù)性,根據(jù)上一行白塊的位置和邊沿的位置來確定本行的邊沿點(diǎn);
(4) 求邊沿點(diǎn)時,因?yàn)榻幍膱D像穩(wěn)定,遠(yuǎn)處圖像不穩(wěn)定,所以采用由近及遠(yuǎn)的辦法;
(5) 進(jìn)出十字的時候,通過校正計(jì)算出邊沿角度可較好的濾除十字并補(bǔ)線;
(6) 人字元素是整個賽道邊沿角度是尖銳角的部分,根據(jù)這個特征通過計(jì)算邊沿的角度以及內(nèi)側(cè)兩條邊沿包絡(luò)形成的面積可以有效的識別出人字;為了排除賽道方向的突變對控制造成干擾,將人字建模成為具有一定曲率的彎道,并進(jìn)行補(bǔ)線;
(7) 由于權(quán)重分配的問題,如果不對障礙進(jìn)行一定的處理的話,控制量對于遠(yuǎn)端的障礙相應(yīng)比較小,可能在很接近障礙的時候才有響應(yīng),這樣很容易造成撞到障礙,為了消除這種影響,我們利用曲線包絡(luò)的形式 將障礙作用的區(qū)域人為擴(kuò)大,這樣有效避免了碰撞障礙的危險。
邊沿提取算法的程序流程如圖4.5所示。
處理后得到的黑線中心如圖4.6~4.9圖所示。
4.1.3圖像校正
圖像校正的實(shí)現(xiàn)如下:(1) 調(diào)整好攝像頭位置、前瞻,固定好;將攝像頭對準(zhǔn)黑白相間的賽道板,然后用電視觀看攝像頭圖像,用照相機(jī)對準(zhǔn)電視拍照(見圖4.10);
(2) 從照片中截取出賽道部分,然后用matlab編寫程序,載入圖片并進(jìn)行相應(yīng)的桶形變換、透視變換,調(diào)整好參數(shù),生成校正表和反校正表;
▲ 圖4.11 校正后的效果
(3) 在單片機(jī)程序中加入常量表,然后就可進(jìn)行相應(yīng)的校正和反校正變換了。(4) 用上位機(jī)觀察的校正效果如下:
▲ 圖4.12 上位機(jī)模擬校正
4.1.4推算中心
通過之前提取的賽道邊沿?cái)?shù)據(jù)推算中心:當(dāng)左右邊沿點(diǎn)總數(shù)較少時返回;若只有單邊有邊沿點(diǎn)數(shù)據(jù),則通過校正對單邊數(shù)據(jù)按法線平移賽道寬度一半的距離;當(dāng)能找到與一邊能匹配上的另一邊沿點(diǎn)時則直接求其中心作為中心點(diǎn)。推算完中心點(diǎn)后,對中心點(diǎn)進(jìn)行均勻化,方便之后的控制。計(jì)算出的中心點(diǎn)效果如下:
4.1.5攝像頭圖像入庫的處理
我們的策略是使用攝像頭后車入庫。車子接到球跑完賽道后半段,圖像在車庫前先識別出車庫的特征,判斷出當(dāng)前圖像為車庫后,尋找入庫補(bǔ)線的起始點(diǎn)和終止點(diǎn),然后調(diào)用補(bǔ)線函數(shù),在圖像校正域中補(bǔ)一條半徑為賽道寬度的四分之一圓弧,對左右邊界點(diǎn)進(jìn)行均勻化處理后,就得到了以上圖像。
4.1.6路徑選擇
根據(jù)往屆比賽以及本屆華北賽的經(jīng)驗(yàn),賽車能否以最短的時間完成比賽,與賽車的速度和路徑都有著密切的關(guān)系,因此,如何使賽車以一個最合理、最高效的路徑完成比賽是提高平均速度的關(guān)鍵。對于賽車路徑的優(yōu)化,我們從以下三個方面來完成:
1)增加視場的長度和寬度根據(jù)我們的分析,當(dāng)賽車采集到的圖像能夠覆蓋一個比較完整的S彎道時,通過加權(quán)算法計(jì)算出來的中心就會處于視場中央附近,此時賽車會以一個比較好的路徑快速通過S彎道;相反,如果視場無法覆蓋一個完整的S彎道,賽車就會誤處理為普通的單向彎道,這樣賽車的速度就會大大減慢。因此,盡量增大視場的長度和寬度就很有必要了。
視場的長度與單片機(jī)可以處理的圖像行數(shù)成正比。我們采用由運(yùn)算放大器制作的模擬比較器進(jìn)行圖像二值化,處理速度較A/D轉(zhuǎn)換有了很大提高,大大增加了單片機(jī)處理的圖像行數(shù),最終處理行數(shù)為95行(隔3行提取一行),達(dá)到的視場長度為200多cm。為了增加視場寬度,增加每行采集的圖像點(diǎn)數(shù)之外,我們采用了廣角鏡頭,從而有效地增加了視場寬度。
2)優(yōu)化加權(quán)算法對整場有效行的中心求加權(quán)平均值的算法,在低速情況下可以有效地優(yōu)化賽車路徑,但在賽車速度提高到一定程度之后由于過彎時的側(cè)滑,路徑不是很好。而由于圖像分布不均,三分之二的行分布于車體前方40cm的范圍內(nèi),求出的加權(quán)平均值受車體近處的圖像影響較大,因此整場圖像求加權(quán)的算法對于高速情況下的路徑優(yōu)化效果不是很明顯。
為了解決這個問題,我們對于參與加權(quán)計(jì)算的圖像行數(shù)及權(quán)重進(jìn)行了處理,減小了車體前部50cm范圍內(nèi)的圖像參與加權(quán)的行數(shù)和權(quán)重,同時增大視場前部圖像的權(quán)重。在經(jīng)過長期調(diào)試之后,得到了一套比較合適的參數(shù),能夠有效優(yōu)化高速情況下的賽車路徑。
3)對不合理的中心點(diǎn)進(jìn)行處理對于在校正后的圖像數(shù)據(jù)中求得的中心線,反校正到原始圖像后存在一行中含有多個中心點(diǎn)的情況。在通常情況下,這種情況出現(xiàn)在較遠(yuǎn)的視野中,但由于我們增大了視場前部圖像的權(quán)重,這些中心點(diǎn)對權(quán)重的影響極大,導(dǎo)致車模容易出現(xiàn)掉輪甚至沖出賽道的現(xiàn)象。
為了解決這個問題,我們利用數(shù)學(xué)方法求出了中心線的折點(diǎn),對折點(diǎn)之后的中心點(diǎn)單獨(dú)處理,使車模不再出現(xiàn)掉輪的現(xiàn)象。
4.2折點(diǎn)求取原理簡介
折點(diǎn)是指數(shù)學(xué)中的極值點(diǎn),即一階導(dǎo)數(shù)為0的點(diǎn),但一階導(dǎo)數(shù)為0的點(diǎn)不一定都是極值點(diǎn),究竟是否是極值點(diǎn),還要判斷二階導(dǎo)數(shù)。在圖像的離散數(shù)據(jù)中,極值點(diǎn)的離散化計(jì)算公式如式如下:
但這個公式在圖4.18中存在一些問題,對于(Xn,Yn)點(diǎn),由于 為0,所以該點(diǎn)不會被判斷為極值點(diǎn)。但我們認(rèn)為這樣的點(diǎn)也能反映圖像的特征,因此對上式作出修改得到新的折點(diǎn)計(jì)算方法:
極值點(diǎn)是針對某一個坐標(biāo)軸而言的,對上式稍作修改,即可得到針對另一個坐標(biāo)軸的極值點(diǎn)的計(jì)算公式:
將兩個方向上的極值點(diǎn)結(jié)合使用,不僅可以對不合理的中心點(diǎn)加以濾除,還可以實(shí)現(xiàn)對賽道類型的粗略判斷。
4.3PID控制算法介紹
【PID算法,省略】
4.4轉(zhuǎn)向舵機(jī)的PID控制算法
對于舵機(jī)的閉環(huán)控制,我們采用了位置式PID控制算法,根據(jù)往屆的技術(shù)資料和實(shí)際測試,將每場圖像的黑線中心加權(quán)平均值與舵機(jī)PID參考角度值構(gòu)成一次線性關(guān)系。
在較低速(2m/s以下)試驗(yàn)時,在偏離黑線很少的某個范圍,將Kp直接置零,在偏離黑線較少的某個范圍,將Kp值減小為原來的一半,在偏離較大的其他情況,則保持Kp原來的大小。取得的實(shí)際效果在彎道較多、直道較短的賽道上,車子轉(zhuǎn)彎流暢,直道也能基本保持直線加速,車身左右抖動較小。
在提高車速至高速(2.5m/s以上)時,我們發(fā)現(xiàn)車身在直道上特別是長直道上時,車身左右震蕩比較嚴(yán)重,究其原因,硬件上,我們認(rèn)為首先是輪軸本身的松動并且轉(zhuǎn)向機(jī)構(gòu)左右轉(zhuǎn)向性能可能存在不對稱性,設(shè)計(jì)有待改進(jìn),軟件上,則是自身編寫的PID舵機(jī)控制還不夠精細(xì),動態(tài)適應(yīng)能力不夠。在從彎道到直道的過程中,由于小車尋賽道本質(zhì)上是一個隨動系統(tǒng),積分項(xiàng)在彎道累積的偏差錯誤地加在直道的跟蹤上,造成在進(jìn)入直道時轉(zhuǎn)向不夠準(zhǔn)確,跑直道時雖然能跟蹤黑線,但是轉(zhuǎn)向調(diào)整往往超調(diào),導(dǎo)致車身在直道上左右震蕩,這種震蕩嚴(yán)重影響了車的整體速度。此外,我們對S彎的控制也過于簡單,沒有特別的處理,導(dǎo)致車在跑S彎的時候,幾乎完全沿彎走,沒有明顯的直沖S彎的效果,原因是在前瞻有限的情況下,在采集的圖像中S彎入彎和普通彎道是一樣的,導(dǎo)致小車開始轉(zhuǎn)向,由于中間一直檢測到彎道,小車會沿S彎道左右震蕩,同時相應(yīng)會減速。
經(jīng)過反復(fù)調(diào)試PID參數(shù),我們發(fā)現(xiàn)只調(diào)整PID參數(shù)很難使車在跑S彎和長直道時都選擇最佳路徑,同時不影響在普通彎處的轉(zhuǎn)向。這就要求系統(tǒng)能夠智能地識別出當(dāng)前賽道是哪種類型,我們沒有選擇賽道記憶等方法,而采取在不降低遠(yuǎn)處分辨率的情況下,盡量讓攝像頭看得更遠(yuǎn)的方法。最后,在MCU超頻的條件下,每行圖像采集了210個點(diǎn),成功地增大了CMOS攝像頭采集圖像的分辨率。在透視問題影響遠(yuǎn)處分辨率的制約下,使視場長度(視場最遠(yuǎn)處和最近處的距離)達(dá)到2m多,最遠(yuǎn)前瞻達(dá)到2.20m,足以覆蓋賽道中的各種賽道類型,使得我們在程序中并沒有加入了對S彎、長直道以及大彎進(jìn)行可靠識別的算法,僅僅根據(jù)中心位置動態(tài)改變PID參數(shù),就得到了較好的控制效果。
經(jīng)過反復(fù)測試,我們選擇的PID調(diào)節(jié)策略是:
(1) 將積分項(xiàng)系數(shù)置零,我們發(fā)現(xiàn)相比穩(wěn)定性和精確性,舵機(jī)在這種隨動系統(tǒng)中對動態(tài)響應(yīng)性能的要求更高。更重要的是,在KI置零的情況下,我們通過合理調(diào)節(jié)Kp,發(fā)現(xiàn)車能夠在直線高速行駛時仍能保持車身非常穩(wěn)定,沒有震蕩,基本沒有必要使用KI參數(shù);
(2) 微分項(xiàng)系數(shù)KD使用定值,原因是舵機(jī)在一般賽道中都需要較好的動態(tài)響應(yīng)能力;
(3) 對Kp,我們使用了二次函數(shù)曲線,Kp隨中心位置與中心值的偏差呈二次函數(shù)關(guān)系增大,在程序中具體代碼如下:loca_Kp = (loca_error * loca_error)/2 + 1000
其中,local_error是中心位置與中心值的偏差。
▲ 圖4 22 中心位置和動態(tài)Kp值的二次函數(shù)曲線
經(jīng)不斷調(diào)試,最終我們選擇了一組PID參數(shù),得到了較為理想的轉(zhuǎn)向控制效果。
4.5驅(qū)動電機(jī)的PID控制算法
對于速度控制,我們采用了增量式PID控制算法,基本思想是直道加速,彎道減速。經(jīng)過反復(fù)調(diào)試,將每場圖像得到的黑線位置與速度PID參考速度值構(gòu)成二次曲線關(guān)系。在實(shí)際測試中,我們發(fā)現(xiàn)小車直道和彎道相互過渡時加減速比較靈敏,與舵機(jī)轉(zhuǎn)向控制配合得較好。
▲ 圖4 23 黑線位置和給定速度的二次函數(shù)曲線
在程序中具體代碼如下:sPID.vi_Ref = g_HighestSpeed - (59 - g_Control) * (59 - g_Control) * (g_HighestSpeed- g_LowestSpeed)/ 3481 其中,g_HighestSpeed為最高速,g_LowestSpeed為最低速,g_Control為黑線位置,取值范圍為0~120,圖4.10中,g_HighestSpeed為80,g_LowestSpeed為50。
但是,該方法存在一定的局限。一方面是車在從彎道入直道時加速和從直道入彎道時減速達(dá)不到最好的控制效果,彎道入直道減速不夠快速,直道入彎道加速的時機(jī)不夠及時。因此我們做了進(jìn)一步的改進(jìn),根據(jù)入彎時黑線位置的特點(diǎn)動態(tài)改變二次曲線中最高點(diǎn)(直道的最高速度)和最低點(diǎn)(彎道的最低速度)的大小,結(jié)果表明,控制效果更好。另一方面是沒有考慮到實(shí)際比賽中長直道急速沖刺的情況,賽前在程序中人為設(shè)定直線速度不夠靈活不夠合理,所以我們在程序中根據(jù)賽道狀態(tài)動態(tài)提高了直線速度g_HighestSpeed,使車能夠在長直道上充分發(fā)揮潛能。
4.6 OpenArtMini模塊控制
對于視覺識別部分,我們采用了逐飛科技的產(chǎn)品OpenArtMini套件,部署了簡單的卷積神經(jīng)網(wǎng)絡(luò),并通過tflite進(jìn)行模型的量化,最終部署到OpenArtMini上,實(shí)現(xiàn)了對動物、水果、二維碼、數(shù)字的識別。同時通過設(shè)置模塊的PWM通道占空比實(shí)現(xiàn)了激光的點(diǎn)亮。
第五章 調(diào)試過程
5.1開發(fā)工具 程序開放在IAR Embedded Workbench IDE下進(jìn)行, Embedded Workbench for ARM 是IAR Systems 公司為ARM 微處理器開發(fā)的一個集成開發(fā)環(huán)境(下面簡稱IAR EWARM)。比較其他的ARM 開發(fā)環(huán)境,IAR EWARM 具有入門容易、使用方便和代碼緊湊等特點(diǎn)。
EWARM 中包含一個全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM 內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。從中可以了解和評估IAR EWARM 的功能和使用方法。
5.2上位機(jī)圖像顯示
5.2.1C#靜態(tài)上位機(jī)
為了觀察攝像頭采集圖像的直觀效果,我們還采用了VS2012的C#作為輔助開發(fā)調(diào)試工具。
我們設(shè)計(jì)的智能車系統(tǒng)采用CMOS攝像頭采集賽道信息,分析處理之后用來編寫黑線識別及控制算法。雖然直接將攝像頭通過視頻接口連接到電視可觀察到攝像頭所采的圖像,但對于圖像分析不夠方便,且無法實(shí)時精確地反饋出一些特定信息。我們在VS2012的C#環(huán)境下開發(fā)了一套基于PC機(jī)平臺的圖像顯示與處理程序,可完成賽道顯示及相關(guān)參數(shù)的實(shí)時反饋。
顯示區(qū)域可原始圖像及處理后的中心點(diǎn),這為控制算法的編寫提供了非常好的依據(jù),也大大減少了調(diào)試者的工作量。
5.2.2MFC SD卡上位機(jī)
我們在VS2012的C++環(huán)境下用MFC編寫了SD卡上位機(jī),每次模型車跑完全程之后,通過該上位機(jī)程序可得到運(yùn)動過程中的每一場圖像及相關(guān)數(shù)據(jù)及曲線,并可使用原始數(shù)據(jù)進(jìn)行相關(guān)算法的模擬以及校正效果的顯示(上位機(jī)主界面見圖5.3)。
▲ 圖5 3 SD卡上位機(jī)主界面
▲ 圖5 4 SD卡上位機(jī)運(yùn)行界面
模型車在運(yùn)動過程中,記錄下的典型賽道圖像,如下圖5.5~5.9所示。
5.3SD卡模塊
5.3.1SD卡介紹
SD卡( Secure Digital Memory Card )是一種基于半導(dǎo)體快閃存的新一代記憶設(shè)備。由日本松下、東芝及美國SanDisk公司于1999年8月共同開發(fā)研制,其大小猶如一張郵票,重量只有2克,卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性。SD卡的數(shù)據(jù)存儲管理可以類似于硬盤的磁盤管理系統(tǒng),以FAT格式來存儲數(shù)據(jù)。
SD卡的接口支持SD模式和SPI模式,主機(jī)系統(tǒng)可以選擇其中任一模式。SPI模式允許簡單通用的SPI通道接口,這種模式相對于SD模式的不足之處是降低了速度。由于飛思卡爾系列單片機(jī)擁有SPI接口,所以我們使用了SD卡的SPI模式。
5.3.2SPI總線介紹
SPI (Serial Peripheral Interface,串行外圍設(shè)備接口總線) 總線技術(shù)是MOTOROLA公司推出的一種同步串行總線接口, 它是目前單片機(jī)應(yīng)用系統(tǒng)中最常用的幾種串行擴(kuò)展接口之一。SPI總線主要通過三根線進(jìn)行數(shù)據(jù)傳輸: 同步時鐘線SCK,主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI,另外還有一條低電平有效的從機(jī)片選線CS。SPI系統(tǒng)的片選信號以及同步時鐘脈沖由主機(jī)提供。SPI總線模式的數(shù)據(jù)是以字節(jié)為單位進(jìn)行傳輸?shù)模孔止?jié)為8位,每個命令或者數(shù)據(jù)塊都以字節(jié)對齊的(8個時鐘的整數(shù)倍)。主機(jī)與SD卡的各種通信都由主機(jī)控制, 主機(jī)在對SD卡進(jìn)行任何操作前都必須先要拉低SD卡的片選信號CS (card select) ,然后由主機(jī)向SD卡發(fā)送命令, SD卡對主機(jī)發(fā)送的任何命令都要進(jìn)行響應(yīng), 不同的命令會有不同的響應(yīng)格式(1個字節(jié)或2個字節(jié)響應(yīng))。SD卡除了對命令響應(yīng)外, 在執(zhí)行寫操作時, 還要對主機(jī)發(fā)送的每個數(shù)據(jù)塊進(jìn)行響應(yīng)(向主機(jī)發(fā)送一個特殊的數(shù)據(jù)響應(yīng)標(biāo)志)。
5.3.3軟件實(shí)現(xiàn)
首先需要將SPI模塊設(shè)置為主機(jī)模式,并設(shè)置相關(guān)的寄存器使SPI模塊有高速和低速之分。SD卡的軟件設(shè)計(jì)主要包括兩部分內(nèi)容:SD卡的上電初始化過程和對SD卡的讀寫操作。對SD卡初始化程序流程如圖5.10所示。
SD卡上電后,主機(jī)必須先向SD卡發(fā)送74個時鐘周期,以完成SD卡上電過程。SD卡上電后會自動進(jìn)入SD總線模式,并在SD總線模式下向SD卡發(fā)送復(fù)位命令(CMD0),若此時片選信號CS處于低電平態(tài),則SD卡進(jìn)入SPI總線模式,否則SD卡工作在SD總線模式。SD卡進(jìn)入SPI工作模式會發(fā)出應(yīng)答信號,若主機(jī)讀到的應(yīng)答信號為01,即表明SD卡已進(jìn)入SPI模式,此時主機(jī)即可不斷地向SD卡發(fā)送命令字(CMD1) 并讀取SD卡的應(yīng)答信號,直到應(yīng)答信號為00,以表明SD卡已完成初始化過程,準(zhǔn)備好接受下一命令。
此后,系統(tǒng)便可讀取SD卡的各寄存器,并進(jìn)行讀寫等操作,每次讀寫數(shù)據(jù)都是按照扇區(qū)操作的,每次操作512字節(jié)。
第六章 模型車的主要技術(shù)參數(shù)
賽車基本參數(shù)
- 長 295mm寬 183mm高 230mm車重 1200g功耗 空載 10W帶載 大于12W電容總?cè)萘?2500uF傳感器 CMOS攝像頭 1個陀螺儀 1個編碼器 2個OpenArt mini 1個除了車模原有的驅(qū)動電機(jī)、舵機(jī)之外伺服電機(jī)個數(shù) 1個賽道信息檢測 視野范圍(近瞻/遠(yuǎn)瞻) 20cm/240cm精度(近/遠(yuǎn)) 2/12.5mm頻率 50Hz
結(jié)論
自報(bào)名參加第十六屆全國大學(xué)生智能汽車競賽以來,我們小組成員從查找資料、設(shè)計(jì)機(jī)構(gòu)、組裝車模、編寫程序一步一步的進(jìn)行,最后終于完成了最初目標(biāo),定下了現(xiàn)在這個設(shè)計(jì)方案。
在此份技術(shù)報(bào)告中,我們主要介紹了準(zhǔn)備比賽時的基本思路,包括機(jī)械、電路以及最重要的控制算法的創(chuàng)新思想。在機(jī)械結(jié)構(gòu)方面,我們分析了整車質(zhì)量分布,調(diào)整重心位置,優(yōu)化機(jī)械結(jié)構(gòu)。在電路方面,我們以模塊形式分類,在最小系統(tǒng)、主板、電機(jī)驅(qū)動等模塊分別設(shè)計(jì),在查找資料的基礎(chǔ)上各準(zhǔn)備了幾套方案;然后我們分別實(shí)驗(yàn),最后以報(bào)告中所提到的形式?jīng)Q定了我們最終的電路圖。在程序方面,我們使用C語言編程,利用比賽推薦的開發(fā)工具調(diào)試程序,經(jīng)過小組成員不斷討論、改進(jìn),終于設(shè)計(jì)出一套比較通用穩(wěn)定的程序。在這套算法中,我們結(jié)合路況調(diào)整車速,做到直道加速、彎道減速,保證在最短時間內(nèi)跑完全程。
在這幾個月的備戰(zhàn)過程中,場地和經(jīng)費(fèi)方面都得到了學(xué)校和學(xué)院的大力支持,在此特別感謝一直支持和關(guān)注智能車比賽的學(xué)校和學(xué)院領(lǐng)導(dǎo)以及各位指導(dǎo)老師、指導(dǎo)學(xué)長,同時也感謝比賽組委會能組織這樣一項(xiàng)有意義的比賽。
現(xiàn)在,面對即將到來的大賽,在歷時近五個月的充分準(zhǔn)備以及華北賽的考驗(yàn)之后,我們有信心在全國比賽中取得優(yōu)異成績。也許我們的知識還不夠豐富,考慮問題也不夠全面,但是這份技術(shù)報(bào)告作為我們小組辛勤汗水的結(jié)晶,凝聚著我們小組每個人的心血和智慧,隨著它的誕生,這份經(jīng)驗(yàn)將永伴我們一生,成為我們最珍貴的回憶。