林 威,王 琛,胡良鵬
(長安大學(xué) 工程機械學(xué)院,西安 710061)
近年來,隨著汽車銷量的日益增加,城市交通運輸體系的發(fā)展速度遠遠跟不上車輛持續(xù)增長的需求,因此,城市交通擁堵這一問題凸顯得越來越嚴重,尤其在發(fā)達城市中,交通擁堵問題儼然已成為一個世界性的難題。針對這一難題,在第87屆日內(nèi)瓦車展上,空中客車與奧迪聯(lián)合推出了一款分體式飛行汽車Pop Up[1],如圖1所示。
圖1 Pop Up分體式飛行汽車
分體式飛行汽車的概念打破了傳統(tǒng)的交通模式,將交通維度由二維轉(zhuǎn)變?yōu)槿S,極大程度上擴展了行動空間,有效減緩了道路交通負載。分體式的結(jié)構(gòu)設(shè)計與傳統(tǒng)的一體式飛行汽車結(jié)構(gòu)設(shè)計對比優(yōu)勢在于:極大減少了飛行模塊的負載,飛行模塊以及乘員艙通過節(jié)省下的質(zhì)量、空間可對能源供給部分進行性能優(yōu)化,并改善乘員艙空間布局,以提高整機的續(xù)航時長和乘坐舒適度等;同時分體式的模塊化設(shè)計能夠靈活應(yīng)對突發(fā)情況;分體式外形結(jié)構(gòu)相較于一體式的更具有美觀性等。
分體式飛行汽車包含3個模塊:飛行模塊、乘客艙、地面行駛模塊。如圖2所示,共有兩種模態(tài):飛行模塊與乘客艙可組成飛行模態(tài),地面行駛模塊與乘客艙可組成行駛模態(tài),模態(tài)間的轉(zhuǎn)換涉及模塊間的精準導(dǎo)引對接與快速分離過程,其中,模塊間的導(dǎo)引對接要求達到厘米級的精度。因此,需要提出一種定位導(dǎo)航技術(shù)來精準測量對接模塊與待對接模塊間的相對位置偏差,以指導(dǎo)對接模塊精準降落在待對接模塊上。
圖2 模態(tài)轉(zhuǎn)換及模塊組成
基于GPS的定位導(dǎo)航技術(shù)比較成熟,但飛行模塊在建筑物旁降落時,往往會面臨信號不佳甚至完全丟失等問題,且目前依靠GPS的定位導(dǎo)航技術(shù)能達到的精度最高僅為分米級[2],不符合導(dǎo)引對接任務(wù)的需求。本文針對導(dǎo)引對接任務(wù)的多個自由度對接限制要求提出了一種基于AprilTag的視覺定位導(dǎo)航方案,該方案具有自主性強、定位精度高、滿足實時性要求、降落平穩(wěn)性好、成本低廉等優(yōu)點,能夠在滿足多個自由度的限制要求下較精準地實現(xiàn)導(dǎo)引對接任務(wù),本文利用識別AprilTag標識碼得到的位姿解算數(shù)據(jù)來替代傳統(tǒng)方法上基于GPS及機載高度計的位置信息反饋,并結(jié)合PID控制器使飛行模塊在降落過程更加精確平穩(wěn)。
本文對攝像頭進行標定后,使用限幅濾波法對AprilTag識別算法解算的數(shù)據(jù)進行處理,并通過坐標變換得到飛行模塊的相對位姿。最后,設(shè)計好導(dǎo)引流程后,在ROS平臺上運用四旋翼無人機PID控制器實現(xiàn)整個精確導(dǎo)引對接降落流程,通過實物實驗驗證了本文方案的可行性。
在視覺定位導(dǎo)航任務(wù)中,本文選擇AprilTag標識碼作為合作目標。AprilTag標記識別算法由密歇根州立大學(xué)olson[3]團隊于2011年提出,它是一個視覺基準庫,能夠快速檢測識別標識碼并計算相機與標識碼間的相對位姿,對標識碼所處的光照條件容忍度高,能夠適應(yīng)標識碼的旋轉(zhuǎn)、翹曲以及少量遮擋,并具有高精度的局部準確性[4]。2016年,Olson團隊提出了AprilTag 2.0[5],新的檢測器檢測率更高,誤報更少,計算時間更短。
AprilTag標識碼有多個家族,包括tag36h11、tagStandard41h12、tag25h9、tagCustom48h12、tagCircle21h7等,不同的家族針對不同的視覺定位任務(wù)需求而設(shè)立[6],每個家族又包含不同的ID。在本任務(wù)中,由于飛行模塊在導(dǎo)引降落過程中,隨著高度的下降必然會導(dǎo)致相機視角范圍變小,因而針對本文視覺定位任務(wù)的需求,選擇適合遞歸識別標識碼任務(wù)的tagCustom48h12家族。合作目標外部標識碼尺寸為15 cm×15 cm,適用于0.3~5 m內(nèi)的視覺識別任務(wù),內(nèi)部標識碼尺寸為3 cm×3 cm,適用于0.05~0.3 m內(nèi)的視覺識別任務(wù),設(shè)計的復(fù)合AprilTag標識碼如圖3所示。
圖3 合作目標AprilTag示意圖
算法識別原理如下:相機開啟并檢測場景中的圖像,首先將圖像轉(zhuǎn)為灰度圖像,AprilTag識別算法利用自適應(yīng)閾值方法將灰度輸入圖像轉(zhuǎn)化為二值圖像。
然后提取圖像中的邊緣,對分割黑白像素點的連續(xù)邊緣添加標記,并利用哈希表將已標記的邊緣兩側(cè)不同的黑白像素部分聚類為不同的簇。
接著為每個聚類的無序邊緣點擬合出一個四邊形。通過采用PCA主分析法對已知的邊界聚類點圍成的邊框進行線段遍歷擬合,將擬合均方誤差函數(shù)的峰值點識別為角點,選擇具有最小均方擬合誤差的四個角點來組成擬合的四邊形。
最后對擬合出的四邊形進行解碼。將得到的解碼結(jié)果與已知庫內(nèi)的AprilTag標簽編碼進行匹配,以確定解碼出的標識碼是否為合作目標碼。
根據(jù)已知的Tag坐標點及其在像素坐標系下的對應(yīng)坐標,利用DLT直接線性變換算法[7]計算單應(yīng)性矩陣H,其用來描述物體在Tag坐標系和像素坐標系之間的位置映射關(guān)系。將單應(yīng)性矩陣H(3×3階)表示為相機投影矩陣P(3×4階)與位置變換參數(shù)矩陣E(4×3階)的乘積,位置變換參數(shù)矩陣E通常為4×4階,由于Tag上的每個點在Tag坐標系中z坐標都為零,因此刪除矩陣E的第三列,形成截斷的位置變換參數(shù)矩陣。記Hij(i,j∈{0,1,2})為單應(yīng)性矩陣H中的元素,fx和fy為相機焦距參數(shù),Rij(i,j∈{0,1,2})為位置變換參數(shù)矩陣E中的旋轉(zhuǎn)分量元素、Ti(i∈{x,y,z})為平移分量元素,未知尺度因子為s,則單應(yīng)性矩陣H可表示為:
(1)
由于P不滿秩,故不能直接求出矩陣E,將式(1)展開得:
(2)
(3)
(4)
為了獲取相機的內(nèi)參矩陣以及消除相機畸變效應(yīng)的影響,本文采用張正友標定法[9]對相機進行標定,相機標定過程及結(jié)果如圖4所示。
圖4 相機標定過程及結(jié)果
運行ROS自帶的camera_calibration包,將打印好的棋盤格盡量以不同角度出現(xiàn)在相機視野的各個位置中,共采集40張圖片,去除誤差較大的圖片,最終計算出相機的內(nèi)參矩陣K以及畸變向量P:
(5)
(6)
式中,fx和fy為x和y方向上的焦距,cx和cy為相機光軸與成像平面交點距離原點的偏移量,k1、k2、k3為徑向畸變參數(shù),p1、p2為切向畸變參數(shù)。
圖5 坐標系定義
定義XUAV為無人機坐標系,則有:
(7)
(8)
在相機抖動或快速移動時,會出現(xiàn)AprilTag識別算法計算錯誤的情況,使返回的相機相對于Tag的位姿具有噪點數(shù)據(jù),本文采用限幅濾波算法對AprilTag識別算法解算出的位姿數(shù)據(jù)進行濾波處理。算法實現(xiàn)如式(9):
(9)
式中,x為當(dāng)前時刻采集到的數(shù)據(jù),x_pre為上一時刻的數(shù)據(jù),A為限幅閾值。該算法有效克服了因AprilTag識別算法計算錯誤引起的脈沖干擾,提高了位姿數(shù)據(jù)的準確性。
飛行模塊在水平方向(x-y)、偏航方向(yaw)和垂直方向(z)上均采用PID的輸出量u(t)進行速度控制,來實現(xiàn)飛行模塊的精確導(dǎo)引對接降落過程。
PID控制是一種廣泛應(yīng)用在工業(yè)控制中的反饋回路。比例環(huán)節(jié)的輸出與輸入偏差成正比,能迅速反映偏差,從而減小偏差,但不能消除靜差。積分環(huán)節(jié)用于消除靜差提高系統(tǒng)的無差度。微分環(huán)節(jié)能反映偏差信號的變化趨勢,有助于系統(tǒng)減小超調(diào),克服振蕩,加快系統(tǒng)的響應(yīng)速度,從而改善系統(tǒng)的動態(tài)性能[11]。PID的控制規(guī)律如式(10)所示:
(10)
式中,Kp、Tt、TD分別為比例增益、積分時間常數(shù)、微分時間常數(shù),err(t)為水平方向、偏航方向和垂直方向上與期望值的偏差,u(t)為經(jīng)PID控制調(diào)節(jié)后的各自方向上的輸出量。綜合考慮導(dǎo)引對接過程的平穩(wěn)性及靈敏度,設(shè)置水平方向和偏航方向PID控制參數(shù)為:
(11)
基于AprilTag的視覺導(dǎo)引對接降落系統(tǒng)包含三個部分,分別是硬件系統(tǒng)、信息交流、算法處理,如圖6所示。硬件系統(tǒng)包含一架DJI M100無人機、單目攝像頭、機載計算機(NVIDIA Jetson TX2)、乘客艙以及地面行駛模塊。機載計算機安裝有Ubuntu16.04系統(tǒng)并已搭建好ROS運行環(huán)境,M100通過UART串口與機載計算機進行通信,攝像頭通過USB數(shù)據(jù)線與機載計算機連接,攝像頭視頻流分辨率640×480,視頻格式為yuyv,硬件設(shè)備間的信息通過ROS的消息發(fā)布訂閱機制進行交互及處理。地面行駛模塊上搭載合作目標AprilTag標識碼,外部標識碼尺寸為15 cm×15 cm,內(nèi)部標識碼尺寸為3 cm×3 cm。
圖6 視覺導(dǎo)引對接降落系統(tǒng)
本文所設(shè)計分體式飛行汽車自主導(dǎo)引對接降落實驗步驟流程如圖7所示。飛行模塊(無人機與乘客艙組合體)起飛后通過GPS導(dǎo)引到地面行駛模塊上方指定高度并懸停,然后在相機視野內(nèi)尋找合作目標,當(dāng)識別到AprilTag標簽后,通過算法解算出飛行模塊位姿。先只進行飛行模塊水平方向上(x-y)的校正,以避免出現(xiàn)進行偏航方向的校正時由于飛行模塊機身的旋轉(zhuǎn)導(dǎo)致相機丟失AprilTag標簽視野信息的情況。當(dāng)水平方向上的精度滿足要求時,再同時進行水平方向和偏航方向(x-y-yaw)三個參數(shù)的校正工作,設(shè)置水平方向上的偏差閾值為8 cm,偏航方向上的偏差閾值為5°,當(dāng)x-y-yaw偏差滿足精度要求時,飛行模塊降落一定的高度,直至飛行模塊精準地降落在待對接的地面行駛模塊上后,飛行模塊停機。
圖7 視覺導(dǎo)引對接降落流程圖
其中,導(dǎo)引對接降落流程高度控制策略為:當(dāng)偏差滿足精度要求時,期望高度值減小,此時利用獲取的高度信息與期望高度值的差值作為PID控制器的輸入,最終結(jié)合PID控制器的輸出實現(xiàn)對導(dǎo)引對接降落流程高度的控制。
基于AprilTag的分體式飛行汽車自主導(dǎo)引對接降落實驗過程如圖8所示。飛行模塊在設(shè)置的不同初始偏航角導(dǎo)引對接降落任務(wù)中,其偏航角隨時間的變化曲線如圖9所示。由圖可以看出,經(jīng)過導(dǎo)引對接降落算法的控制,飛行模塊在不同的初始偏航角條件下其偏航角均可較平穩(wěn)地轉(zhuǎn)變到0~5°,使飛行模塊與地面行駛模塊在偏航方向上滿足對接精度需求。
圖8 自主導(dǎo)引對接降落實驗過程
圖9 偏航角變化曲線
飛行模塊在導(dǎo)引對接降落過程中的水平位置偏移量如圖10所示。由圖可以看出,經(jīng)過導(dǎo)引對接降落算法的控制,水平位置x-y方向上的偏移量縮減至0~5 cm,滿足導(dǎo)引對接降落任務(wù)水平方向上的精度需求。但從圖中也看出,水平位置x-y方向上偏移量呈現(xiàn)波浪式的起伏狀,經(jīng)過多次實驗發(fā)現(xiàn)其原因主要是因為攝像頭的安裝平面與M100飛行器飛行平面不平行導(dǎo)致的,飛行器在前一階段滿足x-y方向上的精度后,執(zhí)行高度下降程序,因為平面間存在夾角的問題從而在高度下降過程中在x-y方向上又產(chǎn)生了新的偏移量,后期將針對此問題進行改進。
圖10 水平位置偏移量
針對本文的導(dǎo)引對接降落流程高度控制策略,分別選用AprilTag識別算法解算得到的飛行模塊相對于Tag的距離信息和機載高度計的數(shù)據(jù)信息作為高度反饋,得到飛行模塊在導(dǎo)引對接降落過程中高度變化曲線如圖11所示。
圖11 高度變化曲線
由圖11可以得出,以AprilTag識別算法位姿解算數(shù)據(jù)為高度信息反饋的導(dǎo)引對接降落過程,解決了因機載高度計信息誤差大而導(dǎo)致的飛行模塊在導(dǎo)引對接降落過程中出現(xiàn)上下顛簸的情況,導(dǎo)引對接降落過程更加平穩(wěn),提升了降落品質(zhì)。
通過上述分析得出,在導(dǎo)引對接降落過程中使用AprilTag識別算法的位姿解算數(shù)據(jù)來替代基于GPS數(shù)據(jù)及機載高度計的位置信息反饋,解決了由于GPS信息誤差大而無法實現(xiàn)精確的導(dǎo)引對接任務(wù)的問題,并且通過視覺獲取的信息也更加穩(wěn)定,降落過程更加平穩(wěn),降落品質(zhì)更優(yōu)。
本文針對分體式飛行汽車進行模態(tài)間的轉(zhuǎn)換時涉及的模塊間的精準對接問題,提出了一種基于AprilTag的視覺定位導(dǎo)航方案,實驗結(jié)果表明:該方案實現(xiàn)了飛行模塊以較高的精度自主降落在地面行駛模塊上,驗證了本方案具有定位精度高、滿足實時性要求、降落平穩(wěn)性好等優(yōu)點,為后續(xù)的模態(tài)轉(zhuǎn)換相關(guān)工作做好鋪墊。
由于基于AprilTag的視覺定位方案的有效識別距離短的問題,使得該方案還不足以完美銜接于整個的飛行汽車自主導(dǎo)引對接流程中,下一階段將進行中近程的定位導(dǎo)航研究,以解決飛行汽車經(jīng)GPS導(dǎo)引后如何從中程高度精準導(dǎo)引下降到地面近程高度的問題。