張一帆, 秦鑫宇, 王文亮, 劉識灝, 牛亦龍
(中船(浙江)海洋科技有限公司, 舟山 316021)
工業(yè)車輛/機械的使用大幅提高了物件的裝卸、堆垛、搬運效率, 然而在使用過程中也存在諸多問題. 最突出的是工業(yè)車輛/機械在作業(yè)過程中運動方向改變頻繁, 回旋作動部件多, 由此給附近作業(yè)的工程人員帶來較大的安全威脅; 同時此類設(shè)備往往視野盲區(qū)大, 而操作員又需同時兼顧多個操作面, 以普通叉車為例, 駕駛員有近50%的時間處于倒車狀態(tài), 很容易顧此失彼,發(fā)生事故. 據(jù)國家質(zhì)檢總局和市場監(jiān)管總局的統(tǒng)計數(shù)據(jù)顯示, 2014–2018年間, 35%的事故是由于兩車之間的碰撞導(dǎo)致, 28%的事故來自于工業(yè)車輛之間的擠壓,擠壓和碰撞事故的現(xiàn)象相同, 最重要的原因是兩者都存在視覺盲區(qū)[1]. 工業(yè)車輛/機械引發(fā)的安全事故一旦發(fā)生, 造成人員生命財產(chǎn)損失, 后果影響惡劣. 如何加強工業(yè)車輛/機械的操控安全性, 避免惡性碰撞事件的發(fā)生已引發(fā)廣泛關(guān)注. 全國工業(yè)車輛標準化技術(shù)委員會組織制定《GB/T 38893-2020工業(yè)車輛安全監(jiān)控管理系統(tǒng)》已于2020年6月2日正式批準發(fā)布, 于2020年12月1日起正式實施[2]. 本標準規(guī)定了工業(yè)車輛安全監(jiān)控管理系統(tǒng)的構(gòu)成、內(nèi)容、要求、檢驗方法和檢驗項目, 對工業(yè)車輛/機械駕駛環(huán)境中的人員識別及其距離識別、減速控制等提出了要求.
隨著圖像采集處理設(shè)備和計算機視覺的發(fā)展, 復(fù)雜背景下人員等目標的實時監(jiān)測、物體空間位置信息感知等技術(shù)變得相對成熟. 此外工業(yè)車輛在實際使用中還受到設(shè)備成本限制. 因此, 在較低的設(shè)備成本條件下, 利用機器視覺輔助工業(yè)車輛/機械實現(xiàn)安全預(yù)警與作業(yè)控制已成為當(dāng)前需要解決的實際工程問題.
工業(yè)車輛通過傳感器進行車輛后方視野弱區(qū)的環(huán)境感知, 依據(jù)識別到行人、車輛等障礙物的距離及方位進行避障. 測距避障所使用的傳感器不同, 其特點及適用范圍也會有所區(qū)別, 按照測距避障基于傳感器的不同可劃分為不同技術(shù)路線, 主要包括激光雷達避障、超聲波避障、紅外避障和機器視覺測距避障等[3].
激光雷達測距的原理是通過發(fā)射激光束, 獲取被接收目標物體擊中后的反射激光, 計算發(fā)射和反射的往返時間, 從而測得目標距離[4]. 激光傳感器運行性能穩(wěn)定、探測距離遠、測距精度高、反應(yīng)速度快, 目前激光雷達測距避障技術(shù)可以達到厘米級甚至毫米級的測距精度[5]. 康燕仁[6]提出了一種基于雷達測距的鐵路工程車防撞系統(tǒng). 該系統(tǒng)將激光雷達、微波雷達和激光對射等周圍感知信息通過ZigBee無線通信網(wǎng)絡(luò)傳給主控, 進行多信息融合與閾值比較, 最終形成報警.然而由于激光雷達造價昂貴, 使用壽命短, 信號的處理復(fù)雜, 在遇到泥水附著在傳感器的表面或較低能見度天氣等特殊情況時穩(wěn)定性會大大降低, 極大制約了激光雷達在工業(yè)車輛環(huán)境感知中的應(yīng)用.
超聲波避障是通過計算發(fā)射超聲波與接受回波之間的時間差與超聲波波速的乘積進行目標物距離的測量[7]. 由于其工作原理簡單、成本低, 且在一定范圍內(nèi)測距精度較高等優(yōu)點, 超聲波測距技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)車輛避碰系統(tǒng)[8]. 王琰琰等[9]提出了STM32F407單片機的智能倉儲搬運車控制系統(tǒng). 提出在車身前端、左端和右端加裝超聲波傳感器進行障礙物的檢測與大小感知, 進而根據(jù)當(dāng)前區(qū)域分析能否通過, 并重新規(guī)劃行進路線, 實現(xiàn)自主避讓決策. 然而超聲波傳感器的僅具有較短的有效探測距離, 且易受大氣因素的影響, 僅適用于較近范圍內(nèi)的避障檢測[10].
紅外測距都是采用三角測距的原理. 紅外發(fā)射器按照一定角度發(fā)射紅外光束, 遇到物體之后, 光會反向回來, 檢測到反射光之后, 通過結(jié)構(gòu)上的幾何三角關(guān)系,就可以計算出物體距離[11]. 紅外傳感器具有角度靈敏度高、價格便宜、結(jié)構(gòu)簡單且不受可見光影響等優(yōu)點,可以快速感知物體的存在[12]. 邵小軍[13]提出了基于有源紅外傳感器的掘進機定位系統(tǒng), 采用主動照明紅外傳感器結(jié)合慣性導(dǎo)航儀、加速度計與陀螺儀進行掘進機地下位置的精確定位和避障, 大大提高了掘進機在缺少操作者視覺控制時的定位可靠性. 然而紅外傳感器測距在測量物體時受環(huán)境因素影響較大, 待測物體的周圍光線、方向及顏色都能導(dǎo)致測量誤差, 影響測距精度[14].
機器視覺測距是對視覺傳感器采集到的目標物圖像, 采取特定的圖像處理算法對圖像中的目標物信息進行分析, 進而計算得出目標物的深度距離[15]. 本文方法屬于機器視覺測距技術(shù)范疇, 相比于其他感知技術(shù),視覺傳感器的硬件研發(fā)成熟、成本較低[16]. 機器視覺測距技術(shù)主要在軟件算法上進行研究優(yōu)化, 屬于被動測距, 即不需要向目標物發(fā)射信號, 不會因多車間的信號互相干擾而影響車輛的安全行駛. 另一方面, 攝像頭獲取的圖像中信息除目標物信息外, 還包含大量附加的場景物體信息, 利用機器視覺算法識別出圖像中包含的這些信息, 將會極大地提高工業(yè)車輛避碰系統(tǒng)的智能程度.
本文提出的基于雙目視覺的范圍內(nèi)工業(yè)車輛實時避障方法主要分為以下5個步驟:
步驟1. 圖像采集與矯正. 使用雙目深度相機采集車輛正后方作業(yè)環(huán)境圖像, 根據(jù)標定后相機的畸變系數(shù)、內(nèi)參矩陣等參數(shù)對采集到的圖像進行雙目矯正;
步驟2. 三維立體重建. 將步驟1得到的矯正后左右視圖采用SGBM算法進行立體匹配, 得到視差圖,并由匹配點的視差信息得到對應(yīng)的點云圖;
步驟3. 自定義有效檢測范圍. 對地面進行標定并擬合地面方程. 人為設(shè)定有效檢測范圍以及安全預(yù)警范圍的長與寬, 并根據(jù)CAN通訊模塊接收車輛行駛信息, 實時調(diào)整安全預(yù)警區(qū)域的大小和形狀;
步驟4. 直行及轉(zhuǎn)彎范圍內(nèi)行人距離及方位測算.采用輕量化行人檢測模型對步驟1得到的矯正后圖像進行行人方位框的定位, 設(shè)計了直行及轉(zhuǎn)彎測距算法對有效檢測范圍內(nèi)的行人距離進行計算;
步驟5. 范圍預(yù)警與實時規(guī)劃避障. 由步驟4得到的行人距離和方位信息對比既設(shè)的安全預(yù)警范圍, 判斷行人所處的位置是否安全, 將比對結(jié)果通過CAN通訊模塊發(fā)送至車載控制器進行車輛的自動操作, 同時將判定分析結(jié)果在車載顯示器上進行實時顯示.
本文提出方法的總體流程如圖1所示.
圖1 總體流程
將雙目深度相機固定于工業(yè)車輛正后方, 進行車輛正后方弱視野區(qū)環(huán)境圖像的采集. 由雙目立體視覺測距的原理可知, 要獲取雙目圖像中目標點的距離, 就必須知道二維圖像與三維空間坐標系的轉(zhuǎn)換關(guān)系. 而雙目深度相機標定就是通過一組圖像坐標系坐標和已知其參考坐標系坐標的點建立圖像坐標系中成像點與世界坐標系中目標物點的映射關(guān)系, 計算得出相機的內(nèi)外參數(shù)及畸變系數(shù), 為接下來的雙目立體視覺測距提供相關(guān)未知參數(shù)解[17].
雙目相機單個攝像頭的標定主要是計算出攝像頭的內(nèi)參矩陣M、畸變系數(shù)distCoeff. 另外針對雙目相機左右兩個攝像頭的旋轉(zhuǎn)及平移位置關(guān)系, 還需要標定測量右攝像頭相對于左攝像頭的旋轉(zhuǎn)矩陣R、平移向量T. 其中, 雙目相機的畸變系數(shù)distCoeff、內(nèi)參矩陣M、旋轉(zhuǎn)矩陣R和平移矩陣T分別由式(1)–式(4)表示:
其中,k1、k2、k3為 徑向畸變系數(shù);p1、p2為切向畸變系數(shù);cx、cy為主點坐標, 通常位于圖像的中心附近;fx和fy為相機在水平方向和垂直方向的焦距, 單位為像素; α、 β、γ為右相機圍繞左相機坐標系3個軸的轉(zhuǎn)角;R與T合并稱為相機外參.
本文采用張正友標定法[18]對雙目深度相機進行標定, 得到標定后相機的最優(yōu)內(nèi)、外參數(shù)解. 接下來進行雙目立體矯正, 首先通過單目標定得到的鏡頭畸變系數(shù)distCoeff分別消除左右攝像頭拍攝圖像的徑向和切向上的鏡頭畸變, 然后使用Bouguet極線矯正算法[19]對雙目圖像進行立體矯正(圖2, 圖3). 將雙目標定中得到的左右攝像頭的旋轉(zhuǎn)矩陣R和平移向量T等數(shù)據(jù)作為Bouguet算法的輸入?yún)?shù), 經(jīng)Bouguet算法進行雙目立體矯正后, 可以得到經(jīng)過重投影映射和旋轉(zhuǎn)的行對準雙目圖像.
圖2 Bouguet極線矯正前
圖3 Bouguet極線矯正后
立體匹配算法作為雙目立體視覺測距算法的關(guān)鍵技術(shù), 其算法效果直接影響著測距性能的好壞, 因此,需要對采集到的雙目深度相機圖像采取必要的預(yù)處理措施. 對采集到的左右相機圖像進行立體矯正, 得到像素行嚴格對準的雙目圖像, 這就保證了立體視覺匹配算法能夠準確并快速地搜索匹配點. 此外需要對矯正后的圖像進行灰度處理和濾波去噪, 以減少立體匹配算法的數(shù)據(jù)處理量. 并對雙目圖像邊界進行延拓, 以使雙目立體匹配后的視差圖能夠還原雙目視場范圍.
接下來, 將預(yù)處理后的雙目圖像輸入SGBM (semiglobal block matching)算法[20]進行雙目立體視覺匹配,得到較為稠密的視差圖, 具體步驟如下.
步驟1. 預(yù)處理. 使用Sobel算子對源圖像進行處理, 公式為:
其中,P表示其原像素值, 并將經(jīng)Sobel算子處理后的圖像上每個原像素點P映射為新圖像, 映射公式為:
其中,Pnew為新像素值,preFilterCap為常量參數(shù). 最終得到圖像的梯度信息用于后續(xù)的代價計算.
步驟2. 代價計算. 代價計算分為兩步: 一是使用采樣方法對經(jīng)預(yù)處理得到的圖像梯度信息計算梯度代價值; 二是使用采樣方法對源圖像計算SAD (sum of absolute differences)代價. SAD代價計算公式如下:
這兩個代價計算都會在選取的SAD窗口中進行計算, 窗口越大, 計算耗費的時間越多.
步驟3. 動態(tài)規(guī)劃. 動態(tài)規(guī)劃算法本身存在拖尾效應(yīng), 視差突變處易產(chǎn)生錯誤的匹配, 利用動態(tài)規(guī)劃進行一維能量累積, 會將錯誤的視差信息傳播給后面的路徑上. 半全局算法利用多個方向上的信息, 試圖消除錯誤信息的干擾, 能明顯減弱動態(tài)規(guī)劃算法產(chǎn)生的拖尾效應(yīng). 該算法試圖通過影像上多個方向上一維路徑的約束, 來建立一個全局的馬爾科夫能量方程, 每個像素最終的匹配代價是所有路徑信息的疊加, 每個像素的視差選擇都只是簡單通過WTA (winner takes all)決定的. 在每個方向上按照動態(tài)規(guī)劃的思想進行能量累積,然后將各個方向上的匹配代價相加得到總的匹配代價.如式(8)–式(10)所示:
式(8)中,Lr為當(dāng)前路徑累積的代價函數(shù); 第3項無意義, 僅是為了消除各個方向路徑長度不同造成的影響;P1、P2為像素點與相鄰點視差存在較小和較大差異情況下的平滑懲罰, 且P1<P2,P1、P2分別由式(9)、式(10)表示, 其中,cn是圖像的通道數(shù),SADWindowSize是SAD窗口大小, 數(shù)值為奇數(shù). 將所有r方向的匹配代價相加得到總的匹配代價, 計算公式如下:
步驟4. 后處理. SGBM的后處理包括置信度檢測、亞像素插值、左右一致性檢測. 置信度檢測是利用代價立方體本身進行錯誤視差值的剔除, 即最佳視差值要與一定范圍內(nèi)的視差值在代價值上保持一定的全局最優(yōu)關(guān)系, 這樣可以避免算法中經(jīng)常遇到的局部最優(yōu)解問題. 亞像素插值的目的是讓物體表面視差更加的平滑, 因為在立體匹配的時候是將雙目視角所在空間粗略地分為了最大視覺差所對應(yīng)的平面數(shù), 但是真實場景卻又是連續(xù)且漸變的. 左右一致性檢測的目的則是為了消除左右遮擋帶來的視差錯誤.
SGBM算法整體流程如圖4所示. 圖5描述了對左右視圖進行雙目立體匹配得到的視差圖效果.
圖4 SGBM算法整體流程圖
圖5 視差圖
給定相機標定后的相機內(nèi)參矩陣, 計算得到重投影矩陣Q, 定義如下:
其中, 除外的所有參數(shù)都來自于左圖像,是左點在右圖像上的x坐標, 當(dāng)矯正正確時, 主光線在無窮遠處相交, 那么cx=
給定一個二維齊次點, 由SGBM算法得到的視差圖中可以得到與之關(guān)聯(lián)的視差d, 通過Q矩陣可將該點投影至三維空間中, 公式如下:
在矯正正確的前提下展開式(13), 可得:
在圖像上選取地面平面點, 在3D點云圖上得到所選地面平面點所對應(yīng)的空間坐標(相對左相機坐標),設(shè)定地面參數(shù)方程如下:
將多個地面平面點(x1,y1,z1),(x2,y2,z2),···,(xn,yn,zn)采用最小二乘法擬合出對應(yīng)地面平面的參數(shù)方程[21],具體公式如下:
式(16)的矩陣表達方式可轉(zhuǎn)換為:
由此得到擬合后的地面平面參數(shù)方程.
其中,tstop表示剎車時間, 應(yīng)和車上設(shè)置的實際參數(shù)一致;tdec表示減速時間, 應(yīng)和車上設(shè)置的實際參數(shù)一致;vstop表示削減速度, 應(yīng)和車上設(shè)置的實際參數(shù)一致;kstop表 示剎車系數(shù)值, 需實測;kdec表示減速系數(shù)值, 需實測; 除實時車速v以外的其他7個參數(shù)需實際測試確定最優(yōu)值.
采用輕量級目標檢測算法實時檢測識別人等障礙物的對應(yīng)位置及所屬類別, 并在視頻畫面中框出行人位置. 根據(jù)自定義有效檢測范圍的長寬進行直行范圍內(nèi)行人方位框的投影與距離測算(第2.5.1節(jié))和轉(zhuǎn)彎范圍內(nèi)行人方位框的投影與距離測算(第2.5.2節(jié)).
2.5.1 直行范圍內(nèi)行人投影測距
工業(yè)車輛在直行倒車情況下形成矩形區(qū)域(圖6),對處于該區(qū)域范圍行人方位框進行進界點計算及最佳距離測算. 主要分為以下5個步驟:
圖6 直行倒車下的安全預(yù)警區(qū)域
步驟1. 投影點數(shù)計算. 對人體方位框中的點按一定間隔逐像素進行遍歷, 當(dāng)求得像素點在左右視圖中的視差大于固定閾值時, 認為該點距離較近或未能匹配成功, 需要排除; 對符合要求的點由點云圖求得該點的空間位置坐標, 計算點到地面的高度, 若高度小于固定閾值, 則需排除, 由此得到行人方位框內(nèi)符合投影要求的點數(shù).
步驟2. 地面投影點坐標計算. 將步驟1中符合投影要求的點投影至地面, 由第2.3節(jié)計算得到擬合后的地面方程為Ax+By+C=z, 假定不在平面上的任一點的坐標為P(xi,yi,zi), 其在平面上的投影坐標為P′(xp,yp,zp).因為投影點到當(dāng)前點的向量與地面平面垂直, 根據(jù)垂直約束條件, 易知yp,zp滿足如下條件:
聯(lián)立平面方程可以解得:
由此可以得到投影坐標為P′(xp,yp,zp).
步驟3. 投影點距離計算. 由所求地面平面方程與相機平面的z軸分量向量相交, 易得平行于相機平面的方向向量x_line(xx_line,yx_line,zx_line)和垂直于相機平面的方向向量y_line(xy_line,yy_line,zy_line), 以相機投影點為基點 (x0,y0,z0), 將投影點與相機基點投影點在z軸方向形成的向量的長度作為該點的距離dP′, 即:
對行人方位框內(nèi)所有符合步驟2投影要求的點的距離值進行存儲, 進而得到矩陣框中符合投影要求的點的距離值列表dPLlist, 即:
步驟4. 投影點進界判斷. 根據(jù)步驟2所得投影點P′(xp,yp,zp) 的x、z方向坐標P′′(xp,zp)與直行矩形區(qū)域范圍內(nèi)4個頂點的x、z方向坐標Vtl(xtl,ztl)、Vtr(xtr,ztr)、Vbl(xbl,zbl) 、Vbr(xbr,zbr)所呈平面向量關(guān)系, 判斷是否該點是否進界, 公式如下:
若進界, 則當(dāng)前進界點數(shù)加1, 并以此進行累積, 由此得到行人方位框內(nèi)符合進界要求的點數(shù).
步驟5. 范圍內(nèi)行人方位框的最佳距離值. 當(dāng)行人方位框內(nèi)同時符合投影要求與進界要求的點數(shù)高于對應(yīng)的閾值時, 使用直方圖距離測算方法計算該行人方位框的最佳距離. 即由符合要求的點的距離值列表計算最大和最小距離值, 除以固定直方區(qū)間寬度, 得到直方圖區(qū)間個數(shù). 將距離值列表中各點距離減去距離最小值的差, 除以區(qū)間寬度, 得到該距離所屬的直方圖區(qū)間號, 并且該區(qū)間內(nèi)的距離數(shù)計數(shù)加1, 以此得到各區(qū)間距離數(shù)目的直方圖. 以固定寬度的滑窗沿直方圖由左至右以特定步長滑行, 統(tǒng)計每滑行一步后滑窗內(nèi)的各直方圖區(qū)間的距離數(shù)之和, 以及當(dāng)前滑窗中心點對應(yīng)的距離, 取得距離數(shù)之和最大的滑窗所對應(yīng)的滑窗中心點距離作為當(dāng)前行人判斷框的最佳距離.
2.5.2 轉(zhuǎn)彎范圍內(nèi)行人投影測距
工業(yè)車輛在轉(zhuǎn)彎倒車情況下形成矩形區(qū)域(圖7),對處于該區(qū)域范圍行人方位框進行進界點計算及最佳距離測算. 主要分為以下5個步驟.
圖7 轉(zhuǎn)彎倒車下的安全預(yù)警區(qū)域
步驟1. 確定轉(zhuǎn)向中心點. 由CAN通訊模塊接收車輛行駛過程中的轉(zhuǎn)向角度θ, 再由車身長度L和圓心角θ 計算圓弧半徑R, 即:
以相機投影點為基點 (x0,y0,z0), 基點到圓心的距離R為直角三角形的斜邊, 計算兩條直角邊l1(相機投影基點到車頭的垂直距離)和l2(直角三角形直角頂點到圓心的水平距離), 即:
將基點坐標(x0,y0,z0) 沿y_line的相反方向移動l1個距離長度, 再沿x_line方向(左轉(zhuǎn)向)或x_line相反方向(右轉(zhuǎn)向)移動l2個距離長度, 到轉(zhuǎn)向圓心點C.
步驟2. 投影點數(shù)計算. 同第2.5.1節(jié)步驟2.
步驟3. 投影點距離計算. 在進行轉(zhuǎn)彎過程下投影點距離計算時, 由于弧形區(qū)域起始點沿線位置與相機基點沿線位置間由于轉(zhuǎn)向角 θ的關(guān)系有一定的距離誤差, 故需計算進界點的距離修正項, 即:
進而將投影點距離相機基點沿線的弧線長度作為轉(zhuǎn)彎過程下該點的距離值dP′, 即:
步驟4. 投影點進界判斷. 由步驟2計算得到人體判定框內(nèi)符合要求的點到地面的投影P′(xp,yp,zp), 計算投影點到圓心的半徑長度R′, 判斷該投影點是否在弧形區(qū)域?qū)挾萐范圍內(nèi), 公式如下:
接下來對弧形區(qū)域?qū)挾确秶鷥?nèi)的投影點繼續(xù)判定是否該點在弧形區(qū)域長度范圍內(nèi), 根據(jù)轉(zhuǎn)彎區(qū)域有效作用范圍的長度d與圓弧半徑R的對應(yīng)關(guān)系求得弧形區(qū)域長度對應(yīng)的圓心角 θd, 假定相機基點(x0,y0,z0)與圓心所成向量pc, 投影點P′(xp,yp,zp)與圓心的所成向量則pc與所成的夾角角度θp計算如下:
判斷其是否處于弧形長所在的圓心角范圍內(nèi), 若θp<θd, 則證明該點在弧形區(qū)域內(nèi), 進界點數(shù)計數(shù)加1,由此得到所有的弧形區(qū)域進界點.
步驟5. 范圍內(nèi)行人方位框的最佳距離值. 當(dāng)行人方位框內(nèi)符合投影要求的點數(shù)與符合進界要求的點數(shù)均高于對應(yīng)的閾值時, 通過第2.5.1節(jié)步驟5所述直方圖的方法計算出最佳距離值作為轉(zhuǎn)彎情況下弧形區(qū)域范圍內(nèi)行人方位框的最佳距離.
獲取在直行(第2.5.1節(jié))或轉(zhuǎn)彎(第2.5.2節(jié))范圍內(nèi)所有行人檢測框的最佳距離, 將其中的最小值作為距離車尾(以相機基點為準)最近的行人距離值dmin,則實時剎車與減速避障規(guī)則如下:
CAN通信設(shè)備負責(zé)接收來自系統(tǒng)發(fā)出不同預(yù)警信號并向工業(yè)車輛控制器進行信號傳遞, 當(dāng)行人處于剎車范圍內(nèi)時, 工業(yè)車輛控制器收到剎車信號使其剎車; 當(dāng)行人處于制動范圍內(nèi), 工業(yè)車輛控制器收到減速信號使其減速. 系統(tǒng)將判定分析結(jié)果結(jié)果實時在車載顯示器上進行顯示.
為了全面研究與分析基于雙目定位測距的工業(yè)車輛實時避障方法的性能, 本文以普通工業(yè)叉車為例在廠區(qū)環(huán)境下開展實驗, 所需硬件設(shè)備主要由車載控制器、CAN通信模塊、工控機、雙目深度相機、車載電源、車載顯示器組成, 連接方式如圖8所示.
圖8 系統(tǒng)的組成及連接方式
算法模型在CPU為i5-6200U, 內(nèi)存大小為4 GB的工控機上部署運行, 操作系統(tǒng)為Windows 10, 編程語言為C++, 編程環(huán)境為Visual Studio 2017, OpenCV版本為4.4.0, 使用OpenVINO 2021.2框架進行目標檢測模型的推理加速. 此外, 雙目相機經(jīng)標定(第2.1節(jié))后的結(jié)果如表1所示.
表1 雙目相機標定結(jié)果
本節(jié)主要對本文提出的方法中目標檢測模型性能、靜態(tài)測距精度、核心檢測范圍進界判定、實時規(guī)劃區(qū)域避障效果4個方面進行測試.
本文采用ssd_inception[22]作為該方法的行人檢測算法模型, 并與ssd_mobilenet[23]進行性能對比, 分別將ssd_inception與ssd_mobilenet模型進行訓(xùn)練、測試, 其中將3 937張行人圖片和3 937張工業(yè)叉車圖片劃分為訓(xùn)練集, 將600張行人圖片和600張工業(yè)叉車圖片劃分為測試集. 訓(xùn)練的批次大小為34, 周期數(shù)為25 000, 在測試集上采用平均識別精度和檢測幀率作為模型檢測精度和速度的驗證指標. 兩模型性能測試結(jié)果如表2所示.
表2 目標檢測模型性能對比
可以看出, ssd_inception模型的模型大小和識別精度高于ssd_mobilenet模型, 檢測幀率低于ssd_mobilenet模型, 因此, ssd_inception模型在推理精度上相對ssd_mobilenet模型有較大提升, 但與此同時推理速度也會相對較慢.
圖9–圖12展示了兩種方法分別在近距離(距車尾3 m以內(nèi))、遠距離(距車尾3 m之外)場景下的行人識別效果, 在近距離部分截取幀畫面中, 由于距離叉車尾部較近的行人僅有部分身體出現(xiàn)在畫面底部, 導(dǎo)致模型檢測信息不完整, ssd_mobilenet模型對于部分行人存在漏檢, 而ssd_inception模型依然可以在檢測信息不完整的情況下較好地檢測出出現(xiàn)在畫面底部的行人. 在遠距離部分截取幀畫面中, 由于距離叉車尾部較遠的行人目標較小, 對于模型檢測來說像素較少, 特征不明顯, 導(dǎo)致模型檢測信息較少, ssd_mobilenet模型對于遠距離下的行人依然會出現(xiàn)漏檢情況, 而ssd_inception模可以在檢測信息較少的情況下較好地檢測出出現(xiàn)在畫面中目標較小的行人.
圖9 基于ssd_inception的近距離行人識別
圖10 基于ssd_mobilenet的遠距離行人識別
圖11 基于ssd_inception的遠距離行人識別
圖12 核心檢測區(qū)域?qū)挾确秶鷥?nèi)的進界判定
綜上所述, 在設(shè)備允許且畫面無明顯卡頓的情況下, 選用ssd_inception模型作為該方法的目標檢測模型在近距離、遠距離均能達到較好的行人檢測效果.
在直行倒車狀況下, 標記距相機中心0.5 m、1 m、1.5 m、2 m、2.5 m、3.0 m、3.5 m、4 m、4.5 m、5 m位置, 保持叉車不動, 實驗人員依次在上述位置站立,觀察記錄算法計算出的距離值, 在某一位置3次測量取平均值, 計算該位置處測得的距離均值與該位置處真實距離值的平均誤差, 測試結(jié)果如表3所示.
表3 直行倒車狀況下的靜態(tài)測距結(jié)果 (m)
在轉(zhuǎn)彎狀況下, 確定叉車倒車時前輪的轉(zhuǎn)彎角度為30°, 以相機中心為基本點, 以轉(zhuǎn)彎角度和車頭位置確定圓心, 以0.5 m為間隔, 丈量出由轉(zhuǎn)彎角度所形成的2 m×5 m的弧形區(qū)域, 實驗人員在該區(qū)域內(nèi)勻速行走, 觀測算法能否正確輸出弧形范圍內(nèi)人員的識別和測距結(jié)果. 測試結(jié)果如表4所示.
從表3和表4可以看出, 在直行和轉(zhuǎn)彎狀態(tài)下,[0.5, 3.0)區(qū)間范圍內(nèi), 平均測距誤差在0.1 m之內(nèi),[3.0, 3.5)區(qū)間范圍內(nèi), 平均測距誤差在0.2 m之內(nèi). 特別地, 在轉(zhuǎn)彎狀態(tài)下, 算法均能識別弧形范圍內(nèi)人員的測距結(jié)果. 經(jīng)分析可知, 測距誤差與行人距離車尾的遠近有關(guān), 近距離比遠距離測距誤差更小, 測距較為準確,此外遠距離行人測距誤差依然在可接受的誤差范圍之內(nèi), 證明了本文提出的測距算法的可行性.
表4 轉(zhuǎn)彎倒車狀況下的靜態(tài)測距結(jié)果
在系統(tǒng)界面內(nèi)設(shè)置自定義核心檢測范圍的長度和寬度分別為5 m和2 m, 并以相機中心為基準點, 丈量出設(shè)置的自定義核心檢測范圍的長和寬, 實驗人員在自定義核心檢測區(qū)域的邊界處“沾邊”緩慢進入, 將人與核心檢測區(qū)域按重合比例的程度劃分為低度重合(身體四肢與核心區(qū)域重合)、中度重合(身體半數(shù)左右的部分與核心區(qū)域重合)、高度重合(整個身體完全與核心區(qū)域重合) 3個等級, 觀察算法在不同重合比例等級下能否正常識別和定位行人. 實驗結(jié)果如表5所示.
表5 自定義核心檢測范圍的進界判定結(jié)果
由表5可以看出, 當(dāng)人與核心檢測區(qū)域分別處于低度重合、中度重合及高度重合情況下, 均能識別并定位核心檢測區(qū)域內(nèi)的行人.
圖13和圖14分別表示核心檢測區(qū)域長度和寬度范圍內(nèi)的行人進界判定效果, 可以看出, 當(dāng)行人處于核心檢測區(qū)域之外(進界投影點低于設(shè)定閾值)時, 不會識別并定位行人; 當(dāng)行人的手部或腳部與核心檢測區(qū)域稍有重合時, 會立即識別并定位到行人, 進而驗證了核心檢測范圍進界判定算法的靈敏性和有效性.
圖13 核心檢測區(qū)域長度范圍內(nèi)的進界判定
圖14 直行倒車情況下的預(yù)警提示效果
將調(diào)整好的參數(shù)值代入式(19)、式(20)中, 根據(jù)叉車倒車時的實時車速進行實時剎車距離和減速距離的計算, 并采取第2.6節(jié)中動態(tài)剎車和減速避障規(guī)則進行10 m外和10 m內(nèi)的實時規(guī)劃區(qū)域避障效果測試.
當(dāng)人與車的距離均在10 m外時, 以不同速度倒車,觀察車遇到人后能否及時剎停, 并記錄剎停后系統(tǒng)顯示的人車距離與實際測量的人車距離. 實驗結(jié)果如表6所示.
從表6可以看出, 基于測試叉車上適配好的各參數(shù), 在10 m外以不同速度行駛時, 均能及時剎停, 且剎停時人與車尾的距離基本維持在1 m附近, 符合實時規(guī)劃區(qū)域避障安全要求.
表6 10 m外實時規(guī)劃區(qū)域避障測試
當(dāng)人與車的距離均在10 m內(nèi)時, 設(shè)定人與車的初始距離依次為10 m、9 m、8 m、7 m、6 m、5 m、4 m、3 m、2 m, 在不同初始距離下均以最大速度倒車, 觀察車遇人能否及時剎停, 并記錄剎停后系統(tǒng)顯示的人車距離與實際測量的人車距離. 實驗結(jié)果如表7所示.
表7 10 m內(nèi)實時規(guī)劃區(qū)域避障測試
從表7可以看出, 基于測試叉車上適配好的各參數(shù), 在10 m內(nèi)以最大速度行駛時, 均能及時剎停, 且剎停時人與車尾距離基本維持在0.8–1.3 m范圍內(nèi), 符合實時規(guī)劃避障安全要求.
此外, 在直行或轉(zhuǎn)彎狀態(tài)下, 當(dāng)最近行人距離處于剎車、減速、安全范圍內(nèi), 對應(yīng)的系統(tǒng)界面會出現(xiàn)紅、黃、綠3種不同顏色的邊框作為實時預(yù)警提示,并發(fā)送相應(yīng)的指令信號, 通過CAN通訊模塊傳遞至車載控制器以采取對應(yīng)的措施, 實現(xiàn)實時避障的預(yù)警提示與制動效果.
圖15和圖16分別表示直行及轉(zhuǎn)彎倒車情況下最近行人距離處于剎車、減速、安全范圍內(nèi)的預(yù)警提示效果.
圖15 轉(zhuǎn)彎倒車情況下的預(yù)警提示效果
圖16 基于ssd_mobilenet的近距離行人識別
本文面對工業(yè)車輛在作業(yè)的過程中頻繁出現(xiàn)的行人碰撞等安全問題提出了基于雙目定位測距的工業(yè)車輛實時避障方法. 通過使用標定后的雙目深度相機對工業(yè)車輛后方視野弱區(qū)進行實時的圖像采集、Bouguet極線矯正, 進而對矯正后的圖像使用SGBM算法構(gòu)建視差圖進行三維立體重建, 同時針對不同設(shè)備使用輕量級目標檢測模型進行行人檢測. 最終在人為設(shè)定的有效檢測范圍及安全預(yù)警范圍內(nèi), 對在圖像畫面中的行人進行定位和測距, 并根據(jù)實時車速, 動態(tài)調(diào)整剎車、減速范圍, 對處于不同安全預(yù)警范圍下的行人發(fā)送不同的預(yù)警信號, 通過CAN通信設(shè)備傳遞至車輛控制器, 實現(xiàn)了工業(yè)車輛的實時規(guī)劃避障. 通過4組實驗測試, 結(jié)果表明, 本文提出的方法具有更精準的定位和測距性能, 能夠在不同車速下對范圍內(nèi)的行人進行更加實時、靈敏的避障.
該方法能夠為工業(yè)車輛駕駛?cè)藛T提供有效、實時、智能的操作輔助. 駕駛員無需頻繁回頭觀察, 系統(tǒng)即可感知后方人和物體的存在, 在顯示屏實時畫面的傳輸下, 使駕駛員輕松完成倒車操作, 大大降低人為事故發(fā)生的概率, 提升駕駛員駕駛舒適度和工作效率, 保障工業(yè)車輛作業(yè)時的安全. 未來旨在保證目標檢測模型及立體匹配算法精度的前提下進一步提升其推理速度.