加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1.1系統(tǒng)概述
    • 2.1車體機(jī)械方案
    • 2.2四輪車模機(jī)械建模
    • 3.1硬件方案設(shè)計(jì)
    • 3.2傳感器選擇
    • 3.3電路模塊實(shí)現(xiàn)
    • 4.1賽道中心線提取及優(yōu)化處理
    • 4.2折點(diǎn)求取原理簡介
    • 4.3PID控制算法介紹
    • 4.4轉(zhuǎn)向舵機(jī)的PID控制算法
    • 4.5驅(qū)動(dòng)電機(jī)的PID控制算法
    • 4.6 OpenArtMini模塊控制
    • 5.2上位機(jī)圖像顯示
    • 5.3SD卡模塊
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

【智能車競賽】技術(shù)報(bào)告 | 北京科技大學(xué)智能視覺組技術(shù)報(bào)告

2021/09/13
1306
閱讀需 54 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

簡 介: 本文設(shè)計(jì)的智能車系統(tǒng)以 為核心控制單元,通過CMOS攝像頭檢測(cè)賽道信息,使用數(shù)字?jǐn)z像頭采集賽道的灰度圖,通過動(dòng)態(tài)閾值算法生成二值化圖像數(shù)組,提取黑色引導(dǎo)線,用于賽道識(shí)別;通過光電編碼器檢測(cè)模型車的實(shí)時(shí)速度,使用PID控制算法調(diào)節(jié)驅(qū)動(dòng)左右電機(jī)的轉(zhuǎn)速,實(shí)現(xiàn)了對(duì)車運(yùn)動(dòng)速度和運(yùn)動(dòng)方向的閉環(huán)控制。為了提高模型車的速度和穩(wěn)定性,使用C#、MFC上位機(jī)等調(diào)試工具,進(jìn)行了大量硬件軟件測(cè)試。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)設(shè)計(jì)方案確實(shí)可行。

學(xué)    校:北京科技大學(xué)     
隊(duì)伍名稱:北京科技大學(xué)智能視覺組
參賽隊(duì)員:范一鳴        
潘依涵        
陳云青        
指導(dǎo)教師:馬飛         

引    言

隨著信息技術(shù)的發(fā)展,汽車的電子化模塊越來越多,智能汽車領(lǐng)域受到了大量的關(guān)注。受教育部高等教育司委托(教高司函[2005]201號(hào)文),高等學(xué)校自動(dòng)化專業(yè)教學(xué)指導(dǎo)分委員會(huì)主辦全國大學(xué)生智能汽車競賽,以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識(shí)別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科交叉的科技創(chuàng)意性比賽。

參賽選手須使用競賽秘書處統(tǒng)一指定并負(fù)責(zé)采購競賽車模,自行采用 32 位微控制器作為核心控制單元,自主構(gòu)思控制方案及系統(tǒng)設(shè)計(jì),包括傳感器信號(hào)采集處理、控制算法及執(zhí)行、動(dòng)力電機(jī)驅(qū)動(dòng)、轉(zhuǎn)向舵機(jī)控制等,完成智能汽車工程制作及調(diào)試,于指定日期與地點(diǎn)參加場(chǎng)地比賽。參賽隊(duì)伍之名次(成績)由賽車現(xiàn)場(chǎng)成功完成賽道比賽時(shí)間為主,技術(shù)方案及制作工程質(zhì)量評(píng)分為輔來決定。

本屆全國大學(xué)生智能汽車競賽分競速賽和創(chuàng)意賽,競速比賽分為基礎(chǔ)四輪組、節(jié)能信標(biāo)組、智能視覺組、電磁越野組、雙車接力組、全向行進(jìn)組、單車?yán)M、??苹A(chǔ)組八個(gè)組別,分別進(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攝像頭的硬件二值化信號(hào),得到賽道邊沿信息;通過采集陀螺儀數(shù)據(jù)分析計(jì)算過橋信息;通過采集光電編碼器對(duì)車輪轉(zhuǎn)速的脈沖計(jì)數(shù),得到車行進(jìn)的速度數(shù)據(jù)。通過微處理器對(duì)圖像處理,對(duì)角度、速度進(jìn)行PID控制,最后PWM波輸出驅(qū)動(dòng)電機(jī)、舵機(jī)。

第二章 智能車機(jī)械

根據(jù)今年組委會(huì)的相關(guān)規(guī)定以及智能視覺組比賽規(guī)則使用新C車模完成任務(wù),因此需要合理的方案完成任務(wù)。在比賽備戰(zhàn)之初,我們就對(duì)該車模進(jìn)行了詳細(xì)的系統(tǒng)分析。但由于新C型車模精度不是很高,因此在規(guī)則允許范圍內(nèi)盡量改造車模,提高車模整體精度,以提高車輛行駛的穩(wěn)定性。本章將主要介紹智能汽車車模的機(jī)械結(jié)構(gòu)及調(diào)整方案。

2.1車體機(jī)械方案

根據(jù)十六屆智能車競賽細(xì)則對(duì)智能視覺組的要求,我們選擇新C車模完成任務(wù)。

2.2四輪車模機(jī)械建模

此次競賽的四輪賽車車模選用由東莞市博思電子數(shù)碼科技有限公司提供的新C型車模。車模外形如圖2.1所示:

▲ 圖圖2 1 四輪車模俯視圖

 

2.2.1四輪車模前輪傾角的調(diào)整

四輪車模后橋固定,對(duì)于后橋并無大的改動(dòng)。在調(diào)試過程中,我們發(fā)現(xiàn)前輪對(duì)于車模的運(yùn)行影響較大,并且由于前輪軸和車輪之間的間隙較大,對(duì)車高速時(shí)轉(zhuǎn)向中心的影響較大,會(huì)引起高速轉(zhuǎn)向下模型車的轉(zhuǎn)向不足。然而這里是規(guī)則中嚴(yán)禁改動(dòng)的部分,所以為了盡可能降低轉(zhuǎn)向舵機(jī)負(fù)載,我們對(duì)前輪的安裝角度,即前輪定位進(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)彎時(shí)車輪和地面的接觸面積,從而增大車了地面的摩擦程度,使車轉(zhuǎn)向更靈活,減小因摩擦不夠而引起的轉(zhuǎn)向不足的情況。并且我們智能視覺組設(shè)計(jì)的車模相對(duì)于往屆車模來說重心更高,更靠前,所以我們對(duì)于主銷后傾做了一些調(diào)整。

2.2.2底盤高度的調(diào)整

在保證順利通過坡道的前提下,底盤盡量降低,從整體上降低模型車的重心,可使模型車轉(zhuǎn)彎時(shí)更加穩(wěn)定、高速。但是過低的底盤會(huì)造成上橋剮蹭底盤等的現(xiàn)象,對(duì)車模正常行駛造成影響。

2.2.3齒輪嚙合以及編碼器的安裝

考慮到智能視覺組需要停車這一問題,我們對(duì)于車子齒輪嚙合需要較高的要求,如果嚙合不好,對(duì)于車子正常行駛和停車正不正都有較大影響。為了更為精確的獲得電機(jī)轉(zhuǎn)速的返回值,本次車模上安裝的是與上屆相同的編碼器。最終綜合考慮了讀數(shù)精準(zhǔn)和重心分布兩大因素,用齒輪進(jìn)行了安裝配合,盡量使得傳動(dòng)齒輪軸保持平行,傳動(dòng)部分輕松、流暢,不存在過大噪音,卡齒,丟數(shù)情況。如圖2.2所示。

▲ 圖圖2 2 編碼器安裝

 

2.2.4 舵機(jī)安裝結(jié)構(gòu)的安裝

考慮到主板的安裝方便以及車模轉(zhuǎn)向性能,我們對(duì)舵機(jī)安裝結(jié)構(gòu)進(jìn)行了較大的調(diào)整。比賽車模的轉(zhuǎn)向是通過舵機(jī)帶動(dòng)左右橫拉桿實(shí)現(xiàn)。舵機(jī)的轉(zhuǎn)動(dòng)速度和功率是一定,要想加快轉(zhuǎn)向機(jī)構(gòu)的響應(yīng)速度,唯一的辦法就是優(yōu)化舵機(jī)的安裝位置及其力矩延長桿的長度。由于功率是速度與力矩乘積的函數(shù),過分追求速度,必然要損失力矩,力矩太小也會(huì)造成轉(zhuǎn)向遲鈍,因此設(shè)計(jì)時(shí)就要綜合考慮轉(zhuǎn)向機(jī)構(gòu)響應(yīng)速度與舵機(jī)力矩之間的關(guān)系,通過優(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ù)模型車底盤的具體結(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)動(dòng)主要是靠舵機(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)彎半徑的變化也會(huì)很大,因而對(duì)多級(jí)的控制顯得尤為很重要。

前輪打角越小,隨著打角變化,轉(zhuǎn)彎半徑變化越明顯,即小轉(zhuǎn)角對(duì)半徑的變化會(huì)更加明顯,因而從前橋到舵機(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的對(duì)比,獲得兩種前輪方案對(duì)轉(zhuǎn)角的影響,從而選擇合適的方案。

▲ 圖2.6

 

2.2.6 攝像頭的安裝

為了降低整車重心,需要嚴(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)過實(shí)際測(cè)試后,該方案可行性得到了驗(yàn)證。

第三章 電路設(shè)計(jì)說明

3.1硬件方案設(shè)計(jì)

我們主要從系統(tǒng)的穩(wěn)定性、可靠性、高效性、實(shí)用性、簡潔等方面來考慮硬件的整體設(shè)計(jì)。從最初方案設(shè)定到最終方案的敲定,我們經(jīng)歷各種討論與大的改動(dòng)才有了如下的硬件方案。

可靠性與穩(wěn)定性是一個(gè)系統(tǒng)能夠完成預(yù)設(shè)功能的最大前提。在原理圖PCB的設(shè)計(jì)過程中,我們考慮到各個(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、硬件二值化。第一種方通過片內(nèi)AD轉(zhuǎn)換把連續(xù)的模擬視頻信號(hào)轉(zhuǎn)為數(shù)字信號(hào)存儲(chǔ)起來。第二種方法通過外部AD芯片直接把視頻信號(hào)轉(zhuǎn)為并行的數(shù)字信號(hào),而處理芯片只要通過普通IO來讀取存儲(chǔ);前者不需要外部電路但浪費(fèi)系統(tǒng)時(shí)間,對(duì)于主頻不高的處理芯片會(huì)造成很大負(fù)擔(dān)。而后者雖然精度高但浪費(fèi)過多的硬件資源。硬件二值化是通過比較器去捕捉視頻信號(hào)的跳變沿,這不僅減少了采集時(shí)間,也節(jié)約硬件資源,還省去了許多存儲(chǔ)空間。但硬件二值化靈活性差,在面對(duì)復(fù)雜光線環(huán)境,固定閾值無法根據(jù)需求動(dòng)態(tài)調(diào)整局部閾值,無法解決光線分布不均勻的賽道環(huán)境。數(shù)字信號(hào)雖然占用運(yùn)算資源,但在芯片運(yùn)算能力滿足的條件下,可以通過程序復(fù)雜算法應(yīng)對(duì)光線分布不均勻的賽道環(huán)境,適應(yīng)能力更強(qiáng)。

對(duì)于電機(jī)驅(qū)動(dòng),由于新C車模電機(jī)對(duì)驅(qū)動(dòng)性能要求高。我們?cè)O(shè)計(jì)了由單獨(dú)的驅(qū)動(dòng)芯片組成驅(qū)動(dòng)器,該驅(qū)動(dòng)器瞬間驅(qū)動(dòng)電流最大可以達(dá)到幾十安。

簡潔是指在滿足了可靠、高效的要求后,為了盡量減輕車模的負(fù)載,降低模型車的重心位置,應(yīng)使電路設(shè)計(jì)盡量簡潔,盡量減少元器件使用數(shù)量,縮小電路板面積,使電路部分重量輕,易于安裝。在設(shè)計(jì)完原理圖后,注重PCB板的布局,優(yōu)化電路的走線,整齊排列元器件,最終做到電路板的簡潔。

3.2傳感器選擇

3.2.1攝像頭選擇

CCD攝像頭具有對(duì)比度高、動(dòng)態(tài)特性好的優(yōu)點(diǎn),但需要工作在12V電壓下,對(duì)于整個(gè)系統(tǒng)來說過于耗電,而且CCD體積大,質(zhì)量重,會(huì)抬高車體的重心,這對(duì)于高速情況下小車的行駛非常不利。

與之相比,COMS攝像頭具有體積小、質(zhì)量輕、功耗低,圖像動(dòng)態(tài)特性好等優(yōu)點(diǎn),因?yàn)樾≤噷?duì)圖像的清晰度,分辨率要求并不高,所以選用COMS攝像頭。

對(duì)于攝像頭的選擇,主要考慮以下幾個(gè)參數(shù):

  1. 芯片大小自動(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ī)與攝像頭之間的交互。

智能車的攝像頭隊(duì)圖像的分辨率要求并不高,但是對(duì)動(dòng)態(tài)特性要求非常高,特別是小車在高速行駛?cè)霃澔蛘叱鰪澋臅r(shí)候,圖像變化較大,這就對(duì)攝像頭的自動(dòng)增益有較高的要求。一般來說,在攝像頭圖像發(fā)生突變時(shí),感光芯片本身會(huì)有一段適應(yīng)時(shí)間,這段時(shí)間要求越小越好。

我們先后試用了OV5116、MT9V022、OV7725、BF3003、MT9V136以及PC1030N等攝像頭,后四種均為彩色攝像頭,在經(jīng)過硬件二值化后可以取其有效信息,與黑白數(shù)字?jǐn)z像頭得到的信息類似。經(jīng)過對(duì)比,雖然后四種攝像頭圖像效果更好,動(dòng)態(tài)性能也更好,但是在彎道、回環(huán)等元素中由于自動(dòng)曝光導(dǎo)致得到賽道信息不準(zhǔn)確,在智能車應(yīng)用中MT9V022已足夠滿足需求,因此我們最終選擇了MT9V022數(shù)字?jǐn)z像頭。

3.2.2陀螺儀選擇

本屆大賽對(duì)陀螺儀的型號(hào)沒有限制,經(jīng)過挑選我們最終確定陀螺儀使用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è)谄嚹P蜕细郊恿司幋a器。經(jīng)過機(jī)械和電路性能的考慮和挑選,最終我們選用了ABI Mini增量式旋轉(zhuǎn)編碼器。

和其他元件相比,選用編碼器可以使電路更加完善,信號(hào)更加精確。編碼器功耗低,重量輕,抗沖擊抗震動(dòng),精度高,壽命長,非常實(shí)用。編碼器內(nèi)部無上拉電阻,因此編碼器接口出需要設(shè)計(jì)上拉電阻。同時(shí)為了保證波形的穩(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)的時(shí)間即占空比來改變輸出電壓的。

從其主要特點(diǎn)上看:線性電源技術(shù)很成熟,制作成本較低,可以達(dá)到很高的穩(wěn)定度,波紋也很小,而且沒有開關(guān)電源具有的干擾與噪音,開關(guān)電源效率高、損耗小、可以降壓也可以升壓,但是交流紋波稍大些。

電源模塊對(duì)于一個(gè)控制系統(tǒng)來說極其重要,關(guān)系到整個(gè)系統(tǒng)是否能夠正常工作,因此在設(shè)計(jì)控制系統(tǒng)時(shí)應(yīng)選好合適的電源模塊。競賽規(guī)則規(guī)定,比賽使用智能汽車競賽統(tǒng)一配發(fā)的標(biāo)準(zhǔn)車模用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ī)可以使用鋰電池直接供電,智能汽車電壓調(diào)節(jié)電路示例見圖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)定,滿足攝像頭在高速下的運(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í)際使用一段時(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和專用柵極驅(qū)動(dòng)芯片設(shè)計(jì)。市面上常見的集成H橋式電機(jī)驅(qū)動(dòng)芯片中,33886型芯片性能較為出色,該芯片具有完善的過流、欠壓、過溫保護(hù)等功能,內(nèi)部MOSFET導(dǎo)通電阻為120毫歐,具有最大5A的連續(xù)工作電流。使用集成芯片的電路設(shè)計(jì)簡單,可靠性高,但是性能受限。由于比賽電機(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)通電阻,大大減小了電樞回路總電阻。另外,專門設(shè)計(jì)的柵極驅(qū)動(dòng)電路可以提高M(jìn)OSFET的開關(guān)速度,使PWM控制方式的調(diào)制頻率可以得到提高,從而減少電樞電流脈動(dòng)。并且專用柵極驅(qū)動(dòng)芯片通常具有防同臂導(dǎo)通、硬件死區(qū)、欠電壓保護(hù)等功能,可以提高電路工作的可靠性。

1.專用柵極驅(qū)動(dòng)芯片的選擇:IR公司號(hào)稱功率半導(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à)格低廉容易采購,所以我們選擇它進(jìn)行設(shè)計(jì),如圖3.4所示。

▲ 圖3 6 IR2184應(yīng)用圖

 

2.MOSFET的選擇:選擇MOSFET時(shí)主要考慮的因素有:耐壓、導(dǎo)通內(nèi)阻和封裝。智能汽車電源是額定電壓為7.2V的電池組,由于電機(jī)工作時(shí)可能處于再生發(fā)電狀態(tài),所以驅(qū)動(dòng)部分的元件耐壓值最好取兩倍電源電壓值以上,即耐壓在16V以上。而導(dǎo)通內(nèi)阻則越小越好。封裝越大功率越大,即同樣導(dǎo)通電阻下通過電流更大,但封裝越大柵極電荷越大,會(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)下橋臂開通,上橋臂關(guān)斷時(shí)Vs腳的電位為下橋臂功率管Q2的飽和導(dǎo)通壓降,基本上接近地電位,此時(shí)Vcc通過自舉二極管D對(duì)自舉電容C2充電使其接近Vcc電壓.當(dāng)Q2關(guān)斷時(shí)Vs端的電壓就會(huì)升高,由于電容兩端的電壓不能突變,因此Vb端的電平接近于Vs和Vcc端電壓之和,而Vb和Vs之間的電壓還是接近Vcc電壓.當(dāng)Q2開通時(shí),C2作為一個(gè)浮動(dòng)的電壓源驅(qū)動(dòng)Q2;而C2在Q2開通其間損失的電荷在下一個(gè)周期又會(huì)得到補(bǔ)充,這種自舉供電方式就是利用Vs端的電平在高低電平之間不停地?cái)[動(dòng)來實(shí)現(xiàn)的。

由于自舉電路無需浮動(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)能阻斷直流干線上的高壓,其承受的電流是柵極電荷與開關(guān)頻率之積,為了減少電荷損失,應(yīng)選擇反向漏電流小的快恢復(fù)二極管,芯片內(nèi)高壓部分的供電都來自圖中自舉電容C2上的電荷;為保證高壓部分電路有足夠的能量供給應(yīng)適當(dāng)選取C2的大小.

MOSFET具有相似的門極特性,開通時(shí)需要在極短的時(shí)間內(nèi)向門極提供足夠的柵電荷,在自舉電容的充電路徑上,分布電感影響了充電的速率,下橋臂功率管的最窄導(dǎo)通時(shí)間應(yīng)保證自舉電容有足夠的電荷以滿足柵極所需要的電荷量再加上功率器件穩(wěn)態(tài)導(dǎo)通時(shí)漏電流所失去的電荷量.因此,從最窄導(dǎo)通時(shí)間為最小值考慮,自舉電容應(yīng)足夠小;綜上所述,在選擇自舉電容大小時(shí)應(yīng)考慮,既不能太大影響窄脈沖的驅(qū)動(dòng)性能;也不能太小影響寬脈沖的驅(qū)動(dòng)要求,應(yīng)從功率器件的工作頻率、開關(guān)速度、門極特性等方面進(jìn)行選擇、估算后調(diào)試而定。

3.3.3視頻處理模塊

我們的智能模型車自動(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)行采集,就必須通過SCCB設(shè)置數(shù)字?jǐn)z像頭的部分參數(shù)。

3.3.4 OpenArt mini

對(duì)于AI視覺組來說,要完成AI部分的識(shí)別二維碼、數(shù)字、水果、動(dòng)物等任務(wù),OpenArt mini是必不可少的。我們購買了逐飛的成品攝像頭,通過串口將識(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)核供電方案,屏蔽了沒有使用到的引腳。在軟件上,我們使用了龍邱公司提供的開源庫。

在調(diào)試過程之中,我們需要實(shí)時(shí)的了解與掌握一些車的運(yùn)行狀態(tài),比如說傳感器的狀態(tài),舵機(jī)的轉(zhuǎn)角等,調(diào)試時(shí)用OLED顯示屏將這些參數(shù)顯示出來,讓我們實(shí)時(shí)的監(jiān)測(cè)車的狀態(tài),從而做出判斷,這樣很大程度的方便了對(duì)車的調(diào)試。

第四章 智能車控制軟件

高效的軟件程序是智能車高速平穩(wěn)自動(dòng)尋線的基礎(chǔ)。我們?cè)O(shè)計(jì)的智能車系統(tǒng)采用CMOS攝像頭進(jìn)行賽道識(shí)別,圖像采集及校正處理就成了整個(gè)軟件的核心內(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ī)采集圖像信號(hào)后需要對(duì)其進(jìn)行處理以提取主要的賽道信息,同時(shí),由于交叉道、起點(diǎn)線的存在,光線、雜點(diǎn)、賽道遠(yuǎn)處圖像不清楚的干擾,圖像效果會(huì)大打折扣。因此,在軟件上必須排除干擾因素,對(duì)賽道進(jìn)行有效識(shí)別,并提供盡可能多的賽道信息供決策使用。

在圖像信號(hào)處理中我們提取的賽道信息主要包括:賽道兩側(cè)邊沿點(diǎn)位置、通過校正計(jì)算的賽道中心位置,中心點(diǎn)規(guī)劃面積,賽道變化幅度,賽道類型判別。

由于攝像頭自身的特性,圖像會(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)按從右到左的順序)記錄下來,保存到兩個(gè)二維數(shù)組里(分別表示上升沿、下降沿)。通過遍歷上升沿和下降沿可以完成賽道邊沿的提取。

攝像頭采集到幾種典型賽道圖像如圖4.1~圖4.4所示。

 

4.1.2賽道邊沿提取

邊沿提取算法的基本思想如下:

(1) 直接逐行掃描原始圖像,根據(jù)設(shè)定的閾值提取黑白跳變點(diǎn);

(2) 賽道寬度有一個(gè)范圍,在確定的賽道寬度范圍內(nèi)提取有效賽道邊沿,這樣可以濾除不在寬度范圍內(nèi)的干擾;

(3) 利用賽道的連續(xù)性,根據(jù)上一行白塊的位置和邊沿的位置來確定本行的邊沿點(diǎn);

(4) 求邊沿點(diǎn)時(shí),因?yàn)榻幍膱D像穩(wěn)定,遠(yuǎn)處圖像不穩(wěn)定,所以采用由近及遠(yuǎn)的辦法;

(5) 進(jìn)出十字的時(shí)候,通過校正計(jì)算出邊沿角度可較好的濾除十字并補(bǔ)線;

(6) 人字元素是整個(gè)賽道邊沿角度是尖銳角的部分,根據(jù)這個(gè)特征通過計(jì)算邊沿的角度以及內(nèi)側(cè)兩條邊沿包絡(luò)形成的面積可以有效的識(shí)別出人字;為了排除賽道方向的突變對(duì)控制造成干擾,將人字建模成為具有一定曲率的彎道,并進(jìn)行補(bǔ)線;

(7) 由于權(quá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)電視拍照(見圖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ù)較少時(shí)返回;若只有單邊有邊沿點(diǎn)數(shù)據(jù),則通過校正對(duì)單邊數(shù)據(jù)按法線平移賽道寬度一半的距離;當(dāng)能找到與一邊能匹配上的另一邊沿點(diǎn)時(shí)則直接求其中心作為中心點(diǎn)。推算完中心點(diǎn)后,對(duì)中心點(diǎn)進(jìn)行均勻化,方便之后的控制。計(jì)算出的中心點(diǎn)效果如下:

 

4.1.5攝像頭圖像入庫的處理

我們的策略是使用攝像頭后車入庫。車子接到球跑完賽道后半段,圖像在車庫前先識(shí)別出車庫的特征,判斷出當(dāng)前圖像為車庫后,尋找入庫補(bǔ)線的起始點(diǎn)和終止點(diǎn),然后調(diào)用補(bǔ)線函數(shù),在圖像校正域中補(bǔ)一條半徑為賽道寬度的四分之一圓弧,對(duì)左右邊界點(diǎn)進(jìn)行均勻化處理后,就得到了以上圖像。

4.1.6路徑選擇

根據(jù)往屆比賽以及本屆華北賽的經(jīng)驗(yàn),賽車能否以最短的時(shí)間完成比賽,與賽車的速度和路徑都有著密切的關(guān)系,因此,如何使賽車以一個(gè)最合理、最高效的路徑完成比賽是提高平均速度的關(guān)鍵。對(duì)于賽車路徑的優(yōu)化,我們從以下三個(gè)方面來完成:

1)增加視場(chǎng)的長度和寬度根據(jù)我們的分析,當(dāng)賽車采集到的圖像能夠覆蓋一個(gè)比較完整的S彎道時(shí),通過加權(quán)算法計(jì)算出來的中心就會(huì)處于視場(chǎng)中央附近,此時(shí)賽車會(huì)以一個(gè)比較好的路徑快速通過S彎道;相反,如果視場(chǎng)無法覆蓋一個(gè)完整的S彎道,賽車就會(huì)誤處理為普通的單向彎道,這樣賽車的速度就會(huì)大大減慢。因此,盡量增大視場(chǎng)的長度和寬度就很有必要了。

視場(chǎng)的長度與單片機(jī)可以處理的圖像行數(shù)成正比。我們采用由運(yùn)算放大器制作的模擬比較器進(jìn)行圖像二值化,處理速度較A/D轉(zhuǎn)換有了很大提高,大大增加了單片機(jī)處理的圖像行數(shù),最終處理行數(shù)為95行(隔3行提取一行),達(dá)到的視場(chǎng)長度為200多cm。為了增加視場(chǎng)寬度,增加每行采集的圖像點(diǎn)數(shù)之外,我們采用了廣角鏡頭,從而有效地增加了視場(chǎng)寬度。

2)優(yōu)化加權(quán)算法對(duì)整場(chǎng)有效行的中心求加權(quán)平均值的算法,在低速情況下可以有效地優(yōu)化賽車路徑,但在賽車速度提高到一定程度之后由于過彎時(shí)的側(cè)滑,路徑不是很好。而由于圖像分布不均,三分之二的行分布于車體前方40cm的范圍內(nèi),求出的加權(quán)平均值受車體近處的圖像影響較大,因此整場(chǎng)圖像求加權(quán)的算法對(duì)于高速情況下的路徑優(yōu)化效果不是很明顯。

為了解決這個(gè)問題,我們對(duì)于參與加權(quán)計(jì)算的圖像行數(shù)及權(quán)重進(jìn)行了處理,減小了車體前部50cm范圍內(nèi)的圖像參與加權(quán)的行數(shù)和權(quán)重,同時(shí)增大視場(chǎng)前部圖像的權(quán)重。在經(jīng)過長期調(diào)試之后,得到了一套比較合適的參數(shù),能夠有效優(yōu)化高速情況下的賽車路徑。

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)致車模容易出現(xiàn)掉輪甚至沖出賽道的現(xiàn)象。

為了解決這個(gè)問題,我們利用數(shù)學(xué)方法求出了中心線的折點(diǎn),對(duì)折點(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ì)算公式如式如下:

 

但這個(gè)公式在圖4.18中存在一些問題,對(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ì)賽道類型的粗略判斷。

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值減小為原來的一半,在偏離較大的其他情況,則保持Kp原來的大小。取得的實(shí)際效果在彎道較多、直道較短的賽道上,車子轉(zhuǎn)彎流暢,直道也能基本保持直線加速,車身左右抖動(dòng)較小。

在提高車速至高速(2.5m/s以上)時(shí),我們發(fā)現(xiàn)車身在直道上特別是長直道上時(shí),車身左右震蕩比較嚴(yán)重,究其原因,硬件上,我們認(rèn)為首先是輪軸本身的松動(dòng)并且轉(zhuǎn)向機(jī)構(gòu)左右轉(zhuǎn)向性能可能存在不對(duì)稱性,設(shè)計(jì)有待改進(jìn),軟件上,則是自身編寫的PID舵機(jī)控制還不夠精細(xì),動(dòng)態(tài)適應(yīng)能力不夠。在從彎道到直道的過程中,由于小車尋賽道本質(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)致車身在直道上左右震蕩,這種震蕩嚴(yán)重影響了車的整體速度。此外,我們對(duì)S彎的控制也過于簡單,沒有特別的處理,導(dǎo)致車在跑S彎的時(shí)候,幾乎完全沿彎走,沒有明顯的直沖S彎的效果,原因是在前瞻有限的情況下,在采集的圖像中S彎入彎和普通彎道是一樣的,導(dǎo)致小車開始轉(zhuǎn)向,由于中間一直檢測(cè)到彎道,小車會(huì)沿S彎道左右震蕩,同時(shí)相應(yīng)會(huì)減速。

經(jīng)過反復(fù)調(diào)試PID參數(shù),我們發(fā)現(xiàn)只調(diào)整PID參數(shù)很難使車在跑S彎和長直道時(shí)都選擇最佳路徑,同時(shí)不影響在普通彎處的轉(zhuǎn)向。這就要求系統(tǒng)能夠智能地識(shí)別出當(dāng)前賽道是哪種類型,我們沒有選擇賽道記憶等方法,而采取在不降低遠(yuǎn)處分辨率的情況下,盡量讓攝像頭看得更遠(yuǎn)的方法。最后,在MCU超頻的條件下,每行圖像采集了210個(gè)點(diǎn),成功地增大了CMOS攝像頭采集圖像的分辨率。在透視問題影響遠(yuǎn)處分辨率的制約下,使視場(chǎng)長度(視場(chǎng)最遠(yuǎn)處和最近處的距離)達(dá)到2m多,最遠(yuǎn)前瞻達(dá)到2.20m,足以覆蓋賽道中的各種賽道類型,使得我們?cè)诔绦蛑胁]有加入了對(duì)S彎、長直道以及大彎進(jìn)行可靠識(shí)別的算法,僅僅根據(jù)中心位置動(dòng)態(tài)改變PID參數(shù),就得到了較好的控制效果。

經(jīng)過反復(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置零的情況下,我們通過合理調(diào)節(jié)Kp,發(fā)現(xiàn)車能夠在直線高速行駛時(shí)仍能保持車身非常穩(wěn)定,沒有震蕩,基本沒有必要使用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)過反復(fù)調(diào)試,將每場(chǎng)圖像得到的黑線位置與速度PID參考速度值構(gòu)成二次曲線關(guān)系。在實(shí)際測(cè)試中,我們發(fā)現(xiàn)小車直道和彎道相互過渡時(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。

但是,該方法存在一定的局限。一方面是車在從彎道入直道時(shí)加速和從直道入彎道時(shí)減速達(dá)不到最好的控制效果,彎道入直道減速不夠快速,直道入彎道加速的時(shí)機(jī)不夠及時(shí)。因此我們做了進(jìn)一步的改進(jìn),根據(jù)入彎時(shí)黑線位置的特點(diǎn)動(dòng)態(tài)改變二次曲線中最高點(diǎn)(直道的最高速度)和最低點(diǎn)(彎道的最低速度)的大小,結(jié)果表明,控制效果更好。另一方面是沒有考慮到實(shí)際比賽中長直道急速?zèng)_刺的情況,賽前在程序中人為設(shè)定直線速度不夠靈活不夠合理,所以我們?cè)诔绦蛑懈鶕?jù)賽道狀態(tài)動(dòng)態(tài)提高了直線速度g_HighestSpeed,使車能夠在長直道上充分發(fā)揮潛能。

4.6 OpenArtMini模塊控制

對(duì)于視覺識(shí)別部分,我們采用了逐飛科技的產(chǎn)品OpenArtMini套件,部署了簡單的卷積神經(jīng)網(wǎng)絡(luò),并通過tflite進(jìn)行模型的量化,最終部署到OpenArtMini上,實(shí)現(xiàn)了對(duì)動(dòng)物、水果、二維碼、數(shù)字的識(shí)別。同時(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ā)的一個(gè)集成開發(fā)環(huán)境(下面簡稱IAR EWARM)。比較其他的ARM 開發(fā)環(huán)境,IAR EWARM 具有入門容易、使用方便和代碼緊湊等特點(diǎn)。

EWARM 中包含一個(gè)全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM 內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。從中可以了解和評(píng)估IAR EWARM 的功能和使用方法。

5.2上位機(jī)圖像顯示

5.2.1C#靜態(tài)上位機(jī)

為了觀察攝像頭采集圖像的直觀效果,我們還采用了VS2012的C#作為輔助開發(fā)調(diào)試工具。

我們?cè)O(shè)計(jì)的智能車系統(tǒng)采用CMOS攝像頭采集賽道信息,分析處理之后用來編寫黑線識(shí)別及控制算法。雖然直接將攝像頭通過視頻接口連接到電視可觀察到攝像頭所采的圖像,但對(duì)于圖像分析不夠方便,且無法實(shí)時(shí)精確地反饋出一些特定信息。我們?cè)赩S2012的C#環(huán)境下開發(fā)了一套基于PC機(jī)平臺(tái)的圖像顯示與處理程序,可完成賽道顯示及相關(guān)參數(shù)的實(shí)時(shí)反饋。

顯示區(qū)域可原始圖像及處理后的中心點(diǎn),這為控制算法的編寫提供了非常好的依據(jù),也大大減少了調(diào)試者的工作量。

5.2.2MFC SD卡上位機(jī)

我們?cè)赩S2012的C++環(huán)境下用MFC編寫了SD卡上位機(jī),每次模型車跑完全程之后,通過該上位機(jī)程序可得到運(yùn)動(dòng)過程中的每一場(chǎng)圖像及相關(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)動(dòng)過程中,記錄下的典型賽道圖像,如下圖5.5~5.9所示。

 

5.3SD卡模塊

5.3.1SD卡介紹

SD卡( Secure Digital Memory Card )是一種基于半導(dǎo)體快閃存的新一代記憶設(shè)備。由日本松下、東芝及美國SanDisk公司于1999年8月共同開發(fā)研制,其大小猶如一張郵票,重量只有2克,卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性。SD卡的數(shù)據(jù)存儲(chǔ)管理可以類似于硬盤的磁盤管理系統(tǒng),以FAT格式來存儲(chǔ)數(shù)據(jù)。

SD卡的接口支持SD模式和SPI模式,主機(jī)系統(tǒng)可以選擇其中任一模式。SPI模式允許簡單通用的SPI通道接口,這種模式相對(duì)于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ù)傳輸: 同步時(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í)行寫操作時(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卡的上電初始化過程和對(duì)SD卡的讀寫操作。對(duì)SD卡初始化程序流程如圖5.10所示。

SD卡上電后,主機(jī)必須先向SD卡發(fā)送74個(gè)時(shí)鐘周期,以完成SD卡上電過程。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卡已完成初始化過程,準(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個(gè)陀螺儀 1個(gè)編碼器 2個(gè)OpenArt mini 1個(gè)除了車模原有的驅(qū)動(dòng)電機(jī)、舵機(jī)之外伺服電機(jī)個(gè)數(shù) 1個(gè)賽道信息檢測(cè) 視野范圍(近瞻/遠(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)在這個(gè)設(shè)計(jì)方案。

在此份技術(shù)報(bào)告中,我們主要介紹了準(zhǔn)備比賽時(shí)的基本思路,包括機(jī)械、電路以及最重要的控制算法的創(chuàng)新思想。在機(jī)械結(jié)構(gòu)方面,我們分析了整車質(zhì)量分布,調(diào)整重心位置,優(yōu)化機(jī)械結(jié)構(gòu)。在電路方面,我們以模塊形式分類,在最小系統(tǒng)、主板、電機(jī)驅(qū)動(dòng)等模塊分別設(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)整車速,做到直道加速、彎道減速,保證在最短時(shí)間內(nèi)跑完全程。

在這幾個(gè)月的備戰(zhàn)過程中,場(chǎng)地和經(jīng)費(fèi)方面都得到了學(xué)校和學(xué)院的大力支持,在此特別感謝一直支持和關(guān)注智能車比賽的學(xué)校和學(xué)院領(lǐng)導(dǎo)以及各位指導(dǎo)老師、指導(dǎo)學(xué)長,同時(shí)也感謝比賽組委會(huì)能組織這樣一項(xiàng)有意義的比賽。

現(xiàn)在,面對(duì)即將到來的大賽,在歷時(shí)近五個(gè)月的充分準(zhǔn)備以及華北賽的考驗(yàn)之后,我們有信心在全國比賽中取得優(yōu)異成績。也許我們的知識(shí)還不夠豐富,考慮問題也不夠全面,但是這份技術(shù)報(bào)告作為我們小組辛勤汗水的結(jié)晶,凝聚著我們小組每個(gè)人的心血和智慧,隨著它的誕生,這份經(jīng)驗(yàn)將永伴我們一生,成為我們最珍貴的回憶。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號(hào)TsinghuaJoking主筆。清華大學(xué)自動(dòng)化系教師,研究興趣范圍包括自動(dòng)控制、智能信息處理、嵌入式電子系統(tǒng)等。全國大學(xué)生智能汽車競賽秘書處主任,技術(shù)組組長,網(wǎng)稱“卓大大”。