繆文南,吳偉棟,周偉明
(廣州城市理工學(xué)院 電子信息工程學(xué)院,廣東廣州,510800)
在當(dāng)下信息快速發(fā)展的時代,計算機技術(shù)飛速發(fā)展,與計算機相關(guān)的高新技術(shù)在日常生活中的應(yīng)用也越來越廣泛,自動駕駛技術(shù)得到了快速發(fā)展。自動駕駛小車以電子技術(shù)為基礎(chǔ),再輔以光電,電磁,紅外,圖像識別算法等技術(shù)的加持,能夠?qū)崿F(xiàn)在不同環(huán)境下對不同的交通路況進行自我駕駛,是與自動駕駛技術(shù),圖像識別技術(shù)融合的一種大膽的嘗試,隨著近幾年的高速發(fā)展,機器視覺和自動駕駛的未來和前景越來越耐人尋味。自動駕駛就是通過電子技術(shù)和機器視覺的相關(guān)算法,來實現(xiàn)自動控制的一種方法。
本文以現(xiàn)有的自動駕駛技術(shù)和圖像識別技術(shù)為基礎(chǔ),針對各種不同的環(huán)境和復(fù)雜的道路情況,設(shè)計了一種自動駕駛小車。該小車?yán)米詣玉{駛技術(shù)和圖像識別及機器視覺等技術(shù),能夠?qū)崿F(xiàn)避讓行人,加速減速,紅綠燈識別和定速巡航等功能,并把參數(shù)實時地傳輸?shù)诫娔X或手機等終端中。該小車能夠根據(jù)不同的目標(biāo)采用不同的識別算法,即使在偏離路線時也能實時自行修正。
自動駕駛小車主要功能包括:路標(biāo)二維碼識別、紅綠燈路口智能識別、數(shù)字識別加減速功能。自動駕駛小車主要由動力系統(tǒng)、主控系統(tǒng)、傳感器模塊三大部分組成。其中動力系統(tǒng)由370 減速電機提供動力,前輪轉(zhuǎn)向由ZP15S 串口舵機控制;主控系統(tǒng)由STM32F103VET6 微處理組成;傳感器由OV7725 攝像頭模塊、灰度傳感器以及陀螺儀組成,系統(tǒng)框圖如圖1 所示。
本自動駕駛小車所采用的主控芯片為STM32F103VET6,該微處理器芯片Cortex-M3 采用ARMv7-M 的架構(gòu),內(nèi)部Flash 為256KB;集合SPI、I2C、TIM、USART 等多項功能的雙向I/O 口112 個;內(nèi)部時鐘最高工作頻率為72MHz;SPAM 為64KB。該微處理器芯片正常工作電壓為5V,具有高性能、低功耗、可處理混合信號的微處理器的多種特點。
自動駕駛小車的動力系統(tǒng)由L298N 電機驅(qū)動模塊驅(qū)動兩個370 減速電機實現(xiàn)。所選370 減速電機的空載轉(zhuǎn)速為0.6r/min-200r/min,額定轉(zhuǎn)速為空載轉(zhuǎn)速的75%;工作電壓為直流電12~24V、輸出扭矩0.375kg.cm~30kg.cm。
小車的轉(zhuǎn)向采取ZP15S 串口舵機牽引轉(zhuǎn)向架控制車輪角度的擺動。串口舵機具有控制角度精確,運行速度平穩(wěn),運行時間可調(diào)的特點,符合本小車需進行穩(wěn)定、勻速的轉(zhuǎn)彎要求。串口舵機通過串口進行控制,其指令控制相較于普通舵機更加方便進行調(diào)試。
1.3.1 機器視覺模塊
自動駕駛小車的機器視覺模塊采用OpenMV cam H7 視覺模塊,如圖2 所示。該視覺模塊使用MicroPython 語言編程,其 具 有1MB 的RAM、400MHz 的主頻以及2MB的Flash。該視覺模塊可使用的功能有:顏色識別、數(shù)字識別、二維碼識別、特征點追蹤以及邊緣檢測。在本自動駕駛小車的設(shè)計上,利用該視覺模塊通過對二維碼識別精準(zhǔn)判斷地點位置信息,利用顏色識別準(zhǔn)確通過信號燈所指示的路口并判斷行人動態(tài)信息,將獲取到的相關(guān)信息通過串口通信傳輸給微處理器模塊進行后續(xù)的程序判斷以及相關(guān)參數(shù)計算處理。
圖2 OpenMV cam H7視覺模塊
1.3.2 道路界線檢測模塊
自動駕駛小車使用灰度傳感器進行道路界線檢測,如圖3 所示?;叶葌鞲衅饔梢粋€發(fā)光二極管以及一個光敏電阻組成,光敏電阻通過檢測地面返回來的光亮暗檢測黑白線,在設(shè)定好的特定阻值下產(chǎn)生高電平輸入微處理器模塊,以引導(dǎo)微處理器模塊判斷相關(guān)情況并處理相關(guān)信息。在自動駕駛小車中,基于灰度傳感器識別黑白變化的原理實現(xiàn)了對模擬真實轉(zhuǎn)彎道路中兩側(cè)的交通標(biāo)識白線的識別,從而修正偏離的路線,通過修改黑白變化所產(chǎn)生高低電平信號的處理方式,其亦可轉(zhuǎn)換為普通引導(dǎo)巡線模式。在設(shè)置灰度傳感器模塊時,在保證其精確識別距離的情況下,以垂直路面偏水平面45°放置在車頭兩側(cè),確保小車車輪在行駛到邊界時識別邊界執(zhí)行回避的動作。
圖3 灰度傳感器
1.3.3 加速度傳感器模塊
加速度傳感器(MPU6050陀螺儀模塊)用于測量自動駕駛小車行駛過程中運動方向偏移的角度,利用舵機控制進行實時矯正,如圖4 所示。該模塊帶有16 位ADC 和信號調(diào)理的三軸MEMS 速率陀螺儀傳感器,可進行角位移的測量并通過I2C 傳輸給微處理器模塊進行相關(guān)參數(shù)的計算。
圖4 MPU6050 模塊
本自動駕駛小車系統(tǒng)各個模塊的軟件程序如圖5 所示,主要由以下幾個步驟構(gòu)成:首先對各個模塊進行初始化;在完成初始化后各個傳感器模塊依次開始檢測識別工作;將所檢測識別的相關(guān)數(shù)據(jù)傳輸給微處理器模塊進行條件判斷;判斷結(jié)束后微處理器模塊控制動力系統(tǒng)進行相關(guān)運動;運動結(jié)束后微處理器模塊將相關(guān)參數(shù)進行保存與修改。
圖5 系統(tǒng)軟件總體設(shè)計
顏色識別程序算法主要應(yīng)用在紅綠燈識別,第一步是通過顏色閾值調(diào)整確定目標(biāo)顏色?;谛旭傔^程中的多顏色,項目采取多閾值的顏色識別算法。閾值確定后需要將攝像頭的顏色識別模式設(shè)置為“RGB565”,識別圖像獲取界面大小設(shè)置為“QVGA”,即320×160 像素,關(guān)閉攝像頭的灰度識別以及白平衡功能。在攝像頭識別到目標(biāo)顏色時自動忽略微小色塊,捕捉最大色塊,減小顏色干擾。最后穩(wěn)定識別到顏色時,將相關(guān)動作激活標(biāo)志位發(fā)送至微處理器模塊進行處理,具體流程如圖6 所示。
圖6 顏色識別流程圖
二維碼的識別算法主要運用在路標(biāo)識別功能,其設(shè)計分為攝像頭初始化、獲取圖像、圖像二值化處理、解碼、計算矩陣、提取發(fā)送二維碼信息等步驟。攝像頭初始化時顏色模式的選擇與顏色識別算法一致,其獲取圖像幀的像素大小為160×120,解碼后獲取的信息格式選擇為字符,通過串口傳輸給微處理器模塊進行下一步處理,具體流程如圖7 所示。
圖7 二維碼識別流程圖
路線偏移糾正算法以灰度傳感器和陀螺儀測量的參數(shù)作為參考值,實時控制小車方向角度修正。其中,陀螺儀參數(shù)用于直線偏移修正,當(dāng)小車車身向左偏移的時候,以陀螺儀的角位移為旋轉(zhuǎn)量,系統(tǒng)控制舵機向右旋轉(zhuǎn)一定的角度,后續(xù)緩慢回正。在轉(zhuǎn)彎時停止使用其參數(shù)進行矯正,但會記錄角度偏移存儲進相應(yīng)數(shù)據(jù)結(jié)構(gòu)題體中;灰度傳感器參數(shù)用于小車將近超越道路邊界線時的車體矯正,其矯正方式與陀螺儀一致。具體流程如圖8 所示。
圖8 路線偏移糾正流程圖
顏色閾值的確定可通過對帶有目標(biāo)顏色的幀緩沖區(qū)進行閾值測量,如圖9 所示。通過編程軟件自帶的顏色閾值調(diào)整功能,針對目標(biāo)顏色進行定位識別,上文提到攝像頭顏色識別的圖像格式為RGB,在編程軟件的閾值調(diào)節(jié)器中是將“R”“G”“B”轉(zhuǎn)換為“L”“A”“B”,這三項進行調(diào)整,即LAB 閾值編輯,從而選取目標(biāo)顏色。圖9 展示了紅色閾值的調(diào)節(jié)方式。經(jīng)過反復(fù)測試,選取紅燈的閾值選取為(49、68、33、127、-128、127)。
圖9 紅燈閾值調(diào)節(jié)示例
行駛路線規(guī)劃碼(以下簡稱路線碼),如圖10 所示。首先在小車起步位置放置二維碼,二維碼信息包含了行駛路線。路線碼信息由字符型數(shù)組構(gòu)成,包含字符和數(shù)字。信息段以字母“A”為間隔,將由數(shù)字組成的線路信息分隔,在后續(xù)單片機的處理中通過識別字母“A”獲取各個路口的選擇信息。該碼使用時,開啟小車電源,令攝像頭識別路線碼記錄行駛道路信息后,便可正常進入規(guī)劃道路行駛。
圖10 路線碼示例(1A2A4A6A7)
在攝像頭進行各方面的識別時,識別目標(biāo)的數(shù)量、識別環(huán)境的光線,以及目標(biāo)的擺放位置都會對識別產(chǎn)生一定影響,以下針對部分環(huán)境下對識別的影響以實驗性圖表對結(jié)果進行描述,測試結(jié)果如圖11 所示。
圖11 環(huán)境對攝像頭對目標(biāo)識別的影響
本項目基于機器視覺識別技術(shù),實現(xiàn)了自動駕駛小車的定位和路線行進功能,采用了灰度傳感器來實現(xiàn)行駛路線偏差的自我修正,整體上實現(xiàn)了自動駕駛的基本功能和需求。該系統(tǒng)擴展能力強,定位精準(zhǔn),并且具有自學(xué)習(xí)功能,結(jié)構(gòu)穩(wěn)定可靠,具有較大的推廣價值。