李承澤
(西北大學信息科學與技術學院,陜西 西安 710119)
基于GPS 的樹莓派智能小車可通過狀態分析系統來自動規劃路線和識別交通信號,從而保證車輛的安全運行[1-5]。在無人駕駛領域,通過智能定位和路況分析系統來實現智能規劃路線和識別交通信號,可確保無人駕駛車輛的安全運行。此外,智能小車進入危險場所,通過Opencv圖像識別模塊能及時了解現場情況,為救援提供相應的信息。因此,智能避障設計具有較高的經濟價值和廣闊的應用前景。
除了要實現自動駕駛外,在行駛過程中,無人駕駛的智能汽車還要處理大量信息,如當前路況、現有位置等,從而導致應用程序開發困難重重。
GPS 定位模塊用于對汽車進行準確定位汽車,終端顯示可用于顯示位置信息。如何將汽車的位置信息上傳,并反饋到相應的終端平臺顯示器上,成為要解決的技術難點。
由于GPS 的定位精度較差,無法實時判斷障礙物,導致移動的汽車無法正確讀取障礙物位置,并避開障礙物。如何提高汽車對道路和障礙物識別的準確性(如對交通燈和人體的識別),成為一個要攻克的技術難題。
樹莓派將采集到視頻和超聲波避障信息上傳到多功能控制系統,系統對上傳的信息進行處理,并自動生成指令,由手機端完成對小車行駛過程的監控和最終控制,由藍牙模塊完成小車和手機端的通信。多功能控制系統是多功能小車的指揮協調中樞,小車在行駛過程中,超聲波避障模塊、OpenCv圖像識別模塊和GPS 模塊將采集到的數據上傳給多功能控制系統進行處理,并將生成的指令交由車體驅動模塊執行。
為確保無人駕駛汽車能準確感知、規避障礙物,規定傳感器需要每1 s 傳輸一次數據。為減少由此帶來的系統繁忙或網絡擁塞,引入輪詢機制,可實現均衡負載。相關的硬件用于處理數據,以導航技術選擇為參考來分析跟蹤路徑。
智能小車的硬件主要包括樹莓派板、藍牙模塊、攝像機、GPS 追蹤器、車體、直流電機(2 個)、舵機(2 個)等。其中,樹莓派板和GPS 追蹤器安裝在底盤中間,上、下兩個舵機垂直安裝在底盤的前方,安裝在上舵機上方的攝像頭能上下搖擺,安裝在下舵機的攝像頭能左右搖擺。
對硬件系統按功能劃分,可分為核心、車體驅動、信息采集及傳輸這3個子系統。
本研究采用樹莓派3B+Broadcom BCM2837B0,支持藍牙、WiFi、等通信方式。智能小車的核心子系統模塊如圖1所示。

圖1 智能小車核心子系統模塊
為實現小車的左右轉向、向前行駛、倒車等功能,系統采用L298N 模塊,該模塊擁有雙通道輸出(A、B),可實現對兩路電機的不同控制與操作[6]。為確保電機有足夠的功率來驅動小車,使用兩個L298N 模塊,剩余的引腳用于連接其他傳感器。系統采用可進行PWM調速的單12 V輸入模式對電機進行供電,電機驅動模塊如圖2所示。

圖2 電機驅動模塊
為確保小車能按正常路線行駛,本研究采用超聲波避障技術、GPS 定位技術和攝像機圖像技術來采集路況信息和小車定位信息,并通過藍牙模塊來完成小車和手機端之間的信息和控制指令傳輸[7]。超聲波避障模塊如圖3 所示。選用Trig 和Echo 超聲波模塊,分別連接GPIO29和GPIO31,Trig模塊負責發射超聲波,Echo模塊負責接受超聲波。VCC接樹莓派5 V 接口,可實現對模塊的供電,GND 接樹莓派GND 接口,通過發射和接收的時間差來計算距離。

圖3 超聲波避障模塊
多功能控制系統是智能多功能小車的核心,系統通過樹莓派及輪詢方式來快速集成處理超聲波避障模塊、GPS 定位器和攝像機等采集到的信息,并形成決策指令,小車驅動模塊能快速響應[8]。語音模塊用于提示小車的運行狀態和當前環境,藍牙模塊用來完成小車和手機間的通信。
按照多功能控制系統的整體功能,將多功能控制系統分GPS單元、黑線追蹤單元、終端單元。
GPS 單元是基于百度提供的開發界面研發出的。首先,使用GPS模塊來獲取小車出發地和目的地的經緯度坐標。其次,調用百度地圖的行走查詢和出行距離來計算接口API,從而獲取路徑數據。再次,對所獲得的路徑數據進行分析,并捕獲鏈路軌跡點的多段路線。最后,規劃出整個路徑。
為實現對小車的準確跟蹤,需要采用基于矢量差的跟蹤算法,將多段線集中的每個軌跡點作為一個跟蹤周期。在每個跟蹤周期內,沿小車前進的矢量方向,分別對小車當前移動方向和下一個目標軌跡點進行校準。
黑線跟蹤單元是集避障、道路規劃等功能為一體的大型綜合單元。將通過該單元的超聲波避障模塊、OpenCv 圖像識別模塊和GPS 獲取的數據上傳多功能控制系統進行處理,并自動生成指令。
4.2.1 黑線跟蹤。由于軌道為黑色,其余部分為非黑色,本研究采用二值化技術進行處理,通過二值化技術來區分軌道和背景。二值化處理是根據設定的閾值T,將圖像數據分為兩部分,即大于T的像素群和小于T的像素群,從而提取出目標物體。簡單的閾值分割是選擇一個全局閾值,將整個圖像分割成黑色或白色的二值圖像。如果灰度值大于閾值,則指定為255,否則指定為0;如果效果不好,則要調整c 型腐蝕膨脹度。常見的形態學處理法有腐蝕法和膨脹法。本研究采用腐蝕法,以結構單元中的最小值為錨定值[9],可通過腐蝕來去除二進制圖像中閾值分割后出現的白噪聲。被腐蝕的結構元素越大,目標物體的面積就越小,黑線跟蹤單元效果如圖4所示。

圖4 黑線跟蹤單元效果
4.2.2 小車避障。為使小車在識別出障礙物后能做出準確判斷,采用障礙物識別法對道路兩側連續使用超聲波檢測。在識別出障礙物后,用超聲波檢測小車與障礙物的距離,用配有OpenCV模塊的CSI攝像機對障礙物類型進行識別。如果檢測到前方的障礙物為交通燈,在識別出交通燈的顏色后,根據交通規則采取行動,紅綠燈識別過程如下。首先,初始化亮度設置的視頻路徑。其次,進行幀處理,調整視頻亮度,分解YCrCb 的3 個組件,分解為紅化和綠化,并對這兩種顏色進行特征提取。再次,進行腐蝕擴展處理,消除其他噪聲,提取交通信號信息。最后,給出識別結果。
終端單元對小車行駛過程進行監控和最終控制。小車和手機端間的通信是通過藍牙模塊完成的,即樹莓派車和手機端通過藍牙進行信息交互,手機向小車發送控制命令,同時定義和處理命令數據。
在安裝好多功能控制系統后,為按鈕控件綁定一個偵聽器,當按下按鍵后,就可通過藍牙將數據發送到手機端的接收模塊中[10]。具體實現步驟如下。首先,在Layout 文件中為控件設置一個ID,Java文件會根據其自動生成一個ID地址。其次,啟動多功能控制系統的監控子程序。當按下按鍵后,根據按鍵控制的ID 地址,監控程序中的開關結構不斷跳轉,從而將不同數據發送到手機藍牙模塊。
多功能控制系統的Python子程序用來對藍牙模塊串口輸入的信息進行分析,以抓取電機驅動器,從而實現控制汽車的目的。過程要初始化串口,包括設置微控制器每個端口的方向、校準微控制器的振蕩頻率及初始化每個變量。該程序會定期從藍牙模塊的串口讀取數據,并對數據進行分析,自動生成指令。
為測試多功能控制系統在實際應用中的功效,模擬當小車前面有多個障礙物時,多功能控制系統通過指令來重新規劃并展示最優路線。
在小車前方放置不同的障礙物,測試不同情況下的安全躲避距離。小車在捕捉到圖像信息后,由于參數設置的問題,可能導致小車無法躲避障礙物。通過多次調試,不斷修改參數值,使小車能準確判斷出行人或障礙物,從而使多功能控制系統精準計算出安全距離,并發出精準的繞行指令。小車避障效果如圖5所示。多功能控制系統計算出的最小安全距離為15 cm,此處小車開始執行躲避指令。

圖5 小車避障效果
使用百度API 來規劃初始行駛路徑,小車行駛時遇到障礙物,多功能控制系統會對來自OpenCv圖像識別模塊和超聲波測距模塊的數據進行分析,并自動生成繞行或改變行駛路徑的指令,此時GPS會重新規劃路徑。經過測試證明,無論如何規劃路徑,小車都能準確到達目的地。
基于樹莓派和GPS 導航的智能避障小車設計是以自主開發的多功能控制系統為控制核心,實現了對樹莓派的功能擴展。在多功能控制系統控制下,小車基于GPS導航能自動準確地感知和規避障礙物,并按規劃路徑行駛,能按時到達目的地。試驗結果證明,基于樹莓派多功能控制系統是一款較成熟的應用軟件,具有良好的商業應用前景。