陶武康
(廣汽埃安新能源汽車股份有限公司 廣東廣州 510000)
露天采礦是礦山資源的主要開采方式之一,而礦石的開采及運輸是露天采礦生產(chǎn)的重要工作。露天采礦工程中所用到的車輛種類繁多,通常包括礦山卡車、裝載機、推土機、挖掘機等[1]。作為露天礦山運輸?shù)闹饕问街?,大噸位礦山卡車由于車體龐大,存在很大的視覺盲區(qū)。此外,采礦現(xiàn)場的分布情況為點多、面廣、占線長,因此經(jīng)常導(dǎo)致追尾、碾壓等事故的發(fā)生[2]。
針對礦山卡車的防撞問題,相關(guān)技術(shù)人員提出了一系列的解決方案,主要可分為基于毫米波雷達的方法[3-4]、基于視覺測量的方法[5]、基于GPS定位的方法[6-7]和基于無線定位的方法[8-9]。韋海良等人利用毫米波雷達探測本車與前方礦山車輛或設(shè)備之間的距離與速度,并根據(jù)雷達數(shù)據(jù)控制車輛制動或發(fā)出預(yù)警信息[3]。但是采礦卡車本身的車體寬度普遍大于3 m,毫米波雷達由于發(fā)射角的限制在車輛近距離范圍內(nèi)存在較大的盲區(qū)[10]。牛犇等人提出一種利用單目視覺測距模型實現(xiàn)實時測距,根據(jù)測距結(jié)果實現(xiàn)井下礦車預(yù)警的方法[5]。然而,由于露天礦山道路環(huán)境惡劣、灰塵濃厚,因此很難通過機器視覺的方法檢測運動的障礙物。史海平提出一種通過MESH無線通信網(wǎng)絡(luò)將被監(jiān)控礦山車輛的GPS 信息統(tǒng)一發(fā)送至控制中心,然后控制中心判斷車輛間相撞的可能性并通知被監(jiān)控車輛[6]??墒怯捎诃h(huán)境干擾因素較多且民用GPS自身的定位精度為米級,導(dǎo)致礦山車輛的定位精度出現(xiàn)較大的誤差。張?zhí)旆逄岢鲆环NRF射頻與C-V2X車聯(lián)網(wǎng)多種技術(shù)實現(xiàn)超速報警、防碰撞預(yù)警等關(guān)鍵功能[8]。雖然該方法具有較高的定位精度,但是需要部署大量的傳感器。
綜合分析以上方法的優(yōu)缺點并結(jié)合前人的研究經(jīng)驗,該文提出了一種基于毫米波雷達與廣角魚眼攝像頭視覺結(jié)合的預(yù)警系統(tǒng),用于輔助駕駛員對周圍環(huán)境做出更準確的判斷。該系統(tǒng)利用毫米波雷達采集卡車前后障礙物信息,然后通過蜂鳴器與用戶UI界面實現(xiàn)對障礙物的實時五級預(yù)警。同時,為了消除車輛近距離內(nèi)毫米波雷達的盲區(qū),該系統(tǒng)利用魚眼攝像頭采集車輛前后場景經(jīng)過去畸變及裁減后在屏幕上實時顯示。
該系統(tǒng)的整體架構(gòu)如圖1所示。該系統(tǒng)以恩智浦公司的車規(guī)級IMX6為控制器,結(jié)合Linux3.0.35操作系統(tǒng)以QT5.5.1 為開發(fā)工具開發(fā)。此系統(tǒng)主要分為毫米波雷達測距模塊、前后魚眼攝像頭顯示模塊、碰撞預(yù)警及顯示界面模塊三大模塊。前后魚眼攝像頭經(jīng)過去畸變后實時監(jiān)控車輛前后的狀況,當(dāng)車輛前后出現(xiàn)障礙物時,蜂鳴器及預(yù)警顯示界面會根據(jù)距離的遠近以不同的工作頻率預(yù)警。
圖1 系統(tǒng)整體構(gòu)架
該文針對露天礦車的應(yīng)用場景,綜合對比了毫米波雷達、超聲波雷達及激光雷達的優(yōu)缺點,選取納雷公司的CAR70 毫米波雷達,具體如圖2 所示。該雷達有效探測距離為30 m,探測角度為120°,并且支持CAN接口,符合ISO11898-2標(biāo)準,傳輸速率為500 kB/s。
圖2 CAR70毫米波雷達
在該系統(tǒng)的應(yīng)用中,前后毫米波雷達安裝在車輛前后保險杠中間位置,距地面高度為1.5 m,雷達天線面與車身平行。CAR70 雷達向周邊發(fā)射雷達信號,返回信號經(jīng)過濾波及多步處理后即可獲取目標(biāo)組的軌跡信息。目標(biāo)信息的相對速度和位置通過CAN 接口傳輸[11]。目標(biāo)消息輸出結(jié)構(gòu)及目標(biāo)消息描述如表1所示。
表1 目標(biāo)消息描述
目標(biāo)報文信息由8 個字節(jié)64 位組成,包含障礙物序號Barrier_Index、反射面積Barrier_RCSValue、距離Barrier_Range、角度Barrier_Azimuth、速度Barrier_Verl、信噪比Barrier_SNR。報文信息的真實值可通過表1的計算公式得到。
在Linux 系統(tǒng)中,CAN 總線接口設(shè)備作為網(wǎng)絡(luò)設(shè)備被系統(tǒng)進行統(tǒng)一管理。在控制臺下,CAN 總線的配置和以太網(wǎng)的配置使用相同的命令。采用SocketCAN實現(xiàn)通信,具體步驟如下。
(1)打開CAN口,配置波特率為500 kB/s;(2)進行初始化,具體包括創(chuàng)建套接字、指定CAN設(shè)備、設(shè)置幀ID、設(shè)置幀形式、將套接字與CAN 設(shè)備綁定;(3)通過循環(huán)不斷地讀取CAN口的數(shù)據(jù);(4)解析CAN數(shù)據(jù),根據(jù)表1所描述的CAN協(xié)議解析障礙物的信息。
該文考慮到礦車車體寬度一般大于3 m,普通攝像頭的水平視角不到40°,不能看到車體的兩側(cè),因此采用了SENSOR 為AHD SONY 225 的魚眼攝像頭。該攝像頭的水平視角為180°并具有夜視功能,經(jīng)過去畸變后可達到水平視野大于6 m,從而有效地解決車輛前后近距離內(nèi)的盲區(qū)。該文采用Scaramuzza提出的折反射模型作為魚眼相機成像模型來生成去畸變MAP[12]。折反射模型坐標(biāo)系設(shè)定如圖3 所示。其中(X'Y'Z)表示世界坐標(biāo)系,(x'y'z)表示相機坐標(biāo)系,(u''v')為感光面坐標(biāo)系,(u'v)為圖像像素坐標(biāo)系。由世界坐標(biāo)系到相機坐標(biāo)系的轉(zhuǎn)換模型為外部模型,與相機的安裝位置有關(guān),涉及參數(shù)稱為外參;由相機坐標(biāo)系到圖像坐標(biāo)系的轉(zhuǎn)換模型為內(nèi)部模型,與相機的內(nèi)部構(gòu)造有關(guān),涉及參數(shù)稱為內(nèi)參。
圖3 模型坐標(biāo)系
如圖3(a)所示,空間中一點P經(jīng)過相機模型變換后在感光平面上成像為P',其轉(zhuǎn)換方式如公式(1)所示。
公式(1)中,λ為尺度變換因子,T為相機外參,即世界坐標(biāo)系到相機坐標(biāo)系的轉(zhuǎn)換矩陣,f(ρ)為包含相機畸變參數(shù)的非線性投影函數(shù),用泰勒級數(shù)展開多項式表示為
公式(2)中,ρ=表示投影點至感光面中心的距離;a0'a'…'an為多項式系數(shù),表示相機畸變參數(shù)。
感光面坐標(biāo)到圖像坐標(biāo)的映射需經(jīng)過仿射變換和中心偏移,關(guān)系式為
公式(3)中,m為像素坐標(biāo),A為仿射變換矩陣,t為平移矩陣,c、d、e為仿射變換系數(shù),uc、vc為圖像中心。
將公式(2)與公式(3)代入公式(1)中即可得到圖像坐標(biāo)系中的像素點與世界坐標(biāo)系中的空間點的對應(yīng)關(guān)系,具體如公式(4)所示。
利用提前設(shè)計好的標(biāo)定布確定角點的空間位置及像素位置,將其代入公式(4)中即可求出相機模型的內(nèi)參。為了進一步提高相機標(biāo)定參數(shù)的精度,該文利用重投影的方法將空間中的點通過已經(jīng)求得的相機模型再次投影到圖像平面中從而得到重投影誤差,將此最小化誤差作為目標(biāo)函數(shù)對相機模型參數(shù)進行非線性優(yōu)化。
公式(5)中,K表示一共拍攝了K張標(biāo)定圖片,L表示每張圖片中有L個角點。
如表2 所示,通過Scaramuzza 標(biāo)定工具箱可獲得a0,a1,…,an,c,d,e,uc,vc共n+5 個參數(shù)[13]。根據(jù)這些參數(shù)計算畸變圖像每個像素位置對應(yīng)的新的像素位置從而生成一張去畸變MAP 表。在Linux 系統(tǒng)中,攝像頭通過V4L2 驅(qū)動統(tǒng)一管理。通過V4L2 接口讀取攝像頭視頻,然后根據(jù)查表法將畸變圖像重新映射為去畸變圖像經(jīng)過裁剪后在屏幕上顯示出來。如圖4所示,(a)為采集的原始圖像,(b)為經(jīng)過MAP 表映射并裁減后的圖像。由此可以看出該廣視角監(jiān)控視頻有效地消除了魚眼圖像的畸變且具有接近180°的可視角度。
表2 Scaramuzza工具箱標(biāo)定得到的結(jié)果
圖4 處理前后的魚眼圖像
圖5 碰撞、追尾預(yù)警及顯示界面
由于毫米波雷達的工作頻率和魚眼攝像頭的工作頻率不同,因此需要對其進行時間數(shù)據(jù)融合,以保證它們在同一時刻探測到的環(huán)境信息是一致的。該文所采用的毫米雷達的采樣頻率為25 Hz,即兩幀雷達數(shù)據(jù)之間的時間間隔為40 ms;魚眼攝像頭的幀率為30 幀/s,即兩幀魚眼圖像之間的時間間隔為33.3 ms。該文以采樣周期長的毫米波雷達為基準,用向下兼容的方式對雷達數(shù)據(jù)和魚眼圖像進行時間數(shù)據(jù)融合。比如:每隔40 ms 設(shè)置時間節(jié)點,在獲得毫米波雷達數(shù)據(jù)時,同時采集魚眼圖像信息。
該文針對障礙物的預(yù)警提供了蜂鳴器與界面顯示兩種方式。蜂鳴器通過定時器控制GPIO口的通斷頻率從而區(qū)分不同障礙物的距離,其中0~5 m頻率為10 Hz,5~10 m 頻率為5 Hz,10~15 m 頻率為2 Hz,15~20 m 頻率為1 Hz,大于20 m蜂鳴器關(guān)閉。
該文利用QT5.5.1進行人機界面的設(shè)計,具體見圖4,可以為整個系統(tǒng)提供一個可視化窗口。該界面將處理后雷達數(shù)據(jù)和視頻數(shù)據(jù)進行了整合,可分為左右兩個部分,左邊顯示前后障礙物的距離,一共分為5級,其中0~5 m顯示為紅色且閃爍頻率為5 Hz,5~10 m顯示為粉紅色且閃爍頻率為3 Hz,10~15 m顯示為橙色且閃爍頻率為2 Hz,15~20 m 顯示為黃色且閃爍頻率為1 Hz,大于20 m 顯示為綠色且閃爍頻率為0.5 Hz;右邊顯示處理后的視頻數(shù)據(jù)。
雷達采用的矩形分級預(yù)警流程見圖6。首先該系統(tǒng)根據(jù)表1、表2所描述的CAN協(xié)議解析出毫米波雷達所探測到的障礙物的信息z=[r'a'v]T,包含距離r、角度a、速度v,然后為了減少車輛外圍較遠處障礙物的誤報,通過角度和相對距離將探測到的目標(biāo)由極坐標(biāo)系轉(zhuǎn)換為直角坐標(biāo)系從而將探測到的數(shù)據(jù)過濾到一個寬4 m,長25 m的矩形框內(nèi)[14]。由于采礦卡車在山區(qū)運行時自身震動較大,因此需要過濾掉車輛在空轉(zhuǎn)狀態(tài)時的誤檢目標(biāo),設(shè)置相對速度大于0.1 m/s 且縱向距離最小的目標(biāo)為初選有效目標(biāo),分別表示在車輛坐標(biāo)系下的縱向距離、縱向速度、橫向距離、橫向速度。由于雷達本身的特性及目標(biāo)回波能量的分布不均,還可能出現(xiàn)虛假目標(biāo)。同時,隨著車輛行駛中的隨機顛簸和擺動,導(dǎo)致目標(biāo)會出現(xiàn)短暫丟失的情況,對此,該文使用二階擴展Kalman濾波方法進行目標(biāo)信息預(yù)測,并設(shè)定最大容許誤差,將目標(biāo)信息預(yù)測值與初選目標(biāo)信息進行一致性檢驗[15]。最后根據(jù)有效目標(biāo)的距離分為5個不同的報警級別。
圖6 分級預(yù)警流程
考慮到礦山卡車運行速度較慢,該文認為障礙物目標(biāo)相對于車輛為勻速運動,則線性的運動狀態(tài)轉(zhuǎn)移方程可描述為
公式(6)中,Xk表示當(dāng)前時刻的目標(biāo)狀態(tài),dt表示毫米波雷達更新周期,Xk-1表示上一時刻的目標(biāo)狀態(tài),vk表示高斯噪聲。
非線性觀測方程可描述為
公式(7)中,zk表示當(dāng)前時刻毫米波雷達探測到的障礙物信息,wk表示高斯噪聲。
通過預(yù)測模型的運動方程和觀測方程構(gòu)建一個擴展Kalman濾波問題從而得到預(yù)測目標(biāo)信息,通過式(8)與初選目標(biāo)進行一致性檢驗。
對當(dāng)前時刻的預(yù)測目標(biāo)信息與初選目標(biāo)信息如果不滿足公式(9),則需要進行不一致性處理,當(dāng)連續(xù)不一致次數(shù)超過10次則認為目標(biāo)消失,否則進行目標(biāo)信息更新從而確定有效目標(biāo)。
考慮到嵌入式硬件平臺性能的局限性,該文采用宿主機(PC)和客戶機(IMX6)交叉開發(fā)的方式。該文所采用的宿主機的開發(fā)環(huán)境為Ubuntu 16.04,UI 界面的開發(fā)工具為QT Creator 4.6.1,通過以下幾個主要步驟來搭建QT交叉開發(fā)環(huán)境[16]。
(1)在宿主機上安裝交叉編譯工具gcc-4.6.2-fsllinaro-toolchain,配置編譯器運行環(huán)境。
(2)在宿主機上下載QT 5.5.1源碼包,通過交叉編譯器套件配置、編譯后安裝至宿主機及客戶機。
(3)在宿主機上配置QT Creator 的交叉編譯環(huán)境,指定經(jīng)過第二步編譯后的QT5.5.1開發(fā)包。
(4)宿主機配置串口終端與NFS,通過串口控制客戶機,通過NFS實現(xiàn)文件的傳輸。
該系統(tǒng)通過采用多線程與定時器的方式實現(xiàn)防撞預(yù)警的加速從而滿足實時性的要求,前后兩個毫米波雷達的CAN 數(shù)據(jù)的讀取及處理分別用一個單獨的線程來實現(xiàn)。蜂鳴器的報警用一個50 ms 的定時器來控制,界面顯示的報警用一個200 ms 的定時器來控制。通過定時器報警既可以實現(xiàn)主程序的加速運行又可以使報警頻率便于控制。
該系統(tǒng)通過板載IPU與GPU加速的形式實現(xiàn)前后視頻的實時處理。圖7 為硬件加速的視頻流。首先,在Linux內(nèi)核的V4l2框架下,利用與IMX6核心板相連的TW6865 模塊同時讀取車輛前后魚眼攝像頭。其次,圖像處理模塊IPU 將數(shù)據(jù)格式由UYVY 轉(zhuǎn)化為RGB32,以便于魚眼去畸變處理。再次,將圖像數(shù)據(jù)加載到GPU內(nèi)存空間。在GPU的紋理映射模塊中,將畸變圖像綁定到GPU的畸變圖像紋理,并將上述生成的去畸變MAP 表綁定到GPU 的校正MAP 紋理。最后,GPU根據(jù)畸變圖像紋理和校正MAP紋理,運用可編程頂點著色器中的頂點處理程序確定渲染的位置,運用可編程片元著色器中的著色程序?qū)崟r校正每個像素的位置,從而獲得去畸變圖像[17]。
圖7 硬件加速視頻流
為了驗證整個系統(tǒng)的運行情況,該文在一個露天礦區(qū)內(nèi)進行了實車測試實驗。如圖8 所示,該文按照上述礦車安裝標(biāo)準,將前后毫米波雷達與攝像頭安裝至一輛小松HD465-7 礦山卡車上。通過USB 視頻采集卡將控制器的UI 界面輸出至PC 機上顯示。通過USB-CAN采集儀將前后雷達數(shù)據(jù)連接至PC機的上位機軟件中進行顯示。圖9 為PC 上顯示的UI 界面和雷達數(shù)據(jù)可視化界面。由此可以看出該系統(tǒng)不僅可以根據(jù)雷達數(shù)據(jù)進行實時預(yù)警,還可以提供對應(yīng)的車輛前后的廣視角監(jiān)控視頻,從而消除車輛近距離的視覺盲區(qū)。
圖8 測試車輛及采集裝置
圖9 雷達數(shù)據(jù)及預(yù)警顯示界面
為了進一步驗證毫米波雷達預(yù)警結(jié)果的可靠性,該文測試了該系統(tǒng)對于車輛和行人的預(yù)警準確率。測試時,測試車輛靜止在一露天礦區(qū)內(nèi),預(yù)警系統(tǒng)正常工作;礦山車輛前后0~25 m 范圍內(nèi)分別設(shè)置5 個均勻分布的測量區(qū)域,在每個區(qū)域內(nèi)分別安排行人或車輛以大于0.1 m/s 的速度遠離或靠近測試車輛;根據(jù)行人或車輛所在的區(qū)域判斷系統(tǒng)給出的預(yù)警信息是否正確;每個測量區(qū)域分別針對行人和車輛各測試30 次。準確率Ac根據(jù)公式(10)通過統(tǒng)計獲得。
結(jié)果表明,該系統(tǒng)對于車輛預(yù)警的準確率為97.38%,對于行人預(yù)警的準確率93.23%,兩者平均的預(yù)測準確率為95.31%。對于行人,在0~5 m和15~20 m區(qū)域內(nèi),預(yù)警錯誤的次數(shù)比較多。在遠距離范圍內(nèi),行人目標(biāo)比較小,雷達檢測不穩(wěn)定。在近距離范圍內(nèi),由于毫米波雷達探測角度的限制,行人容易偏離毫米波雷達的探測范圍。不過此時可以通過廣視角監(jiān)控視頻來確定車輛的前后是否有行人。
針對目前礦山車輛車體龐大、盲區(qū)大、移動笨拙等特點,該文提出了一種毫米波雷達與廣視角監(jiān)控結(jié)合的前后預(yù)警系統(tǒng)。該系統(tǒng)結(jié)合了魚眼攝像頭與毫米波雷達的優(yōu)點。通過前后兩個魚眼攝像頭實時顯示前后路況,解決車輛近距離內(nèi)盲區(qū)大的問題,通過前后兩個毫米波雷達可實現(xiàn)車輛前后障礙物的同時探測并提供界面與蜂鳴器相結(jié)合的預(yù)警方式。該系統(tǒng)的應(yīng)用可以有效提高礦車作業(yè)安全性及效率。