賀 勇, 高正濤, 鄧 婷
(長(zhǎng)沙理工大學(xué)電氣與信息工程學(xué)院,長(zhǎng)沙 410000)
無人機(jī)憑其優(yōu)秀的飛行能力和遠(yuǎn)距離操作能力在很多領(lǐng)域得以應(yīng)用[1-6],在傳統(tǒng)的無人機(jī)計(jì)算系統(tǒng)中,GPS和氣壓計(jì)作為定位追蹤的首選,但在信號(hào)較差情況下,無人機(jī)的定位存在精度差、跟蹤不及時(shí)、機(jī)身不能較好穩(wěn)定的問題。因此,通過視覺進(jìn)行無人機(jī)定位追蹤成為近年來各大院校的研究目標(biāo),其中光流法在無人機(jī)中的應(yīng)用越來越多,成為無人機(jī)視覺導(dǎo)航算法中的熱門應(yīng)用。但是光流算法通常用在環(huán)境較好的條件下,因此在有遮擋等惡劣環(huán)境中對(duì)光流算法進(jìn)行改進(jìn)具有重要的實(shí)際價(jià)值和研究?jī)r(jià)值。
為了提高算法的快速性,李小紅等[1]提出了一種新穎的快速目標(biāo)檢測(cè)算法,基于ORB特征的特征點(diǎn)匹配算法,結(jié)合最小二乘法進(jìn)行運(yùn)動(dòng)補(bǔ)償,同時(shí)使用幀差法來獲得運(yùn)動(dòng)目標(biāo),算法具備良好的快速性,但是在復(fù)雜環(huán)境中可靠性較低;戴雪梅等[2]結(jié)合快速魯棒特征點(diǎn)(SURF)算法,將ORB算法改進(jìn)為SURB算法,利用具有尺度不變性的SURF算法特征點(diǎn),構(gòu)建ORB算法描述子,同時(shí)對(duì)圖像進(jìn)行分塊處理,有較高的實(shí)時(shí)性,但是由于大量減少了特征點(diǎn)的讀取區(qū)域,使得特征點(diǎn)數(shù)目較少,處于突變環(huán)境中的無人機(jī)魯棒性較差,不能進(jìn)行精準(zhǔn)導(dǎo)航;樊彥國(guó)等[5]將ORB算法和隨機(jī)抽樣一致(RANSAC)算法結(jié)合,然后創(chuàng)新性地采取梯度采取模式再對(duì)圖像構(gòu)建分塊,最后利用RANSAC算法隨機(jī)取樣檢測(cè),可以實(shí)現(xiàn)無人機(jī)的定位導(dǎo)航,大幅減少了錯(cuò)誤匹配率,但是復(fù)雜的算法大量增加了運(yùn)行時(shí)間,尤其是無人機(jī)下方環(huán)境復(fù)雜度較高的情況下,過度復(fù)雜的算法導(dǎo)致綜合環(huán)境下實(shí)時(shí)性較低。
本文為了解決光流算法跟蹤精度不高、可靠性不強(qiáng)的問題,提出了一種基于卡爾曼濾波預(yù)測(cè)的無人機(jī)光流跟蹤算法。該算法流程為將LK光流算法和卡爾曼濾波相結(jié)合,利用ORB算法提取特征點(diǎn)并送入LK光流金字塔中,通過雙向追蹤得到特征點(diǎn),并且利用前后雙向預(yù)測(cè)跟蹤估計(jì)下一幀的特征點(diǎn),同時(shí)校驗(yàn)并補(bǔ)充當(dāng)前幀特征點(diǎn),在消除錯(cuò)誤點(diǎn)后得到由初步可信點(diǎn)與預(yù)測(cè)可信點(diǎn)組成的點(diǎn)集坐標(biāo)并進(jìn)行位姿計(jì)算,由預(yù)測(cè)幀的快速計(jì)算性彌補(bǔ)前后雙向算法復(fù)雜度的時(shí)間。
無人機(jī)改進(jìn)匹配跟蹤算法如圖1所示。
在定位跟蹤中,通過分析無人機(jī)返回的當(dāng)前幀和其他幀圖片,利用改進(jìn)的角點(diǎn)檢測(cè)算法分析每一幀特征點(diǎn)的數(shù)量和位置[7],將得到的特征點(diǎn)利用LK光流算法進(jìn)行特征點(diǎn)跟蹤,對(duì)不同幀數(shù)的特征點(diǎn)位置變化進(jìn)行分析,對(duì)于相鄰幀距離變化小的特征點(diǎn),采用改進(jìn)的前后雙向跟蹤策略,對(duì)于變化距離較大的特征點(diǎn)采用改進(jìn)的可信點(diǎn)匹配過濾函數(shù)進(jìn)行過濾,篩選出適用于自適應(yīng)插入點(diǎn)算法的特征點(diǎn),同時(shí)檢測(cè)錯(cuò)誤點(diǎn)并將其舍去。最后將得到的全部可信點(diǎn)通過自適應(yīng)加權(quán)濾波對(duì)無人機(jī)返回信息中的高斯白噪聲等進(jìn)行過濾,通過再次對(duì)比設(shè)定的閾值,反饋信息并將其送入無人機(jī)進(jìn)行相關(guān)的解算。
光流算法是一種經(jīng)典的基于兩幀圖像特征點(diǎn)之間關(guān)系的匹配算法, LK光流算法的原理就是通過分析前后兩幀圖像的像素點(diǎn)等差異,在信息丟失最小的情況下,將真實(shí)的三維世界的運(yùn)動(dòng)轉(zhuǎn)化成計(jì)算機(jī)二維圖像,其使用需要滿足3個(gè)假定條件[8-10]。
1) 前一幀圖像中特征點(diǎn)H(x,y)與后一幀圖像對(duì)應(yīng)點(diǎn)E(x,y)的亮度和顏色相同,即
Color(E(x1,y1))=Color(H(x2,y2))
(1)
Light(E(x1,y1))=Light(H(x2,y2))
(2)
式中:Color(·)表示對(duì)像素點(diǎn)顏色的函數(shù)值;Light(·)表示對(duì)像素點(diǎn)亮度的函數(shù)值。
2) 前后兩張圖像之間特征點(diǎn)的運(yùn)動(dòng)是不間斷且細(xì)微的,即
F(VEX1,VEY1)=F(VHX2,VHY2)
(3)
式中,VEX1,VEY1,VHX2和VHY2分別表示E(x1,y1)和H(x2,y2)的特征點(diǎn)在x,y方向速度的偏導(dǎo)數(shù)。
3) 相鄰兩幀圖像之間對(duì)應(yīng)像素點(diǎn)的2D瞬時(shí)速度場(chǎng)相同,即
VFH=VFE
(4)
式中,VFH和VFE分別表示H(x2,y2)和E(x1,y1)的瞬時(shí)速度場(chǎng)。由3個(gè)假設(shè)條件得到的光流約束方程為
ΙXVX+ΙYVY+ΙT=0
(5)
式中:ΙX,ΙY表示2D光流中的對(duì)應(yīng)點(diǎn)在x,y方向的偏導(dǎo)數(shù),可以由兩幀圖像直接得出;VX,VY表示對(duì)應(yīng)點(diǎn)在x,y方向上的光流值;ΙT表示圖像像素點(diǎn)亮度關(guān)于時(shí)間的導(dǎo)數(shù),通過光流算法可以得到不同幀數(shù)圖像的特征點(diǎn)位置等信息。
卡爾曼濾波通過分析兩幀的連續(xù)點(diǎn)之間的關(guān)系,經(jīng)過一系列的加權(quán)推算,通過先驗(yàn)值和最新觀測(cè)數(shù)據(jù)得到的值經(jīng)過一系列加權(quán)平均來更新狀態(tài)估計(jì),而其他非遞推類型算法中沒有先驗(yàn)估計(jì)值,估計(jì)的結(jié)果均由觀測(cè)數(shù)據(jù)的結(jié)果計(jì)算得出。其可以由無人機(jī)返回的前幀圖像預(yù)測(cè)下一幀圖像的位置,在無人機(jī)面對(duì)復(fù)雜環(huán)境時(shí)有重要跟蹤作用。
卡爾曼濾波對(duì)于干擾大多是高斯白噪聲的無人機(jī)濾波有顯著的作用,同時(shí)用于后文預(yù)測(cè)跟蹤,為改進(jìn)算法提供了快速性。
無人機(jī)進(jìn)行光流計(jì)算時(shí),采用LK光流法可以得到稀疏的光流場(chǎng),可以精簡(jiǎn)計(jì)算量從而提高算法的執(zhí)行效率,但是由于稀疏光流算法計(jì)算過程會(huì)丟失信息從而導(dǎo)致算法的精確性難以保證。與其他算法相比,LK光流算法迭代計(jì)算得到的稀疏光流場(chǎng)對(duì)無人機(jī)在速度小時(shí)偏移位姿計(jì)算有更加精準(zhǔn)的光流,考慮到光流算法中所有的像素點(diǎn)都是符合高斯分布以及正態(tài)分布的,本文針對(duì)連續(xù)圖像,通過提取特征點(diǎn),根據(jù)RGB特征點(diǎn)的不變性可以得到更加穩(wěn)定的光流,最后通過卡爾曼濾波得到無人機(jī)的估計(jì)光流,并且使用特定的約束條件來驗(yàn)證過濾過程的輸出。
使用LK光流迭代算法確定特征點(diǎn)的光流。對(duì)相鄰兩幀的特征點(diǎn)分析[8,11],考慮使用獨(dú)立分量分析方法在時(shí)間t檢測(cè)到物體。設(shè)(VT,ST)為圖像中特征點(diǎn)位置。
圖像T+1中相同點(diǎn)的位置(VT+1,ST+1)表示為
VT+1=VT+DU
(6)
ST+1=ST+DS
(7)
其中,GT(DS,DU)為像素點(diǎn)的光流位移矢量。定義無人機(jī)誤差函數(shù)為
(8)
式中,WS和WV表示以矢量GT(DS,DU)為中心的2D窗的大小。
常規(guī)的無人機(jī)采用的都是兩幀圖像特征點(diǎn)的直接匹配法,將漢明距離小于最小距離兩倍作為判斷依據(jù)。當(dāng)環(huán)境較暗特征點(diǎn)讀取不準(zhǔn)確或者圖像中有多處區(qū)域紋理類似時(shí),依然會(huì)將兩幀圖像中的錯(cuò)誤點(diǎn)當(dāng)成特征點(diǎn),導(dǎo)致匹配時(shí)出現(xiàn)大量錯(cuò)誤,使得無人機(jī)出現(xiàn)懸停不穩(wěn)定等情況[12]。對(duì)此,本文就特征點(diǎn)的匹配規(guī)則及相關(guān)算法進(jìn)行改進(jìn)。
現(xiàn)階段無人機(jī)常用ORB特征點(diǎn)提取算法得到圖像特征點(diǎn)。本文算法通過求出預(yù)測(cè)插入可信點(diǎn)和初步可信點(diǎn)來提高精確度,具體內(nèi)容如下。
飛行過程中無人機(jī)相機(jī)送回圖像,通過角點(diǎn)檢測(cè)算法對(duì)比當(dāng)前幀與下一幀特征點(diǎn)的數(shù)量和位置,將特征點(diǎn)信息保存并傳遞。由于特征點(diǎn)符合高斯分布,噪聲也符合高斯分布,由Harris角點(diǎn)檢測(cè)法可得
(9)
(10)
其中:P(f(x))為光流的分布,可以求出特征點(diǎn)的X方向和Y方向的光流;M為像素的各個(gè)方向灰度平均值;σ為在各個(gè)方向上的光流偏差;GX和GY為圖像上像素點(diǎn)的灰度值;ω(X,Y)為圖像每個(gè)點(diǎn)的灰度值。由條件隨機(jī)場(chǎng)(Conditional Random Field,CRF)算法可知像素點(diǎn)的灰度值
C(x3,y3)=detM-K(Mt)2
(11)
式中:式(10)中像素矩陣特征值為γ1和γ2,Mt為特征值之和;在無人機(jī)懸停時(shí)取經(jīng)驗(yàn)值K=0.05。當(dāng)灰度值C(x3,y3)超過預(yù)設(shè)值時(shí),滿足角點(diǎn)的灰度定義,取為角點(diǎn)。
LK算法在于通過最小化誤差函數(shù)來計(jì)算位移向量(du,dv)。
對(duì)角點(diǎn)采用投影公式計(jì)算區(qū)域內(nèi)像素點(diǎn)的光流閾值
Δ=Vf/h
(12)
式中:V為無人機(jī)攝像頭的位移速度;f為無人機(jī)攝像頭的焦距;h為無人機(jī)機(jī)身高度。當(dāng)選擇的光流區(qū)域的閾值低于光流點(diǎn)時(shí),通過相似性函數(shù)進(jìn)行篩選,即
(13)
式中:P*為光流值;r(pi),g(pi),b(pi)分別為像素點(diǎn)的紅綠藍(lán)色彩強(qiáng)度。
采用特征點(diǎn)雙向匹配法對(duì)選取的特征點(diǎn)區(qū)域進(jìn)行追蹤,如圖2所示,通過LK金字塔最頂層得到前一幀對(duì)應(yīng)的特征點(diǎn),在獲得所有特征對(duì)應(yīng)后,使用雙向光流跟蹤方法去除錯(cuò)誤的特征點(diǎn)。
圖2 特征點(diǎn)雙向算法原理圖
圖中的實(shí)線表示光流跟蹤的過程,特征點(diǎn)5對(duì)應(yīng)于特征點(diǎn)1,特征點(diǎn)6對(duì)應(yīng)于特征點(diǎn)2。現(xiàn)在執(zhí)行反向跟蹤,圖中的虛線表示從特征點(diǎn)3到特征點(diǎn)1的反向跟蹤過程。如果特征點(diǎn)5和特征點(diǎn)3之間的距離d1小于0.6像素,特征點(diǎn)5和特征點(diǎn)1之間的對(duì)應(yīng)關(guān)系正確。相反,特征點(diǎn)5和特征點(diǎn)1之間的對(duì)應(yīng)關(guān)系無法確定可信度,再次考慮特征點(diǎn)1與另外隨機(jī)一個(gè)已經(jīng)確定為初步可信點(diǎn)的特征點(diǎn)2的距離,即特征點(diǎn)1與特征點(diǎn)2的距離d2,特征點(diǎn)5與特征點(diǎn)4之間的距離d3,特征點(diǎn)3與特征點(diǎn)6之間的距離d4,得到可信點(diǎn)匹配過濾函數(shù)
(14)
能夠獲得初步可信點(diǎn)和錯(cuò)誤點(diǎn),將其送入下一步。反向跟蹤可以提高光流跟蹤的精度,并且得到所需要的初步可信點(diǎn)特征集合。
采用自適應(yīng)插入匹配幀法,對(duì)有較多匹配誤差的幀數(shù)使用自適應(yīng)預(yù)測(cè)區(qū)域替換錯(cuò)誤區(qū)域,對(duì)當(dāng)前幀預(yù)測(cè)可信點(diǎn)較多時(shí)將其設(shè)為跟蹤幀。選擇對(duì)應(yīng)的匹配誤差區(qū)域,利用當(dāng)前幀與上一個(gè)未插入補(bǔ)充幀的圖像,將新得到的預(yù)測(cè)特征點(diǎn)與當(dāng)前幀特征點(diǎn)進(jìn)行替代,得到預(yù)測(cè)點(diǎn),將預(yù)測(cè)點(diǎn)重新進(jìn)行匹配,處于閾值內(nèi)則將預(yù)測(cè)點(diǎn)設(shè)置為預(yù)測(cè)可信點(diǎn),否則作為錯(cuò)誤點(diǎn)舍棄。
存在較多匹配錯(cuò)誤的特征點(diǎn),通常因?yàn)闊o人機(jī)處于鏡頭被遮擋或者光線突變,擬采用自主插入方案進(jìn)行如下處理。
1) 將光流追蹤的難度通過數(shù)值量化,有
(15)
式中,ξFI是第I幀中的特征數(shù),從而得到光流的追蹤難度會(huì)隨著光流的進(jìn)程而增大。
2) 設(shè)置算法初始幀,將圖像第一幀和上個(gè)循環(huán)結(jié)束后的初幀設(shè)置為首幀并對(duì)特征點(diǎn)進(jìn)行選取。
3) 將跟蹤誤差和跟蹤錯(cuò)誤點(diǎn)在閾值范圍內(nèi)的幀設(shè)置為跟蹤幀,接下來對(duì)跟蹤幀進(jìn)行判斷,將幀數(shù)n=2設(shè)置為匹配幀并執(zhí)行特征檢測(cè),接下來計(jì)算光流跟蹤難度以及根據(jù)前后雙向光流將接下來的幀設(shè)置為跟蹤幀并執(zhí)行特征跟蹤,算式為
ni=N(1-η)
(16)
式中:N表示不添加新特征點(diǎn)的平均連續(xù)跟蹤幀數(shù);ni為自適應(yīng)跟蹤時(shí)間。
4) 重復(fù)步驟3),直到結(jié)束。根據(jù)測(cè)試,使用改進(jìn)LK光流跟蹤無人機(jī)返回圖像中的特征點(diǎn),在沒有人為干預(yù)的情況下,平均可以穩(wěn)定跟蹤15幀。之后由于特征點(diǎn)太少或誤差較大,跟蹤無法保證質(zhì)量。因此,在跟蹤時(shí),N取15左右的數(shù)字,在更為復(fù)雜的環(huán)境中可以適當(dāng)減小N的設(shè)置。得到自適應(yīng)插入算法如圖3所示。
圖3 自適應(yīng)插入算法原理圖
當(dāng)無人機(jī)得到相當(dāng)?shù)奶卣鼽c(diǎn)后, 由于采用插入幀的方法可以保證特征點(diǎn)的數(shù)量足夠,因此可以使用通用的3D-2D方法計(jì)算運(yùn)動(dòng),得到兩幀n個(gè)特征點(diǎn)對(duì)應(yīng)。場(chǎng)景點(diǎn)和特征點(diǎn)之間的關(guān)系表示為
(17)
式中:si為場(chǎng)景點(diǎn)的深度;(ui,vi,zi)為特征點(diǎn);(xi,yi,zi)為場(chǎng)景點(diǎn);Kc為相機(jī)內(nèi)部參數(shù);Rc,Tc為相機(jī)外部參數(shù)。最小化重投影誤差來估計(jì)Rc和Tc,即
(18)
式中:ui為特征點(diǎn);pi為場(chǎng)景點(diǎn);ρ為Huber函數(shù);∑為協(xié)方差矩陣求和。
將有誤差區(qū)域的特征點(diǎn)采用自適應(yīng)預(yù)測(cè)跟蹤進(jìn)行替換,輸出最終得到的預(yù)測(cè)可信點(diǎn)與初步可信點(diǎn)。
將初步可信點(diǎn)和預(yù)測(cè)可信點(diǎn)采用反向預(yù)測(cè)光流追蹤和KNN-RANSAC進(jìn)行匹配,步驟如下。
1) 將返回的點(diǎn)載入近似相鄰庫(kù)(Fast Library for Approximate Nearest Neighbors,F(xiàn)LANN)匹配器。
2) 利用K最鄰近(K-Nearest Neighbor,KNN) 算法對(duì)可信點(diǎn)所對(duì)應(yīng)的描述集合進(jìn)行篩除操作。
3) 利用特征向量之間的歐氏距離篩選好的描述集及對(duì)應(yīng)點(diǎn)集。
4) 通過隨機(jī)抽樣一致(RANSAC)算法消除點(diǎn)集中的誤匹配點(diǎn)獲得最終匹配對(duì)集,若誤差來自預(yù)測(cè)幀則保留,否則刪除。從而得到滿足無人機(jī)導(dǎo)航和追蹤要求的準(zhǔn)確特征點(diǎn),使光流值更加準(zhǔn)確,為光流解算無人機(jī)機(jī)體速度和姿態(tài)消除了錯(cuò)誤的圖像信息。
本文對(duì)改進(jìn)ORB-LK(ORB結(jié)合LK光流算法)特征光流提取效果以及在實(shí)際無人機(jī)室內(nèi)導(dǎo)航應(yīng)用中的算法性能(阿木實(shí)驗(yàn)室P200無人機(jī)上)進(jìn)行驗(yàn)證與理論分析。對(duì)比現(xiàn)有的ORB-SLAM(ORB結(jié)合SLAM算法)和ORB-LK算法,影響性能的主要參數(shù)是每幀中特征點(diǎn)數(shù)量和特征點(diǎn)匹配誤差及匹配時(shí)間。
為提高無人機(jī)LK算法中光流信息的準(zhǔn)確度,根據(jù)金字塔LK光流跟蹤特性,使用本文方式對(duì) ORB特征進(jìn)行了誤匹配篩選改進(jìn)。3種算法提取的特征點(diǎn)的圖像采用了不同環(huán)境,光流金字塔的層數(shù)均為7,同時(shí)采用絕對(duì)軌跡誤差的均方根誤差來評(píng)估算法精度,利用平均處理時(shí)間來評(píng)估算法的響應(yīng)速度。
特征點(diǎn)提取實(shí)驗(yàn)中分別采用Harris角點(diǎn)檢測(cè)算法、ORB光流算法和本文改進(jìn)的雙向預(yù)測(cè)跟蹤算法在單純環(huán)境、復(fù)雜環(huán)境、有遮擋環(huán)境、強(qiáng)光環(huán)境和弱光環(huán)境5個(gè)不同場(chǎng)景下進(jìn)行光流特征點(diǎn)提取分析,結(jié)果如圖4和表1所示。圖4中自上而下分別為Harris,ORB和本文算法的提取結(jié)果。特征點(diǎn)的數(shù)量關(guān)聯(lián)算法的可靠程度,匹配時(shí)間關(guān)聯(lián)算法的運(yùn)行速度,誤匹配率關(guān)聯(lián)算法的精度。
圖4 特征點(diǎn)提取對(duì)比圖
表1 不同環(huán)境中算法對(duì)比Table 1 Comparison of algorithms in different environments
對(duì)圖4和表1分析可知,特征點(diǎn)的數(shù)量可以反映算法的精確程度,可以檢測(cè)到的有效特征點(diǎn)數(shù)量多則無人機(jī)飛行的準(zhǔn)確性越高,匹配時(shí)間可以反映算法的復(fù)雜度,匹配時(shí)間過長(zhǎng)會(huì)影響無人機(jī)正常飛行和反應(yīng)時(shí)間,誤匹配率表征算法的準(zhǔn)確性,低誤匹配率可以提高無人機(jī)飛行的可靠性。圖4中Harris角點(diǎn)檢測(cè)算法能夠檢測(cè)的特征點(diǎn)比較少,都集中在光流值較大的區(qū)域,對(duì)于復(fù)雜區(qū)域的特征點(diǎn)提取誤差有所升高,ORB算法相比Harris算法在特征點(diǎn)的提取數(shù)量方面有增加,但是隨著數(shù)量增加錯(cuò)誤率也相對(duì)較高,在有遮擋的環(huán)境中錯(cuò)誤率更高,更容易將遮擋物的邊角視為特征點(diǎn),本文改進(jìn)的算法在ORB算法的基礎(chǔ)上進(jìn)行預(yù)測(cè)替代,并由雙向檢測(cè)算法檢查特征點(diǎn)是否滿足要求,相對(duì)ORB算法過濾了部分特征點(diǎn),增加了少量預(yù)測(cè)特征點(diǎn),總體特征點(diǎn)數(shù)目有所下降,但是具有更好的準(zhǔn)確性以及面對(duì)復(fù)雜環(huán)境的可靠性。本文算法由于增加了雙向跟蹤,增大了計(jì)算的復(fù)雜度,提高了算法執(zhí)行難度,但由于采用了自適應(yīng)插入法,由原本的相鄰幀的特征點(diǎn)關(guān)系計(jì)算變?yōu)樘卣鼽c(diǎn)預(yù)測(cè)計(jì)算,可以大量減少誤差較大的幀的運(yùn)行時(shí)間,在運(yùn)行時(shí)間略微減少的基礎(chǔ)上大幅提高了算法的精度。
本文搭建的實(shí)驗(yàn)平臺(tái)包括電器執(zhí)行機(jī)構(gòu)、飛控計(jì)算機(jī)MCU、感知和任務(wù)管理計(jì)算機(jī)CPU、傳感器以及環(huán)境配置、地面控制系統(tǒng)和仿真平臺(tái)Gazebo等。如圖5(a)所示,不同的模塊負(fù)責(zé)收集無人機(jī)的位姿速度和高度等信息,送入TX2板卡中進(jìn)行集成。
無人機(jī)仿真使用Gazebo進(jìn)行仿真,如圖5(b)所示,綠線表示搭載改進(jìn)算法無人機(jī)的飛行軌跡,紅線表示搭載原始光流算法無人機(jī)的飛行軌跡,改進(jìn)算法仿真結(jié)果在模擬環(huán)境下與原始算法效果誤差差距減小,均可滿足理論跟蹤要求。考慮無人機(jī)在真實(shí)情況下環(huán)境更為復(fù)雜多變,在仿真結(jié)果滿足的情況下采用真機(jī)進(jìn)行實(shí)驗(yàn)更能反映算法的實(shí)用性。
為驗(yàn)證搭載本文算法的無人機(jī)的性能,分別采用Harris算法、ORB算法和本文改進(jìn)算法進(jìn)行綜合環(huán)境下無人機(jī)定位實(shí)驗(yàn)。多次試驗(yàn)平均飛行時(shí)間190 s,無人機(jī)采取熱啟動(dòng),時(shí)間平均5.7 s,從第20 s開始進(jìn)行定高飛行,第100 s左右人工遮擋鏡頭3 s作為遮擋環(huán)境,第190 s左右進(jìn)行自動(dòng)降落。圖5(c)和圖5(d)是無人機(jī)定位的X,Y方向的偏移量。在定位時(shí)無人機(jī)在X,Y方向偏移的穩(wěn)定性,可以由線條的波動(dòng)程度反映,波動(dòng)程度越小抗干擾能力越強(qiáng)。從圖5(c)和圖5(d)得出,改進(jìn)算法在常規(guī)環(huán)境和添加遮擋時(shí),在X,Y方向的偏移量更小,擁有更好的飛行穩(wěn)定性。實(shí)驗(yàn)設(shè)定的飛行高度為160 cm,高度曲線在預(yù)設(shè)高度的波動(dòng)越小表征算法擁有更好的無人機(jī)定高能力。圖5(e)是無人機(jī)跟蹤高度變化圖,可以看出,無人機(jī)在前90 s起飛至穩(wěn)定階段,穩(wěn)定性均強(qiáng)于其他算法,穩(wěn)定時(shí),在預(yù)設(shè)高度160 cm附近偏移量最小,在第100 s施加遮擋后高度波動(dòng)增大的幅度最小且穩(wěn)定高度的速度最快,依然具備良好的定高能力,因此更適用于常規(guī)環(huán)境和存在遮擋物環(huán)境的定高。
圖5 無人機(jī)實(shí)驗(yàn)平臺(tái)及真機(jī)實(shí)驗(yàn)結(jié)果圖
通過圖5(f)實(shí)驗(yàn)結(jié)果比較圖5(c)和圖5(d),分析得到,當(dāng)無人機(jī)起飛后,Harris算法和ORB算法定位不理想,高度偏移量均接近10 cm,由于特征點(diǎn)數(shù)量較少,高度和角度檢測(cè)數(shù)據(jù)不夠,導(dǎo)致高度上下限差距大,且圖5(f)顯示其他算法定位方向曲線波動(dòng)很大,結(jié)果偏差較大。ORB算法由于其大量的特征點(diǎn),當(dāng)無人機(jī)出現(xiàn)偏差時(shí)短時(shí)間內(nèi)曲線波動(dòng)變化不會(huì)很大,但是準(zhǔn)確率較低,當(dāng)面對(duì)人工遮擋時(shí)誤差更加劇烈,最終定位誤差依然較大。本文算法相較于其他算法,無人機(jī)在簡(jiǎn)單環(huán)境下飛行時(shí)能夠更穩(wěn)定地維持飛行高度,在復(fù)雜環(huán)境下能夠極大地減小誤差,使得無人機(jī)飛行保證算法運(yùn)行時(shí)間不增加,并提高無人機(jī)定位導(dǎo)航性能。
本文針對(duì)綜合環(huán)境中無人機(jī)GPS定位誤差較大,傳統(tǒng)光流法定位的準(zhǔn)確度不高,面對(duì)復(fù)雜環(huán)境的抗干擾較差的問題,在ORB檢測(cè)算法和光流金字塔的基礎(chǔ)上,采用前后雙向特征值法進(jìn)行特征點(diǎn)篩選,對(duì)綜合環(huán)境中的干擾采取自適應(yīng)預(yù)測(cè)幀插入,提高算法可靠性。實(shí)驗(yàn)結(jié)果驗(yàn)證了,在不變更其他硬件的條件下,算法運(yùn)行時(shí)間基本不變,定位誤差僅有原始算法的10%,可靠性和精確性良好,適用于綜合環(huán)境下無人機(jī)導(dǎo)航定高,具備良好的實(shí)用性和參考價(jià)值。下一步工作將著力降低算法復(fù)雜度,進(jìn)一步提高算法的快速性。