摘 要:無人機(jī)實(shí)時飛行仿真是無人機(jī)研制中不可缺少的一個過程,但是對于小型無人機(jī)來講,開發(fā)一個完整的實(shí)時飛行仿真系統(tǒng)往往花費(fèi)巨大。詳細(xì)論述基于xPC Target的實(shí)時仿真系統(tǒng)設(shè)計(jì),在此基礎(chǔ)上,利用FlightGear飛行模擬器實(shí)現(xiàn)了無人機(jī)的三維實(shí)時可視化顯示。該仿真系統(tǒng)開發(fā)簡單,構(gòu)造靈活,成本低,能夠使開發(fā)人員將更多的精力花費(fèi)在飛行控制算法研究上。
關(guān)鍵詞:飛行仿真; 無人機(jī); FlightGear; xPC Target
中圖分類號:TP274 文獻(xiàn)標(biāo)識碼:A
文章編號:1004-373X(2010)13-0024-03
FlightGear Applied to Flight Real-time Simulation of UAV
ZHAI Bin, XUE Ming-xu
(The 27th Research Institute, China Electronics Technology Group Corporation, Zhengzhou 450007, China)
Abstract: The real-time simulation is an important process in development of an unmanned aerial vehicle(UAV). However, a custom-built simulation system commonly associated with small UAVs are cost prohibitive. The design of a real-time simulation system based on xPC Target is described. The 3D visualization real-time display of UAVs was achieved with the FlgihtGear flight simulator. This simulation system is feasible, valid and economic. It can reduce development time and costs, saving more time for the designers to focus on the algorithm of flight control.
Keywords: flight simulation; UAV; FlightGear; xPC Target
隨著無人機(jī)被越來越多的應(yīng)用在軍事和民用領(lǐng)域里,參與無人機(jī)研制的個人和團(tuán)隊(duì)也在迅猛增加。而在無人機(jī)的研制過程中,飛行仿真是必不可少的一個環(huán)節(jié),通過飛行仿真可以對無人機(jī)的操縱性、穩(wěn)定性和自動駕駛儀性能進(jìn)行有效的驗(yàn)證,也可以對操作手進(jìn)行輔助訓(xùn)練,降低飛行風(fēng)險(xiǎn)[1-2]。本文提出了一種簡單有效的無人機(jī)實(shí)時仿真系統(tǒng),首先利用Simulink構(gòu)建仿真模型,然后通過xPC實(shí)時運(yùn)行仿真模型并與自動駕駛儀構(gòu)成硬件在回路的實(shí)時仿真環(huán)境,最后通過開源飛行模擬器軟件FlightGear進(jìn)行場景顯示。
1 無人機(jī)飛行仿真框架
無人機(jī)飛行仿真系統(tǒng)主要由無人機(jī)運(yùn)動模擬、自動駕駛儀、視景仿真顯示等部分組成,系統(tǒng)總體結(jié)構(gòu)如圖1所示。
在該結(jié)構(gòu)中,無人機(jī)運(yùn)動模擬通過兩部分實(shí)現(xiàn):一是利用Simulink搭建的無人機(jī)六自由度仿真模型;二是利用xPC目標(biāo)機(jī)來實(shí)現(xiàn)的實(shí)時仿真模型。無人機(jī)運(yùn)動模擬節(jié)點(diǎn)通過接收自動駕駛儀的控制指令,真實(shí)地模擬無人機(jī)當(dāng)前的運(yùn)動狀態(tài),并通過串口將無人機(jī)的狀態(tài)反饋到自動駕駛儀,從而實(shí)現(xiàn)完整的控制回路。
圖1 無人機(jī)飛行仿真系統(tǒng)結(jié)構(gòu)
自動駕駛儀采用真實(shí)地?zé)o人機(jī)控制器來實(shí)現(xiàn),通過與無人機(jī)運(yùn)動模擬節(jié)點(diǎn)的交互真實(shí)地反映出無人機(jī)的控制狀態(tài)。
視景顯示部分則通過流行的飛行模擬軟件FlightGear來實(shí)現(xiàn),由于采用了UDP網(wǎng)絡(luò)協(xié)議,能夠滿足大規(guī)模數(shù)據(jù)傳送的實(shí)時性。
2 實(shí)時仿真環(huán)境
飛行仿真系統(tǒng)中由于加入了自動駕駛儀,屬于硬件在回路仿真系統(tǒng),因此要求整個系統(tǒng)必須具備很高的實(shí)時性才能保證系統(tǒng)各個節(jié)點(diǎn)的一致性,從而保證仿真系統(tǒng)的真實(shí)性。本文采用xPC目標(biāo)機(jī)來實(shí)現(xiàn)無人機(jī)運(yùn)動模擬的實(shí)時性。
2.1 上位機(jī)-目標(biāo)機(jī)通信
xPC Target是MathWorks公司提供和發(fā)行的一個基于Real Time Workshop(RTW)體系框架的附加產(chǎn)品,是一種用于產(chǎn)品原型開發(fā)、數(shù)據(jù)采集、測試和配置實(shí)時系統(tǒng)的PC機(jī)解決途徑[3]。xPC Target采用了上位機(jī)-目標(biāo)機(jī)的技術(shù)途徑,上位機(jī)主要運(yùn)行Simulink及其他模型,并且需要安裝編譯器。目標(biāo)機(jī)則實(shí)時運(yùn)行宿主機(jī)編譯生成的代碼。xPC Target提供了一個高度精簡的實(shí)時內(nèi)核運(yùn)行在目標(biāo)機(jī)上,實(shí)時內(nèi)核采用32位保護(hù)模式[4]。上位機(jī)和目標(biāo)機(jī)通過網(wǎng)絡(luò)或串口連接進(jìn)行通信,其工作模式如圖2所示。
圖2 xPC Target 工作模式
在主機(jī)上運(yùn)行Matlab,Simulink,RTW和C編譯器作為開發(fā)環(huán)境,可以生成實(shí)時應(yīng)用程序運(yùn)行在一臺xPC Target實(shí)時內(nèi)核的目標(biāo)機(jī)上。xPC Target實(shí)時內(nèi)核保證了運(yùn)行在PC硬件上實(shí)時程序的穩(wěn)定性??梢酝ㄟ^Matlab、命令行或者用戶主機(jī)的圖形界面(GUI)、標(biāo)準(zhǔn)的網(wǎng)絡(luò)瀏覽器或者目標(biāo)機(jī)命令行來控制目標(biāo)機(jī)上程序的執(zhí)行。在程序運(yùn)行期間,可以交互地改變模型參數(shù)并且迅速地獲取、觀察信號或者把它們保存起來做后續(xù)處理。通過目標(biāo)GUI能直接觀察目標(biāo)機(jī)上的信號和狀態(tài)信息。在目標(biāo)機(jī)上運(yùn)行xPC Target對已經(jīng)安裝在目標(biāo)機(jī)上的任何軟件不會產(chǎn)生影響,一旦重新啟動了目標(biāo)機(jī),就可以恢復(fù)成為一臺運(yùn)行Windows,Linux或者其他計(jì)算機(jī)操作系統(tǒng)和應(yīng)用軟件的計(jì)算機(jī)。
2.2 xPC目標(biāo)機(jī)制作
xPC目標(biāo)機(jī)的制作非常簡單,本文以Matlab 7.3為例介紹制作過程。在Matlab命令窗口輸入xpcexplr,出現(xiàn)xPC Target Explorer界面。xPC目標(biāo)機(jī)與主機(jī)的通訊有兩種模式:RS 232串行口和TCP/IP網(wǎng)絡(luò)接口,圖3為TCP/IP網(wǎng)絡(luò)接口的設(shè)置界面。
下面對各參數(shù)項(xiàng)進(jìn)行說明:
Host target communication:選擇TCP/IP或者RS 232模式;
Target PC IP address:設(shè)置目標(biāo)機(jī)的IP地址;
TCP/IP target port:設(shè)置目標(biāo)機(jī)通訊端口;
LAN subnet mask address:設(shè)置目標(biāo)機(jī)子網(wǎng)掩碼;
TCP/IP gateway address:設(shè)置網(wǎng)關(guān)地址;
TCP/IP target drive:對支持的網(wǎng)卡進(jìn)行設(shè)置,xPC僅僅對部分網(wǎng)卡支持,NE2000,SMC91C9X,I82559,RTLANCE;
TCP/IP target bus:設(shè)置網(wǎng)卡總線類型,PCI和ISA。如果選擇ISA選項(xiàng)則還要設(shè)置板卡地址(ISA memory)和中斷號(ISA IRQ number);
如果采用RS 232通訊模式,則僅需要設(shè)置串口端號(Host port)和波特率(Baud rate)。
圖3 xPC目標(biāo)機(jī)配置界面
xPC目標(biāo)機(jī)的配置主要有兩部分:一是目標(biāo)機(jī)實(shí)時內(nèi)核啟動時的配置;另一部分是上位機(jī)的代碼編譯下載配置選項(xiàng)。 當(dāng)以上設(shè)置完成后可以制作xPC目標(biāo)機(jī)的啟動盤,選擇TargetPC下的Configuration項(xiàng),進(jìn)行xPC目標(biāo)機(jī)啟動盤的制作[5]。
xPC目標(biāo)機(jī)的啟動模式有三種:軟盤啟動(BootFloppy)、加載DoS啟動(DoSLoader)、單機(jī)模式(StandAlone)。
無論選擇哪一種啟動模式,都需要生成一張啟動軟盤,但是目前軟驅(qū)已逐漸淘汰,即使主機(jī)配備了軟驅(qū),軟盤讀/寫時的損壞率也極高。為了避免這種情況,這里建議采用DOSLoader模式,當(dāng)生成啟動軟盤后,打開軟盤應(yīng)當(dāng)有以下幾個文件:
autoexec.bat;
checksum.dat;
xpcboot.com;
xpctgo1.rtb。
如果選擇生成啟動盤的模式不同,則生成的文件名稱會不一樣。autoexec.bat是DoS啟動后加載的自動執(zhí)行文件,打開該文件會發(fā)現(xiàn)里面有如下的內(nèi)容:
xpcboot xpctgo1.rtb
由此可以看出DoS系統(tǒng)啟動后,需要調(diào)用該命令進(jìn)入xPC系統(tǒng),xpcboot.com是啟動xPC必需的可知性文件,xpcgo1.rtb是xpc配置文件,checksum.dat是校驗(yàn)文件。將啟動軟盤的內(nèi)容復(fù)制到xPC目標(biāo)機(jī),并且通過設(shè)置autoexec.bat文件使DoS啟動后直接調(diào)用xPC實(shí)時內(nèi)核,這樣在每次啟動目標(biāo)機(jī)時就不必插入啟動盤,可以免去了軟盤易損壞的麻煩。
2.3 目標(biāo)機(jī)和設(shè)備的通信
xPC Target工具箱提供了多種類型的硬件板卡驅(qū)動,接口豐富包括A/D,D/A,數(shù)字輸入,數(shù)字輸出,RS 232,CAN等。盡管如此,在實(shí)際應(yīng)用中會采用一些不被xPC目標(biāo)庫支持的板卡,這是就需要自己編寫相應(yīng)的驅(qū)動程序。在編寫驅(qū)動程序時,可以參考Matlab幫助中給出的模板,需要注意的是,對于板卡的地址和寄存器的讀寫必須嚴(yán)格遵循板卡說明手冊,在編寫完驅(qū)動程序后在Matlab命令窗口調(diào)用mex命令將其編譯成動態(tài)鏈接庫供Simulink使用。
3 FlightGear應(yīng)用接口
在飛行仿真系統(tǒng)中,實(shí)時虛擬場景顯示是其中重要的一環(huán),通過虛擬場景可以很好地提高系統(tǒng)人機(jī)交互性能。虛擬場景交互軟件有很多種途徑可以實(shí)現(xiàn)[6],本文采用了開源軟件FlightGear來實(shí)現(xiàn)無人機(jī)虛擬場景的顯示,其主要優(yōu)點(diǎn)是:
代碼開放,可以根據(jù)需要進(jìn)行靈活的二次開發(fā);
場景逼真,包含了大量的飛機(jī)模型和地形文件;
接口簡單,僅通過UDP協(xié)議就可以實(shí)現(xiàn)交互。
3.1 FlightGear配置
盡管FlightGear自身包含了許多動力學(xué)模型[7],但是本文僅利用了其視景顯示的功能,因此僅僅需要將FlightGear的默認(rèn)設(shè)置進(jìn)行如下更改:
FDM設(shè)為external,表示動力模型來自外部輸入;
輸入輸出按圖4設(shè)置,其中Protocol設(shè)置為native-fdm;Medium設(shè)置為socket;Direction設(shè)置為in;端口選擇5500;選擇UDP模式。
圖4 FlightGear通信協(xié)議設(shè)置
在按上面的設(shè)置運(yùn)行FlightGear后就可以接收來自網(wǎng)絡(luò)的無人機(jī)運(yùn)動狀態(tài)信息,從而驅(qū)動視景進(jìn)行實(shí)時變換。
3.2 FlightGear接口描述
為了通過外部命令驅(qū)動FlightGear運(yùn)行,需要按照FlgihtGear定義的網(wǎng)絡(luò)通訊協(xié)議編寫接口驅(qū)動,以FlightGear 0.98為例,需要28個變量的信息[8],如表1所示。
按照這28個變量進(jìn)行編程,并通過UDP協(xié)議發(fā)送到FlightGear節(jié)點(diǎn),即可實(shí)現(xiàn)和FlightGear的交互[9-10],其運(yùn)行場景圖如圖5所示。
4 結(jié) 語
構(gòu)建了一種簡單方便的無人機(jī)實(shí)時仿真系統(tǒng),并通
過開發(fā)接口驅(qū)動與FlightGear視景軟件進(jìn)行交互。此系統(tǒng)的優(yōu)點(diǎn)是開發(fā)簡單、構(gòu)造靈活,可以使開發(fā)人員將主要精力放在飛行控制系統(tǒng)的開發(fā)上,避免了編寫大量輔助代碼的工作,大大節(jié)約了系統(tǒng)開發(fā)時間。
參考文獻(xiàn)
[1]JUNG,TSIOTRAS P. Modelling and hardware-in-the loop simulation for a small unmanned aerial vehicle[J]. In AIAA Infotech at Aerospace, 2007, 219: 2756-2763.
[2]JUNG, LEVY E J, ZHOU D, et al. Design and development of a low-cost test-bed for undergraduate education in UAVs[C]//IEEE Proceedings of the 44th IEEE Confe-rence on Decision and Control. Seville: IEEE, 2005: 2739-2744.
[3]The MathWorks. Inc.. Matlab xPC target user′s guide[ M] . [ S.l.] : The MathWorks Inc., 2001.
[4]楊滌.系統(tǒng)實(shí)時仿真開發(fā)環(huán)境與應(yīng)用[M].北京:清華大學(xué)出版社,2000.
[5]謝晗.基于xPC目標(biāo)的實(shí)時仿真技術(shù)及實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,22(12):200-202.
[6]CERVIN B, MILLS C. A 3D interface for an unmanned aerial vehicle[R]. Auckland: University ofAuckland, 2004.
[7]DETERS R W, DIMOCK G A, SELIG M S. Icing encounter flight simulator with an integrated smart icing system[J]. AIAA Modeling and Simulation Technologies Confe-rence, 2002(8): 2002-4599.
[8]FlightGear Inc.. FlightGear homepage[EB/OL]. [ 2010-03-11] . http://www.flightgear.Org,2010.
[9]PRICE E R, EGAN G K. Real-time UAV visualization using a flight simulator[J]. AIAC, 2007,12 (3): 16-22.
[10]黃華,徐幼平,鄧志武.基于Flightgear模擬器的實(shí)時可視化飛行仿真系統(tǒng)[J].系統(tǒng)仿真學(xué)報(bào),2007,19(19):4421-4423.