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