李承澤
(西北大學(xué)信息科學(xué)與技術(shù)學(xué)院,陜西 西安 710119)
基于GPS 的樹(shù)莓派智能小車(chē)可通過(guò)狀態(tài)分析系統(tǒng)來(lái)自動(dòng)規(guī)劃路線和識(shí)別交通信號(hào),從而保證車(chē)輛的安全運(yùn)行[1-5]。在無(wú)人駕駛領(lǐng)域,通過(guò)智能定位和路況分析系統(tǒng)來(lái)實(shí)現(xiàn)智能規(guī)劃路線和識(shí)別交通信號(hào),可確保無(wú)人駕駛車(chē)輛的安全運(yùn)行。此外,智能小車(chē)進(jìn)入危險(xiǎn)場(chǎng)所,通過(guò)Opencv圖像識(shí)別模塊能及時(shí)了解現(xiàn)場(chǎng)情況,為救援提供相應(yīng)的信息。因此,智能避障設(shè)計(jì)具有較高的經(jīng)濟(jì)價(jià)值和廣闊的應(yīng)用前景。
除了要實(shí)現(xiàn)自動(dòng)駕駛外,在行駛過(guò)程中,無(wú)人駕駛的智能汽車(chē)還要處理大量信息,如當(dāng)前路況、現(xiàn)有位置等,從而導(dǎo)致應(yīng)用程序開(kāi)發(fā)困難重重。
GPS 定位模塊用于對(duì)汽車(chē)進(jìn)行準(zhǔn)確定位汽車(chē),終端顯示可用于顯示位置信息。如何將汽車(chē)的位置信息上傳,并反饋到相應(yīng)的終端平臺(tái)顯示器上,成為要解決的技術(shù)難點(diǎn)。
由于GPS 的定位精度較差,無(wú)法實(shí)時(shí)判斷障礙物,導(dǎo)致移動(dòng)的汽車(chē)無(wú)法正確讀取障礙物位置,并避開(kāi)障礙物。如何提高汽車(chē)對(duì)道路和障礙物識(shí)別的準(zhǔn)確性(如對(duì)交通燈和人體的識(shí)別),成為一個(gè)要攻克的技術(shù)難題。
樹(shù)莓派將采集到視頻和超聲波避障信息上傳到多功能控制系統(tǒng),系統(tǒng)對(duì)上傳的信息進(jìn)行處理,并自動(dòng)生成指令,由手機(jī)端完成對(duì)小車(chē)行駛過(guò)程的監(jiān)控和最終控制,由藍(lán)牙模塊完成小車(chē)和手機(jī)端的通信。多功能控制系統(tǒng)是多功能小車(chē)的指揮協(xié)調(diào)中樞,小車(chē)在行駛過(guò)程中,超聲波避障模塊、OpenCv圖像識(shí)別模塊和GPS 模塊將采集到的數(shù)據(jù)上傳給多功能控制系統(tǒng)進(jìn)行處理,并將生成的指令交由車(chē)體驅(qū)動(dòng)模塊執(zhí)行。
為確保無(wú)人駕駛汽車(chē)能準(zhǔn)確感知、規(guī)避障礙物,規(guī)定傳感器需要每1 s 傳輸一次數(shù)據(jù)。為減少由此帶來(lái)的系統(tǒng)繁忙或網(wǎng)絡(luò)擁塞,引入輪詢(xún)機(jī)制,可實(shí)現(xiàn)均衡負(fù)載。相關(guān)的硬件用于處理數(shù)據(jù),以導(dǎo)航技術(shù)選擇為參考來(lái)分析跟蹤路徑。
智能小車(chē)的硬件主要包括樹(shù)莓派板、藍(lán)牙模塊、攝像機(jī)、GPS 追蹤器、車(chē)體、直流電機(jī)(2 個(gè))、舵機(jī)(2 個(gè))等。其中,樹(shù)莓派板和GPS 追蹤器安裝在底盤(pán)中間,上、下兩個(gè)舵機(jī)垂直安裝在底盤(pán)的前方,安裝在上舵機(jī)上方的攝像頭能上下?lián)u擺,安裝在下舵機(jī)的攝像頭能左右搖擺。
對(duì)硬件系統(tǒng)按功能劃分,可分為核心、車(chē)體驅(qū)動(dòng)、信息采集及傳輸這3個(gè)子系統(tǒng)。
本研究采用樹(shù)莓派3B+Broadcom BCM2837B0,支持藍(lán)牙、WiFi、等通信方式。智能小車(chē)的核心子系統(tǒng)模塊如圖1所示。
圖1 智能小車(chē)核心子系統(tǒng)模塊
為實(shí)現(xiàn)小車(chē)的左右轉(zhuǎn)向、向前行駛、倒車(chē)等功能,系統(tǒng)采用L298N 模塊,該模塊擁有雙通道輸出(A、B),可實(shí)現(xiàn)對(duì)兩路電機(jī)的不同控制與操作[6]。為確保電機(jī)有足夠的功率來(lái)驅(qū)動(dòng)小車(chē),使用兩個(gè)L298N 模塊,剩余的引腳用于連接其他傳感器。系統(tǒng)采用可進(jìn)行PWM調(diào)速的單12 V輸入模式對(duì)電機(jī)進(jìn)行供電,電機(jī)驅(qū)動(dòng)模塊如圖2所示。
圖2 電機(jī)驅(qū)動(dòng)模塊
為確保小車(chē)能按正常路線行駛,本研究采用超聲波避障技術(shù)、GPS 定位技術(shù)和攝像機(jī)圖像技術(shù)來(lái)采集路況信息和小車(chē)定位信息,并通過(guò)藍(lán)牙模塊來(lái)完成小車(chē)和手機(jī)端之間的信息和控制指令傳輸[7]。超聲波避障模塊如圖3 所示。選用Trig 和Echo 超聲波模塊,分別連接GPIO29和GPIO31,Trig模塊負(fù)責(zé)發(fā)射超聲波,Echo模塊負(fù)責(zé)接受超聲波。VCC接樹(shù)莓派5 V 接口,可實(shí)現(xiàn)對(duì)模塊的供電,GND 接樹(shù)莓派GND 接口,通過(guò)發(fā)射和接收的時(shí)間差來(lái)計(jì)算距離。
圖3 超聲波避障模塊
多功能控制系統(tǒng)是智能多功能小車(chē)的核心,系統(tǒng)通過(guò)樹(shù)莓派及輪詢(xún)方式來(lái)快速集成處理超聲波避障模塊、GPS 定位器和攝像機(jī)等采集到的信息,并形成決策指令,小車(chē)驅(qū)動(dòng)模塊能快速響應(yīng)[8]。語(yǔ)音模塊用于提示小車(chē)的運(yùn)行狀態(tài)和當(dāng)前環(huán)境,藍(lán)牙模塊用來(lái)完成小車(chē)和手機(jī)間的通信。
按照多功能控制系統(tǒng)的整體功能,將多功能控制系統(tǒng)分GPS單元、黑線追蹤單元、終端單元。
GPS 單元是基于百度提供的開(kāi)發(fā)界面研發(fā)出的。首先,使用GPS模塊來(lái)獲取小車(chē)出發(fā)地和目的地的經(jīng)緯度坐標(biāo)。其次,調(diào)用百度地圖的行走查詢(xún)和出行距離來(lái)計(jì)算接口API,從而獲取路徑數(shù)據(jù)。再次,對(duì)所獲得的路徑數(shù)據(jù)進(jìn)行分析,并捕獲鏈路軌跡點(diǎn)的多段路線。最后,規(guī)劃出整個(gè)路徑。
為實(shí)現(xiàn)對(duì)小車(chē)的準(zhǔn)確跟蹤,需要采用基于矢量差的跟蹤算法,將多段線集中的每個(gè)軌跡點(diǎn)作為一個(gè)跟蹤周期。在每個(gè)跟蹤周期內(nèi),沿小車(chē)前進(jìn)的矢量方向,分別對(duì)小車(chē)當(dāng)前移動(dòng)方向和下一個(gè)目標(biāo)軌跡點(diǎn)進(jìn)行校準(zhǔn)。
黑線跟蹤單元是集避障、道路規(guī)劃等功能為一體的大型綜合單元。將通過(guò)該單元的超聲波避障模塊、OpenCv 圖像識(shí)別模塊和GPS 獲取的數(shù)據(jù)上傳多功能控制系統(tǒng)進(jìn)行處理,并自動(dòng)生成指令。
4.2.1 黑線跟蹤。由于軌道為黑色,其余部分為非黑色,本研究采用二值化技術(shù)進(jìn)行處理,通過(guò)二值化技術(shù)來(lái)區(qū)分軌道和背景。二值化處理是根據(jù)設(shè)定的閾值T,將圖像數(shù)據(jù)分為兩部分,即大于T的像素群和小于T的像素群,從而提取出目標(biāo)物體。簡(jiǎn)單的閾值分割是選擇一個(gè)全局閾值,將整個(gè)圖像分割成黑色或白色的二值圖像。如果灰度值大于閾值,則指定為255,否則指定為0;如果效果不好,則要調(diào)整c 型腐蝕膨脹度。常見(jiàn)的形態(tài)學(xué)處理法有腐蝕法和膨脹法。本研究采用腐蝕法,以結(jié)構(gòu)單元中的最小值為錨定值[9],可通過(guò)腐蝕來(lái)去除二進(jìn)制圖像中閾值分割后出現(xiàn)的白噪聲。被腐蝕的結(jié)構(gòu)元素越大,目標(biāo)物體的面積就越小,黑線跟蹤單元效果如圖4所示。
圖4 黑線跟蹤單元效果
4.2.2 小車(chē)避障。為使小車(chē)在識(shí)別出障礙物后能做出準(zhǔn)確判斷,采用障礙物識(shí)別法對(duì)道路兩側(cè)連續(xù)使用超聲波檢測(cè)。在識(shí)別出障礙物后,用超聲波檢測(cè)小車(chē)與障礙物的距離,用配有OpenCV模塊的CSI攝像機(jī)對(duì)障礙物類(lèi)型進(jìn)行識(shí)別。如果檢測(cè)到前方的障礙物為交通燈,在識(shí)別出交通燈的顏色后,根據(jù)交通規(guī)則采取行動(dòng),紅綠燈識(shí)別過(guò)程如下。首先,初始化亮度設(shè)置的視頻路徑。其次,進(jìn)行幀處理,調(diào)整視頻亮度,分解YCrCb 的3 個(gè)組件,分解為紅化和綠化,并對(duì)這兩種顏色進(jìn)行特征提取。再次,進(jìn)行腐蝕擴(kuò)展處理,消除其他噪聲,提取交通信號(hào)信息。最后,給出識(shí)別結(jié)果。
終端單元對(duì)小車(chē)行駛過(guò)程進(jìn)行監(jiān)控和最終控制。小車(chē)和手機(jī)端間的通信是通過(guò)藍(lán)牙模塊完成的,即樹(shù)莓派車(chē)和手機(jī)端通過(guò)藍(lán)牙進(jìn)行信息交互,手機(jī)向小車(chē)發(fā)送控制命令,同時(shí)定義和處理命令數(shù)據(jù)。
在安裝好多功能控制系統(tǒng)后,為按鈕控件綁定一個(gè)偵聽(tīng)器,當(dāng)按下按鍵后,就可通過(guò)藍(lán)牙將數(shù)據(jù)發(fā)送到手機(jī)端的接收模塊中[10]。具體實(shí)現(xiàn)步驟如下。首先,在Layout 文件中為控件設(shè)置一個(gè)ID,Java文件會(huì)根據(jù)其自動(dòng)生成一個(gè)ID地址。其次,啟動(dòng)多功能控制系統(tǒng)的監(jiān)控子程序。當(dāng)按下按鍵后,根據(jù)按鍵控制的ID 地址,監(jiān)控程序中的開(kāi)關(guān)結(jié)構(gòu)不斷跳轉(zhuǎn),從而將不同數(shù)據(jù)發(fā)送到手機(jī)藍(lán)牙模塊。
多功能控制系統(tǒng)的Python子程序用來(lái)對(duì)藍(lán)牙模塊串口輸入的信息進(jìn)行分析,以抓取電機(jī)驅(qū)動(dòng)器,從而實(shí)現(xiàn)控制汽車(chē)的目的。過(guò)程要初始化串口,包括設(shè)置微控制器每個(gè)端口的方向、校準(zhǔn)微控制器的振蕩頻率及初始化每個(gè)變量。該程序會(huì)定期從藍(lán)牙模塊的串口讀取數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行分析,自動(dòng)生成指令。
為測(cè)試多功能控制系統(tǒng)在實(shí)際應(yīng)用中的功效,模擬當(dāng)小車(chē)前面有多個(gè)障礙物時(shí),多功能控制系統(tǒng)通過(guò)指令來(lái)重新規(guī)劃并展示最優(yōu)路線。
在小車(chē)前方放置不同的障礙物,測(cè)試不同情況下的安全躲避距離。小車(chē)在捕捉到圖像信息后,由于參數(shù)設(shè)置的問(wèn)題,可能導(dǎo)致小車(chē)無(wú)法躲避障礙物。通過(guò)多次調(diào)試,不斷修改參數(shù)值,使小車(chē)能準(zhǔn)確判斷出行人或障礙物,從而使多功能控制系統(tǒng)精準(zhǔn)計(jì)算出安全距離,并發(fā)出精準(zhǔn)的繞行指令。小車(chē)避障效果如圖5所示。多功能控制系統(tǒng)計(jì)算出的最小安全距離為15 cm,此處小車(chē)開(kāi)始執(zhí)行躲避指令。
圖5 小車(chē)避障效果
使用百度API 來(lái)規(guī)劃初始行駛路徑,小車(chē)行駛時(shí)遇到障礙物,多功能控制系統(tǒng)會(huì)對(duì)來(lái)自O(shè)penCv圖像識(shí)別模塊和超聲波測(cè)距模塊的數(shù)據(jù)進(jìn)行分析,并自動(dòng)生成繞行或改變行駛路徑的指令,此時(shí)GPS會(huì)重新規(guī)劃路徑。經(jīng)過(guò)測(cè)試證明,無(wú)論如何規(guī)劃路徑,小車(chē)都能準(zhǔn)確到達(dá)目的地。
基于樹(shù)莓派和GPS 導(dǎo)航的智能避障小車(chē)設(shè)計(jì)是以自主開(kāi)發(fā)的多功能控制系統(tǒng)為控制核心,實(shí)現(xiàn)了對(duì)樹(shù)莓派的功能擴(kuò)展。在多功能控制系統(tǒng)控制下,小車(chē)基于GPS導(dǎo)航能自動(dòng)準(zhǔn)確地感知和規(guī)避障礙物,并按規(guī)劃路徑行駛,能按時(shí)到達(dá)目的地。試驗(yàn)結(jié)果證明,基于樹(shù)莓派多功能控制系統(tǒng)是一款較成熟的應(yīng)用軟件,具有良好的商業(yè)應(yīng)用前景。