摘 要:討論并分析了建立水下無人潛器(AUV)自主運(yùn)動(dòng)控制規(guī)則庫的必要性和重要性及可行性。指出主動(dòng)機(jī)制是主動(dòng)數(shù)據(jù)庫的一個(gè)重要功能,采用事件—條件—?jiǎng)幼鞯囊?guī)則來實(shí)現(xiàn)其主動(dòng)功能。就控制系統(tǒng)的事件,動(dòng)作特點(diǎn)提出控制規(guī)則數(shù)據(jù)庫設(shè)計(jì)方案,解決了自主控制系統(tǒng)中控制規(guī)則單一的瓶頸問題。最后,對(duì)主動(dòng)控制規(guī)則庫的實(shí)現(xiàn)技術(shù)進(jìn)行了討論并提出了相應(yīng)的解決方案。
關(guān)鍵詞:自主水下潛器;自主控制; ECA規(guī)則;規(guī)則庫;主動(dòng)數(shù)據(jù)庫
1 概述
在海洋環(huán)境下工作的機(jī)構(gòu)中,水下機(jī)器人及自主水下潛器(AUV)的開發(fā)和利用無疑是一個(gè)相當(dāng)具有潛力的發(fā)展方向。海洋環(huán)境的不確定性對(duì)水下機(jī)器人及自主水下潛器(AUV)提出了更高的智能性、機(jī)動(dòng)性等要求。AUV要實(shí)現(xiàn)在不同的工況下自主控制,單一的控制規(guī)則顯然已經(jīng)不能滿足我們的需求。我們希望AUV的控制系統(tǒng)工作在最佳的工況下,實(shí)現(xiàn)最好的效益。這就給AUV的運(yùn)動(dòng)控制帶來了一定的困難。常規(guī)的解決辦法是對(duì)整個(gè)系統(tǒng)進(jìn)行自適應(yīng)控制,或者對(duì)控制參數(shù)進(jìn)行現(xiàn)場(chǎng)尋優(yōu),但是這種控制方法的針對(duì)性很強(qiáng)而且比較單一,成本很高且不夠靈活。所以有必要建立一個(gè)含有多控制規(guī)則并能夠調(diào)根據(jù)任務(wù)使命和海況變化現(xiàn)場(chǎng)切換調(diào)用不同控制規(guī)則的控制規(guī)則庫。
2 AUV控制規(guī)則庫對(duì)控制的主動(dòng)需求
通過對(duì)自主水下潛器(AUV)工作過程的了解和對(duì)其工作過程的不確定性分析。在動(dòng)力裝置運(yùn)行過程中,自主水下潛器對(duì)控制過程中的主動(dòng)需求如下:
1) 實(shí)時(shí)監(jiān)控
系統(tǒng)實(shí)時(shí)采集AUV動(dòng)力裝置的運(yùn)行數(shù)據(jù),隨時(shí)掌握裝置的運(yùn)行狀況。包括狀態(tài)監(jiān)控、性能監(jiān)控、功能監(jiān)控、安全監(jiān)控,以及故障監(jiān)控等等。將運(yùn)行特定數(shù)據(jù)記錄在數(shù)據(jù)庫當(dāng)中,并與控制規(guī)則庫中的事件參數(shù)進(jìn)行比較,通過對(duì)運(yùn)行過程的關(guān)鍵數(shù)據(jù)的監(jiān)控和分析,將問題反饋給AUV的使命規(guī)劃層。
2) 對(duì)出現(xiàn)的問題及時(shí)進(jìn)行處理
對(duì)出現(xiàn)的問題(或使命)及時(shí)進(jìn)行響應(yīng),能夠主動(dòng)根據(jù)使命的需求為AUV控制器匹配控制參數(shù),然后進(jìn)行控制參數(shù)與控制算法相結(jié)合形成相應(yīng)的控制規(guī)則。從而滿足使命規(guī)劃層對(duì)行為層進(jìn)行控制規(guī)則的調(diào)度與切換,確保動(dòng)力裝置的運(yùn)行狀態(tài)保持最佳。
3) 自適應(yīng),自組織功能
當(dāng)運(yùn)行狀態(tài)發(fā)生了某一很大程度的變化,而規(guī)則庫中沒有與之相匹配的規(guī)則時(shí),控制系統(tǒng)可以實(shí)時(shí)地進(jìn)行尋優(yōu)或者是通過自學(xué)習(xí)對(duì)某些控制規(guī)則進(jìn)行修正。之后規(guī)則庫將尋優(yōu)之后或修正后的控制參數(shù)重新組織并且編輯入庫,使得控制規(guī)則庫可以擴(kuò)充規(guī)則數(shù)量。
4) 用戶可以添加整定好的規(guī)則入庫。
在完成控制規(guī)則庫的時(shí)候,可以咨詢某方面的專家,事先向控制規(guī)庫中添加已經(jīng)整定好的控制規(guī)則和控制參數(shù)以豐富規(guī)則庫的規(guī)則容量,減少系統(tǒng)以后運(yùn)行的開支。
考慮到控制規(guī)則庫在自主水下潛器結(jié)構(gòu)里的重要性,這些主動(dòng)性功能雖然表現(xiàn)形式各不相同,但都可采用主動(dòng)數(shù)據(jù)庫所提供的“主動(dòng)性”以統(tǒng)一的機(jī)制來實(shí)現(xiàn)。
3 AUV運(yùn)動(dòng)控制規(guī)則庫系統(tǒng)
自主水下潛器(AUV)運(yùn)動(dòng)控制系統(tǒng)是由事件(使命)驅(qū)動(dòng)的,在控制系統(tǒng)中利用主動(dòng)數(shù)據(jù)庫技術(shù),采用事件驅(qū)動(dòng)的規(guī)則庫,根據(jù)應(yīng)用需要預(yù)先定義各種事件及其相應(yīng)動(dòng)作,允許不同的事件引發(fā)不同的動(dòng)作。一個(gè)主動(dòng)控制規(guī)則庫系統(tǒng)功能上由一個(gè)傳統(tǒng)數(shù)據(jù)庫系統(tǒng)和一個(gè)事件驅(qū)動(dòng)的知識(shí)庫和相應(yīng)的事件監(jiān)視器組成。
知識(shí)庫是一組由事件驅(qū)動(dòng)的知識(shí)的集合,稱為“事件庫”。每一項(xiàng)知識(shí)表示在相應(yīng)的事件發(fā)生時(shí),如何來主動(dòng)地執(zhí)行其中包含的由用戶預(yù)先設(shè)定的動(dòng)作。事件監(jiān)視器是一個(gè)隨時(shí)監(jiān)視知識(shí)庫中的事件是否已經(jīng)發(fā)生的監(jiān)視模塊,一旦監(jiān)視到某事件已經(jīng)發(fā)生時(shí)就主動(dòng)地觸發(fā)系統(tǒng),按知識(shí)庫中指明的相應(yīng)知識(shí)執(zhí)行其中預(yù)先設(shè)定的動(dòng)作。可見,知識(shí)庫中知識(shí)表示形式的不同,將獲得各種不同的主動(dòng)行為,在目前常采用事件驅(qū)動(dòng)的“事件—條件—?jiǎng)幼鳌币?guī)則 (ECA規(guī)則)表示這種知識(shí)。
1)ECA規(guī)則的設(shè)計(jì)
主動(dòng)數(shù)據(jù)庫最常用的方法是將規(guī)則系統(tǒng)與數(shù)據(jù)庫技術(shù)相結(jié)合,以增強(qiáng)數(shù)據(jù)庫的主動(dòng)功能。ECA規(guī)則的含義為:當(dāng)某一特定事件發(fā)生的時(shí)候,系統(tǒng)將檢查規(guī)定的條件是否成立。如果這些條件滿足,系統(tǒng)會(huì)觸發(fā)相應(yīng)的動(dòng)作完成預(yù)先設(shè)定的工作。E——當(dāng)事件發(fā)生時(shí)相應(yīng)規(guī)則作出反應(yīng)(可以是原子事件,也可以是一系列原子事件的復(fù)合);C——條件檢查事件發(fā)生時(shí)前后情況; A——?jiǎng)幼髅枋鍪侨绻嚓P(guān)事件發(fā)生和條件滿足時(shí)通過規(guī)則執(zhí)行任務(wù)。主動(dòng)控制規(guī)則庫工作原理如圖l所示。
2)規(guī)則模型
ECA規(guī)則描述事件、條件、動(dòng)作以及它們之間的耦合方式。事件部分前面已經(jīng)說明,(主要是原
子事件或者復(fù)合事件),條件一般是一組數(shù)據(jù)庫查詢或一組邏輯表達(dá)式,動(dòng)作部分可以是一組數(shù)據(jù)庫操作或者用戶第一的特定操作。ECA規(guī)則的耦合方式有E—C耦合和C—A耦合,前者描述規(guī)則的條件何時(shí)求值,后者描述條件為真時(shí)何時(shí)執(zhí)行動(dòng)作。這兩種耦合方式及其組合給ECA規(guī)則帶來了很大的靈活性,增強(qiáng)了規(guī)則的表達(dá)能力。事件驅(qū)動(dòng)的“事件—條件—?jiǎng)幼鳌庇腥缦碌囊话惴绞剑?
RULE<規(guī)則名>[(<參數(shù)>……)]
WHEN(事件表達(dá)式)
IF<條件1> THEN<動(dòng)作1>;
…………
IF<條件n> THEN<動(dòng)作n>;(n 1)
END RULE[<規(guī)則名>]
[align=center]
圖1.主動(dòng)控制規(guī)則庫工作原理圖[/align]
這些主動(dòng)規(guī)則受系統(tǒng)中的一個(gè)事件監(jiān)視器的監(jiān)視控制,該事件監(jiān)視器主動(dòng)的時(shí)刻監(jiān)視著事實(shí)庫。這樣,用戶可以通過設(shè)置各種不同的事件驅(qū)動(dòng)規(guī)則,以一種統(tǒng)一的機(jī)制來實(shí)現(xiàn)諸多主動(dòng)處理功能,從而滿足各種客觀的需求。
3)主動(dòng)數(shù)據(jù)庫的實(shí)現(xiàn)
使用嵌入程序語言來實(shí)現(xiàn)系統(tǒng)主動(dòng)功能,按傳統(tǒng)的方法設(shè)計(jì)一個(gè)接口把數(shù)據(jù)庫的操作嵌入到應(yīng)用程序中。對(duì)該規(guī)則庫系統(tǒng)的操作是在主程序當(dāng)中嵌入SQL語言來對(duì)數(shù)據(jù)庫進(jìn)行操作。由于在系統(tǒng)運(yùn)行程序與數(shù)據(jù)庫之間建立兩種語言的接口,而這是相對(duì)比較容易實(shí)現(xiàn)的。
4)事件監(jiān)視器的實(shí)現(xiàn)機(jī)制
實(shí)現(xiàn)主動(dòng)數(shù)據(jù)庫系統(tǒng)的關(guān)鍵在于實(shí)現(xiàn)一種有效的事件監(jiān)視器。一方面它應(yīng)有效地檢測(cè)出各種事件的發(fā)生,另一方面不能因?yàn)槭录O(jiān)視器的加入運(yùn)行而使原應(yīng)用程序的執(zhí)行速度發(fā)生太大地變化。這往往需要軟硬件結(jié)合起來解決問題,特別當(dāng)事件是一些中斷性質(zhì)的事件時(shí),必須有相應(yīng)硬件的支持。下面提供幾種可供選擇的實(shí)現(xiàn)機(jī)制。
?。?)在單處理器系統(tǒng)中,事件監(jiān)視器,不妨用在操作系統(tǒng)控制下的一個(gè)優(yōu)先級(jí)高的獨(dú)立進(jìn)程來實(shí)現(xiàn),以保證它能經(jīng)常地運(yùn)行,起到主動(dòng)監(jiān)視各種事件發(fā)生的作用。在事件庫被分成塊兒時(shí),應(yīng)該用一個(gè)指針批示對(duì)哪個(gè)事件庫進(jìn)行監(jiān)視運(yùn)行。
(2)在多處理器系統(tǒng)中,它可以獨(dú)立分配一個(gè)處理器來完成,這時(shí)要解決多個(gè)處理器間的通信和同步問題。
?。?)事件監(jiān)視器的另一種實(shí)現(xiàn)途徑是:在數(shù)據(jù)庫管理系統(tǒng)中當(dāng)執(zhí)行到所有可能發(fā)生事件的地方或在預(yù)先設(shè)定的檢查點(diǎn)上都會(huì)產(chǎn)生一個(gè)中斷,使機(jī)器被迫切換到事件監(jiān)視器來工作,以便核實(shí)當(dāng)時(shí)發(fā)生的事件是否已被用戶設(shè)置在事件庫中了。然后,就觸發(fā)執(zhí)行其后跟的規(guī)則或規(guī)則組,否則就返回繼續(xù)執(zhí)行。
以上幾種實(shí)現(xiàn)機(jī)制各有利弊,—般說,后一種軟硬件結(jié)合的途徑對(duì)于在單處理器上實(shí)現(xiàn)較簡(jiǎn)單的系統(tǒng)可能是頗具吸引力的。專門分配一個(gè)處理器來實(shí)現(xiàn)事件監(jiān)視系統(tǒng),自然對(duì)一些大型系統(tǒng)而言是比較理想的。
4 具體實(shí)現(xiàn)舉例
數(shù)據(jù)庫管理系統(tǒng)使用微軟公司的SQL Server,控制系統(tǒng)的主程序使用C++實(shí)現(xiàn),對(duì)數(shù)據(jù)庫的操作使用ADO技術(shù)來實(shí)現(xiàn)。ADO(ActiveX數(shù)據(jù)對(duì)象)是Microsoft面向?qū)ο蟮臄?shù)據(jù)庫訪問新技術(shù),該技術(shù)基于COM組件,具有諸多優(yōu)點(diǎn),如跨語言、跨平臺(tái)、跨操作系統(tǒng)等,適用于所有非Visual C++ OLE DB訪問。ADO是一個(gè)數(shù)據(jù)庫編程模塊,它允許OLE DB從多種語言中訪問,易于使用,速度快,內(nèi)存支出少和磁盤遺跡小。有關(guān)ADO技術(shù)在很多資料當(dāng)中都有相關(guān)介紹,這里就不詳細(xì)介紹了。
以自主水下潛器(AUV)定深PID多規(guī)則切變控制來舉例,實(shí)現(xiàn)示意圖如圖2所示。AUV做定深運(yùn)動(dòng)的時(shí)候會(huì)根據(jù)不同的使命及海況做不同姿態(tài)的定深運(yùn)動(dòng),高速的時(shí)候通常使用升降舵就可以很容易的實(shí)現(xiàn);低速的時(shí)候由于舵效不明顯,通常使用垂直槽道推進(jìn)器下拉從而使AUV下潛;有的時(shí)候?yàn)榱送瓿商囟ㄊ姑覀冃枰狝UV做快速定深、常規(guī)定深或更復(fù)雜的定深運(yùn)動(dòng)等等,當(dāng)遇到以上這些情況時(shí)AUV會(huì)通過事件監(jiān)視器來監(jiān)視決策層的使命事件以及海況等等參數(shù),查詢控制規(guī)則庫并且檢索與事件匹配的PID定深控制規(guī)則或者控制參數(shù),然后與對(duì)應(yīng)控制算法進(jìn)行函數(shù)封裝后傳遞給控制器執(zhí)行層進(jìn)行AUV定深運(yùn)動(dòng)控制。PID控制對(duì)應(yīng)的有三個(gè)屬性:Kp、Ki、Kd,這樣就可以實(shí)現(xiàn)一個(gè)控制算法可以選擇多種控制參數(shù)組,從而形成多種控制策略來滿足AUV定深運(yùn)動(dòng)控制對(duì)多種定深規(guī)則的切變換調(diào)用。當(dāng)定深PID規(guī)則庫建起來的時(shí)候可以針對(duì)不同的定深規(guī)則對(duì)規(guī)則庫參數(shù)進(jìn)行規(guī)則的添加、修改、刪除、查詢檢索等功能。
[align=center]
圖2. AUV定深PID控制舉例[/align]
5 結(jié)束語
主動(dòng)性功能對(duì)各種過程控制系統(tǒng)是非常重要的。利用面向?qū)ο蠹夹g(shù)及AI技術(shù)實(shí)現(xiàn),增加了規(guī)則的知識(shí)表達(dá)能力,使其表達(dá)復(fù)雜事件及復(fù)雜操作的能力更加強(qiáng)大,同時(shí)也提高了系統(tǒng)規(guī)則推理機(jī)的工作效率。因?yàn)楹芏嗫刂葡到y(tǒng)要求其中的應(yīng)用軟件、數(shù)據(jù)采集、控制反饋等具有高度的實(shí)時(shí)性、安全性、可靠性、容錯(cuò)性和交互性。主動(dòng)性功能雖然表現(xiàn)形式各不相同,但通過主動(dòng)數(shù)據(jù)庫提供的主動(dòng)機(jī)制可以以統(tǒng)一的機(jī)制來實(shí)現(xiàn)。本文在自主水下潛器(AUV)系統(tǒng)水下工作自主控制系統(tǒng)的設(shè)計(jì)中充分考慮系統(tǒng)的主動(dòng)需求,利用主動(dòng)數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)AUV控制系統(tǒng)的主動(dòng)功能。 規(guī)則庫中每條規(guī)則名稱都是專業(yè)術(shù)語,避免了產(chǎn)生規(guī)則名沖突,在檢索調(diào)用的時(shí)候速度很快、易于操作,從而滿足控制器對(duì)多控制規(guī)則的實(shí)時(shí)需求。避免了從前要編寫大量的不同的控制規(guī)則算法子程序進(jìn)行調(diào)用,減少了整個(gè)系統(tǒng)的資源占用量。解決了從前控制規(guī)則單一的問題,使AUV控制系統(tǒng)更合理地實(shí)地在線控制,為現(xiàn)場(chǎng)作業(yè)提供良好的工作環(huán)境。
參考資料:
[1]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論(第三版).北京:高等教育出版社,2000.2
[2]周志達(dá),吳鶴齡,林國璋,高峰.主動(dòng)面向?qū)ο髷?shù)據(jù)庫系統(tǒng)中主動(dòng)規(guī)則的研究.北京理工大學(xué)學(xué)報(bào),1998年12月,第38卷 第6期