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