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