褚式新 茅云生 董早鵬 楊 鑫 黃 鋮
(武漢理工大學交通學院1) 武漢 430063) (武昌船舶重工集團有限公司2) 武漢 430060)
針對無人艇(unmanned surface vessel,USV)的應用和研究日益深入,USV也更加智能化,其中對USV的操縱性精確預報是提高USV智能化必要的步驟,而對USV操縱性的預報的精確性取決于獲取預報模型的參數的準確性.
目前通過系統辨識獲取模型參數的方法已廣泛被學者們認可,而卡爾曼濾波算法是辨識中一種常用算法,且在模型參數獲取上已取得了眾多成果.霍聰等[1]利用設計拓展Kalman濾波的相關算法辨識了船舶自由橫搖模型的參數,辨識結果和仿真實驗結果有很好的匹配性;童余德等[2]在Matlab平臺上設計了卡爾曼濾波的辨識算法,并與最小二乘法進行對比,證實了通過卡爾曼濾波算法辨識結果的優越性;謝朔等[3]進一步發展卡爾曼濾波算法,提出采用多新息并引入遺忘因子的卡爾曼濾波算法辨識了船舶操縱響應模型,并用實驗證實了算法的優越性;Julier等[4]進一步發展卡爾曼濾波算法,提出采用無跡變換的方式消除EKF(extended kalman filter,EKF)算法線性化帶來的誤差,提出采用無跡卡爾曼濾波(unscented Kalman filter,UKF)算法改進常用的EKF算法用于參數辨識;文獻[5-6]進一步應用UKF算法,實現了線性模型和非線性模型的參數識別,并證明了UKF算法在辨識中的泛化性;文獻[7]綜合對比了EKF算法和UKF算法在辨識同一模型中的差異,并在仿真實驗中證明,UKF算法無論在辨識過程中的收斂性和辨識結果的精確性上來說,都優于EKF算法.但是目前在USV操縱模型的辨識上,研究UKF算法的文獻并不多,隨著對USV操縱性越來越精確的要求,利用EKF算法辨識獲取的參數將不再滿足精度需求,應用UKF算法辨識USV操縱模型參數將有利于提升USV操縱性預報的精度.
USV在水面航行時,為反映USV的操縱響應過程,對USV運動進行建模,通過簡化水動力導數,將操縱響應模型簡化為[8-9]
(1)
式中:r為角速度;δ為舵角;T1,T2,T3為時間常數,表示應舵性和航向穩定性;K為舵角增益;δr為壓舵角.由于在推導式(1)過程中某些高階非線性項在低速小擾動條件下被舍去了,但是隨著USV快速性的提升,非線性項值逐漸增大,為保證操縱響應模型的適用性,式(1)必須加上非線性項,以滿足USV在各種情況下的操縱響應預報,綜上,USV操縱響應模型為
(2)
式中:α為非線性項系數.
UKF算法是卡爾曼濾波算法的另一種拓展算法,它是通過估算每時刻狀態矩陣的方式進行參數辨識,通過給定一個初始狀態量,然后將均值和協方差進行無跡變換,得到下一時刻狀態量,當狀態矩陣中參數量穩定時,即為參數的辨識值.UKF算法的步驟可以通過下式描述:
1) 設定初始狀態
(3)
(4)
2) 計算樣本點
(5)
3) 時間狀態更新

(6)
(7)
(8)

(9)
(10)
4) 測量狀態更新
(11)
(12)
K=PxyPyy-1
(13)
(14)
(15)

(16)
(17)
(i=1,2,…,2L)
(18)
在Matlab平臺上開展20°Z形操縱運動仿真實驗,采用文獻[10]中的USV模型參數數據,見表1.

表1 USV二階非線性響應模型參數
基于工程上常用的四階龍格-庫塔(Runge-Kutta)法進行數值仿真,并將仿真結果繪制見圖1.

ψ-向角;δ-舵角;γ-角速度圖1 20°Z形操縱實驗仿真數據
為滿足辨識需求,需要將模型離散化,使用前向差分法處理式(2),處理過程為
(19)
(20)
(21)
(22)
式中:下標t為時刻;Δt為時間間隔,設yt=ψt+1-ψt.將式(19)~(21)代入式(2)中,得到
(23)
進一步可以表示為
Zt=Htθ
(24)
式中:Zt為輸出矩陣;Ht為輸入矩陣;θ為參數矩陣,具體表達式為
Zt=[yt+2-2yt+1+yt]
(25)
(26)
(27)
狀態矩陣由輸出量與待辨識參數組成,設
(28)
式中:x1為輸入值;x2-x7為參數矩陣中的6個參數.
初始值設定為

(29)
(30)
設狀態轉移矩陣為
Ft=
(31)
觀測矩陣為

(32)
噪聲調整矩陣為

(33)
噪聲R,Q設定為數值較小的正態分布隨機數矩陣.
[1]The American people will have to pay higher prices for the same consumer goods.In a sense,their earnings will be hollowed out.If a trade war breaks out,the United States will hemorrhage jobs.(2018.4.9)
各參數辨識結果隨UKF算法迭代次數的變化見圖2.

圖2 x2~x7辨識值
由圖2可知,UKF是一種有效的辨識算法,在辨識過程中,各個參數均在迭代50次之后收斂,且收斂效果很好.辨識結果數據見表2.

表2 各參數在UKF算法下的收斂值
通過參數矩陣中系數的變換公式可得UKF最后的辨識結果見表3.

表3 USV二階非線性響應模型參數辨識值
由表3可知,基于UKF算法辨識USV二階非線性響應模型參數結果均比較接近原始值,辨識誤差較小,證明UKF算法具有一定的泛化性,能有效的辨識該模型參數,且具有一定精度.
UKF算法在辨識USV二階非線性操縱響應模型參數時擁有較高精度,辨識結果能有效的預報USV操縱性.因USV在海上航行時面臨復雜的環境,有時需要做復雜的操縱運動,因此,為更好的驗證上述結論,在Matlab平臺上開展10°,20°,30°正弦和Z形兩種操縱仿真實驗,比較基于辨識結果與原始值之間操縱實驗中艏向角的差異,以驗證UKF算法在預報USV各種操縱運動中的艏向角變化,見圖3.

圖3 實驗艏向角對比圖
UKF是一種泛化能力較強的算法,能應用于各種模型的參數辨識中,在辨識USV二階非線性操縱響應模型參數時,其辨識結果與真實值較為接近,在預報USV的艏向角時與原始艏向角變化較為擬合,綜上,基于UKF算法對USV二階非線性響應模型的辨識結果較為可靠,能有效的預報USV的操縱性.
1) UKF算法是一種泛化能力較強的算法,針對不同模型的辨識,就能取得較好結果,且在辨識過程中,迭代次數較少,收斂性好.
2) UKF是一種精度較高的算法,基于其辨識結果所開展的操縱性中艏向角的變化與基于原始數據USV的操縱性實驗中艏向角的變化較為擬合,能有效的預報USV的操縱性.
3) 在實驗證明階段,發現提高實驗的操縱角度也能微小的提高USV的預報精度;即在UKF辨識結果基礎上,提高操縱實驗最大角度能使艏向角變化能更切合實際操縱艏向角的變化.