曾仕峰 吳錦均 葉智文 賴怡雯 葉妙欣 丁凡
摘 要:為了進(jìn)一步解決在人為駕駛中存在主觀因素的交通隱患問題,文中提出利用基于OpenCV深度學(xué)習(xí)攝像頭進(jìn)行識別,使用RPLIDAR-A1激光雷達(dá)進(jìn)行構(gòu)建實時地圖并使小車實現(xiàn)自動識別交通標(biāo)識、自動導(dǎo)航、自動避障,利用視覺識別定位技術(shù)作為ROS小車的感知方法,模擬人雙眼視覺功能,通過圖像處理信息感知客觀環(huán)境,小車再根據(jù)ROS機(jī)器人算法做出對應(yīng)符合交通規(guī)格的動作,rviz機(jī)器人仿真環(huán)境,同時結(jié)合兼容Linux系統(tǒng)的工控機(jī)的無人駕駛智能小車。實驗表明,該方法可增大小車的精度和靈敏度,既節(jié)省駕駛員的精力,又減少了違法違規(guī)現(xiàn)象和交通事故的發(fā)生。
關(guān)鍵詞:雷達(dá)建模;無人駕駛;OpenCV;深度攝像學(xué)習(xí);跟蹤識別;圖像處理
中圖分類號:TP316文獻(xiàn)標(biāo)識碼:A文章編號:2095-1302(2020)06-00-02
0 引 言
汽車是人們生活中非常重要的一種交通工具,當(dāng)今社會越來越多的人選擇使用汽車出行。汽車在方便大家的同時也帶了一些必不可少的交通問題和交通事故。為使交通路況暢通和避免一些人為可控的交通事故的發(fā)生,本文設(shè)計了一種無人駕駛智能車。該智能車通過基于OpenCV的深度攝像頭模塊[1]對紅綠燈進(jìn)行跟蹤識別,通過電機(jī)驅(qū)動模塊驅(qū)動小車行駛,并在合適地點直行、左轉(zhuǎn)、右轉(zhuǎn)、停車等。利用該科技手段,可有效監(jiān)控紅綠燈或突發(fā)意外,輔助或者代替司機(jī)駕駛,能規(guī)避絕大多數(shù)可能產(chǎn)生的意外,為人們生活工作提供安全保障。該無人駕駛汽車對行駛控制進(jìn)行了優(yōu)化,例如制動、加速等方面,這對于汽車提高發(fā)動機(jī)效率、降低污氣排放有積極的作用。同時運(yùn)用上了結(jié)合雷達(dá)實地三維建模[2]及視頻處理技術(shù)[3],可大大地提高小車的性能,更好地實現(xiàn)安全無人駕駛。
1 系統(tǒng)總體結(jié)構(gòu)
本系統(tǒng)總體結(jié)構(gòu)如圖1所示。
該無人駕駛小車的控制系統(tǒng)主要由工控機(jī)和STM32F103ZET6構(gòu)成。蓄電池提供整個運(yùn)動控制結(jié)構(gòu)所需電力,電機(jī)驅(qū)動模塊驅(qū)動直流編碼減速電機(jī)。利用深度攝像頭模塊、激光雷達(dá)模塊和超聲波模塊來實現(xiàn)自動導(dǎo)航及避障功能;結(jié)合GPS模塊、激光雷達(dá)模塊以及IMU姿態(tài)傳感器實現(xiàn)小車的定位導(dǎo)航;攝像頭模塊、雷達(dá)模塊等的實地測量數(shù)據(jù)通過觸摸顯示屏顯示出來,最后用控制端APP進(jìn)行人機(jī)交互。
2 系統(tǒng)硬件設(shè)計
2.1 自動導(dǎo)航方案設(shè)計
實現(xiàn)自動定位巡航的傳統(tǒng)方案多是單純地采用GPS模塊定位技術(shù)[4],或者單純地采用雷達(dá)定位技術(shù)。本系統(tǒng)自動定位巡航部分不但結(jié)合了即快速又精準(zhǔn)的GPS定位技術(shù),還結(jié)合了實地三維建模的雷達(dá)定位技術(shù)。首先利用GPS模塊進(jìn)行大概定位(U-blox6Q[5]的定位精度是2.5 m),再利用激光雷達(dá)進(jìn)行實地三維建模以及定位[6](探測范圍在
20 cm~20 m之間),同時,激光雷達(dá)可以進(jìn)行實地建模。這樣不僅能提高無人駕駛系統(tǒng)定位的精度,而且能增大自動避障的準(zhǔn)確度。無人駕駛系統(tǒng)結(jié)合了GPS定位技術(shù)和雷達(dá)定位技術(shù)可以大大擴(kuò)大使用范圍。GPS模塊能在室內(nèi)精準(zhǔn)定位和跟隨等,但在偏僻公路上,GPS信號會受到建筑物以及樹木的影響,從而會降低其定位準(zhǔn)確度,但激光雷達(dá)可以利用激光在大范圍內(nèi)掃描障礙物進(jìn)行實地建模以及精準(zhǔn)定位,達(dá)到自動行駛的目的。
2.2 自動避障部分方案設(shè)計
本項目由深度攝像頭模塊、激光雷達(dá)模塊、超聲波模塊對無人駕駛系統(tǒng)周圍環(huán)境進(jìn)行實時監(jiān)控,通過攝像頭視頻處理技術(shù)判斷小車是否行駛在安全路段[3],通過攝像頭視頻處理技術(shù)以及雷達(dá)三維建模技術(shù)進(jìn)行判斷道路是否具有障礙物需要避開;同時,結(jié)合超聲波模塊的短距離精準(zhǔn)測距的功能來提高小車避障的準(zhǔn)確度和安全度。此外,本項目還采用改進(jìn)后的YOLO行人檢測算法[7]。該算法可實時跟進(jìn)對人及移動物體的檢測,并精準(zhǔn)定位到小車與行人或移動物體的距離,讓小車與障礙物保持絕對安全距離,避免安全事故的發(fā)生。
3 系統(tǒng)軟件設(shè)計
3.1 ROS系統(tǒng)的優(yōu)點
本文系統(tǒng)使用的是基于Linux的ROS系統(tǒng)。該系統(tǒng)采用分布式框架的結(jié)構(gòu),通過點對點的方式可以讓機(jī)器人分別運(yùn)行不同的進(jìn)程。除此之外,ROS系統(tǒng)還支持多種語言的編譯,比如C++和Python等熱門語言都是目前ROS系統(tǒng)應(yīng)用最廣的開發(fā)語言。另外,ROS系統(tǒng)是一個對所有開發(fā)者都開放的系統(tǒng),并且具有強(qiáng)大的生態(tài)鏈,其核心設(shè)計方法為松耦合設(shè)計,這就有利于功能的復(fù)用和軟件的拓展[8]。
3.2 OpenCV識別系統(tǒng)
本文在ROS系統(tǒng)的基礎(chǔ)上,主要使用C++編譯語言去實現(xiàn)小車的自動駕駛功能。通過調(diào)用OpenCV函數(shù)庫去實現(xiàn)對交通標(biāo)志和停車線的檢測。對于交通燈的識別,這里采用的方法是先找出所要識別的顏色,再判斷該顏色是否為圓,從而判斷出找到的是什么顏色的交通燈,其總體框架如圖2所示。
首先調(diào)用Open CV函數(shù)庫庫中的blur函數(shù)[9]對圖像進(jìn)行均值濾波,其原理為由該點的一個鄰域中各點值的中值來代替,讓周圍的像素值接近真實值,從而消除孤立的噪聲點[9]。再將濾波后的圖片使用inRange()函數(shù)對圖像進(jìn)行二值化的限定,找出紅綠燈的顏色;然后,在找到顏色的基礎(chǔ)上使用Canny算法找出識別出的圖像顏色邊緣;最后使用HoughCircles函數(shù)進(jìn)行最后的找圓。
3.3 SLAM算法建模
SLAM(Simultaneous Localization and Mapping)又稱同步定位與建圖,是在未知環(huán)境下,機(jī)器人在運(yùn)動過程中實時觀測地圖特征,再根據(jù)自身位置的變化進(jìn)行地圖特征的匹配,從而完成定位和地圖構(gòu)建的技術(shù)[10]。通過SLAM算法可以完成對空間的建模和自身的定位還有行人的檢測。
本文通過雷達(dá)采集實際環(huán)境中的數(shù)據(jù)。所謂的數(shù)據(jù)就是一系列分散的、具有準(zhǔn)確的角度和距離信息的點—點云。再將采集到的數(shù)據(jù)對不同時刻的目標(biāo)位置所移動的相對位置進(jìn)行大概估算。特征匹配的算法有多種,一開始的有SIFT算法[10],其原理為采用高斯核與原圖像進(jìn)行卷積,生成分辨率逐層降低的圖像金字塔,然后在相鄰塔層間相減,得到由高斯差分金字塔構(gòu)造的尺度空間[10]。本文使用的是SIFT的改進(jìn)版SURF算法。該算法對圖像進(jìn)行積分,極大程度上的減少了圖像中計算特征點的時間,有利于圖像處理速度的提升,對于特征矢量描述子的計算,這里使用歐式距離公式對不同時刻的特征點進(jìn)行計算,公式如下:
式中:d(A, B)圖像中物體A到物體B的歐式距離;Pi,Pj分別是圖像對應(yīng)的第i個、第j個像素點;m,n分別為圖像對應(yīng)物體像素點的總數(shù);DA(Pi),DB(Pj)分別為A,B物體像素點所對應(yīng)的特征向量。然后使用濾波器對圖像進(jìn)行優(yōu)化,用來減少視覺里程計所帶來的累計誤差,增大準(zhǔn)確度,隨后通過對比初始數(shù)據(jù)和處理后的數(shù)據(jù)所得到的運(yùn)動軌跡最終完成建模。最后還要加上回環(huán)檢測來提供一個來自空間上的約束以此消除累計誤差。SLAM算法框圖如圖3所示。
最終SLAM算法建模圖形如圖4所示。
4 結(jié) 語
本文設(shè)計了一種無人駕駛智能車,并對該智能車的系統(tǒng)硬件結(jié)構(gòu)、系統(tǒng)軟件結(jié)構(gòu)以及主要控制算法進(jìn)行了設(shè)計及論述。該智能車主要運(yùn)用ROS向雷達(dá)模塊與攝像頭模塊發(fā)送信號,激光雷達(dá)模塊通過SLAM算法進(jìn)行建模,再結(jié)合基于OpenCV深度學(xué)習(xí)攝像頭模塊的圖像識別以及視頻處理技術(shù)來實現(xiàn)自動識別、自動巡航、自動避障等功能。本設(shè)計避免了司機(jī)長時間駕駛的疲勞,無人駕駛小車精準(zhǔn)定位導(dǎo)航也對穩(wěn)定交通秩序做了極大貢獻(xiàn),同時,也能減少交通事故的發(fā)生。綜上所述,運(yùn)用ROS可以將現(xiàn)實場景很好地模擬出來,并對各類突發(fā)狀況進(jìn)行高效的處理。
參考文獻(xiàn)
[1]王曉鵬.基于OpenCV的圖像處理濾波算法研究[J].現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化,2018,8(6):61-62.
[2]白云裳,劉猛,馮酉鵬.基于激光雷達(dá)SLAM室內(nèi)定位方法[J].中國新通信,2019,21(16):52.
[3]楊磊,王少云,劉力冉,等.一種智能視頻監(jiān)控系統(tǒng)中的行人檢測方法[J].計算機(jī)與現(xiàn)代化,2019(11):69-74.
[4]陳紅齊,吳益新.北斗導(dǎo)航及GPS技術(shù)在航海定位中的應(yīng)用[J].設(shè)備管理與維修,2019(12):225-227.
[5]王君剛,王解先,陳俊平,等.U-Blox 6接收機(jī)解碼與定位測試
[J].測繪通報,2015(11):24-27.
[6]黃曉杰,陳宇磊,邵躍堂,等.基于激光雷達(dá)的地鐵隧道形變檢測方法[J].城市軌道交通研究,2019,22(11):47.
[7]祝慶發(fā),陳永生,郭玉臣.基于改進(jìn)YOLO算法的密集人群場景下的行人檢測[J].電腦知識與技術(shù),2019,15(22):175-176.
[8]謝萌,張世武,李旺,等.基于ROS的遠(yuǎn)程車輛控制和目標(biāo)跟隨系統(tǒng)設(shè)計[J].工業(yè)控制計算機(jī),2019,32(7):29-31.
[9]陳慶偉,李民東,羅川,等.視覺SLAM中圖像特征點提取與匹配算法研究[J].現(xiàn)代制造工程,2019(10):135-139.
[10]王嶸,萬永菁.一種基于SLAM的多功能探索機(jī)器人設(shè)計[J].機(jī)械與電子,2019,37(9):51-53.