梁少軍,張世榮,鄭幸,林冬生
(1.陸軍工程大學 軍械士官學校,湖北 武漢 430075; 2.武漢大學 電氣與自動化學院,湖北 武漢 430072)
目前,固定翼無人機(UAV)已在全球得到廣泛應用,列裝種類和數量越來越多。UAV執行任務時面臨著時間緊、要求高、運行環境復雜等問題。UAV本體和外在因素決定了其可靠性,UAV一旦發生故障而墜機,會造成極大的經濟損失和難以估量的軍事、政治影響,故提高UAV的可靠性一直是生產廠家和用戶的重點努力方向之一。UAV廠家一般配套了各子系統的自檢及報警功能模塊,但此類模塊只能對UAV裝備的健康狀態作定性判斷,無法準確定位故障源,更不能發現UAV的非器質性隱性故障。針對UAV的可靠性問題,國內外研究者們開展了一系列研究,并取得了一些成果[1-5]。文獻[1-5]表明,在UAV故障診斷研究中,大多采用基于模型或基于多元數據統計的診斷方法,此類方法在穩態或準穩態過程中可獲得較好效果,但對變工況的適應能力較差。UAV執行任務全流程包含起飛、巡航、遂行任務、返航、回收等階段,屬于典型的多工況過程,若將UAV的任務全程簡單處理為一個工況,則單一模型將無法應對UAV的多工況特征,必然會導致故障漏報或誤報。由此可見,UAV多工況對故障診斷影響較大,故UAV的多工況分類及工況匹配是故障診斷取得成功的必然條件。
UAV工況分類本質上是數據分組問題,解決該類問題的常用方法是聚類分析。聚類可利用數據中描述對象及其關系的信息,將數據分成不同的簇[6],是數據挖掘的常用手段。聚類算法有多種,且可以分為不同種類。其中,帶噪聲的密度聚類(DBSCAN)算法是一種具有噪聲處理能力的劃分式、互斥式、部分聚類算法。該算法通過對比局部數據的密度,尋找被低密度區域分離的高密度區域,以隔離高密度區域和低密度區域,最后將相近的高密度點連成一片,生成各種簇[7]。該算法可以在噪音數據中發現各種形狀和大小不同的簇,擅長處理非球狀分布數據,對噪聲有較強的魯棒性,且能夠自動確定簇數。可見,DBSCAN算法適合UAV的運行數據,本文將用它來對UAV的全任務過程進行工況分析。需要說明的是,DBSCAN算法中采用歐式距離來定義密度的方法并不適合高維數據。本文將共享近鄰(SNN)算法與DBSCAN算法進行結合,并提出一種新的參數尋優方案,形成一種改進型SNN-DBSCAN*算法,以適應UAV的工況特征。
UAV數據被劃分為多個工況后,在線故障診斷時需要首先進行工況匹配。基于數學模型[8-9]、基于專家知識[10]以及基于數據驅動[11-12]是3類實現工況匹配的可行方法[13]。其中,前兩類匹配方法都存在一定的局限性,不適合固定翼UAV的多工況分析。具體而言,基于數學模型的匹配法需要建立準確的系統解析模型,基于專家知識的匹配法則過度依靠專家經驗和專業知識。而固定翼UAV的復雜性使得精確解析模型和專家知識都難以獲得,限制了此兩類匹配方法在固定翼UAV上的應用。基于數據驅動的匹配法則容易實現,只需獲取系統的歷史數據和對應的工況標簽即可建立工況分類模型。就UAV而言,其運行數據可以通過數據鏈獲得,但工況標簽則無法從運行數據直觀獲得。

圖1 固定翼UAV多工況聚類及匹配技術路線Fig.1 Mutiple working condition clustering and matching technology routes of fixed-wing UAV
本文針對此問題,采用如圖1所示的技術路線。首先獲取UAV的歷史飛行數據,采用SNN-DBSCAN*算法進行聚類分析,并將聚類結果作為工況標簽。然后使用獨立成分分析(ICA)法提取各工況的數據特征,并融合工況特征和工況標簽形成工況訓練樣本。最后采用支持向量機(SVM)學習算法對訓練樣本進行學習,建立UAV工況匹配模型。在算法研究基礎上,本文以某型固定翼UAV的實際飛行數據對算法進行了驗證。


圖2 無人機操控原理Fig.2 Principle of UAV control
UAV遂行任務全程一般包括起飛- 巡航- 執行任務- 返航- 回收等階段,且各階段會根據實時任務變動和現實情況動態調整飛機狀態。不同狀態下飛機傳感器與執行機構反饋信息具有明顯區別。圖3展示了UAV執行某任務全程高度、傾斜角、俯仰角、航向角變化曲線。以圖3(a)飛機高度變化為例,UAV發射起飛后迅速爬升,在升至1 000 m左右時改為平飛,之后為避障和執行任務先后兩次采取爬升- 平飛- 俯沖動作以臨時調整高度。在返航回收階段,飛機總體以俯沖降高為主直至成功降落。總體來看,若僅以飛機高度變化劃分工況則可分為爬升、平飛、俯沖3種工況。同樣,從圖3(b)飛機傾斜角變化來看,該任務全程可劃分為左傾斜、右傾斜和直飛3種工況。若以圖3(c)飛機俯仰角變化來看,可劃分為抬頭、低頭和平飛3種工況。若以圖3(d)飛機航向角變化來看,則可劃分為左偏航、右偏航和定航3種工況。從圖3(a)~圖3(d)采樣時間軸(橫軸)綜合來看,各工作狀態交替出現,導致UAV工況復雜。從直觀上看,無法從UAV的9維數據集中簡單劃分工況,甚至連工況的個數也無法獲得。若僅以某參數(例如高度)為主導來處理UAV工況,將會丟失大量工況信息,造成誤判。因此,本文將采用不需要先驗知識的聚類算法,從數據抽象層對UAV工況進行分析。

圖3 UAV飛行曲線Fig.3 UAV flight curve
DBSCAN算法是一種基于密度進行聚類的算法,該算法先尋找密度較高的點,然后把相近的高密度點連成一片,進而生成各種簇。DBSCAN算法以密度為指標,對噪聲具有較強的魯棒性,可基于數據自主推測聚類個數并能處理任意形狀和大小的簇[14]。DBSCAN算法已經廣泛應用于多個領域,如光譜分析、社會科學、土木工程、生物醫學和化學等[15]。但經典DBSCAN算法需要指定核心點的最小近鄰數MinPts和鄰域半徑Eps值,且對數據集的密度敏感,難以處理密度不均勻的數據集[16]。故經典DBSCAN算法無法直接用于UAV飛行數據分析。本文從以下兩個方面對DBSCAN算法進行改進:1)引入SNN算法以提高DBSCAN算法應對密度不均勻數據集的聚類性能;2)在計算K近鄰距離KNNd基礎上引入數據剪切率、滿意度曲線和合成輪廓系數(SSC),并提出一套分步自動優選MinPts、Eps參數方案,以降低DBSCAN算法對先驗知識的依賴。
與DBSCAN算法的密度指標不同,SNN算法采用相似度來度量兩點間距離。SNN距離只依賴于兩個對象共享的近鄰個數,而不是這些近鄰之間的實際距離,因此能夠基于點的密度進行自動縮放。SNN距離反映了數據空間中點的局部結構,對密度變化和空間維度相對不敏感,可以用作新的距離度量方式來改進傳統的DBSCAN算法,記為SNN-DBSCAN算法。以下將逐步介紹算法改進過程,首先從算法基本定義開始[17-19]。
在數據集空間中,若點p的Eps鄰域內近鄰個數大于等于MinPts,則該點定義為核心點。若點p的Eps鄰域內近鄰個數小于MinPts,且p落在某核心點的Eps鄰域內,則該點為邊界點。若點p既非核心點又非邊界點,則該點為噪聲點。若點q是核心點且p在q的Eps鄰域內,則稱p距q直接密度可達。若存在一條直接密度可達的鏈條p1,p2,…,pn,n為鏈條數據的量,且p1=q,pn=p,pi+1距pi直接密度可達,則稱p距q密度可達。若在數據集D中的p點與q點的前k個最近鄰中有t個近鄰是共享的,則稱p距q的共享近鄰距離為t,并將其作為SNN距離,記為SNNd(p,q,k) =t.
在以上SNN距離定義基礎上,將SNN-DBSCAN算法用于分析UAV飛行數據,算法偽代碼如圖4所示,其中,Nbxi表示距離數據點xi的SNN距離不超過Eps的數據集合,|Nbxi|表示該集合的數據的量。SNN-DBSCAN算法隨機選擇UAV數據集中的1個點xi,利用圖5所示FindN偽代碼算法計算距離xi共享近鄰距離不大于Eps的近鄰個數|Nbxi|。若|Nbxi| Algorithm 算法1SNN-DBSCAN算法。 Algorithm Input (1)D=[x1,x2,…,xm]T∈Rm×9: 采樣數據矩陣 (2)Eps: 距離半徑 (3)MinPts: 閾值 (4)k: SNN近鄰數量 Algorithm Output C={C1,C2,…,Ct}: UAV數據聚類集合 Algorithm Start id=1 Set allU=D//U為未處理的數據矩陣 for eachxi∈Udo |Nbxi|=FindN(xi,D,Eps,k)//根據算法2 if |Nbxi| xi∈Noise//xi判斷為噪聲點 else xi∈Cid//xi判斷為核心點并存入對應類標聚類集合 all points inNbxi∈Cid Queue=Nbxi//Queue為過程存儲數據集 whileQueue≠? Queue=Queue/xj//xj為Queue中任一數據 |Nbxj|=FindN(xj,D,Eps,k) //根據算法2 if |Nbxj|≥MinPts set each pointzinNbxj∈Cid ifz∈U Queue=Queue∪z end if end if U=U/xj//將xj從U中剔除 end while end if U=U/xi//將xi從U中剔除 id=id+1 end for Algorithm End 圖4 SNN-DBSCAN算法 Fig.4 SNN-DBSCAN algorithm Algorithm 算法2FindN Algorithm Input (1)xi: 測試數據 (2)D=[x1,x2,…,xm]T∈Rm×9: 采樣數據矩陣 (3)Eps: 距離半徑 (4)k: SNN近鄰數量 Algorithm Output |Nbxi| Algorithm Start |Nbxi|=0 for eachxj∈D/xido //取D中與xi不同的數據xj ifSNNd(xi,xj,k)≤Eps//根據子程序SI |Nbxi|=|Nbxi|+1 end if end for Procedure子程序:SNNd(xi,xj,k) SIxi,xj=SI(xi,D,k)∩SI(xj,D,k)//SIxi,xj即xi與xj共享近鄰數量 Count=k-SIxi,xj returnCount Procedure子程序:SI(xi,D,k) Index=? for eachxj∈D/xido distxi,xj=‖xi-xj‖2/distxi,xj即xi與xj的歐式距離 Index=sort(distxi,xj)[1:k] //升序排序,取前k個數據 returnIndex Algorithm End 圖5 FindN算法 Fig.5 FindN algorithm 在上述SNN-DBSCAN算法中,需要人為指定Eps和MinPts,其數值對聚類結果有較大影響。為了降低算法對先驗知識的依賴程度,需要進一步研究Eps和MinPts的參數優化方法。 為尋找合適的[Eps,MinPts]參數組合以得到最優的聚類效果,引入KNNd和SSC概念,對SNN-DBSCAN算法進行改進。 KNNd為數據集合中每個數據點到其第T個最近鄰的距離(一般為歐氏距離)[19-20]。計算D中每個數據點的KNNd距離,并將結果升序排序,即可得到K近鄰(KNN)距離曲線LineT,其示意如圖6(a)所示,LineT先緩慢增長后急劇上升。若取曲線拐點P處對應的KNNd和LineT為MinPts和Eps的值[21],則按照拐點啟發式參數尋優思想,由此方式獲得的參數組合是較優的。以該參數組合對UAV數據集進行DBSCAN算法聚類分析時,序號小于Num的所有UAV數據將會被標記為核心點,而大于Num的將被標記為邊界點或噪聲點。 圖6 LineT距離曲線Fig.6 LineT distance curve 本文擬在SNN-DBSCAN聚類算法參數優化中采用拐點啟發式尋優方法。基于SNN距離的KNNd記為SNN-KNNd,該距離度量方式會限制曲線的縱軸最大值(即0 Num=[(1-sr)m], (1) 將sr轉化為新的Num值;以Num值為基準沿縱軸畫一條直線與多條LineT曲線相交,若交點縱坐標滿足LineT(Num)≠k則標記該曲線為滿意曲線。取交點P處對應的SNN-KNNd值為MinPts值,取此點LineT值為Eps值,即可得到多對合適的備選參數組合。為了從備選組合中進一步篩選最優參數組合,下文進一步采用SSC進行分析。 輪廓系數結合了凝聚度和分離度,是聚類效果的評價指標[22]。本文根據UAV數據特征將輪廓系數與共享近鄰距離融合,重新定義指標。設Xi,j表示簇j的第i個采樣,Nj為簇j的樣本數,C為總聚類簇集合,|C|為聚類簇總數。首先,定義凝聚度CHi,j以反映簇內部的緊湊程度: (2) 式中:CHi,j為單點凝聚度,表示Xi,j到簇j中所有點的平均SNN距離。 再定義分離度SPi,j,以反映簇與簇之間的分散程度: (3) 式中:SPi,j為單點分離度,表示Xi,j到不包含該點的簇中所有點的最小SNN距離。結合凝聚度和分離度構建SSC,以綜合反映聚類效果的好壞,SSC表示為 (4) 式中:SCi,j=((SPi,j-CHi,j)/max (CHi,j,SPi,j)+1)/2,SSC∈[0,1]。在實際聚類分析中,SSC需要大于0.5,且SSC越接近1,表明聚類效果越好。在使用SSC對多個備選參數組合進行評價時,使SSC取最大值的參數即為最優組合。 引入SNNd和SSC概念后,原SNN-DBSCAN聚類算法不再需要預先人為指定Eps及MinPts值,只需給出T值的大致取值范圍并預估1個可接受的數據剪切率sr即可自動優選參數,在一定程度上降低了算法對先驗知識的依賴。將具有參數優選功能的SNN-DBSCAN算法記為SNN-DBSCAN*算法,圖7所示為該算法的偽代碼,其中Cd表示備選參數集合,Cd.MinPts表示備選MinPts參數子集,Cd.Eps表示備選Eps參數子集,SC(C)表示使用聚類集合C計算合成輪廓系數,SSCs表示存儲多個合成輪廓系數的集合,Eps*表示最優Eps參數,MinPts*表示最優Minpts參數, |C|表示聚類集合C中子簇的數量,|Ci|表示序號為i的子簇內數據的量。 圖8以框圖形式將2.1節、2.2節提出的SNN-DBSCAN*算法原理進行了概括。SNN-DNSCAN*算法分兩步實現參數尋優:1)在眾多曲線中挑選出滿意曲線,得到備選參數組合,并保證被選曲線有較少離群點;2)以SSC最大值為標準進一步優選備選參數組合。該算法兼顧了離群點與SSC,對數據的先驗知識要求少,實用性強。 以UAV一次時長2.5 h的完整實飛數據為對象,對本文所提算法進行仿真驗證,算法代碼用MATLAB 2018a軟件實現。UAV數據鏈采樣周期短,完整飛行數據具有很大體量。本文旨在對UAV工況進行聚類分析,樣本無需具有很高的采樣速率。故先對實飛數據進行無偏差抽樣,獲得1 034組抽樣數據構成樣本集,記作trd. SNN-DBSCAN*算法的相關參數設置如下: (5) Algorithm 算法3 SNN-DBSCAN* Algorithm Input: (1)D={x1,x2,…,xm}∈Rm×9: 采樣數據矩陣 (2)k: 計算SNN時最大近鄰數量2.2 SNN-DBSCAN算法參數優化

2.3 UAV工況聚類仿真與分析