蘇寧馨,張自強(qiáng),余浩
(安徽新華學(xué)院電子通信工程學(xué)院,安徽合肥230081)
近年來隨著人工智能,汽車制造以及通信技術(shù)的交織融合,使得導(dǎo)航系統(tǒng)的智能化成為行業(yè)發(fā)展的必然趨勢(shì)。智能車與四旋翼飛行器相融合的導(dǎo)航避障系統(tǒng)的設(shè)計(jì)也成為現(xiàn)如今行業(yè)技術(shù)研究的重要目標(biāo)和方向,較之傳統(tǒng)行業(yè)中智能車獨(dú)立導(dǎo)航避障系統(tǒng),與四旋翼飛行器相融合后,無疑擴(kuò)大了航線視野的范圍和廣度,同時(shí)也揭開了空中與地面相結(jié)合的導(dǎo)航避障設(shè)計(jì)的新局面和新思路。目前國內(nèi)外對(duì)四旋翼飛行器機(jī)械結(jié)構(gòu),飛行模式以及智能車自動(dòng)導(dǎo)航避障問題的研究已取得了較為豐富的成果,本系統(tǒng)設(shè)計(jì)中融合了兩者的發(fā)展優(yōu)勢(shì),在未來導(dǎo)航避障的應(yīng)用領(lǐng)域上必然帶來新的突破[1]。
智能車四旋翼導(dǎo)航系統(tǒng)的設(shè)計(jì)主體主要包括:智能車和四旋翼飛行器兩大部分:(1)飛行器部分采用大疆精靈飛行器,并搭載STM32F767IGT圖像處理單元作為飛行器平臺(tái)的主要核心模塊。(2)智能車部分則采用新CI車模,并使用32位微控制器MK60FX512VLQ15作為核心控制單元,同時(shí)結(jié)合速度編碼器、紅外超聲波測距、陀螺儀、電機(jī)、陀機(jī)等其他硬件部分,共同構(gòu)造智能車部分[2]。系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。
系統(tǒng)工作原理是:系統(tǒng)空中部分先是通過四旋翼飛行器上安裝的紅外攝像頭MT9V032采集路面信息,經(jīng)STM32F767圖像處理單元進(jìn)行數(shù)據(jù)處理,使用NRF2.4G無線通訊模塊傳輸至智能車。智能車在接收了飛行器平臺(tái)數(shù)據(jù)后,進(jìn)行陀螺儀角度采集和計(jì)算、紅外超聲波避障計(jì)算、電機(jī)驅(qū)動(dòng)輸出等系統(tǒng)控制流程,實(shí)現(xiàn)一套具有識(shí)別目標(biāo)位置,自主路徑規(guī)劃,行駛速度合理選擇的導(dǎo)航及避障系統(tǒng)的設(shè)計(jì)[2]。
圖1 系統(tǒng)總體設(shè)計(jì)框圖
NRF24L01無線傳感模塊是系統(tǒng)無線數(shù)據(jù)傳輸和接受的重要橋梁,是聯(lián)系空中和地面數(shù)據(jù)通信的重要紐帶,也是區(qū)別傳統(tǒng)單車導(dǎo)航避障系統(tǒng)設(shè)計(jì)的一大特色。在飛行器平臺(tái)和智能車模塊中都需要使用。NRF24L01無線傳感模塊在本系統(tǒng)中接收和傳輸數(shù)據(jù)的主要工作流程是:當(dāng)飛行平臺(tái)將空中采集的圖像信息進(jìn)行數(shù)據(jù)轉(zhuǎn)換后,通過NRF24L01發(fā)射給小車時(shí),需要先將飛行器平臺(tái)上的NRF24L01配置為發(fā)射模式,接著把接收節(jié)點(diǎn)地址TX_ADDR和有效數(shù)據(jù)TX_PLD按照時(shí)序,由SPI口寫入NRF24L01緩存區(qū),TX_PLD必須在CSN為低時(shí)連續(xù)寫入,而TX_ADDR在發(fā)射時(shí)寫入一次即可。小車上安裝的NRF24L01無線模塊這時(shí)則設(shè)置成接受模式,接收空中NRF24L01模塊發(fā)來的信息,傳輸給小車的主控制單元MK60FX512VLQ15,并進(jìn)行后續(xù)的數(shù)據(jù)處理。NRF24L01無線傳輸模塊的電路圖如圖2所示。
2.2.1 STM32F767 核心處理器
飛行平臺(tái)上使用的STM32F767核心板,其板載資源十分豐富,能夠獨(dú)立使用并應(yīng)用在不同領(lǐng)域的電子自動(dòng)化設(shè)計(jì)中。其主頻達(dá)到216MHZ,并配有dcmi接口,可以提高采集效率。STM32F767核心板的性能穩(wěn)定,接口豐富,設(shè)計(jì)靈活,其采用4層板設(shè)計(jì),單獨(dú)地層和電源層,傳輸和處理數(shù)據(jù)速度快,穩(wěn)定性高,運(yùn)行可靠。在本系統(tǒng)設(shè)計(jì)中其主要承擔(dān)的任務(wù)是:在飛行平臺(tái)上,處理來自紅外攝像頭MT9V032采集的路面圖像數(shù)據(jù),并結(jié)合NRF24L01無線傳感模塊,將數(shù)據(jù)傳輸給地面的智能車。STM32F767核心板如圖3所示。
圖2 NRF24L01無線收發(fā)模塊
圖3 STM32F767核心板
2.2.2 四旋翼飛行器設(shè)計(jì)
四旋翼飛行平臺(tái)上的模塊主要有攝像頭數(shù)據(jù)采集、處理和無線傳輸單元。設(shè)計(jì)中飛行器平臺(tái)的圖像采集和處理模塊對(duì)整個(gè)導(dǎo)航避障系統(tǒng)工作的穩(wěn)定性和高效性起著重要的影響[3]。設(shè)計(jì)過程中綜合對(duì)比后采用了STM32F7+紅外廣角攝像頭MT9V032攝像頭的方案。
飛行器上采用紅外廣角攝像頭,其加入的紅外濾光片,既能夠減少自然光的干擾,減小誤判;又能夠提高分辨率,以保證飛行平臺(tái)能夠采集并傳輸最為優(yōu)質(zhì)的圖像畫面及數(shù)據(jù)分析。本系統(tǒng)中飛行平臺(tái)圖像處理主控板設(shè)計(jì)如圖4所示。
2.3.1 MK60FX512VLQ15 微處理器
MK60FX512VLQ15現(xiàn)如今是K60系列微控制器中應(yīng)用最為廣泛的一款芯片。它具有豐富的模擬、通信、定時(shí)和控制外設(shè)。這款微處理器能夠提供可選的單精度浮點(diǎn)單元、NAND閃存控制器和DRAM控制器,很多引腳都是功能復(fù)用引腳。在系統(tǒng)智能車平臺(tái)的設(shè)計(jì)中,我們將其選為主控制單元使用,它將結(jié)合NRF2.4G無線通訊模塊,速度傳感器、車模角度傳感器、測距傳感器等電路,完成一系列的數(shù)據(jù)傳輸及處理工作,最終控制智能車實(shí)現(xiàn)導(dǎo)航,避障功能。智能車中使用的MK60FX512VLQ15核心板如圖5所示。
圖4 飛行平臺(tái)圖像處理主控板設(shè)計(jì)
圖5 MK60FX512VLQ15核心板
2.3.2 智能車平臺(tái)設(shè)計(jì)
系統(tǒng)智能車模塊主要完成航線行駛和避障兩項(xiàng)任務(wù),平臺(tái)主要有主控制板和電機(jī)驅(qū)動(dòng)板。為了減小電機(jī)驅(qū)動(dòng)電路帶來的干擾,設(shè)計(jì)中將控制部分和電機(jī)驅(qū)動(dòng)分開來完成。主控制板上主要完成信號(hào)采集、處理和電機(jī)控制作用[4]。系統(tǒng)智能車部分主要包括:電源穩(wěn)壓電路、NRF24L01無線接口電路、速度編碼器電路、電機(jī)驅(qū)動(dòng)電路等。結(jié)合各模塊電路的設(shè)計(jì)后,智能車硬件完成實(shí)物如圖6所示。
智能車模塊中的傳感器部分是系統(tǒng)實(shí)現(xiàn)導(dǎo)航避障功能的重要保障。智能車傳感器的分布根據(jù)車模結(jié)構(gòu)及機(jī)械結(jié)構(gòu)理論分析,結(jié)合系統(tǒng)實(shí)際需求而定,主要包括:速度傳感器、車模角度傳感器、測距傳感器等。速度編碼器我們采用了M-T3D2512線編碼器模塊,在系統(tǒng)工作中主要控制和反應(yīng)電機(jī)的轉(zhuǎn)速。L3G4200D三軸數(shù)字陀螺儀傳感器模塊用于測量智能車的角速度,以判斷車的運(yùn)動(dòng)狀態(tài),從而為智能車制定出較優(yōu)的路徑規(guī)劃。防陀螺儀電路如圖7所示。
圖6 智能車硬件設(shè)計(jì)實(shí)物圖
圖7 陀螺儀電路
系統(tǒng)測距和避障模塊采用了三個(gè)超聲波與兩個(gè)GP2Y0A21YK0F紅外測距傳感器。紅外模塊檢測距離時(shí),電壓將會(huì)發(fā)生明顯變化,通過模數(shù)轉(zhuǎn)換后將數(shù)據(jù)傳輸給主控芯片進(jìn)行處理分析,以便小車識(shí)別障礙物及距離??紤]到如果行駛區(qū)域不平整或者檢測到點(diǎn)亮的信標(biāo)燈時(shí),信標(biāo)燈的光源對(duì)紅外對(duì)管有一定的干擾,在系統(tǒng)中又添加了超聲波模塊輔助檢測,以減少和排除干擾[3]。
電機(jī)驅(qū)動(dòng)使用的是全橋式MOS管驅(qū)動(dòng)集成電路,IR7843理論允許最大電流為161A,完全可以滿足智能車設(shè)計(jì)電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)等基本操作。電機(jī)驅(qū)動(dòng)電路如圖8所示。
圖8 電機(jī)驅(qū)動(dòng)電路
高效精良的軟件設(shè)計(jì)是系統(tǒng)平穩(wěn)運(yùn)行的基礎(chǔ)。智能車四旋翼導(dǎo)航避障系統(tǒng)中飛行器平臺(tái)采用的是紅外廣角攝像頭MT9V032采集路面圖像信息,圖像采集及校正處理就成了軟件設(shè)計(jì)的核心內(nèi)容,設(shè)計(jì)過程中這部分工作主要采用Matlab軟件進(jìn)行圖像校正工作。系統(tǒng)導(dǎo)航避障功能的整個(gè)程序設(shè)計(jì)開發(fā)是在IAR Embedded Workbench IDE下進(jìn)行。系統(tǒng)軟件設(shè)計(jì)部分主要分為如下幾個(gè)方面。
3.1.1 原始圖像的采集和校正
飛行平臺(tái)利用廣角攝像頭MT9V032提取的圖像信息主要包括:目標(biāo)中心點(diǎn)坐標(biāo)、車頭目標(biāo)中心點(diǎn)坐標(biāo)以及車尾中心點(diǎn)坐標(biāo)。系統(tǒng)圖像采集時(shí)會(huì)出現(xiàn)邊緣雜點(diǎn)、邊緣線,光線、遠(yuǎn)處圖像不清楚以及圖像變形等問題;除此之外使用的廣角攝像頭也會(huì)造成圖像產(chǎn)生的桶形失真相對(duì)嚴(yán)重,并且沿著鏡頭半徑方向向邊緣移動(dòng),畸變?cè)絹碓絿?yán)重,這使得攝像頭看到的信息不真實(shí)。
為了解決上述問題,系統(tǒng)利用了Matlab軟件進(jìn)行圖像校正。攝像頭采集的原始圖像是一個(gè)二維數(shù)據(jù)矩陣,矩陣的每一個(gè)元素對(duì)應(yīng)一個(gè)像素點(diǎn)。由于桶形變換要操作每一個(gè)像素點(diǎn),運(yùn)算數(shù)據(jù)龐大,在軟件設(shè)計(jì)中使用Matlab生成了一份桶形畸變校正表,主控制芯片只要查表找點(diǎn)即可,節(jié)約了大量時(shí)間,處理完的圖像更加趨向于真實(shí)情況,圖像處理實(shí)測前后對(duì)比如圖9所示。
圖9 攝像頭采集的原始圖像(左)與變換后的圖像(右)對(duì)比
3.1.2 目標(biāo)識(shí)別
目標(biāo)識(shí)別方面通過STM32F767核心處理器尋找每一行的白色區(qū)域(即目標(biāo)區(qū)域)的中心點(diǎn)及長度,然后與上一行的白色區(qū)域比較是否為同一區(qū)域,如果“是”便累加長度,中心點(diǎn)求平均,如果“否”便創(chuàng)立新的目標(biāo)區(qū)域。這樣逐行掃描下去直到結(jié)束,為了提高掃描速度,設(shè)計(jì)中將逐行掃描更改為跳躍式掃描,只需要掃描原始圖像的一半數(shù)據(jù)量,減少了一半的掃描時(shí)間,同時(shí)又濾除了一些孤立的雜點(diǎn)[5]。目標(biāo)識(shí)別流程圖如圖10所示。
圖10 目標(biāo)識(shí)別流程圖
3.1.3 路徑規(guī)劃
小車在完成了識(shí)別目標(biāo)之后,能否以最短的時(shí)間到達(dá)目標(biāo)位置,與小車的速度和路徑都有著密切的關(guān)系,因此,以一個(gè)最合理、最高效的路徑完成行駛是最為關(guān)鍵的。對(duì)于路徑的優(yōu)化,我們從以下兩個(gè)方面來完成:一是增加視場的長度和寬度。根據(jù)實(shí)驗(yàn)分析,當(dāng)飛行器飛得較高,采集到的圖像視場較寬廣時(shí),通過攝像頭采集到的目標(biāo)圖像產(chǎn)生的畸變較小,小車會(huì)以一個(gè)比較好的路徑駛向目標(biāo);二是相對(duì)角度處理。飛機(jī)平臺(tái)在采集圖像信息處理并傳輸給小車時(shí),采集到的信息只是三個(gè)從小到大排序的坐標(biāo)信息,以及檢測到目標(biāo)的數(shù)量信息。小車通過判斷最小的信標(biāo)與另外兩個(gè)信標(biāo)的距離,判斷哪個(gè)是信標(biāo)燈,哪個(gè)是車頭,然后算出車尾與車頭相對(duì)圖像的角度以及車尾與信標(biāo)燈相對(duì)圖像的角度,并將兩個(gè)角度作差處理,然后?。?80到+180度范圍,從而算出小車與信標(biāo)的角度差。
在智能車的轉(zhuǎn)向和速度控制方面使用了經(jīng)典的PID控制算法,并配合理論計(jì)算和實(shí)際參數(shù)補(bǔ)償?shù)霓k法,使智能車能夠穩(wěn)定快速行駛并避障。根據(jù)舵機(jī)和電機(jī)工作內(nèi)容不同,分別加以說明。法
3.2.1 舵機(jī)控制算法
系統(tǒng)中利用攝像頭采集到的圖像數(shù)據(jù),計(jì)算出來的角度是存在一定的偏差,在數(shù)據(jù)計(jì)算時(shí)采用將車模位置分段,由于舵機(jī)存在比較大的滯后,采用了PD進(jìn)行閉環(huán),讓舵機(jī)可以更快的響應(yīng),在轉(zhuǎn)向時(shí),根據(jù)不同的偏差,給定不同的kp值和τ值[6-7]。PD算法參考公式1所示。
3.2.2 電機(jī)控制算法
小車行駛途中,根據(jù)不同的路況,攝像頭采集到的圖像和計(jì)算出來的每個(gè)角度的偏差是不同的,實(shí)際設(shè)計(jì)過程中可以根據(jù)不同的偏差,將路況進(jìn)行分段考慮,以給定適合的速度。車頭朝向信標(biāo)偏差很小時(shí),可以給一個(gè)較快的速度,使小車在直道上加速;當(dāng)偏差越來越大時(shí),適當(dāng)?shù)慕档托≤嚨乃俣?,以便讓小車完成避障或轉(zhuǎn)彎的工作。在電機(jī)控制算法中使用了PID算法進(jìn)行閉環(huán),具體算法公式參考公式(2),在多次實(shí)驗(yàn)觀測中不斷改變kp、τ和Ti,以使小車行駛速度根據(jù)路況達(dá)到最優(yōu)狀況[6-7]。
在系統(tǒng)的實(shí)現(xiàn)中,采用在路面放置不同的信標(biāo)小燈,每點(diǎn)亮一個(gè)小燈,就告知小車目標(biāo)位置,在對(duì)避障功能的驗(yàn)證中,把暫時(shí)不點(diǎn)亮的信標(biāo)燈作為小車運(yùn)動(dòng)過程中的阻礙,這種做法還能夠檢測小車對(duì)光感的適應(yīng)能力和反應(yīng)速度。下面分別介紹系統(tǒng)的實(shí)驗(yàn)結(jié)果:
在實(shí)驗(yàn)場地上,放置了3個(gè)信標(biāo)小燈,其中點(diǎn)亮的小燈作為目標(biāo)燈,小車會(huì)根據(jù)飛行器傳輸過來的數(shù)據(jù)進(jìn)行目標(biāo)識(shí)別路徑規(guī)劃,朝著信標(biāo)燈行駛。同時(shí)智能車還可以通過路面信息,調(diào)整速度,以區(qū)別直道和彎道的行使?fàn)顟B(tài),如圖11和圖12所示。
圖11 智能車識(shí)別目標(biāo)進(jìn)行路徑規(guī)劃
圖12 智能車逐漸駛向目標(biāo)完成系統(tǒng)導(dǎo)航
在完成第一盞燈的目標(biāo)識(shí)別后,將其熄滅,并改變亮燈的位置,點(diǎn)亮最左邊的小燈,而中間的信標(biāo)燈則看為障礙物,系統(tǒng)會(huì)通過目標(biāo)識(shí)別和計(jì)算路徑,自動(dòng)完成避障并駛向新的目標(biāo)燈,如圖13和圖14所示。
圖13 智能車識(shí)別新的目標(biāo)
圖14 智能車成功避障駛向新信標(biāo)位置
智能車與四旋翼飛行器相融合的導(dǎo)航避障系統(tǒng),硬件部分采用MK60FX512VLQ15微控制器作為智能車主控制單元,STM32F767IGT作為飛行平臺(tái)圖像處理單元,并結(jié)合NRF24L01無線傳輸模塊,紅外線超聲波傳感模塊,舵機(jī)控制模塊,電機(jī)驅(qū)動(dòng)模塊等關(guān)鍵電路,共同完成系統(tǒng)核心電路的設(shè)計(jì)[8]。軟件設(shè)計(jì)部分利用Matlab軟件對(duì)原始圖像進(jìn)行了處理和校正,整個(gè)程序設(shè)計(jì)開發(fā)在 IAR Embedded Workbench IDE下進(jìn)行,智能車的轉(zhuǎn)向和速度控制方面,利用了經(jīng)典PID控制算法,并配合理論計(jì)算和實(shí)際參數(shù)補(bǔ)償?shù)霓k法。系統(tǒng)在完成調(diào)試和測試之后,運(yùn)行平穩(wěn)靈活,導(dǎo)航避障功能完整實(shí)現(xiàn)。該系統(tǒng)的設(shè)計(jì)方案和實(shí)現(xiàn)成果獲得了2017年第十二屆全國大學(xué)生“恩智浦”杯智能汽車競賽中,創(chuàng)意組國賽一等獎(jiǎng)的驕人成績。