周武根,李 運,彭曉東
(1.中國科學院國家空間科學中心,北京 100190;2.中國科學院大學,北京 100049)
近年來,基于無人機導航的相關應用研究得到越來越多的學者和公司的關注,無人機作為空中機器人,掛載光學攝像頭、激光雷達、IMU、聲納、紅外攝像機等傳感器,通過GPS定位并結合相應的智能處理算法,可以廣泛地應用在地面測繪、農業植保、森林防火、災難救援等領域。
但是,這些任務的復雜性對無人機本身的算法要求越來越高,尤其是無人機在室內等無GPS信號場景的應用[1-2],魯棒的定位算法極為重要。現有的無人機室內自主飛行的定位算法主要基于激光雷達、IMU、相機這三種傳感器及其相互之間的數據融合[3-5]。其中,激光雷達由于其體積笨重通常不太適用于輕量型的無人機室內飛行,而視覺除了可以提供定位信息外,還可以集成識別、目標跟蹤、場景理解等技術,從而發展成更加智能的飛行無人機。所以,基于視覺及IMU的無人機自主飛行逐漸成為主流,引起廣泛的關注與研究[6-7]。
即時定位與地圖構建(Simultaneous Localiza-tion and Mapping, SLAM)算法[8]作為機器人領域重要的自主定位與地圖構建算法,尤其是基于計算機視覺的SLAM技術,對無人機室內導航是一個極大的補充,兩者的結合能夠極大地拓展無人機的應用前景[9-10]。最具有代表性的是基于特征點法的ORB-SLAM[11],基于直接法的LSD-SLAM[12],由于這兩種算法的復雜性,使得其在移動機載端的嵌入式系統上難以實時運行;基于特征點法與直接法相結合的視覺里程計SVO[13],就是基于無人機平臺開發的,但是難以適應復雜的壞境,并且容易出現丟幀。
在火力發電廠需要探測煤場的煤儲量,由于體積常在幾千甚至上萬立方米左右,并且儲量是動態的增減,常規稱重等方法已經不適用。傳統的盤點煤儲量儀器是站在某一固定點打出激光,然后通過對多個已知位置的激光點云合成拼接出整個煤場的煤堆模型,從而估算出煤堆的體積。該方法在室內應用時由于高度的限制,容易存在探測盲區,影響重建精度。
無人機由于其靈活、智能化等特點,已經廣泛地應用于地面測繪、地圖構建等領域[14],結合相應的路徑規劃算法可以實現無盲區的煤堆地圖構建。因此,提出利用無人機結合視覺里程計進行室內定位,實現棚內煤場的煤堆地圖構建與儲量估計。
在沒有GPS信號的環境下,通常的無人機自主飛行系統包括飛行平臺、各種功能的傳感器、板載處理器、軟件算法、地面站控制終端等,各個模塊之間相互協作[6,15],共同完成無人機自主飛行任務,如圖1所示。
傳感器感知周圍環境,將原始感知信號傳入機載端電腦進行處理,在無GPS或弱GPS環境下,無人機的自主飛行分為以下2個步驟:1)通過融合IMU、超聲波、相機等的一種或多種傳感器信息,獲得魯棒的定位信息;2)依據該定位信息,對無人機進行路徑規劃,最后,輸出相應的控制命令控制無人機自主飛行。
受限于現有的無人機板載電腦計算能力,SLAM算法中的一些模塊如回環檢測、集束調整、稠密地圖構建等,一般考慮在地面終端進行,無人機通過與地面端數據通信來校正當前定位信息,并且在地面終端的后期處理可以提升三維重構精度。
由于SLAM或視覺里程計等算法很難滿足所有的室內場景,不同場景適用的SLAM在結構及算法細節上可能千差萬別。因此,針對不同的場景特點,需要選擇合適的傳感器及飛行平臺,設計相應的定位算法。
針對無人機自主飛行進行棚內煤場盤煤的任務,如圖2所示。首先,需要對棚內煤場的場景及其空間結構有大致的了解,圖3所示為棚內煤場實際圖。
總體而言,棚內煤場有以下幾個特點:1)鋼架結構較多,磁場干擾較大,導致定位推算時無法使用磁力計數據進行融合提高定位精度;2)棚內周圍鋼架結構是靜態的,適合當前主流的SLAM算法做定位計算;3)光線明暗程度不一致,但是沒有光線劇烈變化的場景,通過多個方向的視覺融合,可以降低光線明暗的影響,提升視覺定位精度;4)由于路徑規劃整個煤場只遍歷1遍,所以該任務無法進行基于場景識別的回環檢測,因此,視覺里程計會不可避免地帶來一定的累積誤差。
根據以上的場景分析,系統的無人機硬件平臺采用大疆M100型號可編程的無人機,以及可開發的Guidance作為感知周圍環境的傳感器設備,整體設計如圖4所示。
棚內煤場場景通常具有磁干擾較大、光線明暗不一致、有障礙物等特點,考慮以下幾點:1)融合5個方向雙目視覺信息的視覺里程計,各個方向計算結果能相互補充,避免了單個方向容易丟幀的現象,減少定位失敗的可能性;2)針對棚內的障礙物,考慮獲取Guidance感知的4個方向障礙物信息,并在此基礎上設計相應的避障規則,結合路徑規劃,設計出無人機飛行的避障航跡線路;3)由于對煤場煤堆重建質量要求較高,在線地圖構建遠遠達不到要求,因此,考慮將照片應用運動推斷結構方法進行離線重構,獲得三維精確的煤堆模型。但是,該算法恢復的煤堆模型是沒有尺度的,需要結合前面的定位數據給出相應的尺度信息,重建模型才可以用于后期的體積估計。
現有煤場的煤棚主要分為兩邊開口的敞開式煤棚,以及全封閉式煤棚兩種,對此分別進行了2組實驗,以此來驗證所提出的無人機自主飛行盤煤系統的可行性。
全封閉煤棚的特點是沒有GPS信號,棚內四周全是靜態的棚壁面及鋼架結構,并且沒有風的影響,這樣的環境適合基于視覺的導航飛行。棚內的煤堆長度超過210m,由于視覺定位是基于初始方向下的無人機坐標系,無人機長距離飛行可能會出現與棚內壁面相撞的情況。因此,避障規則設計成調整無人機的偏航角,如圖5中的左上角,無人機調整航向后避免了與棚壁面相撞。
由于視覺計算量較大,實際飛行速度不能太快,若飛行太快,視覺計算的定位結果不準確,容易導致無人機漂移;運動推斷結構算法需要相鄰2張照片之間有一定的重疊度,綜合飛行速度和高度,設定合適的拍照頻率,具體參數值如表1所示。

表1 實驗參數設置
定位結果如圖5所示,右邊是起飛點與降落點,往前飛行時由于偏航角未與現場坐標系對準,容易出現偏移。在經過避障功能調整之后,在往回飛行階段,可以看出飛行相對穩定,定位偏差從圖中網格可以大約估計。煤堆三維重建結果如圖6所示,根據之前的視覺定位信息,可以確定該煤堆三維模型的空間尺度,根據該實驗重建結果,利用后處理軟件對模型進行體積估計。
定位結果與重建精度結果如表2所示,可以看到定位相對較好,估計的煤堆體積與真實的煤儲量也比較接近,驗證了該方法在封閉煤棚內定位與建圖的可行性與有效性。

表2 全封閉煤棚定位與地圖構建結果
兩邊開口式的煤棚下面的煤堆跨越棚內外,所以,無人機的路徑規劃需要先從棚外起飛,才能夠遍歷完整個煤堆。在棚外起飛至20m以上高空時,由于四周都是天空,容易導致圖像難以提取特征、視覺定位不準。在該情況下,考慮棚外用GPS定位,棚內外的交界處用Kalman濾波融合GPS定位信息及視覺里程計數據進行定位,棚內用純視覺定位,從棚內飛出棚外時依賴GPS信息校正視覺定位的累積誤差,從而實現了棚內外導航方式無縫切換。
實驗結果如圖7(a)所示,從定位結果來看,反映出無人機長距離飛行穩定,特別是在棚內外交界處沒有出現橫向偏移,路徑彎曲部分是避障和局部路徑規劃的結果。根據定位結果,由運動推斷結構方法進行離線重構,同樣可以獲得比較精確的煤堆三維模型,如圖7(b)、圖7(c)所示,煤堆三維重建的結果比較精細,整體沒有出現彎曲等重構的累積誤差,棚內外交界處沒有不協調,外觀和重構細節均能夠較好地反映出煤堆的空間結構。
實驗結果如表3所示,由于存在GPS信息的校正,該敞開式煤棚場景下的室內段定位累積誤差能夠被消除一部分,所以精度比封閉式環境稍好一點。同樣,基于地圖構建結果的煤堆體積估計與真實煤儲量較為接近,驗證了所提出的無人機自主飛行系統在該種室內外結合的敞開式煤棚場景下盤煤的有效性和可行性。

表3 敞開式煤棚定位與地圖構建結果
針對室內大型煤場的特定場景,設計了一個能夠適應大型室內自主飛行的無人機系統,與現有的視覺無人機系統不同,該系統融合了5個方向的視覺信息進行定位,實驗結果也顯示出該系統在大型室內場景下定位的魯棒性和低漂移,加上獲取的周圍障礙物信息和局部路徑規劃能夠達到簡單避障的效果,實現了無人機室內自主飛行。通過運動推斷結構算法構建出的煤堆三維模型較為精確,煤堆體積估計與實際儲量比較接近。2個實際場地飛行的實驗驗證了該無人機系統在大型室內煤場煤儲量估計方法的可行性和有效性。
根據實驗結果發現,該系統依然存在不足之處,在今后的工作中,以下幾個方面仍需繼續改進:1)視覺定位算法仍然存在累積誤差的情況,如何降低該誤差是今后的工作重點;2)路徑規劃及避障算法需要進一步加強,同時考慮避障和全地圖覆蓋兩方面的要求,提升復雜環境下的障礙物感知、避障及路徑規劃能力;3)無人機控制問題,后期會考慮自適應的PID控制,提高控制的精確性和穩定性。