李明亮,孫 寧
(南京林業(yè)大學(xué) 汽車(chē)與交通工程學(xué)院,南京210037)
隨著社會(huì)發(fā)展,汽車(chē)保有量不斷增加,越發(fā)嚴(yán)重的交通負(fù)荷問(wèn)題使得智能交通和智能汽車(chē)成為研究熱點(diǎn)[1]。智能車(chē)可以說(shuō)是智能汽車(chē)的微縮版,其中涉及的領(lǐng)域很多,包括計(jì)算機(jī)、人工智能、通訊等各個(gè)方面的技術(shù)[2]。智能車(chē)技術(shù)的發(fā)展使得車(chē)輛能夠適應(yīng)更加復(fù)雜工作環(huán)境,同時(shí)避開(kāi)障礙物,選擇合理的路徑安全穩(wěn)定的行駛,在提高交通安全與效率方面有著重大意義[3]。
本文的智能車(chē)系統(tǒng)是基于飛思卡爾K60處理器,結(jié)合激光雷達(dá)RPLIDAR-A1識(shí)別道路障礙、電機(jī)控制車(chē)速實(shí)現(xiàn)差速轉(zhuǎn)向,最終可以在道路上自主行駛,并可以實(shí)現(xiàn)自動(dòng)導(dǎo)航、智能避障、路徑規(guī)劃等功能。
本文設(shè)計(jì)的智能車(chē)系統(tǒng)由上位機(jī)和下位機(jī)組成,上位機(jī)主要為PC端的遙感控制模塊,用于給下位機(jī)智能車(chē)發(fā)送前進(jìn)、后退及轉(zhuǎn)向等控制指令,上位機(jī)結(jié)構(gòu)較為簡(jiǎn)單,不做詳細(xì)介紹;下位機(jī)是由供電模塊、K60P144M150SF3控制模塊、顯示器模塊、WIFI模塊、雷達(dá)模塊構(gòu)成。主控制器通過(guò)WIFI模塊接收上位機(jī)的控制指令來(lái)控制驅(qū)動(dòng)模塊的工作,雷達(dá)模塊將收集的信息發(fā)送給主控制器并進(jìn)行處理來(lái)規(guī)劃移動(dòng)路徑并實(shí)現(xiàn)移動(dòng)、躲避障礙物的功能,主控制器與顯示器直接相連,用于控制顯示器模塊的顯示。系統(tǒng)設(shè)計(jì)框圖如圖1所示。

圖1 系統(tǒng)設(shè)計(jì)框圖Fig.1 System design block diagram
本系統(tǒng)采用電壓為12 V的蓄電池供電,K60芯片、WiFi模塊及顯示模塊正常工作電壓為3.3 V的直流電壓,因此需要將蓄電池12 V電壓降低到3.3 V。此外,驅(qū)動(dòng)模塊、雷達(dá)模塊需要5 V電壓供電,雷達(dá)舵機(jī)使用9 V電壓供電,蓄電池的12 V電壓可直接為電機(jī)供電,供電配置如圖2所示。在供電模塊的設(shè)計(jì)上,先通過(guò)MC7809將12 V電壓降低到9 V,再經(jīng)過(guò)LM7805降壓到5 V為外接模塊供電,最后通過(guò)LM3940將5 V電壓降低到3.3 V為單片機(jī)供電。

圖2 供電配置圖Fig.2 Power supply configuration diagram
控制模塊以K60P144M150SF3芯片為控制核心,K60單片機(jī)強(qiáng)大的功能使控制系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單,運(yùn)行速度快等特點(diǎn)[4]。K60采用2套電源系統(tǒng),VDD是單片機(jī)數(shù)字電源,VDDA是模擬電源,VDD電源經(jīng)過(guò)電感濾波之后再供給VDDA電源,起到抗干擾作用。MCU芯片使用多組電源引腳分別為內(nèi)部電壓調(diào)節(jié)器、I/O引腳驅(qū)動(dòng)、A/D轉(zhuǎn)換電路等模塊供電,內(nèi)部電壓調(diào)節(jié)器為內(nèi)核和振蕩器等供電。K60有A口26個(gè),B口、C口各20個(gè),D口16個(gè),E口18個(gè),共100個(gè)I/O引腳,且多數(shù)引腳具有多個(gè)功能。K60的時(shí)鐘電路也分為2個(gè)部分,一個(gè)是芯片的主晶振,用于產(chǎn)生芯片和外設(shè)所需要的工作時(shí)鐘;另一個(gè)是實(shí)時(shí)時(shí)鐘RTC的時(shí)鐘電路,實(shí)時(shí)時(shí)鐘提供一套計(jì)數(shù)器,在系統(tǒng)上電和關(guān)閉操作時(shí)對(duì)時(shí)間進(jìn)行測(cè)量,RTC消耗的功率非常低[5]。復(fù)位電路默認(rèn)狀態(tài)下,復(fù)位引腳RESET通過(guò)一個(gè)4.7 K的電阻上拉到3.3 V電源,處于高電平狀態(tài),此時(shí)不會(huì)復(fù)位;當(dāng)按下按鍵時(shí),復(fù)位引腳與地接通,處于低電平,此時(shí)芯片復(fù)位。K60系列芯片使用的是ARM Cortex-M4內(nèi)核,該內(nèi)核內(nèi)部集成了JTAG接口,通過(guò)JTAG接口可以實(shí)現(xiàn)程序下載和調(diào)試,K60豐富的內(nèi)部資源利于智能車(chē)功能擴(kuò)展及系統(tǒng)調(diào)試,故選擇K60作為控制器。K60單片機(jī)最小系統(tǒng)原理圖如圖3所示。

圖3 K60最小系統(tǒng)原理圖Fig.3 K60 system schematic diagram
ESP8266是樂(lè)鑫公司開(kāi)發(fā)的一款高性能UARTWIFI(串口-無(wú)線WIFI)模塊,主頻高達(dá)80 MHz,模塊自帶TCP/IP協(xié)議棧,且集成度高,兼容性好,功能強(qiáng)大[6]。WIFI模塊負(fù)責(zé)數(shù)據(jù)的接收與轉(zhuǎn)發(fā),通過(guò)UART接口與單片機(jī)連接。ESP8266芯片中包含:
(1)2.4 GHz接收器:將RF信號(hào)降頻,變成正交基帶信號(hào),用2個(gè)高分辨的高速ADC將正交基帶信號(hào)轉(zhuǎn)為數(shù)字信號(hào)。同時(shí),無(wú)線電接收器集成了RF濾波器、自動(dòng)增益控制(AGC)、DC偏移補(bǔ)償電路和基帶濾波器,以適應(yīng)不同的信號(hào)頻道;
(2)2.4 GHz發(fā)射器:將正交基帶信號(hào)升頻至2.4 GHz,使用大功率CMOS功率放大器驅(qū)動(dòng)天線。使用數(shù)字校準(zhǔn)進(jìn)一步改善了功率放大器的線性,從而在802.11 b模式下達(dá)到+19.5 dBm的輸出功率,在802.11 n模式下達(dá)到+16 dBm的輸出功率[7]。
WiFi模塊通過(guò)21、22通訊引腳與單片機(jī)相連,ESP8266高度片內(nèi)集成,因此需極少的外部電路,WiFi模塊及外圍電路如圖4所示。ESP8266芯片提供了一種有效且穩(wěn)定的操控手段,因此本設(shè)計(jì)選用ESP8266模塊作為WiFi模塊實(shí)現(xiàn)對(duì)智能小車(chē)的無(wú)線遙控。

圖4 WiFi模塊及外圍電路Fig.4 WiFi module and peripheral circuit
驅(qū)動(dòng)模塊由兩個(gè)L298N芯片組成,每個(gè)L298N芯片可以直接控制兩個(gè)電機(jī),兩個(gè)芯片控制智能車(chē)的四個(gè)車(chē)輪,智能車(chē)采用四輪差速的轉(zhuǎn)向方式,轉(zhuǎn)向更加靈活[8],驅(qū)動(dòng)模塊及外圍電路如圖5所示。L298N由主控芯片設(shè)定的I/O輸入電平所控制,改變輸入電平的高低就可以驅(qū)動(dòng)電機(jī)進(jìn)行正反轉(zhuǎn),操作簡(jiǎn)單、穩(wěn)定性好,可以滿足直流電機(jī)的大電流驅(qū)動(dòng)條件[9],電機(jī)運(yùn)動(dòng)方式受使能端A/B所控制,L298N驅(qū)動(dòng)A/B控制邏輯見(jiàn)表1。L298N芯片輸入電壓有兩個(gè),VSS為邏輯電壓,提供邏輯電路的電源;VS用于供給電機(jī),根據(jù)電機(jī)的額定電壓選擇12 V電壓供電。

圖5 驅(qū)動(dòng)模塊及外圍電路Fig.5 Driver module and peripheral circuit

表1 L298N驅(qū)動(dòng)A/B控制邏輯Tab.1 L298N drives A/B control logic
雷達(dá)模塊使用的是激光雷達(dá)RPLIDAR-A1,通過(guò)測(cè)量障礙物到智能車(chē)的距離,根據(jù)左右距離信息確定智能車(chē)的轉(zhuǎn)向,再控制智能車(chē)的轉(zhuǎn)向運(yùn)動(dòng)實(shí)現(xiàn)自動(dòng)避障功能。兩個(gè)雷達(dá)分別安裝在智能車(chē)的前端和后端,可以保障智能車(chē)在前進(jìn)后退過(guò)程中都能有效避開(kāi)障礙物。該雷達(dá)采用了激光三角測(cè)距技術(shù),配合SLAMTEC研發(fā)的高速的視覺(jué)采集處理機(jī)構(gòu),可進(jìn)行每秒高達(dá)8 000次以上的測(cè)距動(dòng)作[10]。每次測(cè)距動(dòng)作都包括發(fā)射經(jīng)過(guò)調(diào)制的紅外激光信號(hào)、視覺(jué)系統(tǒng)采集反射的激光信號(hào)、內(nèi)部DSP處理器解算3個(gè)過(guò)程。解算完成后生成的目標(biāo)物體與RPLIDAR-A1的距離和夾角值將實(shí)時(shí)從通訊接口中輸出[11]。同時(shí)RPLIDAR A1的測(cè)距核心在電機(jī)帶動(dòng)下順時(shí)針旋轉(zhuǎn),實(shí)現(xiàn)對(duì)周?chē)h(huán)境全方位的掃描測(cè)距。從通訊接口輸出的周?chē)h(huán)境位置信息傳輸至單片機(jī)內(nèi)進(jìn)一步處理,用于控制智能車(chē)的驅(qū)動(dòng)模塊,達(dá)到智能轉(zhuǎn)向、控制避障的功能[12],同時(shí)單片機(jī)可以通過(guò)控制輸入電機(jī)MOTOCTL引腳的PWM信號(hào)來(lái)控制雷達(dá)轉(zhuǎn)速。雷達(dá)模塊如圖6所示。

圖6 雷達(dá)模塊Fig.6 Radar module
顯示模塊選用的是13.3英寸液晶顯示屏,屏幕高寬比為16∶9,分辨率為1920×1080。顯示屏用于顯示時(shí)間、車(chē)速及各模塊狀態(tài)參數(shù)等。屏幕顯示模塊與單片機(jī)相連,單片機(jī)控制顯示屏的顯示,顯示模塊連接示意圖如圖7所示。

圖7 顯示模塊連接示意圖Fig.7 Display module connection diagram
智能車(chē)系統(tǒng)軟件部分主要包括上位機(jī)與智能車(chē)之間通過(guò)ESP8266通訊連接、K60芯片控制智能車(chē)避障運(yùn)動(dòng)兩部分。智能車(chē)系統(tǒng)上電后,系統(tǒng)初始化,并與上位機(jī)連接,連接后上位機(jī)控制下位機(jī)驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),開(kāi)啟雷達(dá)模塊。控制模塊接收到雷達(dá)模塊發(fā)出避障指令后,控制驅(qū)動(dòng)模塊進(jìn)行差速轉(zhuǎn)向避障,未接收到避障指令則保持上位機(jī)指令運(yùn)動(dòng)。下位機(jī)程序流程圖如圖8所示。

圖8 下位機(jī)程序流程圖Fig.8 Console computer program flow chart
使用激光雷達(dá)RPLIDAR-A1測(cè)量障礙物到智能車(chē)之間的距離,根據(jù)距離和角度信息來(lái)確定智能車(chē)的轉(zhuǎn)向,通過(guò)控制模塊來(lái)控制驅(qū)動(dòng)模塊實(shí)現(xiàn)差速轉(zhuǎn)向,實(shí)現(xiàn)避障功能。
(1)驅(qū)動(dòng)程序設(shè)計(jì)。控制器上電后,電機(jī)驅(qū)動(dòng)模塊進(jìn)行初始化,先設(shè)置IN1和IN2,確定電機(jī)轉(zhuǎn)動(dòng)方向,然后對(duì)使能端輸入PWM脈沖實(shí)現(xiàn)調(diào)速,使能端ENA、ENB為高電平時(shí)有效。
(2)數(shù)據(jù)采集程序設(shè)計(jì)。完成硬件初始化后,使能芯片中斷功能,此時(shí)若有中斷源觸發(fā)中斷,則程序跳入中斷程序。本系統(tǒng)中斷為串口中斷,上位機(jī)經(jīng)由WiFi模塊與控制器通信,可以修改系統(tǒng)參數(shù)控制驅(qū)動(dòng)程序。
(3)數(shù)據(jù)處理程序設(shè)計(jì)。激光雷達(dá)掃描獲取周?chē)h(huán)境數(shù)據(jù),經(jīng)雷達(dá)內(nèi)部的DSP處理器進(jìn)行實(shí)時(shí)計(jì)算,通過(guò)計(jì)算得到的距離值以及當(dāng)前的夾角信息將再?gòu)耐ㄓ嵔涌谥休敵龅娇刂破鳎刂破魍ㄟ^(guò)VFH算法實(shí)施避障決策。VFH算法是向量區(qū)間柱圖法的簡(jiǎn)稱(chēng),即使用柱狀圖描述智能車(chē)周?chē)系K物,該方法先構(gòu)建出周?chē)h(huán)境的局域柵格地圖,再根據(jù)占用柵格地圖的單元值計(jì)算障礙物概率直方圖,最后根據(jù)直方圖對(duì)每個(gè)通道計(jì)算代價(jià),選擇最低代價(jià)的通道進(jìn)行方向?qū)Ш健?/p>
ESP8266模塊共有有3種工作模式,選用AP模式即可滿足智能車(chē)與上位機(jī)之間的通訊。AP模式下,ESP8266模塊作為熱點(diǎn),可以實(shí)現(xiàn)上位機(jī)與模塊通信[13],模塊與K60控制模塊之間相連,從而實(shí)現(xiàn)上位機(jī)通過(guò)局域網(wǎng)對(duì)下位機(jī)的無(wú)線控制。ESP8266常用的AT指令見(jiàn)表2。

表2 ESP8266常用AT指令Tab.2 ESP8266 common AT instructions
智能車(chē)系統(tǒng)設(shè)計(jì)中所需設(shè)置AP模式指令控制:
AT+RST //重啟生效
AT+CWMODE=2 //設(shè)置WiFi模式
AT+CWSAP=<ESP8266>,<12345678>,<1>,<3> //配置AP參數(shù)
AT+CIPMUX=1 //啟動(dòng)多連接
AT+CIPSERVER=1 //建立服務(wù)器
通過(guò)串口發(fā)送上述指令開(kāi)啟ESP8266的WiFi,開(kāi)啟后上位機(jī)即可連接上ESP8266模塊,控制模塊即可通過(guò)ESP8266與上位機(jī)進(jìn)行通信。
本文是基于K60芯片搭配PRLIDAR-A1激光雷達(dá),利用VFH算法實(shí)現(xiàn)智能車(chē)避障功能,同時(shí)通過(guò)ESP8266模塊與上位機(jī)通信控制智能車(chē)移動(dòng),能夠?qū)崿F(xiàn)遠(yuǎn)程遙控和在較復(fù)雜環(huán)境下進(jìn)行實(shí)時(shí)平滑避障。