杜官明, 孫 瑾, 高敬博
(南京航空航天大學(xué) 民航學(xué)院,江蘇 南京 210016)
飛行數(shù)據(jù)指記錄下來的用于描述飛機運動狀態(tài)和飛機各系統(tǒng)工作狀態(tài)參數(shù)的集合,主要包括飛機設(shè)計數(shù)據(jù)、風(fēng)洞數(shù)據(jù)和試飛數(shù)據(jù)等,也稱飛行數(shù)據(jù)包,廣泛應(yīng)用于事件調(diào)查、飛行品質(zhì)監(jiān)控和飛機維修等領(lǐng)域,同時也是飛行模擬器研制中的關(guān)鍵數(shù)據(jù)。當(dāng)前由于技術(shù)壁壘和價格因素,飛行數(shù)據(jù)包成為飛機設(shè)計、模擬器研制過程中的瓶頸。
飛機操縱系統(tǒng)輸入端數(shù)據(jù)是飛行數(shù)據(jù)中的重要組成部分,目前主要由真機改造加裝傳感器獲取,其中線性可變差動位移傳感器[1](Linear Variable Differential Transformer, LVDT)是飛機駕駛桿位移測量中的常用設(shè)備,可實現(xiàn)對飛機操縱系統(tǒng)的動、靜態(tài)特性的測試。LVDT傳感器適應(yīng)性良好、測量精度高,但是其作為一種接觸式測量工具,安裝時必須對飛機進行改裝。例如,文獻[2]和文獻[3]通過將力傳感器與線性位移傳感器連接實現(xiàn)駕駛桿桿力和位移的測量。傳統(tǒng)上對飛機進行改造加裝傳感器時需要對飛機駕駛艙中的一些部件進行拆除,同時要求不能改變飛機操縱系統(tǒng)的功能和特性。受駕駛艙空間限制,傳統(tǒng)上對飛機進行改裝的成本高、時間代價大,不可避免地會影響駕駛員的操縱感覺。
隨著計算機技術(shù)的發(fā)展,計算機視覺技術(shù)作為一種非接觸式的測量方式,在檢測、識別和人機交互等方面得到廣泛研究與應(yīng)用。基于計算機視覺對飛機操縱系統(tǒng)輸入端進行位置測量隸屬于視覺測量范疇,目前視覺測距中廣泛使用紅外測距方式,其測量范圍廣、響應(yīng)時間短。但由于黑色物質(zhì)吸收紅外線,因此無法對黑色物體精確測距。同時為獲得精確測距,紅外測距要求被測物體平面與光線垂直。針對飛機座艙環(huán)境,本文采用普通相機實現(xiàn)視覺測距。當(dāng)前使用相機實現(xiàn)測距的方式主要有單目測距、雙目測距和多目測距。其中,雙目測距[4-5]往往使用深度相機來對目標進行深度測量和3D轉(zhuǎn)換,深度相機測距范圍有限并易受外界干擾。多目測距是雙目測距的拓展,算法復(fù)雜度高,會影響實時性。相對而言,單目測距具有結(jié)構(gòu)簡單、運算速度快、成本低等優(yōu)點。因此本文采用單目測距方式實現(xiàn)飛機操縱系統(tǒng)輸入端的位置測量。
PnP(Perspective-n-Point)問題始于相機標定問題,為得到最優(yōu)解并提高測距精度,Li等[6]提出RPnP算法解決抗噪能力不強的問題,Wang等[7]提出了相比于RPnP算法精度和穩(wěn)定性更優(yōu)的SRPnP算法。通過對PnP問題求解衍生出多種相機位姿估計算法,如POSIT算法[8]、EPnP算法[9]。本文將PnP問題應(yīng)用于飛機操縱系統(tǒng)輸入端位置測量,利用PnP問題將飛機操縱輸入端的位移測量轉(zhuǎn)換為相機位姿求解,最終實現(xiàn)基于視覺的無接觸式數(shù)據(jù)采集方案。相較于加裝傳感器方式,所提出的方法無須對飛機進行改裝,降低了數(shù)據(jù)采集成本,且不會影響飛機安全性能。
已知觀察物體上n個特征點,且已知它們之間的相對位置,PnP問題就是從透視投影得到的n個圖像點計算相機相對物體的位姿。PnP問題自提出以來就備受關(guān)注,其廣泛應(yīng)用于不同設(shè)備的姿態(tài)測量、無人機著陸、導(dǎo)彈導(dǎo)航定位和虛擬現(xiàn)實等領(lǐng)域。對于PnP問題的解決始于相機標定,通過利用多個控制點在三維場景中的坐標及其在圖像中的透視投影坐標即可求解出相機坐標系與表示三維場景結(jié)構(gòu)的世界坐標系之間的絕對位姿關(guān)系,包括絕對平移矩陣T和旋轉(zhuǎn)矩陣R。即通過圖像成像時的幾何關(guān)系對圖像坐標系和相機坐標系以及世界坐標系進行轉(zhuǎn)換,其實質(zhì)就是利用世界坐標系中的特征點及其二維圖像所對應(yīng)的投影來計算相機坐標系與世界坐標系之間的旋轉(zhuǎn)矩陣R和平移矩陣T。
相機成像模型如圖1所示,相機坐標系是以相機為中心的XcYcZc坐標系,Zc軸為相機光軸;像平面坐標系是指在相機內(nèi)所形成的xy像平面坐標系統(tǒng),像平面與相機坐標系的XcYc平面平行,這樣像平面原點就在相機光學(xué)軸上;圖像坐標系是指在計算機內(nèi)部數(shù)字圖像所用的坐標系,即圖1中uv坐標系,與像平面坐標系在同一平面上,不同之處是計算機圖像坐標系u、v是以像素為單位的圖像坐標系,像平面坐標系x、y是以物理單位(例如mm)表示的圖像坐標系。像平面坐標系以圖像內(nèi)相機光軸與像平面的交點O為原點,該點在uv坐標系中坐標為(u0,v0),稱為主點。該點一般位于圖像中心處,但由于相機制造工藝等原因,會有所偏離。由圖1相機的成像模型可知,世界坐標系與相機坐標系的關(guān)系為
(1)
式中:(Xc,Yc,Zc)為空間點P在相機坐標系中的坐標;[RT]為相機坐標系相對世界坐標系的旋轉(zhuǎn)矩陣與平移矩陣;其中R為3×3矩陣,T為3×1矩陣。
圖1 相機成像模型
由圖1可知,相機與圖像坐標系的關(guān)系為
(2)
式中:λ為比例因子,λ≠0;f為相機的焦距;p(x,y)為三維空間點P(Xw,Yw,Zw) 對應(yīng)的圖像投影點,即為光心Oc和P點的連線與圖像平面的交點。將式(1)與式(2)結(jié)合可得到世界坐標系與像素坐標系的轉(zhuǎn)換關(guān)系:
(3)
式中:(u0,v0)為主點坐標;f為相機的焦距;dx、dy為每一個像素在X軸和Y軸方向上的物理尺寸;fx=f/dx,fy=f/dy分別為x軸和y軸上的歸一化焦距;(Xw,Yw,Zw)與(u,v)為空間點對應(yīng)的3D坐標與其圖像坐標系上的2D投影點;fx,fy,u0,v0為相機內(nèi)參,可以通過對相機進行標定求出,定義相機內(nèi)參數(shù)矩陣為
實際過程中,由于u軸和v軸不垂直產(chǎn)生畸變,內(nèi)參數(shù)矩陣增加一個畸變因子s(Skew Parameter),所以相機的內(nèi)參數(shù)矩陣K重新定義為
為提高測量精度,在對飛機操縱系統(tǒng)位置測量中通過對相機進行標定求得相機的畸變參數(shù),對輸入視頻進行消畸變。
對R和T展開,可進一步得到:
(4)
通過對式(4)求解可以得到其旋轉(zhuǎn)矩陣R和平移矩陣T,即得到相機相對于世界坐標系的位置和姿態(tài),此為PnP問題的解。將相機固定,將世界坐標系原點設(shè)在飛機駕駛桿上,飛機駕駛桿的位姿信息則轉(zhuǎn)換為通過PnP問題求解相機相對于世界坐標系的位置。
通過上述分析,本文使用單目視覺位姿測量方法,將計算機視覺中的PnP問題應(yīng)用于解決飛機操縱系統(tǒng)的數(shù)據(jù)采集,即通過飛機駕駛桿上的空間特征點與其所對應(yīng)的圖像點來計算相機空間位姿獲得駕駛桿位移信息,為后續(xù)的飛機座艙建模和飛行模擬器構(gòu)建提供數(shù)據(jù)支撐。以飛機駕駛桿為例,基于視覺的飛機操作系統(tǒng)輸入端位置測量流程如圖2所示。
圖2 飛機操縱系統(tǒng)輸入端位置視覺測量流程
對飛行員操縱飛機駕駛桿的情況進行視頻采集,作為數(shù)據(jù)輸入。為消除相機自身畸變,提高測量精度,且PnP問題求解需要相機內(nèi)參作為參數(shù)輸入,因此首先通過離線方式利用相機標定技術(shù)確定相機的內(nèi)參和畸變參數(shù)??紤]到拍攝過程中駕駛艙內(nèi)環(huán)境因素,例如光照、飛機抖動等影響因素,故需對采集的視頻圖像進行預(yù)處理,從而提高圖像質(zhì)量。然后在圖像幀中提取駕駛桿上特征點。特征提取直接關(guān)系到測量結(jié)果的準確度和精度??紤]到二維碼(QR Code)的易識別性和易獲取性,通過在飛機駕駛桿表面固定一個隨機生成的二維碼,將飛機駕駛桿的位移測量轉(zhuǎn)換為對二維碼的跟蹤識別和測量。對采集視頻進行預(yù)處理后識別二維碼,并進一步識別定位二維碼的4個角點,作為PnP問題求解的特征點,通過4個特征點的3D和2D點對關(guān)系完成相機PnP位姿解算,得到旋轉(zhuǎn)矩陣R和平移矩陣T,進而得到飛機駕駛桿的運動位移。
由于提出的方法是以視頻的輸入方式對飛機駕駛桿進行位置測量的,相機透鏡制造精度和組裝工藝的偏差會引入畸變,導(dǎo)致相機拍攝的原始圖像發(fā)生失真。同時對PnP問題的求解需要相機內(nèi)參作為原始參數(shù)輸入,因此根據(jù)圖2所示的流程圖,首先需要對相機進行標定。
相機參數(shù)一般分為外部參數(shù)(空間位置、方向,即旋轉(zhuǎn)矩陣和平移矩陣)和內(nèi)部參數(shù)(焦距、光心、畸變系數(shù)等),相機標定過程就是計算相機的內(nèi)外參數(shù)。
基于計算機視覺的飛機駕駛桿位置測量技術(shù)以相機作為數(shù)據(jù)采集設(shè)備,相機內(nèi)參數(shù)對測量精度產(chǎn)生重要影響。如圖3所示,本文采用張正友標定方法[10],從不同角度對標定塊進行拍攝,通過MATLAB工具箱對標定塊進行角點提取實現(xiàn)相機標定,獲取相機內(nèi)參和畸變系數(shù)。由于張正友標定法只關(guān)注了影響最大的徑向畸變,其徑向畸變模型為
(5)
(6)
圖3 相機標定
式(6)轉(zhuǎn)為矩陣形式為
(7)
將式(7)記作Dk=d,其中畸變系數(shù)k=[k1,k2]T,則可得:
k=(DTD)-1DTd
(8)
計算得到畸變系數(shù)k,通過求得的畸變系數(shù)在圖像預(yù)處理過程中對輸入視頻逐幀消畸變,以提高后續(xù)測量精度。
PnP問題求解需要3D空間點和對應(yīng)2D圖像點作為特征點對輸入,特征點的識別和提取直接關(guān)系到測量的準確度和精度。通常PnP問題的求解至少需要3個特征點對以完成相機的姿態(tài)估計[11]。飛機駕駛艙中由于光照等環(huán)境影響會導(dǎo)致特征點不易識別或者識別精確度不高,會造成特征點難以提取。飛機的駕駛桿構(gòu)造特殊,不易單獨對某些特征點進行標記識別和獲取。近年來二維碼廣泛應(yīng)用,其具有識別快、準確度高的特點,本文通過在駕駛桿上固定一個隨機生成的二維碼,在二維碼識別的基礎(chǔ)上,提取二維碼4個角點作為特征點。
基于二維碼識別的特征提取流程如圖4所示。首先對輸入視頻進行預(yù)處理,通過平滑濾波、灰度化和二值化消除冗余和噪聲;再確定二維碼位置和范圍,對二維碼進行二值化之后由輪廓提取找到面積最接近的3個點即是二維碼的定位角點,如圖4中點a、b、c??紤]到駕駛桿的轉(zhuǎn)動,進一步確定3個定位角點的順序位置。以3個定位角點中心坐標連線組成三角形,其中角度最大的就是二維碼左上角的點即點a;再根據(jù)該點與其他兩點的相對位置確定二維碼左下c點和右上b點位置;最后根據(jù)確定位置的3個定位角點獲得二維碼范圍及位置??紤]到二維碼4個角點是對稱分布的,故可由a、b、c三點確定二維碼第4個特征角點的位置,并對第4個特征角點進行提取。
圖4 二維碼識別及角點特征提取流程
以二維碼中心點為世界坐標系的原點,通過預(yù)先設(shè)定的二維碼尺寸即可獲得4個角點對應(yīng)的3D空間坐標,然后通過二維碼識別獲取4個角點的2D圖像坐標,最后獲得4個特征點的3D-2D坐標匹配。
PnP問題的傳統(tǒng)算法按照是否迭代分為兩類:線性算法[12-13]和非線性迭代算法[14-15]。相較于線性算法,迭代法求解精度和穩(wěn)定性都要高很多。因此選擇非線性迭代算法來對相機位姿進行求解。
根據(jù)2.2節(jié),通過二維碼識別獲得4個角點對應(yīng)的3D空間點和2D圖像點作為特征點對。根據(jù)式(4),由正交矩陣的性質(zhì),通過3個點對可以計算出對應(yīng)的4個旋轉(zhuǎn)矩陣R和平移矩陣T,即4個相機位姿。再將二維碼第4個角點的3D空間坐標代入式(4),可以獲得其在上述4個相機位姿下的4個對應(yīng)2D投影(一個解對應(yīng)一個投影),以投影誤差最小的解對應(yīng)的旋轉(zhuǎn)矩陣R和平移矩陣T作為初值,然后通過列文伯格-馬夸特(Levenberg-Marquardt,LM)最優(yōu)化算法[16]求得最優(yōu)變換矩陣R和T。
根據(jù)前述,將相機固定,如圖5所示,將世界坐標系原點設(shè)在固定在飛機駕駛桿二維碼的中心點上,通過對采集視頻每幀進行求解可得到一個平移矩陣T,由最終求得的平移矩陣T可得知相機相對于二維碼中心點的世界坐標,也就是飛機駕駛桿相對于相機的距離,即可求得飛機駕駛桿的位移。
圖5 二維碼識別結(jié)果及位姿解算
實驗在波音737飛行模擬器上進行,圖6為波音737飛行模擬器駕駛艙圖片,本次實驗便是在其中的駕駛桿上進行。視頻采集采用GoPro相機,圖像分辨率為1280像素×720像素,其空間實驗過程中使用搭載Intel i5-4590 CPU的PC機,該CPU主頻為3.3 GHz,編程環(huán)境采用MATLAB與OpenCV庫接口。
圖6 波音737飛行模擬器駕駛艙
圖7為基于視覺的飛機操縱系統(tǒng)輸入端位置測量系統(tǒng)的裝置示意圖,本實驗將紅外測距儀與相機通過固定裝置安裝在波音737飛行模擬器駕駛艙的頭頂板上,此位置能夠在飛行員操縱飛機駕駛桿時很好地測量飛機駕駛桿的運動情況。
圖7 視覺測量系統(tǒng)裝置示意圖
在波音737飛行模擬器中,當(dāng)飛行員推拉駕駛桿時,駕駛桿產(chǎn)生了位移,通過拉桿和搖臂的傳遞,將位移傳遞給操縱負荷的連接桿,此時操縱負荷的拉/壓傳感器會產(chǎn)生力信號,位移傳感器產(chǎn)生位移信號。計算機根據(jù)駕駛桿的位移量和飛機當(dāng)時的飛行高度和速度值,計算出所需的駕駛桿力,該力信號經(jīng)控制器轉(zhuǎn)換成電樞電流,于是在電機中產(chǎn)生電磁轉(zhuǎn)矩,再經(jīng)傳動機構(gòu)傳到駕駛桿上與外力矩相平衡,系統(tǒng)便處于一種新的平衡狀態(tài)。故本實驗在飛行員操縱駕駛桿時,波音737飛行模擬器能夠通過位移傳感器輸出飛機駕駛桿的位移。如圖7所示,為保證實驗時操縱駕駛桿輸出位移與視覺測距的一致性,實驗前將飛機駕駛桿做俯仰運動的行程與操縱載荷的行程之間的映射進行調(diào)整,將飛機駕駛桿行程與操縱機構(gòu)的傳動比換算為在飛機駕駛桿上的視覺測量點P1與飛機駕駛桿底部中心點M的水平距離,即為操縱飛機駕駛桿時模擬器輸出的位移。為驗證該方法,使用基恩士IL-600紅外測距儀進行測量對比,其測量范圍為200~1000 mm,精度為0.1 mm。
而實驗通過紅外測距儀測距計算得到飛機駕駛桿的位移如圖7所示,已知紅外測距儀到飛機駕駛艙水平面的距離為h1,相機到水平面的距離為h2,由幾何關(guān)系可得飛機駕駛桿位移MN=L為
(9)
由式(9)可求出使用紅外測距儀時飛機駕駛桿的位移,同理也可求出本文方法測得飛機駕駛桿的位移。
對飛機駕駛桿在不同運動位置的測量結(jié)果與方法進行實驗對比,結(jié)果如表1所示。
由表1可知紅外測距儀的平均測量誤差為4.58 mm,本文方法測量平均誤差為1.93 mm。不難看出本文方法所測得的飛機駕駛桿的位移精度更高,且紅外測距儀測量結(jié)果易受駕駛艙復(fù)雜環(huán)境和駕駛桿運動狀態(tài)的影響。
表1 紅外測距與視覺測距實驗數(shù)據(jù)
采集飛機駕駛桿連續(xù)運動視頻450幀,每隔30幀的測量誤差曲線圖如圖8所示,證明了本文方法具有較高的檢測精度。原始視頻幀率為30 f/s,經(jīng)過測量后其幀率為27 f/s,也證明所提出的方法滿足實時性要求。
圖8 紅外測距儀與本文所提出方法測距誤差比較
本文提出了一種基于視覺的飛機操縱系統(tǒng)輸入端位置測量方法。利用計算機視覺技術(shù),通過PnP問題將飛機操縱輸入端的位移測量轉(zhuǎn)換為相機位姿求解。相比傳統(tǒng)的加裝傳感器的飛行數(shù)據(jù)采集方式,基于視覺的測量方式屬于無接觸式數(shù)據(jù)采集方法,無須對飛機進行改裝和加裝傳感器,極大地降低了采集成本,同時不會影響飛機安全性能。通過實驗也驗證了所提測量方法的有效性。