本發明涉及無人機地面站軟件開發技術領域,尤其涉及一種基于Qt的室內多無人機編隊控制系統。
背景技術:
無人機是新軍事變革的代表性裝備,充分體現了未來戰爭信息化、網絡化、無人化的特點,是最符合未來戰爭需求和世界裝備發展潮流的航空武器裝備。隨著無人機技術和性能的不斷發展及其軍事任務需求的不斷提高,很多情況下,單架無人機已無法滿足任務要求,若能由多架無人機協同工作,他們不但能完成單架無人機不能完成的任務,而且還使系統的作戰效能大大提高。美國無人機路線圖明確把無人機協同編隊列入未來重點發展方向之一,以滿足高科技信息化戰爭中聯合作戰的需求。因此,開展多無人機編隊研究具有重要意義,受到了國內外專業人員的廣泛關注。
無人機地面控制站簡稱地面站,是整個無人機系統的重要組成部分,是地面操控人員與無人機交互的通道。它囊括任務規劃、實時監測、數字地圖、數據鏈在內的集控制、通信、數據處理于一體的綜合能力,是整個無人機系統的控制指揮中心,自然而然也就成為了各國研究機構、院校開發的重點項目。針對多無人機編隊控制系統而言,地面站的作用則更為突出,它不僅要實現各無人機飛行數據的顯示,還要實現對編隊任務的分配,編隊軌跡的規劃等等,比單機地面站更為復雜,要求更高。
目前大多數的科研機構還只是在單機的平臺下對地面站進行開發,還沒有開展對多機編隊控制地面站的研究,因此研發一套基于多無人機編隊控制地面站顯得尤為重要,是將來無人機發展不可或缺的一部分。
技術實現要素:
為克服現有技術的不足,本發明旨在提出一款能夠實時對多無人機編隊進行操控管理的地面控制站,借助無人機分布式網絡實現各無人機與地面指揮中心的實時數據交互,并在此基礎上完成任務分配、軌跡優化和集群控制等飛行決策。本發明采用的技術方案是,基于Qt的室內多無人機編隊控制系統,包括多架無人機、地面站、室內定位系統、ZigBee網絡設備,ZigBee網絡設備包括一個協調器模塊與多個路由模塊;協調器模塊與地面站有線連接;無人機向地面站反饋自身的位置信息和姿態信息,其中位置信息由室內定位系統提供,姿態信息由機載傳感器獲取;每架無人機上均設置有一個路由模塊,路由模塊與無人機上的控制器有線連接,控制器通過內置協議組建相應的數據幀經ZigBee網絡實現無人機群與地面站的實時數據交互;地面站端主要完成倆方面工作,一方面要對各無人機回傳的飛行數據進行解包,并以人性化的界面進行顯示;同時地面站還要運行編隊控制算法,實時計算出每架無人機的目標位置并對數據進行打包,以無線的方式發給對應無人機。
整個地面站由登錄端模塊、顯示端模塊和發送端模塊構成;
登錄端模塊插入有QSpinBox部件,通過下拉菜單實現無人機個數的選取;之后在頭文件中引入QProcess類,借助QPushButton部件實現對顯示端和發送端的調用;
顯示端模塊要完成無人機回傳數據的實時讀取和可視化顯示,首先對接收自無人機的數據進行解包,提取無人機的姿態位置信息,借助QLable部件進行數字顯示,同時顯示端界面還插入OpenGL類,用于將無人機姿態信息以3D的形式顯示出來;無人機回傳的圖像信息則采用QWebView部件進行顯示;顯示端模塊里還添加QFile類,用于實現對飛行數據的本地保存。
發送端模塊插入QpushButton、QDoubleSpinbox部件,通過按鍵的方式執行對應的編隊控制程序、打包程序和數據發送程序,進而準確的將每架無人機的期望位置發送給目標無人機,發送端模塊還添加QKeyEvent事件,首先對鍵值進行設置,然后編寫對應的槽函數,這樣操縱員通過鼠標、鍵盤便可對無人機編隊航線進行規劃,發送端模塊還嵌入內置地圖信息的HTML文件,借助Qwebview部件便可在發送端進行顯示。
本發明的特點及有益效果是:
本發明對于多無人機編隊飛行的實際驗證具有十分重要的意義。本發明操作簡單,功能完善,可直接控制多無人機編隊飛行,實現無人機回傳數據的可視化顯示,同時以方便快捷的操作實現對多無人機編隊的軌跡規劃和隊形變換,最大程度避免了實驗過程中操縱者的人為失誤,人機交互便捷,可靠性強,具有很高的實用價值,是編隊控制系統不可或缺的一部分。
本發明主要具有以下功能及特點:
(1)本地面站不同于傳統地面站只能一對一的導航控制,它借助ZigBee通信網絡可以實時的對多無人機進行操控管理,便于編隊控制,為無人機編隊飛行實驗提供了很好的操控平臺。
(2)本地面站的開發、運行環境均為開源,降低了開發成本,且可以進行二次開發。應用程序可跨平臺使用,提高了移植性和應用的普遍性。
(3)針對多無人機編隊控制,本地面站采取多界面的設計方式,由登錄端、顯示端和發送端構成,登錄端可進行無人機個數的選取,顯示端可實現無人機飛行信息的圖形化顯示,發送端則可完成無人機編隊控制指令、軌跡指令的實時發送。
(4)本地面站顯示端融入OpenGL模塊,不同于傳統地面站虛擬儀表的方式,它可以將無人機回傳的姿態信息以3D的形式顯示出來,逼真度高,易于觀測;同時添加圖像回傳模塊,采用Qt自帶的Qwebview部件,實現無人機拍攝圖像在地面站的實時顯示。
(5)目前基于室內定位系統地面站可實時顯示無人機的位置,保證無人機的在線控制,同時還可以實時的在三維坐標系下對編隊隊形進行切換,方便快捷。發送端還嵌入操縱桿模塊,避免了飛行過程中過多的參數設置,操縱員可以直接借助鼠標、鍵盤,以最簡單的方式實現對多無人機的編隊控制,最大程度提高了地面站的可操控性。同時本地面站還內置地圖信息,對今后室外編隊飛行奠定了基礎。
附圖說明:
附圖1多無人機編隊通信網絡結構圖。
附圖2地面站運行效果圖。
附圖3登錄端效果圖。
附圖4登錄端開發流程圖。
附圖5顯示端效果圖。
附圖6顯示端開發流程圖。
附圖7發送端效果圖。
附圖8發送端開發流程圖。
具體實施方式
本發明的目的在于針對上述現有技術的不足,開發了一款能夠實時對多無人機編隊進行操控管理的地面控制站,借助無人機分布式網絡實現各無人機與地面指揮中心的實時數據交互,并在此基礎上完成任務分配、軌跡優化和集群控制等飛行決策。
傳統地面站多以虛擬儀表的方式對無人機回傳的數據進行顯示,單調乏味,為了更好的顯示各無人機的飛行數據,本發明基于Qt(一款跨平臺的C++圖形用戶界面編譯器)平臺,融合OpenGL(開放圖形庫),在實際飛行過程中以3D的形式進行渲染,顯示效果立體逼真;同時預留特定窗口實時顯示各無人機采集回來的圖像信息,地面操控人員通過觀察決策進而完成戰場偵察、戰場監視等飛行任務;地面站還內置文件管理服務,可對飛行數據進行本地存儲,方便后期對飛行數據進行分析研究。整個顯示界面簡潔美觀、清晰明了,便于地面操縱員實時的掌握無人機群所處的飛行狀態。
本發明可為編隊協同優化算法、編隊協調控制算法進行實際驗證,從而促進理論研究的進一步開展,目前地面站已成功嵌入人工勢場法、圖論法等編隊理論算法,在室內也已實現定點、直線、圓等常用隊形演示;同時地面站在飛行過程中可實時在三維坐標系下對無人機編隊進行隊形切換,簡單易行,靈活可靠,在最大程度上降低了地面站的操作復雜度。
地面站基于Linux環境進行開發,利用Qt編寫圖形界面。各無人機主要向地面站反饋自身的位置信息和姿態信息,其中位置信息先由室內定位系統以無線方式傳給無人機,無人機再以無線方式傳給地面站,姿態信息則直接由無人機的機載傳感器進行獲取。編隊通信網絡以ZigBee(紫蜂協議)的方式進行搭建,ZigBee是一種短距離、低功耗的無線通信技術,每個ZigBee網絡由一個協調器模塊與多個路由模塊構成,協調器模塊與地面站有線相連,路由模塊同樣與各無人機控制器有線相連,通過內置協議組建相應的數據幀便可實現無人機群與地面站的實時數據交互。無人機還搭載攝像頭模塊,借助機載處理器以視頻流的方式進行無線傳輸。地面站端主要完成倆方面工作,一方面要對各無人機回傳的飛行數據進行解包,并以人性化的界面進行顯示;同時地面站還要運行編隊控制算法,實時計算出每架無人機的目標位置并對數據進行打包,以無線的方式發給對應無人機。針對多無人機編隊控制系統,地面站需要同時顯示多架無人機的飛行信息,并對多架無人機進行飛行控制,這與常規地面站完全不同,單一界面難以滿足這一要求,于是本地面站采取多界面的設計方式,整個地面站由登錄端、顯示端和發送端構成。
登錄端界面首先插入QSpinBox部件(用于設置整數輸入的部件),通過下拉菜單實現無人機個數的選取;之后在頭文件中引入QProcess類(用于實現進程調度的部件),借助QPushButton部件(用于提供標準按鈕的部件)實現對顯示端和發送端的調用。
顯示端要完成無人機回傳數據的實時讀取和可視化顯示,由于地面站與無線模塊采用串口通信,于是我們在程序里添加qextserialport類(一個由第三方提供的串口函數庫),首先對接收的數據進行解包,提取無人機的姿態位置信息,借助QLable部件(用于顯示文本或者圖片的部件)進行數字顯示,同時顯示端界面還插入OpenGL類,它可以將無人機姿態信息以3D的形式顯示出來,比數字形式更為逼真。無人機回傳的圖像信息則采用QWebView部件(用于顯示內置網頁的部件)進行顯示。不僅如此,程序里還添加QFile類(用于文件操作的部件),它為我們提供了讀寫文件的接口,實現對飛行數據的本地保存。
發送端插入QpushButton、QDoubleSpinbox等部件,通過按鍵的方式執行對應的編隊控制程序、打包程序和數據發送程序,進而準確的將每架無人機的期望位置發送給目標無人機。主程序還添加QKeyEvent事件(基于鍵盤觸發信號產生的事件),首先對鍵值進行設置,然后編寫對應的槽函數,這樣操縱員通過鼠標、鍵盤便可對無人機編隊航線進行規劃。不僅如此,主程序還嵌入內置地圖信息的HTML文件,借助Qwebview部件便可在發送端進行顯示。
結合附圖對本發明作進一步詳述。
參見圖1,多無人機編隊通信網絡結構圖。無人機編隊采取ZigBee的方式進行分布式組網,硬件采取DiGi公司生產的XBee模塊,它采用串口通信,地面站和每架無人機均搭載一塊XBee,通過查詢各模塊的地址進而實現無人機與地面站的實時數據交互,同時各無人機之間也可以隨時交互彼此的飛行信息。
參見圖2,地面站運行效果圖。在多無人機編隊飛行過程中,地面站首先運行登錄端,確定執行編隊任務的無人機個數,之后打開對應數目的顯示端和發送端,顯示端主要對無人機回傳信息進行人性化顯示,發送端主要完成對無人機編隊隊形的確定以及編隊軌跡的發送。
參見圖3,登錄端首先可以作為歡迎界面,標明了地面站的名稱和歸屬,同時它也包含了一個對話框和按鈕,對話框完成對無人機個數的選取,按鈕實現對顯示端和發送端的開啟。
參見圖4,登錄端首先需要新建QMainWindow主窗口類(所有用戶界面對象的基礎部件),所謂主窗口,就是一個普通意義上應用程序最頂層的窗口,通常是由標題欄、菜單欄、任務欄和若干工具欄組成。在這些子組件之間則是我們的工作區。之后要繼續添加QImage類(主要用于圖像處理的部件)和QProcess類,QImage類封裝了對于一般圖像像素級的操作,可以實現地面站logo的顯示,標明地面站的名稱和歸屬;QProcess類則用來啟動外部程序并與自身交互,操縱員借助QSpinBox部件和QPushButton部件就可以實現編隊無人機個數的選取和對應顯示端、發送端的開啟。
參見圖5,顯示端左上角為自主描繪的無人機飛行場景,借助OpenGL可以將無人機回傳的姿態信息以3D的形式顯示出來,形象逼真;右上角預留固定窗口,可以實時顯示無人機機載攝像頭采集的圖像信息;左下角可以對特定串口進行讀取,同時以數值形式完成對無人機姿態信息、位置信息的顯示;右下角窗口用來顯示無人機回傳的原始數據包,方便開發人員對無人機飛行數據的分析。
參見圖6,顯示端同樣基于QMainWindow主窗口開發,添加QGLWidget類(用來渲染OpenGL圖形的部件),實現在Qt下對OpenGL的調用;添加QWebView部件,每個QWebView都包含著一個QWebPage,而QWebPage則是用于存儲和編輯網頁的類,借助這個類可以實現回傳圖像的實時顯示;添加qextserialport類可實現對特定串口的讀取,設置接收計時器和接收緩存便可直接對無人機回傳信息解包并進行顯示;添加QTextBrowser部件(用于顯示文本的部件),以十六進制的方式對回傳的原始數據進行讀取;添加QFile類,完成對飛行數據的本地保存,方便我們后期對飛行數據進行分析處理。
參見圖7,發送端負責編隊隊形和編隊軌跡的發送,采用模塊化設計,主要由編隊控制、實時數據、軌跡發送、操縱桿和地圖顯示五部分構成。編隊控制模塊主要實現編隊隊形的設置和多機的同時起降;實時數據模塊可以將地面站實時發送的數據以數據包或軌跡點的形式進行顯示,提高發送數據的可靠性,避免操作失誤;軌跡發送模塊實現對編隊軌跡的設置,目前支持對任意定點、直線、圓和八字軌跡的發送;操縱桿模塊借鑒遙控器的設計方式,可以用鼠標或鍵盤實現對多無人機編隊軌跡的實時控制,方便快捷,操作簡單;地圖顯示模塊主要完成地面站內置地圖的顯示;
參見圖8,發送端首先添加QTextBrowser部件,可以對發送數據進行實時的顯示,便于操縱員觀測,避免發送數據產生錯亂;添加定時器,進行主函數的編輯,依據無人機常用的Mavlink協議(一款廣泛應用于小型無人機與地面站之間的通信協議)進行組包,在對應串口下進行數據包特定頻率的發送,進而實現多無人機編隊控制和編隊軌跡的生成;添加QKeyEvent事件,設置鍵值并編寫對應的響應函數,進而操縱員通過鼠標、鍵盤便可實現對無人機編隊軌跡的控制;主窗口下添加QWebView部件,以網頁的形式打開內置地圖的HTML文件,實現地面站對地圖的嵌套。