張?jiān)疲迺约?/p>
(陸軍工程大學(xué)石家莊校區(qū),石家莊 050003)
半實(shí)物;無(wú)人機(jī);天線控制系統(tǒng);模擬器
無(wú)人化是當(dāng)今高技術(shù)、信息化戰(zhàn)場(chǎng)的發(fā)展趨勢(shì)之一,無(wú)人機(jī)在戰(zhàn)場(chǎng)感知、通信中繼、目標(biāo)定位、精確打擊和毀傷評(píng)估方面的作用尤為突出。目前,在無(wú)人機(jī)教學(xué)中存在一些問(wèn)題,影響了教學(xué)的效率。例如,無(wú)人機(jī)地面天線結(jié)構(gòu)復(fù)雜,天線體及天線座的體積較大,需要空間展開(kāi),并且需要多席位協(xié)同操作,因此操作訓(xùn)練只能在室外,受天氣、場(chǎng)地、人員等條件的限制。加之無(wú)人機(jī)裝備價(jià)格昂貴、配裝少,但學(xué)員人數(shù)多,導(dǎo)致學(xué)員課上裝備摸得少,課下裝備摸不著,學(xué)習(xí)訓(xùn)練效率低。針對(duì)這一問(wèn)題,本文實(shí)現(xiàn)了實(shí)物天線控制柜對(duì)虛擬天線的控制,并及時(shí)返回控制數(shù)據(jù),采用Unity3D軟件對(duì)地面天線進(jìn)行仿真建模,通過(guò)串口實(shí)現(xiàn)天線控制柜控制指令與虛擬天線動(dòng)作的交互。利用該半實(shí)物無(wú)人機(jī)天線控制系統(tǒng)模擬器進(jìn)行教學(xué),方便學(xué)員單人練習(xí)和課下自學(xué)。
半實(shí)物無(wú)人機(jī)天線控制系統(tǒng)模擬器組成包括虛擬天線軟件和實(shí)物天線控制柜。以無(wú)人機(jī)地面天線實(shí)物為原型,利用建模軟件構(gòu)建虛擬天線三維模型,然后將模型導(dǎo)入U(xiǎn)nity3D引擎進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)虛擬天線對(duì)實(shí)物天線控制柜操作指令的響應(yīng)與信息反饋。
半實(shí)物無(wú)人機(jī)天線控制系統(tǒng)模擬器系統(tǒng)流程分為實(shí)物天線控制柜操作指令數(shù)據(jù)發(fā)送流程、虛擬天線反饋數(shù)據(jù)接收流程,如圖1所示。
圖1 操作指令數(shù)據(jù)發(fā)送和反饋數(shù)據(jù)接收流程
半實(shí)物無(wú)人機(jī)天線控制系統(tǒng)模擬器虛擬天線采用Unity3D軟件實(shí)現(xiàn),如圖2所示。
為了使虛擬天線能夠完全模擬實(shí)物天線的所有操作動(dòng)作,我們構(gòu)建模型時(shí)盡量細(xì)化,按照操作動(dòng)作邏輯打包父子關(guān)系,如圖3所示。
圖2 虛擬天線
(1)虛擬天線軟件接收數(shù)據(jù)
點(diǎn)擊這8個(gè)開(kāi)關(guān)按鈕發(fā)送相關(guān)指令,經(jīng)RS-232串口送入虛擬天線軟件中進(jìn)行處理,其接收數(shù)據(jù)格式為:數(shù)據(jù)為16進(jìn)制,每幀數(shù)據(jù)5個(gè)字節(jié),每字節(jié)8位。第一字節(jié)(RecvData[0])7E 幀頭;第二字節(jié)(RecvData[2])為操縱臺(tái)上按鈕的數(shù)據(jù)接收;第三字節(jié)(RecvData[3])為方位數(shù)據(jù);第四字節(jié)(RecvData[4])為俯仰數(shù)據(jù);第五字節(jié)(RecvData[5])FF幀尾。如表1所示:
表1 虛擬天線軟件接收數(shù)據(jù)的字節(jié)表
圖3 虛擬天線模型的父子關(guān)系
要實(shí)現(xiàn)虛擬天線與實(shí)物天線控制柜的數(shù)據(jù)交互,就要實(shí)現(xiàn)串口數(shù)據(jù)的接收、處理與發(fā)送。
實(shí)物操縱臺(tái)上設(shè)有8個(gè)開(kāi)關(guān)按鈕,每個(gè)開(kāi)關(guān)按鈕都有相應(yīng)的指示燈。點(diǎn)擊這些開(kāi)關(guān)按鈕發(fā)送相關(guān)指令,經(jīng)RS-232串口送入虛擬天線軟件進(jìn)行相應(yīng)的處理,處理后的信號(hào)經(jīng)RS-232串口返回操縱臺(tái),使面板上相應(yīng)的指示燈點(diǎn)亮,顯示該時(shí)刻虛擬天線的方位和俯仰數(shù)據(jù),具體工作流程如圖4所示。
串口接收時(shí)要對(duì)幀頭、幀尾進(jìn)行判斷,如果判斷接收的數(shù)據(jù)幀頭和幀尾分別為十六進(jìn)制的7E和FF,則判斷為有效幀。若為有效幀,則分別讀取第二字節(jié)、第三字節(jié)和第四字節(jié)的數(shù)據(jù)。
(2)虛擬天線軟件發(fā)送數(shù)據(jù)
虛擬天線軟件對(duì)操縱臺(tái)發(fā)送的控制數(shù)據(jù)格式為:數(shù)據(jù)為16進(jìn)制,每幀數(shù)據(jù)10個(gè)字節(jié)(從byteSend[0]到byteSend[9]),每字節(jié) 8 位。第一字節(jié)(byteSend[0])和第二字節(jié)(byteSend[1])為幀頭;第三字節(jié)(byteSend[2])為向操縱臺(tái)上8個(gè)開(kāi)關(guān)按鈕的反饋數(shù)據(jù);第四字節(jié)(by?teSend[3])控制俯仰數(shù)據(jù)低8位的數(shù)碼顯示;第五字節(jié)(byteSend[4])控制俯仰數(shù)據(jù)高8位的數(shù)碼顯示;第六字節(jié)(byteSend[5])控制方位數(shù)據(jù)低8位的數(shù)碼顯示;第七字節(jié)(byteSend[6])控制方位數(shù)據(jù)高8位的數(shù)碼顯示;第八字節(jié)(byteSend[7])控制“高限”、“低限”指示燈的亮滅;第九字節(jié)(byteSend[8])為開(kāi)關(guān)按鈕的反饋數(shù)據(jù);第十字節(jié)(byteSend[9])為校驗(yàn)和。如表2所示。
表2 虛擬天線軟件發(fā)送數(shù)據(jù)的字節(jié)表
圖4 8個(gè)開(kāi)關(guān)按鈕與虛擬天線軟件交互的流程圖
串口發(fā)送時(shí)要對(duì)幀頭(byteSend[0]=0xEB和byte?Send[1]=0x90)、幀尾的校驗(yàn)位進(jìn)行判斷,如果判斷接收的數(shù)據(jù)幀頭和幀尾分別為十六進(jìn)制的byteSend[0]=0xEB、byteSend[1]=0x90和byteSend[9]校驗(yàn)和正確,則判斷為有效幀。若為有效幀,則分別讀取第三字節(jié)、第四字節(jié)、第五字節(jié)、第六字節(jié)、第七字節(jié)、第八字節(jié)和第九字節(jié)的數(shù)據(jù)。
當(dāng)按下操縱臺(tái)上的8個(gè)開(kāi)關(guān)按鈕時(shí),軟件會(huì)接收五位幀結(jié)構(gòu)串口數(shù)據(jù)中的第二位,處理后軟件會(huì)發(fā)送十位幀結(jié)構(gòu)中的第三位和第九位,使相應(yīng)指示燈點(diǎn)亮。具體例程如下:
if(RecvData[0]==0x96)
{
byteSend[2]=0x90;
byteSend[8]=0x00;
ComSend();
}
if(RecvData[0]==0x95)
{
byteSend[2]=0x30;
byteSend[8]=0x00;
ComSend();
}
操縱臺(tái)上2個(gè)天線控制旋鈕開(kāi)關(guān),即方位控制手輪和俯仰控制手輪,旋轉(zhuǎn)手輪發(fā)送相應(yīng)控制指令,經(jīng)RS-232串口送入虛擬天線軟件處理,處理后的信號(hào)經(jīng)RS-232串口返回操縱臺(tái),控制面板的數(shù)碼管顯示器和“高限”、“低限”指示燈,具體流程如圖5所示:
(1)虛擬天線軟件接收串口信息
在接收數(shù)據(jù)的五個(gè)字節(jié)幀結(jié)構(gòu)中,第三字節(jié)(RecvData[3])為方位數(shù)據(jù),第四字節(jié)(RecvData[4])為俯仰數(shù)據(jù)。第三位的方位數(shù)據(jù)范圍為00~FF,以80為中間值,操縱方位手輪可以使天線方位順時(shí)針轉(zhuǎn)動(dòng)或逆時(shí)針轉(zhuǎn)動(dòng)。當(dāng)天線方位順時(shí)針轉(zhuǎn)動(dòng)時(shí),數(shù)據(jù)取值范圍為80~FF,當(dāng)天線方位逆時(shí)針轉(zhuǎn)動(dòng)時(shí),數(shù)據(jù)取值范圍為00~80。第四位俯仰數(shù)據(jù)范圍為00~FF,以80為中間值,操縱俯仰手輪可以使天線俯仰向抬頭向轉(zhuǎn)動(dòng)和向低頭向轉(zhuǎn)動(dòng)。當(dāng)天線俯仰向抬頭向轉(zhuǎn)動(dòng)時(shí),數(shù)據(jù)取值范圍為80~FF,當(dāng)天線俯仰向低頭向轉(zhuǎn)動(dòng)時(shí),數(shù)據(jù)取值范圍為00~80。此外,方位和俯仰數(shù)據(jù)在單位時(shí)間內(nèi)(串口一幀數(shù)據(jù)的通訊時(shí)間)的增量大小反映了天線轉(zhuǎn)速的大小,數(shù)據(jù)增速越大,表示天線轉(zhuǎn)速越快。
以天線面向屏幕為方位0度,水平為俯仰0度,將數(shù)據(jù)增量累加得到天線的角度數(shù)據(jù),方位角0~360度,俯仰角-8(352)~+86.8度。方位上連續(xù)轉(zhuǎn)動(dòng)(N圈),俯仰上只在-8(352)~+86.8度范圍內(nèi)轉(zhuǎn)動(dòng)。例程如下:
if(bXz==0x00||bXz==0x80)//不旋轉(zhuǎn)
fXzRate=0.0f;
else if(bXz> 0x80)//順時(shí)針旋轉(zhuǎn)
fXzRate=0.5f*((float)bXz-128.0f)/128.0f;
else if(bXz<0x80)//逆時(shí)針旋轉(zhuǎn),正好為0x80時(shí)不進(jìn)行旋轉(zhuǎn)
fXzRate=((float)bXz-0.0f)/128.0f*(-1.0f);if(bFy==0x00||bFy==0x80)//不俯仰
fFyRate=0.0f;
else if(bFy>0x80)//抬頭向旋轉(zhuǎn)
fFyRate=0.5f*((float)bFy-128.0f)/128.0f;else if(bFy<0x80)//低頭向旋轉(zhuǎn)
fFyRate=((float)bFy-0.0f)/128.0f*(-1.0f);
(2)虛擬天線軟件發(fā)送串口信息
在虛擬天線軟件發(fā)送數(shù)據(jù)的十個(gè)字節(jié)的幀結(jié)構(gòu)中,第四字節(jié)(byteSend[3])為俯仰數(shù)據(jù)低8位,第五字節(jié)(byteSend[4])為俯仰數(shù)據(jù)高 8位,第六字節(jié)(byte?Send[5])為方位數(shù)據(jù)低 8 位,第七字節(jié)(byteSend[6])為方位數(shù)據(jù)高8位。用于控制操縱臺(tái)數(shù)碼管顯示此刻虛擬天線的方位、俯仰信息,使數(shù)碼管顯示的數(shù)據(jù)隨虛擬天線位置的變化而變化。
圖5 8個(gè)開(kāi)關(guān)按鈕與虛擬天線軟件交互的流程圖
(3)控制高限、低限指示燈亮滅
當(dāng)旋轉(zhuǎn)方位手輪時(shí),會(huì)使天線繞z軸旋轉(zhuǎn),順時(shí)針旋轉(zhuǎn)角度減小,逆時(shí)針旋轉(zhuǎn)角度增加。方位旋轉(zhuǎn)角度為0~360度;當(dāng)旋轉(zhuǎn)俯仰手輪時(shí),會(huì)使天線繞x軸旋轉(zhuǎn),順時(shí)針旋轉(zhuǎn)角度減小,逆時(shí)針旋轉(zhuǎn)角度增加,俯仰旋轉(zhuǎn)角度為-8~86.8度。
當(dāng)虛擬天線俯仰角度達(dá)到小于86.8度并且繼續(xù)旋轉(zhuǎn)俯仰手輪時(shí),軟件會(huì)發(fā)送天線位置的串口信息,控制數(shù)碼管的數(shù)據(jù)顯示隨虛擬天線的變化而變化。當(dāng)俯仰角度達(dá)到86.8度并且繼續(xù)俯仰旋轉(zhuǎn)時(shí),會(huì)觸發(fā)軟件發(fā)送高限指令(byteSend[7]=0x33),控制高限指示燈點(diǎn)亮,控制數(shù)碼管的數(shù)據(jù)顯示定格在86.8度。同理,當(dāng)虛擬天線俯仰角度達(dá)到-8度并且繼續(xù)旋轉(zhuǎn)俯仰手輪時(shí),會(huì)觸發(fā)軟件發(fā)送低限指令(byteSend[7]=0x66),使低限指示燈亮,控制數(shù)碼管的數(shù)據(jù)顯示定格在-8度。如果角度沒(méi)有達(dá)到-8度或者86.8度,軟件發(fā)送數(shù)據(jù)的第七字節(jié)(byteSend[7]=0x00)會(huì)清零,控制高限或者低限的指示燈熄滅。
系統(tǒng)操作性能測(cè)試主要包括操縱臺(tái)按鈕開(kāi)關(guān)和指示燈對(duì)應(yīng)關(guān)系的測(cè)試、天線手輪和虛擬天線轉(zhuǎn)動(dòng)關(guān)系的測(cè)試。采用串口調(diào)試助手觀察數(shù)據(jù)的通斷、變化等情況,如圖6所示。
圖6 數(shù)據(jù)測(cè)試串口調(diào)試助手界面
當(dāng)按下操縱臺(tái)的按鈕開(kāi)關(guān)時(shí),相應(yīng)的指示燈點(diǎn)亮,依次測(cè)試操縱臺(tái)上8個(gè)按鈕開(kāi)關(guān)和8個(gè)指示燈之間的對(duì)應(yīng)關(guān)系。例如,當(dāng)按下操縱臺(tái)俯仰“手輪控制”按鈕開(kāi)關(guān)時(shí),俯仰“手輪控制”指示燈點(diǎn)亮,此時(shí)虛擬天線俯仰受俯仰手輪控制。
當(dāng)手動(dòng)順時(shí)針旋轉(zhuǎn)方位手輪,虛擬天線順時(shí)針旋轉(zhuǎn),同時(shí)操縱臺(tái)上方位數(shù)碼管顯示的天線位置信息不斷變??;當(dāng)手動(dòng)逆時(shí)針旋轉(zhuǎn)方位手輪,虛擬天線逆時(shí)針旋轉(zhuǎn),同時(shí)操縱臺(tái)上方位數(shù)碼管顯示的天線位置信息不斷變大,方位旋轉(zhuǎn)角度范圍為0~360度;當(dāng)手動(dòng)順時(shí)針旋轉(zhuǎn)俯仰手輪,虛擬天線向低頭向旋轉(zhuǎn),同時(shí)操縱臺(tái)上俯仰數(shù)碼管顯示的天線位置信息不斷變??;當(dāng)手動(dòng)逆時(shí)針旋轉(zhuǎn)俯仰手輪,虛擬天線向抬頭向旋轉(zhuǎn),同時(shí)操縱臺(tái)上俯仰數(shù)碼管顯示的天線位置信息不斷變大,俯仰旋轉(zhuǎn)角度范圍為-8~86.8度。旋轉(zhuǎn)手輪直至超過(guò)虛擬天線的俯仰旋轉(zhuǎn)角度范圍時(shí),會(huì)觸發(fā)高、低限指示燈點(diǎn)亮,角度不再變化。
本文主要研究了半實(shí)物無(wú)人機(jī)天線控制系統(tǒng)模擬器的設(shè)計(jì),實(shí)現(xiàn)了實(shí)物天線控制組合與虛擬天線軟件的交互,解決了實(shí)物天線架設(shè)困難和場(chǎng)地約束的問(wèn)題,可以在室內(nèi)進(jìn)行學(xué)習(xí)。本系統(tǒng)在從天線手輪切換到操縱臺(tái)其他按鈕的過(guò)程中,有時(shí)會(huì)出現(xiàn)不靈敏的情況,原因在于系統(tǒng)數(shù)據(jù)處理不及時(shí),響應(yīng)速度慢,今后會(huì)加以改善。
圖7 虛擬天線測(cè)試圖