李 凱,吳文啟,張 鷺
(國防科學技術大學機電工程與自動化學院,長沙410073)
AUV水下自主導航是目前世界范圍內的研究熱點[1],INS/DVL(慣性/Doppler 測速儀)是 AUV常用的水下組合導航方式。當AUV上浮到水面時,還可以通過衛星導航校正導航誤差。DVL是AUV組合導航中的重要組成部分,能夠為AUV提供較為精確的載體相對水底或水層的速度信息[2-3]。但是,DVL在實際工作中會因為復雜的水底環境和AUV機動(上浮、下潛、轉向)等各種原因出現較大的測速偏差,即DVL粗差。一些數值較大的DVL粗差,可以直接根據AUV運動學約束或慣性導航信息進行檢測和剔除。但是當采用較低成本的慣性導航系統(如航向姿態參考系統)時,慣性導航提供的速度信息本身精度不高,誤差增長快,一些符合AUV運動學約束、與正常速度值接近、持續時間長的DVL粗差往往難以檢測和剔除。
側掃聲納能夠掃描水底的地貌特征,是AUV的主要水下探測設備。目前,關于側掃聲納在水下組合導航中的研究主要集中在圖像匹配定位范圍內,匹配定位精度在幾十米之內[4]。但是,對于側掃聲納圖像的成像原理與載體速度之間聯系的研究還沒有深入開展。
本文提出一種基于側掃聲納圖像的AUV側向速度估計方法。該方法基于SIFT特征匹配算法從側掃聲納圖像中的相鄰數據幀找到相關特征點,并根據相關特征點的像素差值換算出實際的載體側向速度。將求得的側向速度應用于檢測并剔除DVL速度信息中的粗差數據,利用高精度的INS/GPS組合導航數據對結果的準確性進行了驗證。
在對實際AUV水下實驗的導航數據進行分析時,會發現DVL的測速信息相較于INS/GPS組合導航的速度信息存在一些比較明顯的粗差,圖1所示曲線數據來源于實際湖測試驗。AUV在水面航行,誤差曲線是以INS/GPS組合導航得到的AUV前向、側向速度值為基準,計算DVL各個方向速度的誤差。那些偏差較大的粗差數據,根據AUV運動學約束或慣性導航信息便可判定。如圖1(a)所示的DVL前向、側向速度誤差曲線中,出現了一處達到1m/s的呈突跳變化的誤差值。而如圖1(b)所示的DVL前向、側向速度誤差曲線中,可以看到誤差變化相對平緩,幅值相對小,往往較難檢測和剔除。
對比圖1(b)曲線可以發現,DVL前向速度誤差在側向速度誤差較大(大于0.2m/s)時,其前向速度誤差值也明顯大于其他時刻。也就是說,DVL側向速度的異常值對應著的前向速度也會出現異常。依據DVL速度之間的相關性,只需找到一個方向速度的異常值即可。
為了解決水下組合導航中DVL速度粗差的檢測剔除問題,本文創新性引入了基于側掃聲納圖像的AUV側向速度估計方法,該方法估計出的側向速度可以有效檢測和剔除DVL側向速度粗差。
圖2為由側掃聲納數據繪制而成的側掃聲納圖像,從圖像中可以清晰地觀測到水底線、水面線以及水底地貌的特征信息。側掃聲納通過聲波周期性地向水底掃描,并依照回波的強弱和時間來設定像素點的明暗。每個周期內的回波構成一幀圖像,這樣將每一幀數據拼接在一起就能構成完整的側掃聲納圖像[5]。
在側掃聲納圖像的縱向信息中,由于聲納實時繪制的圖像只是數據幀簡單的堆疊,圖像反映的物體輪廓形狀和真實情況相差較大,縱向還存在著聲線斜距變形和比例尺不等變形等畸變現象[6]。因此,側掃聲納圖像在縱向上難以提供精確的位移和速度信息。
側掃聲納圖像的橫向數據屬于同一數據幀,根據側掃聲納圖像成像原理,可計算出每一幀圖像相對上一幀圖像對應特征點像素的橫向平移量,結合特征像素平移量與AUV實際橫向位移的比例尺度關系以及聲納側掃周期可推算出AUV側向速度。利用這一特點,便可以在AUV的側向速度與側掃聲納圖像的橫向信息之間建立聯系。
提取側向速度的關鍵,在于如何將圖像中的像素點距離信息換算為實際的水平距離信息。側掃聲納的掃描原理如圖3所示(只畫出半邊示意圖,右邊與左邊原理一致),換能器在一定周期內按照固定的夾角發射一窄束聲波脈沖,根據反射時間確定AUV中心到入射點之間的斜距。像素點間的斜距是等差分布的,每條斜距都比前一條斜距多出Range/N,即:
其中,dn為第n個像素點到AUV中心的斜距,Range為最大斜距,N為總像素數。
這樣,求取任意一個像素到AUV中心點的水平距離的關鍵在于求取當前數據幀AUV距離水底的深度h。如圖2所示,水底線特征十分明顯,利用SIFT特征匹配算法可以比較容易地提取出水底線,從而得到其在每一數據幀之中的位置。在一個數據幀中,設水底線對應的像素位置在n0處,此時AUV距離水底的高度h為:
假設水底環境比較平緩,高度起伏不大,近似認為水底是一個平面。這樣根據圖3所示,像素點n對應的水底特征點到AUV正下方的中心點的橫向水平距離s滿足:
根據式(1)~式(3),可以得到:
這樣,特征像素點n到水底線像素點n0的像素位置差異與實際水下特征點到AUV正下方的中心點的橫向水平距離s之間便建立了聯系。當水底起伏較大時,雖然會影響s的準確性,但對s變化的測量影響并不大,不會造成大的AUV速度估計誤差。
提取側向速度的關鍵是找到相鄰兩幀數據之間的相關點,相關點不一定是實際中的同一個點,可以是同一特征物體的邊緣線上的相鄰點。由于AUV不斷地前進,這樣相鄰幀之間有可能掃描不到相同的點。但是,相鄰的數據幀會掃描到相同的特征標志物邊緣線。由于對聲波的反射強度與周圍環境有差異,這些特征標志物在聲納圖像中與周圍環境之間存在明顯的邊緣線,邊緣線兩側像素的亮度呈現顯著的差異。由此,可以判斷每一幀數據屬于邊緣線的特征點。
SIFT特征是圖像的局部特征,其對旋轉、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩定性。相對于其他算法,它的實時性和獨特性都較好。所以,選取SIFT特征匹配算法作為查找側掃聲納圖像特征點的工具。
SIFT算法可以在不同的尺度空間上查找特征點,該算法通過計算一幅圖中的特征點及其有關位置和方向得到特征并進行圖像特征點匹配。SIFT算法可以檢測到側掃聲納圖像中的線特征,其中包括水底線和水底標志物的邊緣線。利用SIFT算法提取出的水底線將用來求取AUV距離水底高度h,而標志物的邊緣線將被用來匹配相關特征點。
在實時運行時,可以將當前掃描得到的數據幀和之前的50個數據幀構成固定寬度的滑動窗口來利用SIFT特征匹配算法進行特征點提取。
(1)SIFT 算法核心
一個二維圖像的尺度空間L(x,y,σ)定義為一個變化尺度的Gaussian函數,G(x,y,σ)與原圖像素信息I(x,y)的卷積。
其中,G(x,y,σ)是尺度可變Gaussian函數,(x,y)是尺度空間坐標。σ大小決定圖像的平滑程度,大尺度對應圖像的概貌特征,小尺度對應圖像的細節特征。為了兼顧圖像概貌和細節特征,σ的值一般取為0.6。為了有效地在尺度空間檢測到穩定的關鍵點,提出了Gaussian差分尺度空間D(x,y,σ),它由不同尺度的Gaussian差分與原圖像卷積生成。
其中,k為常值系數,一般取值為 21/3或21/4。
為了尋找尺度空間的極值點,每一個采樣點要和它所有的相鄰點比較,即中間的檢測點要和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,看其是否比它的圖像域和尺度域的相鄰點大或者小,以確保在尺度空間和二維圖像空間都檢測到極值點。檢測到的極值點就被認為是圖像在該尺度下的一個特征點[7]。
(2)除去干擾特征點的方法
這一步本質上要去掉那些不屬于線特征,其位置既不在水底線也不在標志物的邊緣線上的干擾特征點。這些干擾特征點為局部曲率非常不對稱的像素,其空間尺度函數Taylor展開式如下:
其中,X=(x,y,σ)T,對式(8)求導并令其為0,得到精確的位置。
在已經檢測到的特征點中,要去掉低對比度的特征點和不穩定的邊緣響應點。去除低對比度的點:把式(9)代入式(8),即在極值點處D(X)取值,得:
經過反復試驗,若D)≥0.03,該特征點就保留下來,否則丟棄。
從圖4可以看出,檢測到的特征點基本上分布在較為明顯的分界線上。
(3)水底線提取方法
從圖2可以看出,兩條水底線的中間部分為沒有聲波反射的黑色區域。像素的亮度值很小,接近于0。其中只有一些水里的浮游物體或水流波紋會產生一些回波,使得黑色區域里出現一些亮度較高的特征點。
去干擾特征點的方法可以有效地檢測掉這些零散的點特征向量,這樣兩條水底線特征向量之間就不存在多余的干擾特征點。對于每一數據幀只需提取距離中心線最近的兩個特征點,就能夠提取出兩條對稱的水底線。
如圖5所示,圖像下半部分提取的線條與上面實際水底線基本重合。提取水底線采取距離中心線最近的特征點的方法,這樣少許誤差點集中在水底線之間,而水底線兩側的區域沒有誤差點存在。
(4)相關特征點匹配方法
SIFT算法為每個特征點計算一個方向,利用關鍵點鄰域像素的梯度方向分布特性為每個關鍵點指定方向參數,相互關聯的特征點應具有相同的方向參數。
m(x,y)與θ(x,y)為(x,y)處梯度的模值和方向公式。相鄰數據幀的相關特征點具有橫坐標相差很小,模值與方向信息基本一致的特點。這樣,依據以上準則便可在每對相鄰數據幀之間找到多組相關特征點。
如果一對相鄰數據幀匹配到的相關特征點的像素值分別為n1與n2,其對應的水底線分別為n01與n02,則表觀的載體側向速度Vy為:
其中,Rpetition為每幀數據的掃描周期,由側掃聲納數據文件直接給出。所求得的表觀地載體側向速度Vy包括載體實際側向速度和特征標志物自身寬度變化速率:
每相鄰兩幀數據之間都存在多個匹配的相關特征點。其中,無論是大小還是方向都是不隨標志物的變化而變化的,而是隨著特征點不同而不斷變化的。因為載體在一個幾十毫秒的周期內所掃描到的特征標志物的寬度變化是非常小的,所以一般來說對于曲率較小的標志物?。 為了提高載體側向速度在表觀的載體速度V中所占比重,將所求得的Vy求平均值:
其中,Num為每相鄰數據幀中相關特征點的個數。為了避免一些曲率較大的特征標志物造成的影響,將每一組表觀的載體速度中剔除一個最大值和一個最小值。對于所有表觀的載體速度,其中的正負不一,且其絕對值都比較小。求平均值之后的會因為正負值的抵消作用而趨近于0,每一組的相關特征點的數量越多,的平均值就越趨近于0。這樣,只要樣本數量足夠多就能夠保證≈。
如圖6所示,該框圖為側掃聲納圖像提取載體側向速度并應用與檢測DVL速度粗差的詳細方法流程圖。
設匹配到的相關特征點n1、n2的像素誤差為δn,這樣提取的側向速度的誤差?為:
其中,Range一般為125m,Rpetition為170ms,N=1000,n0/n1的數值選取范圍為1/3~3/4。 這樣,求得的表觀載體側向速度的誤差 ?(n1,n2)≈K(δn1-δn2)。 其中,K≈1(m/s)/像素。 SIFT 特征匹配算法屬于內插值亞像素級圖像配準算法范疇,文獻[8]和文獻[9]提到該類型算法配準精度可以達到0.13個像素,所以速度精度不低于0.2m/s。
用于試驗驗證的數據來源于湖北某水域的AUV水下測試數據,水域水深約為100m。該試驗采用的是872型側掃聲納,所生成的聲納圖像清晰,具有很高的參考價值。由于DVL的數據異常普遍發生在速度較快、航向角變化較大的時刻,因此單獨提取出側向速度較大的一段數據進行比對,這樣得出的結果更具有說服力[10-12]。
如圖7所示,3條速度曲線均取自相同時刻,此時載體側向速度在逐漸衰減。由圖7(a)可以看到,側掃聲納圖像提取出的載體側向速度曲線存在較為明顯的噪聲,幅度大致在±0.1m/s之間。但是本文的研究目標在于檢測和剔除DVL的數據粗差,這種幅值不大的噪聲并沒有影響。在圖7(b)對應的DVL側向速度中,可以發現其中有幾處數值相較于圖7(a)和圖 7(c)存在較為明顯的偏差,下面通過3個側向速度之間的誤差曲線進行驗證。
如圖8(a)所示,側掃聲納提取出的載體側向速度誤差在0.2m/s以內,符合理論誤差的推算;圖8(b)所示的曲線顯示側掃聲納圖像提取出的側向速度與DVL側向速度的差值曲線存在幾處數值較大的點。將這些差值大于0.2m/s的DVL數據作為需要檢測的粗差,檢測粗差后的DVL數據誤差曲線如圖9和圖10所示。從圖像中可以看,檢測粗差后的DVL數據誤差與原始誤差基本保持一致,但是明顯檢測出了大于0.2m/s的誤差。也就是說采用這種DVL粗差檢測的方法,能夠有效地將DVL側向速度數據中大于0.2m/s的粗差檢測出來。
從圖9、圖10可以看到,剔除與側向速度相對應的粗差數據后的DVL前向速度誤差有了明顯的減小,雖然沒有達到確定的指標,但是較大偏差都明顯減少。這說明,該檢測方法對于DVL前向速度誤差改善有明顯效果。
驗證了3個側掃聲納數據文件共15km水底數據,總體效果良好,比較穩定。DVL側向速度數據誤差能夠檢測出0.2m/s粗差的水平,DVL前向速度偏差能得到明顯的改善。
本文提出的基于側掃聲納圖像估計得到的載體側向速度的算法,經過實際實驗數據驗證具有較高的精度。它可以有效地檢測和剔除Doppler測速儀的粗差,從而改善組合導航性能。但也存在一些需要進一步解決的問題,如基于側掃聲納圖像估計提取出的側向速度信息仍存在較為明顯的噪聲等,今后將繼續在減小速度噪聲方面開展研究。