侯永宏,劉 艷,呂華龍,吳 琦,趙 健,陳艷芳
(1. 天津大學(xué)電氣自動(dòng)化與信息工程學(xué)院,天津 300072;2. 天津航天中為數(shù)據(jù)系統(tǒng)科技有限公司,天津 300072)
無人機(jī)在荒野搜救[1]、環(huán)境探測[2]、農(nóng)林植保、電力能源巡檢、消防救災(zāi)、國土測繪、包裹派送等領(lǐng)域有著廣闊的應(yīng)用前景.提高無人機(jī)在復(fù)雜環(huán)境下的自主飛行能力,快速高效地自動(dòng)規(guī)避障礙物,對拓寬無人機(jī)應(yīng)用領(lǐng)域、提高無人機(jī)工作效率具有重要意義.
根據(jù)對障礙物的感知方式區(qū)別,目前的無人機(jī)避障方案主要有基于超聲波傳感器的避障方案[3]、基于激光傳感器的避障方案[4]以及視覺傳感器避障方案.其中超聲傳感器存在感知范圍窄、空間分辨率差、無法感知吸收聲波的物體,在大風(fēng)干擾的情況下無法工作等缺點(diǎn),只能作為一種輔助手段.激光傳感器障礙物感知精度高,但體積龐大、價(jià)格昂貴,不適用于載荷能力受限的低成本無人機(jī)系統(tǒng).視覺傳感器具有感知范圍寬、空間分辨率高、成本低的優(yōu)勢,其主要缺點(diǎn)是計(jì)算復(fù)雜度高、實(shí)時(shí)性差.近年來得益于計(jì)算機(jī)處理能力的快速提高,特別是圖像處理單元(graphic processing unit,GPU)并行處理技術(shù)的普及,使得在嵌入式平臺上完成復(fù)雜的實(shí)時(shí)視頻處理成為可能.
在無人機(jī)精確定位方面,目前無人機(jī)大多采用GPS+慣性測量單元進(jìn)行無人機(jī)的位姿估計(jì),但在一些樓宇建筑物或者叢林等復(fù)雜場景中會存在沒有GPS信號的情況,使得無人機(jī)無法完成精準(zhǔn)定位.雖然慣性測量單元可以進(jìn)行輔助定位,但是慣性測量單元由于長時(shí)間的運(yùn)行,逐漸累積誤差會產(chǎn)生嚴(yán)重的定位漂移.而采用基于視覺傳感器的里程計(jì)進(jìn)行無人機(jī)定位,既可以不依賴于外部 GPS,也能避免嚴(yán)重定位漂移問題.
目前,有多種基于視覺的機(jī)器人自主感知與導(dǎo)航算法已被提出.從研究方法來說,可分為基于深度學(xué)習(xí)的算法[5]與基于經(jīng)典的同時(shí)定位與建圖[6](simultaneous localization and mapping,SLAM)框架的算法.基于深度學(xué)習(xí)的定位與導(dǎo)航算法因?yàn)槠溆?jì)算量龐大,目前不適用于實(shí)時(shí)導(dǎo)航系統(tǒng).基于SLAM框架的算法根據(jù)視覺傳感器的類型,又可分為單目SLAM[7]系統(tǒng)、雙目 SLAM[8]系統(tǒng)、多目 SLAM 系統(tǒng)以及基于RGB-D相機(jī)[9-11]的SLMA系統(tǒng).單目相機(jī)對計(jì)算資源要求不高,但缺少物體實(shí)際的尺度信息,造成系統(tǒng)初始化困難[12];多目系統(tǒng)在場景的三維重建方面有更好的精度,但是很難做到無人機(jī)上的實(shí)時(shí)應(yīng)用;RGB-D相機(jī)能直接獲得深度信息,但易受日光干擾,不適用于室外環(huán)境.雙目相機(jī)SLAM系統(tǒng)不存在尺度不確定性問題且可用于室外環(huán)境,適用于在未知室外環(huán)境的實(shí)時(shí)無人機(jī)導(dǎo)航系統(tǒng).
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于雙目視覺的小型旋翼無人機(jī)自主導(dǎo)航系統(tǒng).該系統(tǒng)利用雙目相機(jī)獲取環(huán)境信息,在機(jī)載的嵌入式處理平臺上完成了無人機(jī)飛行的視覺里程計(jì)、障礙物感知、局部環(huán)境地圖的構(gòu)建、以及飛行路徑的自主規(guī)劃等自主避障所需的全部實(shí)時(shí)信號處理,取得了較好的避障效果.
本系統(tǒng)的軟硬件架構(gòu)如圖 1所示.系統(tǒng)分為多旋翼無人機(jī)平臺、飛行控制器、機(jī)載信號處理平臺和視覺感知模組 4個(gè)部分.為了滿足無人機(jī)的有效載荷,使得無人機(jī)既能掛載視覺感知模組、信號處理平臺同時(shí)又可以執(zhí)行救援等其他任務(wù),系統(tǒng)選用了額定載荷2kg的Tarot 650四旋翼機(jī)架.通用的Pixhawk飛行控制器不僅能夠保證無人機(jī)的平穩(wěn)飛行與運(yùn)動(dòng)控制,而且還有豐富的外部控制接口.本系統(tǒng)通過Pixhawk的串口采用基于機(jī)器人操作系統(tǒng)(robot operation system,ROS)的 MavLink協(xié)議與機(jī)載信號處理平臺進(jìn)行數(shù)據(jù)通信.信號處理平臺采用 NVIDIA Jetson TX2模組,其具有4顆ARM A57 CPU核、256顆CUDA核以及8GB內(nèi)存空間,在功耗僅為7.5W的情況下,處理速度達(dá)到1.3TOPS(trillion operations per second).不僅運(yùn)算能力強(qiáng)勁,而且體積小、重量輕,目前被廣泛應(yīng)用于各類無人駕駛系統(tǒng)作為信號處理平臺.視覺感知模組采用 StereoLabs ZED雙目立體視覺相機(jī),其具有高分辨率、較佳的低光靈敏度,并且檢測距離可達(dá)到20m.
圖1 系統(tǒng)軟件硬件框架Fig.1 Framework of the system software hardware
所設(shè)計(jì)的無人機(jī)自主導(dǎo)航系統(tǒng),使用 ZED雙目攝像機(jī)獲取場景信息,無人機(jī)定位部分采用 ORB SLAM2算法,得到無人機(jī)位姿信息,再利用改進(jìn)的SAD算法檢測障礙物點(diǎn),結(jié)合障礙物點(diǎn)與無人機(jī)位姿生成局部障礙物地圖,再根據(jù)本地軌跡庫,規(guī)劃航跡,實(shí)現(xiàn)無人機(jī)自主導(dǎo)航.
無人機(jī)在復(fù)雜環(huán)境下飛行,會存在無法使用GPS進(jìn)行定位的情況,為了實(shí)現(xiàn)在無 GPS信號的環(huán)境下平穩(wěn)、正確飛行,無人機(jī)需要對自己的飛行位姿(位置和姿態(tài))進(jìn)行精確估計(jì).視覺里程計(jì)就是利用連續(xù)視頻幀內(nèi)同一路標(biāo)的位置變化來估計(jì)相機(jī)的運(yùn)動(dòng)軌跡.本系統(tǒng)視覺里程計(jì)(visual odometry,VO)模塊采用ORB SLAM[12-13]算法來進(jìn)行無人機(jī)精確定位.
視覺里程計(jì)的基本思想是,相機(jī)在運(yùn)動(dòng)過程中會觀測到三維世界中的物體并提取特征組成路標(biāo)點(diǎn)地圖,不同幀圖像會觀測到路標(biāo)點(diǎn)地圖中的同一路標(biāo)點(diǎn).通過當(dāng)前幀圖像中特征點(diǎn)與路標(biāo)點(diǎn)地圖中特征點(diǎn)的匹配,利用雙目相機(jī)的成像幾何模型,直接得到特征點(diǎn)的深度信息,進(jìn)而求得其世界坐標(biāo),之后根據(jù)同一路標(biāo)點(diǎn)在下一幀圖像中的坐標(biāo),可以求出不同幀之間的相機(jī)位姿變換(旋轉(zhuǎn)矩陣R和平移向量t).經(jīng)過累積和非線性優(yōu)化準(zhǔn)確估計(jì)出無人機(jī)在整體運(yùn)動(dòng)過程中的狀態(tài).
ORB SLAM 算法為降低視覺信息冗余度,從視頻序列中抽取一些幀進(jìn)行位姿的計(jì)算,所選取的幀稱為關(guān)鍵幀.在關(guān)鍵幀的選取策略上,由于雙目視覺里程計(jì)能獲得深度信息,所以圖像首幀即為關(guān)鍵幀,從立體點(diǎn)中可以直接構(gòu)建初始化地圖,后續(xù)每隔固定時(shí)間間隔選取一次關(guān)鍵幀,特殊情況是當(dāng)場景發(fā)生較大變化時(shí),也需選取關(guān)鍵幀.
ORB-SLAM 算法采用 ORB特征點(diǎn)作為前端匹配特征點(diǎn).ORB特征由關(guān)鍵點(diǎn)和描述子兩部分組成[14],關(guān)鍵點(diǎn)稱為“oriented FAST”,它改進(jìn)了FAST[15]不具有方向性的問題;描述子稱為BRIEF[16](binary robust independent elementary feature),是一種快速的二進(jìn)制描述子,用于匹配原始關(guān)鍵點(diǎn).得到匹配點(diǎn)后,即可計(jì)算出關(guān)鍵點(diǎn)在世界坐標(biāo)系中的坐標(biāo).
由匹配點(diǎn)計(jì)算物體實(shí)際坐標(biāo)的具體方法.首先采用PnP(perspective-n-point)幾何約束關(guān)系初步得到兩幀之間的相對位姿.由于匹配的關(guān)鍵點(diǎn)會存在噪聲,這樣計(jì)算出來的位姿誤差較大,需要使用光束法平差(bundle adjustment,BA)進(jìn)一步優(yōu)化無人機(jī)位姿.BA算法是非線性優(yōu)化中計(jì)算最小化重投影誤差的方法.本系統(tǒng)采用的BA只對兩幀圖像的運(yùn)動(dòng)進(jìn)行優(yōu)化,可以認(rèn)為是純運(yùn)動(dòng) BA.定義旋轉(zhuǎn)矩陣R∈SO(3),平移向量t∈?3,χ是所有匹配點(diǎn)集合,BA的優(yōu)化目標(biāo)是最小化在世界坐標(biāo)系中匹配到的路標(biāo)點(diǎn)Xi∈?3與關(guān)鍵點(diǎn)xi∈?3之間的重投影誤差為
式中:ρ為穩(wěn)健的 Huber損失函數(shù);Δ為協(xié)方差矩陣,利用Δ對重投影誤差求橢球范數(shù);(fx,fy)為焦距;b為基線;(cx, cy)為像素坐標(biāo)系下坐標(biāo)原點(diǎn)從圖片中心平移到圖片左上角造成的平移量,以上參數(shù)均可通過相機(jī)標(biāo)定獲得.該式實(shí)現(xiàn)相機(jī)坐標(biāo)系下的路標(biāo)點(diǎn)投影到像素坐標(biāo)系下.在相機(jī)坐標(biāo)系中,通常Z軸指向相機(jī)前方,X軸向右,Y軸向下,坐標(biāo)原點(diǎn)在相機(jī)中心,則Z軸數(shù)據(jù)大小代表路標(biāo)點(diǎn)深度信息.
由于長時(shí)間的相對位姿誤差累積會帶來定位漂移誤差,ORB SLAM 算法后端優(yōu)化應(yīng)用局部 BA優(yōu)化算法,減少漂移誤差.采用與 ORB-SLAM[12]中基本相同的關(guān)鍵幀插入與剔除策略,同時(shí)增加一個(gè)判斷標(biāo)準(zhǔn),即當(dāng)前幀的關(guān)鍵點(diǎn)小于一定數(shù)目或者幀中出現(xiàn)的新關(guān)鍵點(diǎn)大于一定數(shù)目時(shí)插入新的關(guān)鍵幀.對于新場景內(nèi)的關(guān)鍵幀KL,進(jìn)行局部BA優(yōu)化得
局部BA相對于純運(yùn)動(dòng)BA,添加優(yōu)化KL幀中所有關(guān)鍵點(diǎn)PL在地圖中的 3D坐標(biāo),該優(yōu)化需利用本次地圖時(shí)間內(nèi)所有的關(guān)鍵幀K.集合kχ中的點(diǎn)表示第k個(gè)關(guān)鍵幀中與PL匹配的關(guān)鍵點(diǎn).
使用 ORB SLAM2算法,設(shè)計(jì)的無人機(jī)系統(tǒng)在沒有 GPS的情況下也能實(shí)現(xiàn)精確的定位,得到無人機(jī)在世界坐標(biāo)系中的位姿,提高本系統(tǒng)的穩(wěn)定性.
在無人機(jī)自主導(dǎo)航中,無人機(jī)對周圍環(huán)境的精確感知是定位與構(gòu)建地圖的基礎(chǔ)與前提.
對于實(shí)際飛行中的無人機(jī)系統(tǒng),要達(dá)到有效躲避障礙物的需求,必須有較高的計(jì)算效率,穩(wěn)定的計(jì)算精度來自主感知周圍環(huán)境.
在估計(jì)環(huán)境深度信息時(shí),一般采用對雙目成像像素匹配的方法完成環(huán)境深度的估計(jì).但如果對無人機(jī)雙目成像的所有像素點(diǎn)做立體匹配,會造成大量信息冗余,浪費(fèi)機(jī)載計(jì)算機(jī)有限的計(jì)算資源,難以達(dá)到實(shí)時(shí)性的要求.所以在識別障礙物時(shí),只需計(jì)算障礙物的輪廓信息,并且只把關(guān)注的焦點(diǎn)集中在飛行前方一定范圍內(nèi),在雙目視圖的左右圖像中匹配障礙物的輪廓像素點(diǎn)即可識別障礙物的位置和大小.
本系統(tǒng)中使用二階微分的拉普拉斯算子(LOG)進(jìn)行邊緣檢測,獲取障礙物的邊緣信息為
式中:I( x, y)表示原始圖像中坐標(biāo)是(x, y)的像素點(diǎn);L( x, y)表示進(jìn)行拉普拉斯變換后的像素點(diǎn).
根據(jù)初步提取的障礙物對應(yīng)像素點(diǎn)在左目圖像中的位置,為了獲得障礙物實(shí)際的位置與深度信息,需要在右目圖像中尋找匹配的像素點(diǎn).在這一步中采用經(jīng)過改進(jìn)的圖像塊匹配算法 SAD(sum of absolute differences).其基本思想是取左、右目圖像像素塊中對應(yīng)像素的差的絕對值之和,據(jù)此評估兩個(gè)圖像塊的相似度[17].
傳統(tǒng)的SAD匹配估計(jì)的是一張圖像中所有像素點(diǎn)的視差信息.每一個(gè)像素點(diǎn)的視差信息的計(jì)算,需要通過對右目圖像對應(yīng)的極線上所有像素周圍的像素塊進(jìn)行匹配,選取像素差值最小的點(diǎn)作為匹配點(diǎn),再計(jì)算相應(yīng)視差.這樣一個(gè)匹配過程的時(shí)間復(fù)雜度是相當(dāng)高的,很難保證足夠的幀率.
改進(jìn)的SAD算法僅僅需要均勻稀疏的像素塊視差和每一幀左、右目圖像中的固定視差大小的像素塊匹配,同時(shí)整個(gè)匹配過程使用 CUDA加速.①均勻稀疏是指對一張 1280×720的圖片,將其分割成12×12大小的網(wǎng)格,隨后只求這些網(wǎng)格中心點(diǎn)(同時(shí)也應(yīng)當(dāng)是邊緣點(diǎn))對應(yīng)的像素塊的視差,有效減少將近兩個(gè)數(shù)量級的匹配時(shí)間復(fù)雜度;②固定視差大小匹配是指,假定無人機(jī)只關(guān)心前方固定距離處的障礙物,在視頻流中也就是固定深度處的像素塊,深度反推出在左、右目圖像中的固定視差,通過計(jì)算固定視差處的像素塊的像素差值是否在一定閾值內(nèi)來確定是否匹配,通過這種方法又可以降低一個(gè)數(shù)量級左右的時(shí)間復(fù)雜度;③同時(shí)將整個(gè)視差估計(jì)以及預(yù)先的濾波(拉普拉斯邊緣提取設(shè)定閾值以及雙邊濾波去除噪點(diǎn))過程都放在NVIDIA Jetson TX2的GPU當(dāng)中進(jìn)行并行運(yùn)算,有效提升障礙物感知過程的效率,保障系統(tǒng)的實(shí)時(shí)性.
經(jīng)典SAD算法流程如下.
從左到右、從上到下依次掃描左目圖像中像素.
(1) 選定圖像像素點(diǎn),并以此為中心,構(gòu)造一個(gè)n×n的窗口,用窗口分別覆蓋左、右目圖像對應(yīng)區(qū)域,窗口中心點(diǎn)在選中像素點(diǎn)的坐標(biāo)上;
(2) 左目覆蓋區(qū)域減去右目覆蓋區(qū)域,并求出所有像素點(diǎn)灰度差的絕對值之和;
(3) 在同一水平線上移動(dòng)右目圖像的窗口,在一定搜索范圍d內(nèi)重復(fù)上一步的處理;
(4) 找到這個(gè)范圍內(nèi)SAD值在規(guī)定閾值內(nèi)的窗口,即找到了左目圖像邊緣點(diǎn)的最佳匹配的像素塊.
SAD值的求解公式為
式中L( i)表示拉普拉斯變換后的像素點(diǎn).
本系統(tǒng)根據(jù)無人機(jī)的飛行速度及系統(tǒng)響應(yīng)時(shí)間,采用“推掃式”障礙物深度感知方法.即設(shè)定對于每幀圖像,只尋找無人機(jī)前方固定范圍處(即圖片中固定深度)的障礙物,無人機(jī)在持續(xù)飛行過程中,如圖 2所示,根據(jù)當(dāng)前范圍(深色部分)所捕捉到的障礙物信息,結(jié)合之前(淺色部分)的障礙物信息,逐步累積獲得周圍環(huán)境的整體感知.
圖2 “推掃式”圖像感知Fig.2 Pushbroom image perception
根據(jù)經(jīng)典的雙目攝像機(jī)針孔模型的三角相似原理,可以得到固定深度下的視差大小為
式中:B為基線,代表雙目攝像機(jī)左右攝像頭之間的距離;f為攝像頭的焦距.B與f均是攝像機(jī)的基本參數(shù)信息,本方法中設(shè)定取攝像機(jī)鏡頭前5 m的障礙物進(jìn)行檢測,d則是同一物體在左右兩幅圖中的成像視差值,也是本文改進(jìn)的SAD算法的搜索范圍.
障礙物邊緣點(diǎn)匹配成功后,根據(jù)相機(jī)標(biāo)定獲得的內(nèi)參矩陣,把障礙物點(diǎn)的像素坐標(biāo)轉(zhuǎn)換到相機(jī)坐標(biāo).對于遠(yuǎn)處的地面水平線和具有重復(fù)紋理信息的背景,系統(tǒng)可能會將其當(dāng)做障礙物,因此,本系統(tǒng)加入水平一致性檢測消除該影響.本系統(tǒng)所采用的改進(jìn)的 SAD匹配方法避免傳統(tǒng)匹配中的遍歷過程,極大地降低計(jì)算復(fù)雜度,提高處理速度,適用于無人機(jī)飛行過程中的實(shí)時(shí)障礙物檢測.
無人機(jī)自主規(guī)劃飛行軌跡,需要當(dāng)前環(huán)境地圖.傳統(tǒng)方法需要先獲得當(dāng)前環(huán)境的先驗(yàn)地圖,使得無人機(jī)在已知環(huán)境下進(jìn)行導(dǎo)航,此方法具有局限性的,不適用于所有場景.較好的解決方案是無人機(jī)在飛行的過程中進(jìn)行地圖的構(gòu)建.受限于機(jī)載計(jì)算機(jī)的內(nèi)存大小,本方法不會對地圖進(jìn)行本地化的存儲,所以本系統(tǒng)認(rèn)為所有場景均是未知的.無人機(jī)不斷進(jìn)行局部地圖的增量式構(gòu)建,以此作為導(dǎo)航的依據(jù).
結(jié)合第 2.1節(jié)中得到的無人機(jī)在世界坐標(biāo)系中的位姿與第 2.2節(jié)中得到的障礙物在相機(jī)坐標(biāo)系中的位置,便可得到障礙物在世界坐標(biāo)系中的三維坐標(biāo).本系統(tǒng)采用 PCL[18]中提出的基于點(diǎn)云的八叉樹結(jié)構(gòu)地圖.八叉樹地圖(octomap)是一種可壓縮、可更新并且分辨率可調(diào)的適用于導(dǎo)航的稠密地圖.八叉樹地圖把空間建模成許多立方體,大的立方體被逐漸均分成同等大小的 8個(gè)小立方體.用概率對數(shù)值描述某個(gè)小立方體中含有障礙物的概率,即
式中:x為0~1的概率;y為概率對數(shù)值.當(dāng)不斷觀測到某個(gè)節(jié)點(diǎn)被障礙物占據(jù)時(shí),讓y增加一個(gè)值,否則減少一個(gè)值.對獲得的 y,根據(jù)式(7)求逆變換可以得到相應(yīng)的概率值.因此可以查詢某個(gè)空間范圍“可以通過的概率”,從而實(shí)現(xiàn)無人機(jī)飛行過程中的導(dǎo)航.
為了避免在八叉樹中長時(shí)間積累大規(guī)模地圖信息,同時(shí)有效緩解處理負(fù)擔(dān),本系統(tǒng)采用地圖生存期與關(guān)鍵幀機(jī)制,同時(shí)構(gòu)建兩個(gè)八叉樹地圖,如圖 3所示:一幅八叉樹地圖的生存時(shí)間是4s,當(dāng)前運(yùn)行的地圖是工作地圖,下一時(shí)刻的地圖是構(gòu)造地圖.為了確保在丟棄一個(gè)八叉樹時(shí)不會錯(cuò)過一個(gè)潛在的障礙,在工作地圖運(yùn)行 2s時(shí),構(gòu)造地圖開始同步構(gòu)建,工作地圖和構(gòu)造地圖之間至少存在2s的重疊期.
通過上述方法,無人機(jī)就獲得了周圍環(huán)境的局部障礙物地圖信息.
圖3 地圖生存期Fig.3 Map lifetime
無人機(jī)的軌跡規(guī)劃是指計(jì)算機(jī)根據(jù)周邊障礙物信息規(guī)劃出一條能有效躲避障礙物的安全飛行路徑.由于無人機(jī)在局部地圖中只需進(jìn)行局部路徑規(guī)劃,本系統(tǒng)根據(jù)已生成的局部障礙物地圖,采用一種簡化的基于本地軌跡庫的航跡規(guī)劃方法.
具體過程如下.
(1) 首先選擇無人機(jī)與當(dāng)前地圖障礙物的最近距離dobs當(dāng)做判斷當(dāng)前路徑上是否有障礙物的標(biāo)準(zhǔn),并且設(shè)定一個(gè)參考閾值dref,如果dobs>dref,則認(rèn)為當(dāng)前執(zhí)行路徑上沒有障礙物(即當(dāng)前執(zhí)行路徑安全),反之則認(rèn)為是有障礙物.
(2) 狀態(tài)集合S={s0, s1}代表當(dāng)前無人機(jī)的飛行狀態(tài),s0表示當(dāng)前路徑安全,s1代表路徑不安全.動(dòng)作集合A={a0, a1, a2, a3}中的元素分別代表無人機(jī)沿直線飛行、向左飛行、向右飛行以及朝終點(diǎn)飛行的飛行指令.其中a3表示無人機(jī)根據(jù)當(dāng)前飛行位姿、速度以及終點(diǎn)坐標(biāo),在不考慮未觀測區(qū)域障礙物的情況下,直接朝向終點(diǎn)飛行的路徑.假設(shè)a代表無人機(jī)當(dāng)前動(dòng)作,具體的軌跡庫遍歷順序見表1.
表1 軌跡庫遍歷順序Tab.1 Traversal order of trajectory library
自主導(dǎo)航的難點(diǎn)之一在于規(guī)劃有限的機(jī)載計(jì)算資源[19].前文中的各個(gè)模塊都占用一定的 CPU資源,尤其是地圖的構(gòu)建需要占用更大的處理資源.考慮到本系統(tǒng)所使用的處理器 NVIDIA Jetson TX2中帶有GPU模塊(具有256個(gè)CUDA內(nèi)核),為了降低CPU的工作負(fù)擔(dān)并充分利用處理器的資源,實(shí)驗(yàn)中使用大規(guī)模并行計(jì)算工具 CUDA,優(yōu)化系統(tǒng)的建圖框架,縮短程序運(yùn)行時(shí)間,達(dá)到實(shí)時(shí)運(yùn)行效果.
為驗(yàn)證 CUDA提高系統(tǒng)運(yùn)行速度的效果,在NVIDIA Jetson TX2上分別進(jìn)行 3種實(shí)驗(yàn),如表 2 所示.
表2 GPU加速對比實(shí)驗(yàn)Tab.2 GPU comparative experiment
實(shí)驗(yàn) 1~3是本系統(tǒng)的不同方案,實(shí)驗(yàn) 1代表不使用CUDA進(jìn)行加速,分辨率是640× 480,實(shí)驗(yàn)2代表經(jīng)過CUDA加速,分辨率同實(shí)驗(yàn)1,實(shí)驗(yàn)3代表經(jīng)過 GPU 加速,分辨率是1280× 720,經(jīng)過對比可以看出,在同樣的視頻質(zhì)量下,使用 GPU加速優(yōu)化系統(tǒng),障礙物感知速度提高了4倍左右,達(dá)到了明顯的加速效果.
與文獻(xiàn)[20]中的實(shí)驗(yàn)方法進(jìn)行對比.換算成同樣的分辨率,本系統(tǒng)在640× 480分辨率下,處理幀率與其相比提升 4倍;當(dāng)分辨率提高到1280× 720時(shí),雖然處理幀率有所下降,但是系統(tǒng)整體性能仍有大幅提高,從一定程度上驗(yàn)證了本系統(tǒng)的優(yōu)化效果.
對所設(shè)計(jì)方案分別進(jìn)行仿真和真實(shí)飛行兩種實(shí)驗(yàn)進(jìn)行驗(yàn)證,實(shí)驗(yàn)中所有的算法均在嵌入式處理器NVIDIA Jetson TX2上完成,實(shí)驗(yàn)平臺如圖4所示.
圖4 實(shí)驗(yàn)平臺Fig.4 Experimental platform
仿真實(shí)驗(yàn)在能渲染 3D世界的虛幻引擎 Unreal Engine 4(UE4)上搭配Microsoft開源框架AirSim的環(huán)境下進(jìn)行[21].Airsim提供了多種無人機(jī)、無人車模型,能夠虛擬出 GPS、IMU、氣壓計(jì)和磁力計(jì)等多種傳感器.配合 UE4引擎使用,能夠渲染出非常詳細(xì)的3D城市環(huán)境.在Airsim仿真中,通過API接口獲取仿真環(huán)境中虛擬相機(jī)圖片,通過本系統(tǒng)的算法處理,將最終的無人機(jī)飛行指令反饋給仿真環(huán)境的無人機(jī)模型執(zhí)行.
圖5 仿真試驗(yàn)展示Fig.5 Simulation display
圖 5(a)顯示出無人機(jī)對距離 5m的障礙物進(jìn)行了標(biāo)注,用多個(gè)藍(lán)色方框覆蓋樹干.最終建立的點(diǎn)云局部地圖如圖5(b)所示.圖5(c)、(d)是第 3視角的不同場景軌跡圖,圖 5(d)中上方的立方體堆積物是檢測出的障礙物,目的地設(shè)定在地圖的右上方.左半部分的3條直線是世界地圖坐標(biāo)系,右半部分較短的線是從當(dāng)前位置指向當(dāng)前規(guī)劃航線最遠(yuǎn)航點(diǎn)的矢量線,連續(xù)的線代表實(shí)際飛行的軌跡.從圖 5中可以看出無人機(jī)在避開前面的障礙物時(shí),首先不停地向右飛行并且旋轉(zhuǎn)偏航角,隨后選擇沿著障礙物直線飛行,直到指向終點(diǎn)的飛行路徑是可以安全飛行的,則選擇向終點(diǎn)飛行的路徑.
基于安全性考慮,飛行實(shí)驗(yàn)選擇在航天中為數(shù)據(jù)系統(tǒng)有限公司的無人機(jī)專用實(shí)驗(yàn)場地進(jìn)行.
圖 6是測試時(shí)的真實(shí)場景,由于環(huán)境所限,無人機(jī)設(shè)定為定高飛行,目標(biāo)是自主繞過無人機(jī)的飛行路線上的一排樹木.實(shí)驗(yàn)中設(shè)定相機(jī)采集的視頻分辨率是1280× 720,實(shí)際處理幀率達(dá)到60幀/s.
圖6 真實(shí)飛行展示Fig.6 Real flight show
圖 6(b)是無人機(jī)飛行時(shí)攝像頭拍攝的實(shí)時(shí)場景,紅色方框代表識別出的障礙物點(diǎn)(上方陰影是無人機(jī)螺旋槳).圖 6(c)是真實(shí)場景測試時(shí)記錄下的飛行軌跡和建立的地圖,無人機(jī)從圖 6(c)下方出發(fā),飛行終點(diǎn)在圖 6(c)的左上方,其中圖片中間偏左部分的像素點(diǎn)區(qū)域是無人機(jī)識別出的障礙物區(qū)域,圍繞障礙物區(qū)域的綠色線段是無人機(jī)飛行的實(shí)際軌跡.無人機(jī)先是直線飛行,在距離樹木大約5m的時(shí)候識別出前方的障礙物,隨即不斷進(jìn)行航跡的規(guī)劃,多次試探著改變方向角,同時(shí)繼續(xù)觀察周圍環(huán)境,從而避開障礙物,成功飛向終點(diǎn).
本文介紹了一種無人機(jī)在復(fù)雜場景下的自主感知與路徑規(guī)劃系統(tǒng).首先采用 ORB視覺里程計(jì)獲取無人機(jī)位姿,再使用 SAD障礙物點(diǎn)提取搭配“推掃式”感知技術(shù)獲得障礙物信息,上述兩種方法結(jié)合生成局部八叉樹地圖,其次使用基于本地軌跡庫的路徑規(guī)劃算法,最后在NVIDIA Jetson TX2平臺上實(shí)現(xiàn)了所有的信號處理,并用 GPU對關(guān)鍵算法進(jìn)行了加速.實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的方案能實(shí)時(shí)處理雙目視頻信息,感知飛行環(huán)境,避開飛行路線上的障礙物.為提高低成本多旋翼無人機(jī)自主飛行能力,提高其在未知環(huán)境下的避障能力做了積極的探索.