喬曉慧 董云峰
北京航空航天大學宇航學院,北京100191
現代仿真系統的程序部署規模日益擴大,尤其是分布式系統仿真[1],更是越來越復雜,并且需要大量重復的仿真過程,人工操作方式效率過低,且耗費了大量的人力、物力和財力。而自動化仿真技術可以設計實現長期管理期間有人值守維護、無需人員操作的全新自動化流程,大大提高仿真效率和準確度。
在實現自動化的過程中,若仿真系統中應用到第三方軟件,且該軟件有二次編程的接口,可以通過編寫程序直接實現自動化仿真。文獻[2]針對這種情況已經實現了自動化仿真。但對于仿真系統里有第三方軟件但無二次編程接口的情況,目前尚無公開文獻提及。本文針對這種情況,提出了一種以圖片識別為關鍵技術的自動化仿真技術,并以基于ADAM 和Matlab/Simulink 的紅外導引頭仿真系統為例,實現了紅外導引頭仿真過程中的仿真參數和系統配置的自動設置,極大的提高了仿真效率。
在利用HLA 框架的基礎上搭建自動化操作平臺框圖如圖1。

圖1 自動化操作平臺系統框圖
其中,操作節點1,操作節點2,…,操作節點N分布在各個不同的仿真節點上,充當操作代理的角色,各個操作節點上存儲著一個可執行程序的集合。總控制臺由一臺獨立的計算機構成,配備有語音輸入設備和數據手套輸入設備,同時總控制臺還和一個數據庫后臺相連接。整個系統啟動后,操作人員從總控制臺通過不同設備發出命令,通過網絡將命令發送到各個操作節點,操作節點接收到命令后調度相應的可執行程序來完成所要求的任務。
對計算機當前運行狀態的感知、識別是自動操作技術的基礎,主要包括:匹配屏幕上出現的圖像和識別指定位置的文字內容。對于這兩項功能,現在均有成熟的軟件可以利用:對于匹配屏幕上出現的圖像可以采用Intel 公司的開源軟件包OpenCV,而識別屏幕文字則可采用開源的FreeOCR。
OpenCV[3-4]是由Intel 公司資助的開源計算機視覺庫。它由一系列C 函數和少量C ++類構成,實現圖像處理和計算機視覺方面的很多通用算法,包括300 多個C/C ++ 函數的跨平臺的中、高層API。它不依賴于其它的外部庫,但也可以使用某些外部庫。對非商業應用和商業應用都是免費的。OpenCV 具有的強大功能,大體如下:
1)對圖像數據的操作,包括分配,釋放,復制,設置和轉換數據;
2)對圖像和視頻的輸入輸出,指文件和攝像頭做為輸入,圖像和視頻文件作為輸出;
3)具有基本的數字圖像處理能力,如可進行濾波,邊緣檢測,角點檢測,采樣和插值,色彩轉換,形態操作,直方圖和圖像金字塔等操作;
4)可對各種結構進行分析,包括連接部件分析,輪廓處理,距離變換,各種距地計算,模板匹配,Hough 變換,多變形逼近,直線擬合,橢圓擬合和Delaunay 三角劃分等;
5)對目標的識別,可采用特征算法和陰馬爾科夫模型法。
具有基本的GUI 的功能,包括圖像和視頻的顯示,鍵盤和鼠標事件處理以及滾動條等。
在自動化操作技術中,對計算機發出各種命令是必不可少的技術,主要包括模擬鼠標點擊和模擬鍵盤輸入。在Windows 平臺下,有成熟可靠的API接口來實現這些功能。對于模擬鼠標點擊有2 種技術手段:SendInput 模擬鼠標輸入和PostMessage 發送鼠標點擊消息;而對于模擬鍵盤輸入可以采用3種技術手段:SendInput 模擬鍵盤輸入,PostMessage發送鍵盤輸入消息和使用ClipBoard 剪貼板。
自動化操作技術主要思路是靠編寫程序來感知屏幕圖像,并進一步判斷控制對象軟件的運行狀態,在此基礎上對控制對象軟件進行模擬鼠標鍵盤的輸入。而實際控制對象軟件的運行環境是非常復雜的,軟件在運行過程中發生各種各樣的錯誤是不可避免的,因此自動化操作技術必須解決容錯問題,本文提供了操作確認技術來解決容錯問題,主要包括消極確認和積極確認。
在自動化操作技術中往往需要多個程序模塊進行協調工作,而且工作方式是一個服務節點同時為多個客戶端節點提供操作服務,這就需要一種合適的能同時提供一對一、一對多的通信方式,在Windows 平臺下,Mailslot 通信技術能較好的滿足這一要求。Mailslot 通信機制與普通電子郵件機制類似,各個通信節點均有自身唯一的名稱和消息隊列,只要知道對方的名稱,即可向其發送消息。
紅外導引頭仿真工程的控制回路采用Matlab軟件的Simulink 建模,被控對象模型在ADAMS 軟件中實現。ADAMS 軟件提供了和Matlab 軟件聯合仿真的信息交換機制,事先確定好聯合仿真時2個軟件之間需要交互的信息,然后在結構建模時定義出相應的狀態變量,通過軟件接口即可實現仿真過程中的信息交換,這樣完整的控制回路閉環模型得以建立。在這樣的基礎上,在利用實驗室現有的圖像匹配與動作執行服務器獲取圖片和圖片信息后,實現自動化只需要按照圖2 流程建立程序。

圖2 實現自動化仿真流程圖
3.1.1 建立客戶端與服務節點的通信管道
在本文中我們使用郵件槽為通信方式,Mailslot通信技術能較好的提供一對一、一對多的通信方式,使服務節點能為客戶端節點提供很好的操作服務。
本文中的實現方式如下:

Missle 文件夾為存放圖片的文件夾,Missle. ini文件中記錄了各個圖片的具體屬性,例如:搜索區域,顏色區分,點擊偏移等。該文件是在截取圖片的過程中由截圖工具獲得的。
3.1.2 執行打開操作
在實現自動化的過程中,要執行打開操作的地方主要有打開Matlab 編輯窗口,打開對應的M 文件以及模型文件。
首先打開Matlab 編輯窗口,系統使用函數ShellExecute 實現。
ShellExecute 函數是Windows 系統內函數,可以根據要打開的文件路徑來實現打開文件操作。
具體實現語句為:
ShellExecute(NULL ,_T("open")," C:ProgramFiles MATLAB R2006b bin matlab. bat",NULL,NULL,SW_SHOW);
然后執行打開M 文件的操作。在成功打開MATLAB 軟件后,在編輯窗口中直接輸入打開文件指令,打開文件。然后使用函數InputChar,Function-InputChar 模擬鍵盤操作。
具體實現語句如下:

InputChar 函數中第一個和第二個參數為要輸入點的中心坐標,由SendInPut 獲取,該軟件可以方便快捷地獲得相對屏幕左上角的以分辨率為單位的屏幕坐標,即屏幕左上角的坐標為(0,0)。
具體實現語句如下:MoveWindowTo(ptLeftTop,lWidth,lHeight);
FunctionInputChar("ENTER")。
LockWindow("Editor")是鎖定新打開的Editor窗口獲得窗口句柄,以便使下面的操作轉換到對Editor 窗口的操作。
FunctionInputChar("F5")模擬快捷鍵F5 運行SeekerTracking.m 文件。
LockWindow("MATLAB")鎖定MATLAB 窗口,獲得窗口句柄,以便使以下操作轉換到對MATLAB窗口的操作。
在成功實現打開Matlab 軟件以及M 文件之后,需要打開模型文件,具體語句如下:

運行模型文件就要成功點擊運行按鈕。具體實現語句如下:

在這個過程中采用了自動容錯機制,具體語句如下:

在這個過程中多次應用了容錯機制。這種容錯機制采用了進一步判斷控制對象軟件的運行狀態來自動化容錯的思想。例如本系統中在成功點擊了運行按鈕后,運行按鈕會變成暫停按鈕,這種狀態的變化就可以作為點擊運行成功與否的判斷依據。
3.1.3 修改工況并進行運算
飛行器飛行的速度工況是由幾個方向的速度耦合得到的,自動化仿真系統的目標是要實現能自動讀入多種工況,并依據讀入的信息自動進行修改。
以修改一種工況為例:
3+2* sin(2* pi* u(1)+1.2* pi)+4* cos(2*pi* u(1)+1.2* pi)
首先雙擊打開飛行模塊,雙擊操作由連續使用兩次ClickOnePhoto 來實現。雙擊要修改的速度模塊(以先修改X 方向為例),使用LockWindow("Function Block Paramters")獲得新打開的窗后句柄,使以下操作都是針對新打開的窗口。然后由語句InputChar(58,143,"3 +2* sin(2* pi* u(1)+1.2* pi)+4* cos(2* pi* u(1)+1.2* pi)")實現填寫工況,如圖3。

圖3 修改x 方向速度
在表達式框中輸入新的速度表達式,使用語句ClickOnePhoto("OK",300)確定輸入并關閉函數窗口,再以同樣的方法改變Z 軸方向速度,直到整個自動化仿真過程完成。
文中提出了基于圖片識別的自動化技術,并以實現紅外導引頭系統仿真自動化為例,進行了詳細說明。這對于分布式仿真,大規模作戰仿真系統這種有高可靠性要求的項目更是必不可少,能大大減少人工操作帶來的錯誤,促進相應的實際研究項目的順利進行。
[1]陳家照,何全明,關正西.基于HLA 的某導彈發射訓練仿真系統開發[J].系統仿真學報,2006,18(12):3393-3402.(Chen Jiazhao,He Quanming,Guan Zhengxi. Development of Missile Launching Training Simulation System Based on HLA[J]. Journal of System Simulation,2006,18(12):3393-3402.)
[2]李志強,張向剛. 基于虛擬儀器的電視導引頭自動測試系統的設計[J]. 儀器儀表學報,2008,29(4):662-664.(Li Zhiqiang,Zhang Xianggang.Design of the Automatic Test System on Technology of the Virtual Instrument for Television Homing Seeker[J].Chinese Journal of Scientific Instrument,2008,29(4):662-664.)
[3]秦小文,溫志芳,喬維維. 基于OpenCV 的圖像處理[J].電子測試,2011,7(7):39-40.(Qin Xiaowen,Wen Zhifang,Qiao Weiwei.Image Processing Based on OpenCV[J].Electronic Test ,2011,7(7):39-40.)
[4]黎松,平西建,丁益洪.開放源代碼的計算機視覺類庫OpenCV 的應用[J]. 計算機應用與軟件,2005,8(8):134-135.(Li Song,Ping Xijian,Ding Yihong.Application of Open Source Computer Vision Library[J]. Computer Applications and Software,2005,8(8):134-135.)