楊一鳴 汪貴平
(長(zhǎng)安大學(xué),西安 710064)
主題詞:面向?qū)ο?專家系統(tǒng) 電源檢測(cè) 無人車
無人駕駛汽車車載用電設(shè)備和供電需求增加,對(duì)系統(tǒng)的可靠性也有非常嚴(yán)苛的要求,如果車輛運(yùn)行過程中出現(xiàn)發(fā)電機(jī)故障、配電線路故障、各傳感器模塊電源故障并導(dǎo)致設(shè)備掉電等情況,無人車會(huì)丟失實(shí)時(shí)數(shù)據(jù),系統(tǒng)無法繼續(xù)獲取數(shù)據(jù)和進(jìn)行參數(shù)的更新與下發(fā)。近年來,故障診斷系統(tǒng)發(fā)展迅速,很多學(xué)者利用神經(jīng)網(wǎng)絡(luò)或改進(jìn)神經(jīng)網(wǎng)絡(luò)進(jìn)行電源故障檢測(cè)系統(tǒng)的設(shè)計(jì)[1-3],但是基于神經(jīng)網(wǎng)絡(luò)的故障檢測(cè)系統(tǒng)未能利用專家經(jīng)驗(yàn),另外,專家系統(tǒng)的訓(xùn)練樣本需要大量的故障數(shù)據(jù),通過無人駕駛車輛日常運(yùn)行捕捉電源系統(tǒng)故障需要大量的時(shí)間;小波分析作為基于信號(hào)處理進(jìn)行故障診斷的一種方法而被廣泛采用,但存在小波基、尺度和平移量選擇困難等缺點(diǎn)[4]。上述故障診斷方法的融合是未來故障診斷系統(tǒng)的發(fā)展趨勢(shì):Gofuku等人通過引入估計(jì)智能體、支持向量機(jī)(Support Vector Machine,SVM)狀態(tài)辨識(shí)器、小波變換異常檢測(cè)器和基于案例的推理機(jī)來構(gòu)建混合故障診斷系統(tǒng)[5],取得了不錯(cuò)的成效;北京航空航天大學(xué)的張莉針對(duì)航空電源提出了一種多智能體信息融合故障診斷方法,通過多傳感器信息融合和多智能體技術(shù)融合提高故障診斷的可靠性和系統(tǒng)的可擴(kuò)展性[6]。但融合的做法使得故障診斷系統(tǒng)的復(fù)雜程度大幅增加,提高了實(shí)現(xiàn)難度和成本。近年來,專家系統(tǒng)在故障診斷方面取得了很大進(jìn)展并進(jìn)行了實(shí)際部署,很大一部分在知識(shí)表示上使用了產(chǎn)生式規(guī)則,一般的產(chǎn)生式規(guī)則需要反復(fù)進(jìn)行“知識(shí)匹配—沖突消解—產(chǎn)生結(jié)果”的過程[7],匹配較為費(fèi)時(shí)。為提升檢測(cè)效率,本文采用基于深度優(yōu)先的產(chǎn)生式匹配策略,在系統(tǒng)構(gòu)建和知識(shí)表示方面應(yīng)用面向?qū)ο蟮脑O(shè)計(jì)方法,設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單且高效的故障診斷系統(tǒng),以期提升系統(tǒng)的靈活性和可擴(kuò)展性。
專家系統(tǒng)的邏輯推理核心是知識(shí)庫(kù)和推理機(jī)。演繹推理、歸納推理等典型的經(jīng)典邏輯推理往往遵循標(biāo)準(zhǔn)邏輯規(guī)范,依賴于確定度高的事件和現(xiàn)象,對(duì)于車輛電源系統(tǒng)復(fù)雜故障診斷而言,其靈活性和適應(yīng)性不足[8],而啟發(fā)式推理則有著與人類思維方式更加接近的推理過程[9]。本文將啟發(fā)式推理與面向?qū)ο蟮某绦蛟O(shè)計(jì)相結(jié)合,進(jìn)行無人車電源故障檢測(cè)專家系統(tǒng)的設(shè)計(jì)。按照文獻(xiàn)[10]中的方法,以對(duì)象為中心,將對(duì)象的屬性、領(lǐng)域知識(shí)、方法等進(jìn)行封裝,在提高程序健壯性的同時(shí)賦予程序模塊化的特征。
無人車電源系統(tǒng)可以分為供電模塊、控制模塊和傳感器模塊。供電模塊包括發(fā)電機(jī)、整流器和車載電池等;控制模塊包括汽車線控系統(tǒng)CAN網(wǎng)絡(luò)中的各類ECU;傳感器模塊包括激光雷達(dá)、相機(jī)、組合導(dǎo)航和交換機(jī)等。電源監(jiān)測(cè)系統(tǒng)用于對(duì)無人車電源系統(tǒng)進(jìn)行檢測(cè),其總體結(jié)構(gòu)如圖1所示,主要包括供電模塊、故障檢測(cè)專家系統(tǒng)、連接在CAN網(wǎng)絡(luò)上的汽車微控制器群和連接在以太網(wǎng)上的無人車車載設(shè)備。
圖1 無人車電源監(jiān)測(cè)系統(tǒng)結(jié)構(gòu)
面向?qū)ο蟮膶<蚁到y(tǒng)將傳統(tǒng)專家系統(tǒng)用類封裝起來,傳統(tǒng)專家系統(tǒng)主要包括征兆提取模塊、知識(shí)庫(kù)、推理機(jī)和人機(jī)接口。參照文獻(xiàn)[11]對(duì)程序設(shè)計(jì)的考量,為避免結(jié)構(gòu)化程序設(shè)計(jì)帶來的繁瑣算法,對(duì)每個(gè)模塊單獨(dú)定義了不同的類:文件類、接口類、會(huì)話類、屬性庫(kù)類和規(guī)則庫(kù)類,系統(tǒng)結(jié)構(gòu)如圖2所示。其中,規(guī)則庫(kù)類是故障診斷專家系統(tǒng)的核心。
以往的面向?qū)ο蟮膶<蚁到y(tǒng)往往將規(guī)則對(duì)象的屬性作為真實(shí)對(duì)象的屬性,存在于對(duì)象內(nèi)部,這樣可以保留面向?qū)ο蟮闹R(shí)表示方法的封裝和繼承的特點(diǎn),便于規(guī)則的傳遞。但在故障情況復(fù)雜的無人車電源系統(tǒng)中,如需更新或修改對(duì)象規(guī)則,需要對(duì)整個(gè)對(duì)象重新進(jìn)行編譯,系統(tǒng)易用性較差。本文使用文獻(xiàn)[12]中的方法,單獨(dú)定義規(guī)則庫(kù)類,存放于外部存儲(chǔ)空間,系統(tǒng)進(jìn)行故障診斷時(shí)調(diào)用該規(guī)則庫(kù),這樣可以有效提升系統(tǒng)的靈活性和可擴(kuò)充性,有效解決異構(gòu)對(duì)象重用的問題。相比于一般的面向?qū)ο笤O(shè)計(jì),本系統(tǒng)規(guī)則庫(kù)與文件對(duì)象相互獨(dú)立,規(guī)則庫(kù)并不是對(duì)象的一個(gè)屬性,在對(duì)象發(fā)生繼承時(shí)規(guī)則不能有效傳遞,但這并不影響文件類對(duì)象引用規(guī)則庫(kù)。
圖2 面向?qū)ο蟮膶<蚁到y(tǒng)結(jié)構(gòu)
為了全面、直觀地了解各事件及其對(duì)應(yīng)的前、后件,本文引入故障拓?fù)淠P蛯?duì)無人車電源系統(tǒng)故障進(jìn)行歸類和分析,一般性故障問題可以采用文獻(xiàn)[13]中建立故障樹模型的方法進(jìn)行分析,但是無人車電源系統(tǒng)故障具有模糊性和不確定性,故障之間存在著復(fù)雜的聯(lián)系,一種故障可能對(duì)應(yīng)多種故障原因,一種故障原因也可能對(duì)應(yīng)多種故障,并無明確的層次結(jié)構(gòu),所以簡(jiǎn)單的故障樹模型并不適用于該故障檢測(cè)專家系統(tǒng)。無人車電源系統(tǒng)故障拓?fù)淠P腿鐖D3所示,各故障模塊之間存在復(fù)雜的耦合關(guān)系,一個(gè)模塊發(fā)生故障會(huì)影響其他模塊的工作。無人駕駛系統(tǒng)自上而下一般分為環(huán)境感知層、規(guī)劃決策層和車輛控制層。規(guī)劃決策層及車輛控制層基于Linux系統(tǒng)搭建,自動(dòng)駕駛傳感器信息的傳遞通過節(jié)點(diǎn)的發(fā)布和訂閱進(jìn)行;決策層根據(jù)傳感器信息進(jìn)行路徑的規(guī)劃和車輛控制量的計(jì)算,車輛的控制命令通過CAN總線下發(fā)[14-15]。
使用專家系統(tǒng)的征兆提取模塊,車輛電源系統(tǒng)故障的檢測(cè)通過兩種方式進(jìn)行:傳感器模塊故障通過對(duì)訂閱的各傳感器節(jié)點(diǎn)發(fā)布的主題(Topic)的監(jiān)測(cè)和分析完成,一旦Topic數(shù)據(jù)消失或存在異常,則判定故障發(fā)生;供電模塊和控制模塊故障通過周期性讀取并解析CAN總線上對(duì)應(yīng)協(xié)議的數(shù)據(jù)流實(shí)現(xiàn)。
圖3 無人車電源系統(tǒng)故障拓?fù)?/p>
無人車電源系統(tǒng)各模塊故障獲取原理如圖4所示。捕捉到故障事件后需要運(yùn)用推理規(guī)則對(duì)故障原因和故障位置進(jìn)行推理。
圖4 無人車電源系統(tǒng)故障獲取原理
基于產(chǎn)生式規(guī)則的專家系統(tǒng)可表示為“Ifpthenq”的形式,其中p為觸發(fā)規(guī)則的條件,q為結(jié)論或中間命題。在面向?qū)ο蟮膶<蚁到y(tǒng)設(shè)計(jì)中,用P表示規(guī)則前件,Q表示規(guī)則后件,前件一般由對(duì)象的屬性和方法組成,后件由方法組成。前件、后件的可信度由規(guī)則前件中所有的比較節(jié)點(diǎn)確定。雖然規(guī)則獨(dú)立于對(duì)象,但為了進(jìn)行推理,要把規(guī)則在形式上對(duì)象化,首先定義比較對(duì)象為:
在此基礎(chǔ)上進(jìn)一步定義比較節(jié)點(diǎn)為:
用于描述規(guī)則的規(guī)則節(jié)點(diǎn)為:
規(guī)則置信度由前件置信度和后件置信度共同決定[16],當(dāng)前規(guī)則的置信度為:
式中,ECol為比較對(duì)象E的表達(dá)式,其名稱為A;E1和E2為兩個(gè)不同的比較對(duì)象;T為比較類型,這里選擇置信度比較;N為規(guī)則名稱;P為規(guī)則的前件集合;Q為規(guī)則的結(jié)果集合;cf為規(guī)則的置信度;ef為規(guī)則執(zhí)行狀態(tài)標(biāo)志位。
在電源故障診斷中,將規(guī)則對(duì)應(yīng)的前件和后件合并,同時(shí)合并其置信因子cf,最終合并的置信因子為:
規(guī)則R的執(zhí)行狀態(tài)標(biāo)志位efR的值為:
其中,置信因子的比較閾值cf-R由該類型故障全部歷史置信因子cfRi(i=1,2,…,n)取平均得到:
式中,cfp和cfq分別為規(guī)律p和規(guī)律q對(duì)應(yīng)的置信因子,這里p和q分別對(duì)應(yīng)規(guī)則前件、規(guī)則后件或者2個(gè)規(guī)則前件;n為該類型全部歷史故障數(shù)量。
規(guī)則庫(kù)用于存放電源系統(tǒng)故障規(guī)則,是規(guī)則庫(kù)類的私有成員。在規(guī)則庫(kù)類中定義成員函數(shù)進(jìn)行規(guī)則的更新與管理,類的對(duì)象可以通過公有函數(shù)訪問類的私有成員變量。規(guī)則類的公有部分主要包括規(guī)則名稱、規(guī)則對(duì)應(yīng)的前件集合P和后件集合Q、浮點(diǎn)型置信因子cf、布爾型規(guī)則執(zhí)行狀態(tài)標(biāo)志位ef以及規(guī)則所屬的類別g,規(guī)則類的定義過程為:
其中,成員RuleName為對(duì)規(guī)則的名稱描述。
定義規(guī)則類后,定義規(guī)則庫(kù)類Rule_Lib進(jìn)行規(guī)則層面的管理,具體實(shí)現(xiàn)為:
在系統(tǒng)習(xí)得新的故障規(guī)則時(shí),面向?qū)ο蟮囊?guī)則庫(kù)類對(duì)新對(duì)象進(jìn)行創(chuàng)建與初始化,形成新的規(guī)則對(duì)象并將其放入規(guī)則列表,隨后完成新規(guī)則的關(guān)系生成,新對(duì)象的創(chuàng)建與更新過程如圖5所示。
圖5 對(duì)象的創(chuàng)建與更新
在完成規(guī)則庫(kù)的設(shè)計(jì)后,推理機(jī)即可利用捕獲的故障事件和相應(yīng)的規(guī)則進(jìn)行故障原因的推理和定位。
推理機(jī)的性能與構(gòu)造一般與規(guī)則的表示方式和組織方式有關(guān),與規(guī)則的內(nèi)容無關(guān),這可以保證推理機(jī)與規(guī)則庫(kù)的相對(duì)獨(dú)立,本文設(shè)計(jì)的專家系統(tǒng)推理機(jī)使用改進(jìn)的深度優(yōu)先搜索(Depth First Search,DFS)算法生成動(dòng)態(tài)樹,在電源故障診斷中,DFS算法的使用更符合故障診斷的判斷邏輯,比廣度優(yōu)先算法更能滿足檢測(cè)系統(tǒng)的要求[17]。如果利用靜態(tài)樹模型進(jìn)行故障診斷,無人車電源檢測(cè)系統(tǒng)各模塊間的復(fù)雜關(guān)系會(huì)導(dǎo)致靜態(tài)樹的縱深過長(zhǎng)、節(jié)點(diǎn)過多、重復(fù)率上升,進(jìn)而占用大量計(jì)算資源,對(duì)系統(tǒng)性能產(chǎn)生不利影響[18]。利用DFS算法抽取故障關(guān)系表中相應(yīng)節(jié)點(diǎn)前件中的信息,并按照樹結(jié)構(gòu)對(duì)節(jié)點(diǎn)前件進(jìn)行排序,依據(jù)節(jié)點(diǎn)等級(jí)和排序結(jié)果動(dòng)態(tài)生成事件樹模型。文獻(xiàn)[19]~文獻(xiàn)[20]使用動(dòng)態(tài)樹進(jìn)行故障的推理和診斷,計(jì)算相應(yīng)的故障概率并將其作為故障原因判斷的重要依據(jù),參照此方法,本文定義動(dòng)態(tài)樹類,描述動(dòng)態(tài)樹節(jié)點(diǎn)與故障規(guī)則拓?fù)浔碇泄收锨啊⒑蠹挠成潢P(guān)系,以激光雷達(dá)模塊故障為例,首先建立對(duì)應(yīng)的故障關(guān)系如表1所示。其中,R1代表雷達(dá)模塊故障,C1代表相機(jī)模塊故障,G1代表組合導(dǎo)航模塊故障,I1代表逆變器故障,S1代表交換機(jī)故障,B1代表電池故障。
表1 激光雷達(dá)模塊故障關(guān)系
隨后,按照文獻(xiàn)[21]中的方法將故障關(guān)系表中的節(jié)點(diǎn)取出重新排序成樹形結(jié)構(gòu),排序算法如圖6所示。
圖6 DFS算法生成動(dòng)態(tài)樹算法
這樣,相應(yīng)模塊的故障關(guān)系即轉(zhuǎn)換成了動(dòng)態(tài)樹模型。深度優(yōu)先算法的應(yīng)用依賴規(guī)則庫(kù)中的規(guī)則關(guān)系,面向?qū)ο蟮囊?guī)則表示方法為:
事件可以為初事件、中間事件或最終事件。導(dǎo)出規(guī)則(Educe Rule)指可以使事實(shí)變成結(jié)論的規(guī)則,歸納規(guī)則(Iduce Rule)指以該事實(shí)為前提的另一個(gè)規(guī)則,對(duì)應(yīng)動(dòng)態(tài)樹同一級(jí)上的相鄰2個(gè)節(jié)點(diǎn)。類RuleDoc中的成員UsedRules調(diào)用上一個(gè)規(guī)則文件對(duì)象中的CurRules列表,成員UsedRules和成員CurRules共同為故障診斷專家系統(tǒng)提供推理,Rule Relation用于說明當(dāng)前對(duì)象使用的規(guī)則。
以GPS模塊電源故障為例,定義傳感器模塊故障規(guī)則如表2所示,其中,Rsi表示傳感器模塊故障規(guī)則,Rpi表示供電模塊故障規(guī)則,In_Service為正常工作狀態(tài),Error表示故障狀態(tài),no_SC表示模塊未出現(xiàn)短路故障,no_OC表示模塊未出現(xiàn)開路故障。
表2 傳感器模塊電源故障規(guī)則
表3給出了GPS模塊故障的對(duì)應(yīng)關(guān)系,Rs1和Rs2是其中的2條規(guī)則。
表3 傳感器模塊電源故障規(guī)則關(guān)系
以供電模塊故障為例,當(dāng)事件PS_Error出現(xiàn)時(shí),對(duì)應(yīng)規(guī)則Rs1和Rs2,推理機(jī)首先檢查對(duì)應(yīng)的第1個(gè)導(dǎo)出規(guī)則:如果該規(guī)則的ef位為1,則代表規(guī)則Rs1生效,Rs1中對(duì)應(yīng)的事件GPS_Error、GPS_no_SC和GPS_no_OC均成立;如果規(guī)則Rs1的ef位為0,則推理機(jī)尋找第2條規(guī)則Rs2并讀取ef位的值。如果規(guī)則Rs1和Rs2的ef位均為0,則表示事件PS_Error大概率不會(huì)發(fā)生,這時(shí)推理機(jī)將從規(guī)則關(guān)系列表中尋找與事件PS_Error有關(guān)的歸納規(guī)則Rp1和Rp2,并將其ef位均置為0。
推理機(jī)的推理過程如圖7所示。該改進(jìn)的DFS算法與傳統(tǒng)的DFS算法相比,在根據(jù)推理結(jié)果對(duì)規(guī)則標(biāo)志位進(jìn)行置位或復(fù)位的同時(shí),可以對(duì)假設(shè)的事實(shí)和所有規(guī)則之間的啟發(fā)式關(guān)系進(jìn)行反向歸納[22]。所以應(yīng)用改進(jìn)的DFS算法推理機(jī)可以快速修正搜索路徑,縮小搜索范圍,減少驗(yàn)證規(guī)則的重復(fù)工作,提高推理效率。
圖7 啟發(fā)式推理流程
分別利用仿真測(cè)試和實(shí)車測(cè)試檢測(cè)無人車電源檢測(cè)系統(tǒng)在模擬和真實(shí)環(huán)境下的故障診斷性能。
仿真測(cè)試通過計(jì)算機(jī)設(shè)置故障類型和故障出現(xiàn)時(shí)間,觀察不同電源故障設(shè)置下電源故障檢測(cè)專家系統(tǒng)能否準(zhǔn)確判斷故障類型并快速定位故障位置。
以雷達(dá)模塊故障為例,在仿真程序中設(shè)置中斷,中斷到來時(shí)將雷達(dá)數(shù)據(jù)重定向在儲(chǔ)存盤中,制造雷達(dá)數(shù)據(jù)丟失故障。仿真測(cè)試結(jié)果如圖8所示,軟件中規(guī)則庫(kù)欄實(shí)時(shí)顯示專家系統(tǒng)的推理過程,該系統(tǒng)還具備手動(dòng)擴(kuò)充規(guī)則庫(kù)的功能。
圖8 雷達(dá)模塊故障仿真測(cè)試結(jié)果
雷達(dá)故障發(fā)生時(shí),系統(tǒng)先在規(guī)則庫(kù)中尋找相應(yīng)的規(guī)則以及對(duì)應(yīng)的規(guī)則關(guān)系,然后對(duì)導(dǎo)出規(guī)則和歸納規(guī)則的執(zhí)行狀態(tài)標(biāo)志位進(jìn)行判斷,當(dāng)未找到匹配故障時(shí),尋找與導(dǎo)出規(guī)則或歸納規(guī)則同級(jí)的相鄰規(guī)則再次進(jìn)行匹配。該仿真測(cè)試結(jié)果為未找到匹配的故障,因?yàn)榉抡孢^程只是人為中斷了雷達(dá)數(shù)據(jù)的傳輸,雷達(dá)模塊供電并未出現(xiàn)故障,其他模塊沒有受到影響,系統(tǒng)檢測(cè)到的信息有限,推理機(jī)搜尋不到對(duì)應(yīng)的推理規(guī)則,進(jìn)而無法得到推理結(jié)果。
為了保證測(cè)試安全,試驗(yàn)在無人車測(cè)試臺(tái)架上進(jìn)行,如圖9所示。
圖9 無人車電源故障檢測(cè)專家系統(tǒng)臺(tái)架測(cè)試
無人車在測(cè)試臺(tái)架上進(jìn)行無人駕駛場(chǎng)景模擬測(cè)試,在車輛正常運(yùn)行的情況下斷開組合導(dǎo)航模塊供電,觀察無人車電源檢測(cè)系統(tǒng)推理過程和推理結(jié)果,如圖10所示。
由圖10可知,電源檢測(cè)系統(tǒng)獲取故障信息后通過專家系統(tǒng)有效地匹配出相應(yīng)的故障規(guī)則并找出規(guī)則關(guān)系,確定了導(dǎo)出規(guī)則和歸納規(guī)則,利用這些規(guī)則確定了故障類型并進(jìn)行了故障定位,該故障診斷專家系統(tǒng)達(dá)到了設(shè)計(jì)要求。
圖10 無人車電源故障檢測(cè)專家系統(tǒng)臺(tái)架測(cè)試結(jié)果
隨著運(yùn)行時(shí)間和運(yùn)行場(chǎng)景的增加,該專家系統(tǒng)可以不斷地對(duì)知識(shí)庫(kù)和規(guī)則庫(kù)進(jìn)行完善,系統(tǒng)性能將進(jìn)一步提升。
針對(duì)無人車電源系統(tǒng)復(fù)雜的拓?fù)浣Y(jié)構(gòu),本文運(yùn)用改進(jìn)的DFS算法和動(dòng)態(tài)樹生成算法進(jìn)行車輛電源故障檢測(cè)專家系統(tǒng)的設(shè)計(jì),并采用面向?qū)ο蟮脑O(shè)計(jì)方法,使得專家系統(tǒng)具備故障診斷和定位能力。改進(jìn)的DFS推理機(jī)在進(jìn)行推理的同時(shí),對(duì)假設(shè)的事實(shí)和所有規(guī)則之間的啟發(fā)式關(guān)系進(jìn)行反向歸納,可以大幅提高推理效率。面向?qū)ο蟮脑O(shè)計(jì)方法賦予系統(tǒng)模塊化的特征,也使得知識(shí)庫(kù)和規(guī)則庫(kù)的更新和擴(kuò)充更加方便。簡(jiǎn)單高效的人機(jī)接口可以對(duì)故障進(jìn)行實(shí)時(shí)監(jiān)測(cè),同時(shí)具有故障查詢和知識(shí)庫(kù)管理的功能。通過不斷學(xué)習(xí)和完善,該系統(tǒng)可以更加精確地判斷故障類型和精準(zhǔn)地定位故障位置,減少檢測(cè)人員的工作量,提高車載電源系統(tǒng)的故障檢測(cè)效率。