鞏 固,朱 華
(1.江蘇師范大學 計算機科學與技術學院,江蘇 徐州 221116;2.中國礦業(yè)大學 機電工程學院,江蘇 徐州 221116)
煤礦救援機器人屬于特種機器人,工作在煤礦井下惡劣環(huán)境中,在煤礦發(fā)生礦難時為防止二次礦難發(fā)生造成救援人員傷亡,第一時刻代替救援人員進行井下搜索與救援任務,給地面救援指揮人員提供礦難井下環(huán)境信息,為進一步確定救援人員下井實施人工救援提供決策支持[1,2]。機器人在井下行走時,視覺傳感器將獲取的環(huán)境視頻圖像信息傳送給機器人視覺系統(tǒng),機器人通過視覺系統(tǒng)處理視頻圖像信息,識別與檢測周圍環(huán)境并分辨障礙物,同時輔助其它傳感器實現(xiàn)避障[3,4]。
煤礦救援機器人在災后進行井下工作,時效和實用性強。因沒有大量煤礦井下的數(shù)據(jù)集,目前流行的基于神經(jīng)網(wǎng)絡的深度學習,需要大量的訓練集和高性能的圖形處理器(Graphics processing unit,GPU)[5,6]。GPU用電量比較大,而煤礦救援機器人的機體防爆要求至少需要達到國安IIB級,煤礦救援機器人下位機的機體小,里面含電池、電路板和大量線路等,機體是密封防爆防水的[3,4],無法安裝大量的GPU,煤礦救援機器人的工作環(huán)境導致無法采用神經(jīng)網(wǎng)絡算法。機器人是實時運動的,成熟且適合運動視頻目標識別的算法是光流場算法,所以煤礦救援機器人目標識別主要采用成熟的梯度光流場算法[4,5]。
基于圖像灰度梯度方法實現(xiàn)運動分析是目前應用于光流計算的常用方法,如Horn-Schunck算法、Lucas-Kanade算法和Nagel算法等,它采用視頻運動圖像前后灰度保持不變作為前提條件,導出光流約束條件[7,8]。光流計算的假設條件是視頻中光流的運動是微小的[9]。
假設視覺系統(tǒng)采集的視頻含有一個時間上連續(xù)的圖像I(x,y,t),I(x,y,t)表示時刻t圖像的像素點(x,y)的灰度值。d表示微分運算,在t+dt時刻,像素點(x,y)運動到新的像素位置(x+dx,y+dy),此時新的像素點灰度值表達式為I(x+dx,y+dy,t+dt),需要將動態(tài)圖像采用泰勒序列表示為關于位置和時間的函數(shù)[9,10]
I(x+dx,y+dy,t+dt)=I(x,y,t)+Ixdx+Iydy+
Itdt+O(?2)
(1)
式中:Ix、Iy和It分別表示I的偏導數(shù),即Ix=?I/?x、Iy=?I/?y和It=?I/?t,它們分別代表圖像像素點(x,y)的灰度隨著x、y、t的變化率??梢酝茖У玫綄嶋H計算方法
I(x+dx,y+dy,t+dt)≈I(x,y,t)+Ixdx+Iydy+Itdt
(2)
在計算過程中,假設圖像像素點(x,y)的直接鄰域在時間間隔dt內(nèi)被移動了某個微小距離d(x,y),則有I(x+dx,y+dy,t+dt)的計算
I(x+dx,y+dy,t+dt)=I(x,y,t)
(3)
如果dx、dy和dt是非常小的值,則式(2)、(3)中的高階項可以忽略不計,因此可推導出
-It=Ix(dx/dt)+Iy(dy/dt)
(4)
對于光流法,主要計算目標是式(4),設u和v分別表示圖像像素點(x,y)沿著x和y方向移動的速度,則有
c=(dx/dt,dy/dt)=(u,v)
(5)
式中:u和v的表達式分別是u=dx/dt和v=dy/dt。光流運動速度可以估計為
-It=Ixu+Iyv=grad(I)×c
(6)
式中:grad(I)表示的是二維圖像梯度。在時刻t和時刻t+dt,視頻圖像相同位置上的灰度微分It是視頻圖像空間灰度微分與其對應位置相對于機器人視覺的速度的乘積。式中主要給出了圖像最強梯度方向上的分量,沒有很好地計算,下面引入平滑約束條件E2(x,y),獲取簡化平方誤差數(shù)值最小化
(7)
式中:λ是拉格朗日系數(shù),對式(7)進行簡化求解微分方程
(8)
(9)
式中:P、D計算公式如下
(10)
由式(3)和(4)結(jié)合探討,可以推導出
(11)
上述表達式就是光流基本方程,它的向量表達式為
▽I·U+It=0
(12)
式(12)也稱為光流約束方程,其中▽I=[Ix,Iy]表示圖像像素點(x,y)的灰度梯度,U=[u,v]T表示光流。光流的確定是基于Gauss-Seidel的迭代方法,基于動態(tài)圖像的光流算法偽代碼流程見表1。
表1 基于動態(tài)圖像光流視頻運算的算法流程
算法流程先設置好固定迭代次數(shù)k,并且對輸入視頻的圖像進行計算,然后進行條件判斷決定是否終止迭代計算。
機器人采用雙目視覺系統(tǒng),先分別求得左右兩個攝像機的內(nèi)外參數(shù)和畸變系數(shù),然后通過標定獲得雙目攝像機之間的相對位置[11,12],接著分別對左右攝像機進行標定,攝像機標定后,最后實現(xiàn)機器人的立體視覺系統(tǒng)標定[13]。雙目立體視覺系統(tǒng)的模型示意圖如圖1所示,圖中f是CCD攝像機的焦距,b是兩攝像機的中心距離。
圖1 雙目立體視覺系統(tǒng)模型
由圖1可知,雙目視覺系統(tǒng)的光軸會聚模型采用3D坐標計算,左攝像機根據(jù)參照物圖像,獲得左攝像機投影矩陣M關系式(13)和展開式(14)
(13)
(14)
雙目立體視覺系統(tǒng)求解[XwYwZw]T采用式(15)進行計算,在實際應用中,由于數(shù)據(jù)總是有噪聲的,可以用最小二乘法求出[XwYwZw]T。將圖1進一步細化為圖2。
圖2 雙目系統(tǒng)結(jié)構(gòu)模型
(15)
圖2中,兩個攝像機的光軸與基線形成的夾角是a1和a2,基線是左右兩臺攝像機物鏡光學中心的連線B,左右兩臺攝像機的焦點是f1和f2。三角形ΔO1O2P′中有
x=cot(w1+a1)×z
(16)
B=cot(w1+a1)×z+cot(w2+a2)×z
(17)
三角形△O1PP′中有
(18)
最終可以推導出
(19)
式中:有
(20)
(21)
完成上述工作之后,需要做好攝像機的標定樣本和確定好攝像機的標定工作。在標定工作中,標定精度的精確度直接影響著機器人視覺系統(tǒng)的精度。完成攝像機標定工作后,機器人才可以識別環(huán)境,將識別環(huán)境信息反饋給機械設備,系統(tǒng)結(jié)合其他傳感器信息控制機器人實現(xiàn)自主行走[11,14]。
標定樣本主要采用的是8×10長方塊的棋盤標準規(guī)格黑白圖案,內(nèi)部角點有63個,棋盤格子大小固定,大小均為35 mm×35 mm。一般棋盤格數(shù)采用的是8×8。棋盤格數(shù)量越多,標定精度越高,因此標定工作量也會變大。
攝像機標定的參數(shù)主要有攝像機內(nèi)部參數(shù)焦距f、主點c、畸變參數(shù)k、像素誤差i_er、攝像機外部參數(shù)平移向量T、旋轉(zhuǎn)矢量RV、像素誤差o_er和旋轉(zhuǎn)矩陣R等,左右攝像機分別采用下標l和r區(qū)分,如對左攝像機的左焦距用fl表示。有:fl=[flx,fly],cl=[ul0,vl0],kl=[kl1,kl2,kl3,kl4],i_erl=[i_erlx,i_erly],Tl=[Tlx,Tly,Tlz],RVl=[RVlx,RVly,RVlz],o_erl=[o_erlx,o_erly],旋轉(zhuǎn)矩陣Rl為
(22)
需要分別對左右攝像機進行標定,在左右攝像機已標定好的基礎上實現(xiàn)立體視覺系統(tǒng)標定,最后檢測標定誤差。表2和表3分別是左攝像機的標定過程與結(jié)果。
表2 左攝像機標定過程
表3 左攝像機標定結(jié)果
右攝像機的標定過程和左攝像機標定過程是相似的,得到的標定結(jié)果見表4。
表4 右攝像機標定結(jié)果
獲得左右攝像機的畸變參數(shù)后,可以對原始標定圖像進行矯正,矯正過程是左右攝像機分別對同一幅標定圖像進行畸變矯正。在矯正之后,實現(xiàn)左右攝像機的立體視覺標定,文中采用先對左右兩個攝像機單獨進行標定,再進行兩臺攝像機相對位置標定的方式,需要對外部參數(shù)平移向量T、旋轉(zhuǎn)矢量RV等進行標定。標定效果如圖3所示,立體視覺標定后的效果見圖4。
圖3 攝像機鏡頭畸變矯正
圖4 立體視覺矯正后圖像
由于攝像機的安裝、攝像機本身等其他不可抗拒因素,攝像機在標定過程中存在一些畸變。雖然攝像機經(jīng)過了畸變矯正,但仍然可能存在一定的誤差。標定棋盤的角點檢測因為棋盤邊界的毛刺、線的不平行等其檢測效果也會存在一定的誤差。圖5是本文標定后的左右攝像機所有角點反映到圖像空間中的圖像坐標誤差。
圖5 攝像機標定后角點圖像坐標誤差
由圖5可知,標定后的攝像機采集的圖像坐標誤差分布在±2個像素點,滿足機器人視覺系統(tǒng)的標定要求,因標定棋盤角點時棋盤的邊界毛刺、線的不平行等導致檢測效果存在誤差,在標定后的攝像機采集的圖像坐標中,誤差均分布在±6個像素點內(nèi),同樣達到攝像機標定要求,誤差在可控范圍內(nèi),因誤差造成檢測的偽角點可以忽略不計。
試驗場地在中國礦業(yè)大學文昌校區(qū)煤礦瓦斯實驗基地。試驗井巷中,在煤礦救援機器人自主行走的過程中,機器人上位機實時識別周圍環(huán)境,特別是自身前進的環(huán)境,然后反饋給下位機。下位機根據(jù)識別的環(huán)境,規(guī)劃自身的行走路徑。煤礦救援機器人起始速度是0.1 m/s,然后逐步達到正常行駛速度0.3 m/s。
巷道試驗中,人為地設置一個立體不規(guī)則障礙物,障礙物放置在機器人前進路線的偏前方,圖6所示為障礙物位置。試驗中,煤礦井巷中的光照度值是6.75 lx,機器人分別在距離障礙物3 m、6 m和9 m處采集視覺感知距離,將機器人目標識別算法獲取的障礙物數(shù)據(jù)和人工測量數(shù)據(jù)進行比較,比較結(jié)果見表5。表5中“實測”項是人工測定結(jié)果,“測量”項是機器人測定結(jié)果。
圖6 井巷試驗環(huán)境
從表5和圖7機器人行走中識別障礙物并且避開障礙物結(jié)果可以得出,在煤礦井下環(huán)境中,光照度很低的情況下,機器人在距障礙物不同長度距離時獲得的障礙物信息有誤差,并且隨著距離的大小變化而變化,距離越遠,障礙物識別的誤差就越大,說明光照度對機器人視覺識別影響是較大的。
表5 低光照下井巷中障礙物信息
圖7 井巷中機器人避障
光照度很低的情況,機器人經(jīng)過視覺系統(tǒng)采集的視頻傳到上位機,上位機經(jīng)過增強處理,利用視覺識別算法獲取周圍環(huán)境和前方障礙物,然后傳給下位機。障礙物識別結(jié)果見圖8,圖中左邊(a)和(c)是機器人行走中的視覺系統(tǒng)的視頻原圖,右邊(b)和(d)是對應的識別障礙物結(jié)果圖。
圖8 井巷中障礙物識別結(jié)果
機器人自主行走中,剛開始出現(xiàn)偏離中心線比較快,并且偏差值逐漸增大的現(xiàn)象。圖9是每隔10 s記錄一次機器人基于視覺識別障礙物自主行走偏離中心線的距離,總共記錄300 s,距離單位為cm,中心線左邊的距離記錄為正值,則偏中心線右邊記錄為負值,同室內(nèi)試驗要求相同,偏離中心線距離絕對值大于50 cm時需要進行人工干預。在機器人自主行走過程中,需要進行適當?shù)娜斯じ深A。
圖9 自主行走試驗記錄結(jié)果
最后在山東新泰煤礦井下環(huán)境中實現(xiàn)煤礦救援機器人行走中視覺識別自身環(huán)境試驗,建立環(huán)境信息。試驗結(jié)果如圖10所示,圖中左邊(a)和(c)是機器人行走中的視覺系統(tǒng)的視頻原圖,右邊(b)和(d)是機器人視覺識別環(huán)境信息結(jié)果。
圖10 煤礦井下環(huán)境識別
煤礦井下的試驗在實時性方面取得了良好的效果,算法具有較好的穩(wěn)定性,但是光照度和煤礦井巷對無線電波的吸收是影響機器人目標識別準確率的最大因素,在一定條件下需要人工適當干預。
煤礦井下屬于非結(jié)構(gòu)化的特殊環(huán)境,實現(xiàn)煤礦救援機器人實時識別目標是決定煤礦救援機器人避障自主行走的前提,本文提出并研究了光流場算法,實現(xiàn)了煤礦救援機器人的雙目標定工作,采用光流場算法解決煤礦救援機器人在煤礦井下自主行走中的目標識別和避障問題,提出的方法在試驗過程中實現(xiàn)了煤礦救援機器人識別環(huán)境和避障自主行走?;谝曈X目標識別與避障實現(xiàn)煤礦救援機器人在煤礦井下人為控制不到的地方完全自主行走一直是難度非常大的研究內(nèi)容,下一步工作方向是研究在煤礦井下人為控制不到的地方實現(xiàn)全自主行走的煤礦救援機器人。