中國電子科技集團(tuán)公司第二十七研究所,河南鄭州 450047
關(guān)鍵字:無人機(jī);地面站;多線程
近年來,無人機(jī)憑借設(shè)計(jì)靈活,成本低,零傷亡的特點(diǎn),在多次戰(zhàn)爭(zhēng)中都起到了重要的作用。偵察打擊一體化無人機(jī),既能偵察,又具有打擊毀傷能力,引起了各方的廣泛關(guān)注[1]。無人機(jī)能不能發(fā)揮其最大的攻擊潛能,取決于全自主飛行控制系統(tǒng)和火力控制系統(tǒng)綜合形成的自主協(xié)調(diào)攻擊能力,從而實(shí)現(xiàn)偵察打擊一體化的能力[2]。作為無人機(jī)系統(tǒng)的重要組成部分,地面站系統(tǒng)[3-4]如何控制好偵察打擊一體化無人機(jī),順利完成對(duì)無人機(jī)的飛行操縱、偵察和打擊,也是提高自主控制能力以及打擊精度的技術(shù)關(guān)鍵,是一項(xiàng)十分重要的工作。
本研究主要完成偵察打擊一體化無人機(jī)地面站系統(tǒng)部分控制軟件的規(guī)劃和設(shè)計(jì),基于分層模塊化的設(shè)計(jì)思想,采用事件驅(qū)動(dòng)的通信機(jī)制,實(shí)現(xiàn)了對(duì)偵察打擊一體化無人機(jī)的飛行控制。
地面站軟件系統(tǒng)是整個(gè)無人機(jī)系統(tǒng)的地面神經(jīng)中樞,主要完成控制無人機(jī)的發(fā)射、起飛和回收,接收和處理無人機(jī)系統(tǒng)飛行數(shù)據(jù),完成對(duì)無人機(jī)的飛行航線管理、操作與控制、飛行參數(shù)與飛行軌跡的綜合顯示、導(dǎo)引頭工作參數(shù)以及視頻圖像的顯示、數(shù)據(jù)記錄、回放以及數(shù)據(jù)分析等任務(wù)。
根據(jù)偵察打擊一體化無人機(jī)地面站系統(tǒng)的設(shè)計(jì)目標(biāo)以及實(shí)際應(yīng)用需要,軟件功能可概括為以下幾個(gè)方面:
(1)能夠制定飛行任務(wù),支持任務(wù)的添加、修改、刪除,可以根據(jù)不同的策略自動(dòng)生成任務(wù)航線;
(2)能夠控制無人機(jī)的狀態(tài)切換,顯示飛行數(shù)據(jù)、監(jiān)視并顯示機(jī)載和地面設(shè)備狀態(tài),保證飛行安全;
(3)具備控制導(dǎo)引頭的功能,并能進(jìn)行導(dǎo)引頭狀態(tài)顯示以及視頻圖像解碼;
(4)具有電子地圖功能,能實(shí)時(shí)顯示飛行軌跡;
(5)能記錄并回放飛行數(shù)據(jù),事后可對(duì)飛行數(shù)據(jù)進(jìn)行處理和分析;
(6)保證系統(tǒng)穩(wěn)定可靠、采取實(shí)時(shí)高效地?cái)?shù)據(jù)傳輸機(jī)制,以滿足大數(shù)據(jù)量的傳輸要求;
(7)人機(jī)界面友好,方便操作。
地面站系統(tǒng)軟件基于分層模塊化的設(shè)計(jì)思想,借鑒MVC開發(fā)模式,系統(tǒng)框架按照用戶界面層、數(shù)據(jù)實(shí)體層和接口層分層設(shè)計(jì)。用戶界面層為人機(jī)交互的主要部分,提供交互式的頁面,用戶界面層的各個(gè)功能模塊共同實(shí)現(xiàn)地面站系統(tǒng)的主要功能。數(shù)據(jù)實(shí)體層負(fù)責(zé)數(shù)據(jù)的傳遞和處理,針對(duì)不同的模塊,設(shè)計(jì)不同的控制類和界面層交互,從而完成各功能模塊間的數(shù)據(jù)流向控制。接口層完成數(shù)據(jù)的存儲(chǔ)和底層數(shù)據(jù)的接收處理工作。圖1為地面站軟件系統(tǒng)的框架圖。
地面站軟件分為以下幾個(gè)功能模塊:
(1)航線規(guī)劃:對(duì)無人機(jī)進(jìn)行航線規(guī)劃,可修改、存儲(chǔ)至文件和從文件導(dǎo)入,并能通過測(cè)控鏈路上穿至無人機(jī);
(2)無人機(jī)控制:對(duì)無人機(jī)的操作與控制主要是響應(yīng)地面操控設(shè)備以及軟件界面按鍵值,生成相應(yīng)的遙控指令,封裝至遙控?cái)?shù)據(jù)幀,通過測(cè)控鏈路傳輸至無人機(jī),控制無人機(jī)的巡航、俯沖、拉起和回收等操作;
(3)綜合顯示:飛行參數(shù)和飛行軌跡的綜合顯示,接收下行遙測(cè)數(shù)據(jù),進(jìn)行信息分解,顯示無人機(jī)的工作狀態(tài)、火控計(jì)算結(jié)果等,顯示無人機(jī)的速度、姿態(tài)、位置等飛行狀態(tài);
(4)火控解算:通過無人機(jī)飛行參數(shù)、目標(biāo)點(diǎn)位置信息以及導(dǎo)引頭狀態(tài)信息進(jìn)行攻擊區(qū)域、無人機(jī)視場(chǎng)解算等火控解算;
(5)電子地圖:完成工作區(qū)域電子地圖加載顯示,放大、縮小、平移等地圖功能;能顯示原點(diǎn)、盤旋點(diǎn)、降落點(diǎn)等點(diǎn)信息;能顯示規(guī)劃航線、飛行航跡;
(6)導(dǎo)引頭控制與顯示:操控導(dǎo)引頭搜索、捕獲并跟蹤目標(biāo),顯示導(dǎo)引頭的視頻圖像,監(jiān)控導(dǎo)引頭的工作狀態(tài);
(7)狀態(tài)監(jiān)測(cè):監(jiān)視機(jī)載和地面設(shè)備的工作狀態(tài),顯示當(dāng)前無人機(jī)的飛行狀態(tài),導(dǎo)引頭的工作狀態(tài),在設(shè)備工作異常時(shí)告警,保證可靠飛行;
(8)數(shù)據(jù)記錄、回放、處理與分析:存儲(chǔ)飛行數(shù)據(jù),能將存儲(chǔ)的飛行數(shù)據(jù)進(jìn)行數(shù)據(jù)回放,并對(duì)飛行數(shù)據(jù)進(jìn)行處理,分析飛行過程,進(jìn)行數(shù)據(jù)統(tǒng)計(jì);
(9)通信管理:完成地面站與無人機(jī)之間的數(shù)據(jù)通信,管理遙測(cè)信息的接收和遙控指令的發(fā)送;
(10)鏈路控制:能夠監(jiān)視鏈路狀態(tài)信息,能控制鏈路功率、頻道等;
(11)日志記錄:能夠記錄系統(tǒng)運(yùn)行日志。
地面站軟件工作時(shí),首先進(jìn)行系統(tǒng)自檢,自檢完成后進(jìn)行任務(wù)規(guī)劃,操作員通過地面站軟件觀察導(dǎo)引頭回傳圖像,根據(jù)目標(biāo)信息判斷是否手動(dòng)搜索,例如,目標(biāo)在視場(chǎng)內(nèi)時(shí)在手動(dòng)搜索模式下發(fā)送鎖定指令進(jìn)行目標(biāo)鎖定,目標(biāo)在視場(chǎng)外在自動(dòng)模式下通過數(shù)引指令引導(dǎo)目標(biāo),經(jīng)過火控解算模塊輔助決策是否攻擊,之后對(duì)記錄的數(shù)據(jù)進(jìn)行處理和分析,完成整個(gè)飛行過程。地面站軟件的系統(tǒng)工作流程如圖2所示。
本研究采用VS2010作為開發(fā)工具,以C#為主要程序語言,基于Net FrameWork3.5框架下進(jìn)行開發(fā),以此為基礎(chǔ)設(shè)計(jì)實(shí)現(xiàn)地面站軟件系統(tǒng)。
系統(tǒng)的綜合顯示模塊涉及的數(shù)據(jù)量比較大,要解決的關(guān)鍵是處理數(shù)據(jù)間的傳遞以及界面刷新的問題。采用多線程同步技術(shù)以及全局變量實(shí)現(xiàn)數(shù)據(jù)的傳遞,后臺(tái)線程接收和處理數(shù)據(jù),主頁面線程通過全局變量讀取已處理的數(shù)據(jù)成果,互不干涉,界面效果流暢。具體解決方法如下:
使用C#的System.Threading Thread類來實(shí)現(xiàn)線程。長(zhǎng)時(shí)間搶占主線程會(huì)造成界面反應(yīng)遲鈍,因此系統(tǒng)采用后臺(tái)多線程的方法監(jiān)聽端口和處理數(shù)據(jù),線程間采用全局靜態(tài)變量(static)、事件(event)、消息(message)和互斥對(duì)象(Mutex)的方式實(shí)現(xiàn)線程同步和調(diào)度,避免出現(xiàn)資源競(jìng)爭(zhēng)而引起幾個(gè)線程乃至整個(gè)系統(tǒng)的死鎖[5]。
本系統(tǒng)采用事件驅(qū)動(dòng)、全局變量的方式,通過消息來實(shí)現(xiàn)各線程之間的數(shù)據(jù)傳遞。系統(tǒng)開始,網(wǎng)絡(luò)端口監(jiān)測(cè)線程不斷監(jiān)測(cè)外部數(shù)據(jù),接收到外部數(shù)據(jù)之后,不斷將數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)緩存區(qū),數(shù)據(jù)處理線程將緩存數(shù)據(jù)解析到數(shù)據(jù)實(shí)體類,供主頁面數(shù)據(jù)刷新定時(shí)器中的方法調(diào)用并顯示,同時(shí)解析完一幀數(shù)據(jù)后將解析完的數(shù)據(jù)移出。
綜合顯示模塊流程圖如圖3所示,主要代碼實(shí)現(xiàn)如下:
(1)建立TCP/IP連接套結(jié)字:
(2)新建網(wǎng)絡(luò)端口監(jiān)測(cè)線程,接收數(shù)據(jù)存入數(shù)據(jù)緩存:
(3)新建數(shù)據(jù)處理線程
(4)主頁面刷新數(shù)據(jù)定時(shí)器訪問數(shù)據(jù)實(shí)體類,將數(shù)據(jù)顯示在主頁面上。
MapX插件擁有強(qiáng)大的地圖功能,可實(shí)現(xiàn)地圖的基本操作,如放大,縮小,平移等。使用MapX插件進(jìn)行封裝,本系統(tǒng)使用MapX地圖插件封裝成一個(gè)GMAP類,使用時(shí)需指定地圖路徑。封裝的插件主要包括插件的初始化,工具欄的加載,點(diǎn)、線、圓等元素的標(biāo)繪方法,坐標(biāo)變換方法等。
航線管理[6]基于MapX插件,根據(jù)不同情況,設(shè)計(jì)有三種航線生成方式:
(1)通過鼠標(biāo)點(diǎn)擊地圖上的點(diǎn),輸入航點(diǎn)形成航線;
(2)根據(jù)航線高度,航點(diǎn)邊距生成以飛機(jī)原點(diǎn)為中心自動(dòng)生成正方形航線;
(3)根據(jù)目標(biāo)點(diǎn)信息、航線長(zhǎng)度、航線寬度、風(fēng)向信息、禁飛區(qū),自動(dòng)規(guī)避禁飛區(qū),自動(dòng)生成攻擊航線。航線管理模塊流程圖如圖4所示。
火控解算是偵察打擊一體化無人機(jī)的重要模塊,是操作人員控制無人機(jī)進(jìn)行鎖定、攻擊等指令時(shí)輔助決策手段,包含可攻擊區(qū)域解算、目標(biāo)位置解算、視場(chǎng)解算、目標(biāo)引導(dǎo)解算和攻擊閾值解算。
火控解算模塊流程圖如圖5所示。主要方法設(shè)計(jì)如下:
(1)計(jì)算飛機(jī)的橫滾角roll、俯仰角pitch和航向角yaw信息
public static void updateRbe(float roll, float pitch, float yaw);
(2)可攻擊區(qū)域解算和攻擊閾值解算
根據(jù)目標(biāo)信息,攻擊角度和飛機(jī)位置,可計(jì)算無人機(jī)的可攻擊區(qū)域,根據(jù)飛機(jī)位置和已計(jì)算得出的可攻擊區(qū)域判定攻擊閾值范圍:
public unsafe static void getGuide_area(position_FIRE target, position_FIRE point_Far, position_FIRE point_near, position_FIRE* point_One, position_FIRE* point_Two);
(3)目標(biāo)位置解算
根據(jù)飛機(jī)位置、導(dǎo)引頭參數(shù),解算目標(biāo)經(jīng)緯度信息:
public unsafe static position_FIRE getTarget(position_FIRE flight, seeker s);
(4)視場(chǎng)解算
根據(jù)飛機(jī)位置信息、導(dǎo)引頭參數(shù)計(jì)算視場(chǎng)區(qū)域:
public unsafe static field_video getArea(position_FIRE flight, seeker s);
(5)目標(biāo)引導(dǎo)解算
根據(jù)目標(biāo)位置信息和飛機(jī)位置信息,計(jì)算導(dǎo)引頭數(shù)引參數(shù):
public static seeker getGuide_cal(position_FIRE target, position_FIRE flight)。
為驗(yàn)證本無人機(jī)地面站軟件系統(tǒng)功能,結(jié)合無人機(jī)系統(tǒng)、無人機(jī)控制鏈路和無人機(jī)地面站軟件系統(tǒng)進(jìn)行了系統(tǒng)聯(lián)調(diào)試驗(yàn),試驗(yàn)過程及步驟如下:
(1)無人機(jī)系統(tǒng)(包含導(dǎo)引頭)、無人機(jī)控制鏈路和無人機(jī)地面站全系統(tǒng)加電;
(2)無人機(jī)系統(tǒng)將系統(tǒng)機(jī)載狀態(tài)、導(dǎo)引頭視頻信息通過無人機(jī)控制鏈路下傳;
(3)通過無人機(jī)軟件系統(tǒng)顯示無人機(jī)系統(tǒng)狀態(tài)等信息,記錄下傳的數(shù)據(jù);
(4)對(duì)記錄的數(shù)據(jù)進(jìn)行回放;
(5)對(duì)記錄的數(shù)據(jù)進(jìn)行處理分析。
在實(shí)際試驗(yàn)過程中,地面站軟件系統(tǒng)運(yùn)行流暢,無卡死卡頓現(xiàn)象。系統(tǒng)軟件部署在三個(gè)臺(tái)位上,分別是綜合顯示控制臺(tái)位、導(dǎo)引頭鏈路控制臺(tái)位以及數(shù)據(jù)處理分析臺(tái)位。
(1)綜合顯示控制臺(tái)位
圖6所示為綜合顯示控制臺(tái)位頁面,主要包括綜合顯示模塊、火控解算模塊和無人機(jī)指令控制模塊。綜合顯示模塊能實(shí)時(shí)解析并顯示機(jī)載狀態(tài),如飛行模式、機(jī)載設(shè)備信息狀態(tài)、飛機(jī)位置和航跡等(例如,通過菜單可進(jìn)入航線管理模塊頁面,如圖7所示,可新建、保存、讀取、上傳,查詢航線操作等);試驗(yàn)過程中,火控解算模塊通過解算功能將數(shù)據(jù)顯示在頁面中,輔助操作員決策;指令控制區(qū)域包含常用操作指令,能通過鏈路系統(tǒng)進(jìn)行指令上傳。
(2)導(dǎo)引頭鏈路控制臺(tái)位
導(dǎo)引頭鏈路控制臺(tái)位主要包括鏈路控制和狀態(tài)顯示模塊、導(dǎo)引頭控制和狀態(tài)顯示模塊以及數(shù)據(jù)記錄與回放模塊。圖8為導(dǎo)引頭鏈路臺(tái)位頁面。鏈路控制頁面能顯示鏈路鏈接狀態(tài),可對(duì)機(jī)載上行、下行鏈路的狀態(tài)進(jìn)行顯示,顯示誤碼信息、功率信息等,操作簡(jiǎn)單方便。導(dǎo)引頭頁面可顯示導(dǎo)引頭狀態(tài)信息、導(dǎo)引頭方位和俯仰信息、導(dǎo)引頭狀態(tài)和自檢信息,導(dǎo)引頭圖像清晰,視頻無亂碼。
圖9為數(shù)據(jù)記錄與回放頁面。數(shù)據(jù)記錄與回放模塊直接在鏈路接收數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)管理和記錄,保證原始數(shù)據(jù)未做修改??蓪?duì)已記錄的數(shù)據(jù)進(jìn)行加載,數(shù)據(jù)回放模塊解析記錄的數(shù)據(jù),將解析后的各類數(shù)據(jù)進(jìn)行顯示,并模擬實(shí)際無人機(jī)系統(tǒng)數(shù)據(jù)向無人機(jī)地面軟件系統(tǒng)發(fā)送。圖9左圖綠色高亮所示的復(fù)合數(shù)據(jù)、飛控遙測(cè)數(shù)據(jù)、飛控遙控?cái)?shù)據(jù)等,解析完成后可通過網(wǎng)口發(fā)出至綜合顯示模塊。
(3)數(shù)據(jù)處理分析臺(tái)位
圖10所示為數(shù)據(jù)處理分析臺(tái)位頁面,主要包括數(shù)據(jù)處理與分析功能模塊。將記錄的數(shù)據(jù)加載到數(shù)據(jù)處理與分析程序中,系統(tǒng)讀取并解析成各系統(tǒng)狀態(tài)量,可選擇指定系統(tǒng)狀態(tài)量繪制曲線;反過來,通過選取曲線上的點(diǎn)可讀取此刻系統(tǒng)各狀態(tài)信息。
本研究設(shè)計(jì)的無人機(jī)地面站軟件系統(tǒng),經(jīng)過工程試驗(yàn)檢驗(yàn),界面友好,操作便捷,長(zhǎng)時(shí)間運(yùn)行正常,有一定的工程應(yīng)用價(jià)值。存在的問題是,在使用過程中,地圖控件的功能僅能滿足基本需求,例如缺少封閉區(qū)域填充紋理操作。在以后的工作中,將添加更多的功能以滿足更多場(chǎng)合的需要。