林 威,王 琛,胡良鵬
(長安大學 工程機械學院,西安 710061)
近年來,隨著汽車銷量的日益增加,城市交通運輸體系的發展速度遠遠跟不上車輛持續增長的需求,因此,城市交通擁堵這一問題凸顯得越來越嚴重,尤其在發達城市中,交通擁堵問題儼然已成為一個世界性的難題。針對這一難題,在第87屆日內瓦車展上,空中客車與奧迪聯合推出了一款分體式飛行汽車Pop Up[1],如圖1所示。

圖1 Pop Up分體式飛行汽車
分體式飛行汽車的概念打破了傳統的交通模式,將交通維度由二維轉變為三維,極大程度上擴展了行動空間,有效減緩了道路交通負載。分體式的結構設計與傳統的一體式飛行汽車結構設計對比優勢在于:極大減少了飛行模塊的負載,飛行模塊以及乘員艙通過節省下的質量、空間可對能源供給部分進行性能優化,并改善乘員艙空間布局,以提高整機的續航時長和乘坐舒適度等;同時分體式的模塊化設計能夠靈活應對突發情況;分體式外形結構相較于一體式的更具有美觀性等。
分體式飛行汽車包含3個模塊:飛行模塊、乘客艙、地面行駛模塊。如圖2所示,共有兩種模態:飛行模塊與乘客艙可組成飛行模態,地面行駛模塊與乘客艙可組成行駛模態,模態間的轉換涉及模塊間的精準導引對接與快速分離過程,其中,模塊間的導引對接要求達到厘米級的精度。因此,需要提出一種定位導航技術來精準測量對接模塊與待對接模塊間的相對位置偏差,以指導對接模塊精準降落在待對接模塊上。

圖2 模態轉換及模塊組成
基于GPS的定位導航技術比較成熟,但飛行模塊在建筑物旁降落時,往往會面臨信號不佳甚至完全丟失等問題,且目前依靠GPS的定位導航技術能達到的精度最高僅為分米級[2],不符合導引對接任務的需求。本文針對導引對接任務的多個自由度對接限制要求提出了一種基于AprilTag的視覺定位導航方案,該方案具有自主性強、定位精度高、滿足實時性要求、降落平穩性好、成本低廉等優點,能夠在滿足多個自由度的限制要求下較精準地實現導引對接任務,本文利用識別AprilTag標識碼得到的位姿解算數據來替代傳統方法上基于GPS及機載高度計的位置信息反饋,并結合PID控制器使飛行模塊在降落過程更加精確平穩。
本文對攝像頭進行標定后,使用限幅濾波法對AprilTag識別算法解算的數據進行處理,并通過坐標變換得到飛行模塊的相對位姿。最后,設計好導引流程后,在ROS平臺上運用四旋翼無人機PID控制器實現整個精確導引對接降落流程,通過實物實驗驗證了本文方案的可行性。
在視覺定位導航任務中,本文選擇AprilTag標識碼作為合作目標。AprilTag標記識別算法由密歇根州立大學olson[3]團隊于2011年提出,它是一個視覺基準庫,能夠快速檢測識別標識碼并計算相機與標識碼間的相對位姿,對標識碼所處的光照條件容忍度高,能夠適應標識碼的旋轉、翹曲以及少量遮擋,并具有高精度的局部準確性[4]。2016年,Olson團隊提出了AprilTag 2.0[5],新的檢測器檢測率更高,誤報更少,計算時間更短。
AprilTag標識碼有多個家族,包括tag36h11、tagStandard41h12、tag25h9、tagCustom48h12、tagCircle21h7等,不同的家族針對不同的視覺定位任務需求而設立[6],每個家族又包含不同的ID。在本任務中,由于飛行模塊在導引降落過程中,隨著高度的下降必然會導致相機視角范圍變小,因而針對本文視覺定位任務的需求,選擇適合遞歸識別標識碼任務的tagCustom48h12家族。合作目標外部標識碼尺寸為15 cm×15 cm,適用于0.3~5 m內的視覺識別任務,內部標識碼尺寸為3 cm×3 cm,適用于0.05~0.3 m內的視覺識別任務,設計的復合AprilTag標識碼如圖3所示。

圖3 合作目標AprilTag示意圖
算法識別原理如下:相機開啟并檢測場景中的圖像,首先將圖像轉為灰度圖像,AprilTag識別算法利用自適應閾值方法將灰度輸入圖像轉化為二值圖像。
然后提取圖像中的邊緣,對分割黑白像素點的連續邊緣添加標記,并利用哈希表將已標記的邊緣兩側不同的黑白像素部分聚類為不同的簇。
接著為每個聚類的無序邊緣點擬合出一個四邊形。通過采用PCA主分析法對已知的邊界聚類點圍成的邊框進行線段遍歷擬合,將擬合均方誤差函數的峰值點識別為角點,選擇具有最小均方擬合誤差的四個角點來組成擬合的四邊形。
最后對擬合出的四邊形進行解碼。將得到的解碼結果與已知庫內的AprilTag標簽編碼進行匹配,以確定解碼出的標識碼是否為合作目標碼。
根據已知的Tag坐標點及其在像素坐標系下的對應坐標,利用DLT直接線性變換算法[7]計算單應性矩陣H,其用來描述物體在Tag坐標系和像素坐標系之間的位置映射關系。將單應性矩陣H(3×3階)表示為相機投影矩陣P(3×4階)與位置變換參數矩陣E(4×3階)的乘積,位置變換參數矩陣E通常為4×4階,由于Tag上的每個點在Tag坐標系中z坐標都為零,因此刪除矩陣E的第三列,形成截斷的位置變換參數矩陣。記Hij(i,j∈{0,1,2})為單應性矩陣H中的元素,fx和fy為相機焦距參數,Rij(i,j∈{0,1,2})為位置變換參數矩陣E中的旋轉分量元素、Ti(i∈{x,y,z})為平移分量元素,未知尺度因子為s,則單應性矩陣H可表示為:
(1)
由于P不滿秩,故不能直接求出矩陣E,將式(1)展開得:

(2)


(3)

(4)
為了獲取相機的內參矩陣以及消除相機畸變效應的影響,本文采用張正友標定法[9]對相機進行標定,相機標定過程及結果如圖4所示。

圖4 相機標定過程及結果
運行ROS自帶的camera_calibration包,將打印好的棋盤格盡量以不同角度出現在相機視野的各個位置中,共采集40張圖片,去除誤差較大的圖片,最終計算出相機的內參矩陣K以及畸變向量P:
(5)

(6)
式中,fx和fy為x和y方向上的焦距,cx和cy為相機光軸與成像平面交點距離原點的偏移量,k1、k2、k3為徑向畸變參數,p1、p2為切向畸變參數。

圖5 坐標系定義
定義XUAV為無人機坐標系,則有:
(7)


(8)

在相機抖動或快速移動時,會出現AprilTag識別算法計算錯誤的情況,使返回的相機相對于Tag的位姿具有噪點數據,本文采用限幅濾波算法對AprilTag識別算法解算出的位姿數據進行濾波處理。算法實現如式(9):

(9)
式中,x為當前時刻采集到的數據,x_pre為上一時刻的數據,A為限幅閾值。該算法有效克服了因AprilTag識別算法計算錯誤引起的脈沖干擾,提高了位姿數據的準確性。
飛行模塊在水平方向(x-y)、偏航方向(yaw)和垂直方向(z)上均采用PID的輸出量u(t)進行速度控制,來實現飛行模塊的精確導引對接降落過程。
PID控制是一種廣泛應用在工業控制中的反饋回路。比例環節的輸出與輸入偏差成正比,能迅速反映偏差,從而減小偏差,但不能消除靜差。積分環節用于消除靜差提高系統的無差度。微分環節能反映偏差信號的變化趨勢,有助于系統減小超調,克服振蕩,加快系統的響應速度,從而改善系統的動態性能[11]。PID的控制規律如式(10)所示:
(10)
式中,Kp、Tt、TD分別為比例增益、積分時間常數、微分時間常數,err(t)為水平方向、偏航方向和垂直方向上與期望值的偏差,u(t)為經PID控制調節后的各自方向上的輸出量。綜合考慮導引對接過程的平穩性及靈敏度,設置水平方向和偏航方向PID控制參數為:
(11)
基于AprilTag的視覺導引對接降落系統包含三個部分,分別是硬件系統、信息交流、算法處理,如圖6所示。硬件系統包含一架DJI M100無人機、單目攝像頭、機載計算機(NVIDIA Jetson TX2)、乘客艙以及地面行駛模塊。機載計算機安裝有Ubuntu16.04系統并已搭建好ROS運行環境,M100通過UART串口與機載計算機進行通信,攝像頭通過USB數據線與機載計算機連接,攝像頭視頻流分辨率640×480,視頻格式為yuyv,硬件設備間的信息通過ROS的消息發布訂閱機制進行交互及處理。地面行駛模塊上搭載合作目標AprilTag標識碼,外部標識碼尺寸為15 cm×15 cm,內部標識碼尺寸為3 cm×3 cm。

圖6 視覺導引對接降落系統
本文所設計分體式飛行汽車自主導引對接降落實驗步驟流程如圖7所示。飛行模塊(無人機與乘客艙組合體)起飛后通過GPS導引到地面行駛模塊上方指定高度并懸停,然后在相機視野內尋找合作目標,當識別到AprilTag標簽后,通過算法解算出飛行模塊位姿。先只進行飛行模塊水平方向上(x-y)的校正,以避免出現進行偏航方向的校正時由于飛行模塊機身的旋轉導致相機丟失AprilTag標簽視野信息的情況。當水平方向上的精度滿足要求時,再同時進行水平方向和偏航方向(x-y-yaw)三個參數的校正工作,設置水平方向上的偏差閾值為8 cm,偏航方向上的偏差閾值為5°,當x-y-yaw偏差滿足精度要求時,飛行模塊降落一定的高度,直至飛行模塊精準地降落在待對接的地面行駛模塊上后,飛行模塊停機。

圖7 視覺導引對接降落流程圖
其中,導引對接降落流程高度控制策略為:當偏差滿足精度要求時,期望高度值減小,此時利用獲取的高度信息與期望高度值的差值作為PID控制器的輸入,最終結合PID控制器的輸出實現對導引對接降落流程高度的控制。
基于AprilTag的分體式飛行汽車自主導引對接降落實驗過程如圖8所示。飛行模塊在設置的不同初始偏航角導引對接降落任務中,其偏航角隨時間的變化曲線如圖9所示。由圖可以看出,經過導引對接降落算法的控制,飛行模塊在不同的初始偏航角條件下其偏航角均可較平穩地轉變到0~5°,使飛行模塊與地面行駛模塊在偏航方向上滿足對接精度需求。

圖8 自主導引對接降落實驗過程

圖9 偏航角變化曲線
飛行模塊在導引對接降落過程中的水平位置偏移量如圖10所示。由圖可以看出,經過導引對接降落算法的控制,水平位置x-y方向上的偏移量縮減至0~5 cm,滿足導引對接降落任務水平方向上的精度需求。但從圖中也看出,水平位置x-y方向上偏移量呈現波浪式的起伏狀,經過多次實驗發現其原因主要是因為攝像頭的安裝平面與M100飛行器飛行平面不平行導致的,飛行器在前一階段滿足x-y方向上的精度后,執行高度下降程序,因為平面間存在夾角的問題從而在高度下降過程中在x-y方向上又產生了新的偏移量,后期將針對此問題進行改進。

圖10 水平位置偏移量
針對本文的導引對接降落流程高度控制策略,分別選用AprilTag識別算法解算得到的飛行模塊相對于Tag的距離信息和機載高度計的數據信息作為高度反饋,得到飛行模塊在導引對接降落過程中高度變化曲線如圖11所示。

圖11 高度變化曲線
由圖11可以得出,以AprilTag識別算法位姿解算數據為高度信息反饋的導引對接降落過程,解決了因機載高度計信息誤差大而導致的飛行模塊在導引對接降落過程中出現上下顛簸的情況,導引對接降落過程更加平穩,提升了降落品質。
通過上述分析得出,在導引對接降落過程中使用AprilTag識別算法的位姿解算數據來替代基于GPS數據及機載高度計的位置信息反饋,解決了由于GPS信息誤差大而無法實現精確的導引對接任務的問題,并且通過視覺獲取的信息也更加穩定,降落過程更加平穩,降落品質更優。
本文針對分體式飛行汽車進行模態間的轉換時涉及的模塊間的精準對接問題,提出了一種基于AprilTag的視覺定位導航方案,實驗結果表明:該方案實現了飛行模塊以較高的精度自主降落在地面行駛模塊上,驗證了本方案具有定位精度高、滿足實時性要求、降落平穩性好等優點,為后續的模態轉換相關工作做好鋪墊。
由于基于AprilTag的視覺定位方案的有效識別距離短的問題,使得該方案還不足以完美銜接于整個的飛行汽車自主導引對接流程中,下一階段將進行中近程的定位導航研究,以解決飛行汽車經GPS導引后如何從中程高度精準導引下降到地面近程高度的問題。