孫美娟 鄒天宇 馬靖


摘要:系留多旋翼無人機在多旋翼無人機的基礎上增加了系留線纜,使其可以通過地面電源直接供電,解決了多旋翼無人機續航時間短的問題。對此,文章以Qt5.14.2為開發平臺,開發了一套功能完整、操作簡潔的系留多旋翼無人機地面站軟件系統。該系統實現了對無人機遙測數據實時顯示、遙測指令發送、故障報警提示、電子地圖顯示、搭載不同載荷、數據存儲和回放等功能。經過多次實際飛行測試,驗證了系統功能的可靠性、完整性及可移植性。
關鍵詞:系留多旋翼;無人機;Qt;地面站軟件
中圖分類號:TP18
文獻標志碼:A
0 引言
系留多旋翼無人機在傳統無人機技術上增加了系留線纜系統,既可采用自身攜帶的備用電池進行供電,也可通過地面線纜系統向無人機供電,實現為無人機提供長期、不間斷的電力動力,從而實現無人機長時間滯空[1-2]。與普通多旋翼無人機相比,系留多旋翼無人機解決了其續航時間短、動力不足等缺陷,能夠廣泛應用于應急救災、電磁監控等民用領域,同時也在軍事領域發揮重要作用[3-4]。
本文是基于Qt5.14.2開發環境進行的無人機地面站軟件開發,使用C++語言編程,可實現“一次編寫,隨處編譯”,支持程序在Windows和Linux平臺下運行,有利于國產化的推廣[5]。
1 軟件需求與功能設計
1.1 軟件需求
本軟件主要適用于某項目系留多旋翼無人機的控制,軟件需滿足如下設計需求:
(1)能夠控制無人機及載荷狀態,實時顯示無人機飛行狀態信息及載荷狀態信息;(2)對接收到的異常數據進行報警提示;(3)加載電子地圖并在地圖上顯示定位信息及飛行軌跡信息;(4)支持搭載不同類型載荷;(5)支持對接收的飛行數據及載荷數據進行存儲及回放。
1.2 功能設計
根據上述需求,系統功能采用模塊化設計,軟件主要功能如圖1所示。
2 通信模塊
通信模塊的實現是通過UDP協議下的Socket網絡編程實現的。UDP通信是無連接型的,相比于TCP具有更高的傳輸速率。通常在傳輸圖像信息、信號信息等大數據量或周期性的數據時采用UDP傳輸,因為傳輸過程中即使偶爾丟一兩包數據,也不影響結果的可靠性。
2.1 發送遙控指令
遙控指令的發送采用UDP組播的形式,每條指令由數據頭、有效長度、消息ID、指令數據、校驗字組成。遙控指令主要包括控制無人機起飛前的檢查指令、起飛指令、飛行中的控制指令、降落指令等。其中,起飛前檢查包括電機檢測、磁校準、電機轉動、參數設置等指令;飛行過程中包括對無人機的高度、航向、飛行時間等的規劃指令。
操作人員可以隨時單擊地面站軟件上的指令按鈕向無人機發送相應指令,但無人機的安全飛行對指令的發送有其內在的邏輯要求。因此,發送遙控指令最大的難點在于如何實現大量指令的合理發送。這需要根據系留多旋翼無人機的特點,了解其內部操作邏輯,既能滿足研制要求,也符合無人機安全飛行原則。比如:發送起飛指令的前提是需先成功發送解鎖指令,使飛機達到解鎖狀態;而發送解鎖指令的前提需先成功發送自檢指令,完成無人機起飛前的檢查。
2.2 接收遙測數據
實現對遙測數據的接收和解析是地面站軟件的核心功能之一,無人機通過機載數據鏈路將采集的飛行信息和載荷狀態信息等數據發送到地面的數據鏈路接收裝置,地面鏈路再將接收的數據傳送到地面站軟件。軟件接收到數據后,不能直接發送到界面顯示,需要先按照指定協議校驗,校驗通過再進行解析、運算以及邏輯處理,將數據顯示到界面[6]。接收遙測數據的代碼如下。
(1)使用QUdpSocket,創建組播對象。
QUdpSocket* udpYKGroup;
udpYKGroup = new QUdpSocket(this);
(2)綁定IP和端口。
bool YKret = udpYKGroup->
bind(QHostAddress(localIP),YK_Port, QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint); //讀取配置文件中的localIP
(3)指定接收數據的網卡。
QList
QNetworkInterface intf;
foreach(QNetworkInterface intf, list)
{
foreach(QNetworkAddressEntry entry, intf.addressEntries()){
if(entry.ip()==QHostAddress(localIP)){
udpYCGroup->setMulticastInterface(intf);
……
}}
(4)接收遙測數據。
while(udpYCGroup->hasPendingDatagrams())
{
QByteArray *datagram;
datagram = new QByteArray();
datagram->resize(udpYCGroup->pendingDatagramSize());
udpYCGroup->readDatagram(datagram->data(), datagram->size());
}
(5)數據校驗、解析。
3 數據顯示模塊
為保證操作便捷、界面整潔,地面站軟件將接收到的數據分為幾個界面進行顯示,分別為主界面、飛行數據信息界面以及載荷數據信息界面。其中,主界面主要顯示載荷圖像信息、報警信息和重要飛行數據信息。飛行數據界面顯示無人機下傳的所有飛行數據信息;載荷信息界面顯示載荷設備下傳的所有載荷狀態信息。
3.1 飛行數據信息顯示
飛行數據信息采用圖表、圖形與文字的組合方式進行顯示。其中,與無人機飛行狀態有關的橫滾角、俯仰角、航向角等關鍵數據使用實時曲線圖形式顯示在軟件的主界面,以便操作人員通過界面曲線變化情況,直觀地觀察無人機整體飛行狀態,及時調整飛行姿態。無人機的信號強弱、電壓值和電池電量,參考手機的信號和電池電量的顯示形式,以圖形的方式在主界面的右上方顯示,操作人員可以實時觀察無人機通信和電壓情況。無人機下傳的所有飛行數據信息在飛行信息界面顯示。當有需要時,操作人員可以點擊飛行信息按鈕調出該界面,從而更全面、準確地觀察無人機的飛行狀態。
3.2 載荷數據信息顯示
載荷數據的顯示內容由無人機搭載的載荷類型決定,不同載荷類型顯示界面不同。載荷數據主要分為兩部分,一部分為載荷自身的設備狀態信息,操作人員可以通過點擊主界面的載荷狀態按鈕調出該界面;另一部分為載荷設備探測到的圖像信息、信號頻譜信息等,該信息在軟件主界面顯示。
3.3 報警信息顯示
故障報警信息提示是無人機地面站軟件極其重要的功能之一,它可以提醒地面操作人員根據報警內容實施相應的控制策略,以便及時排除故障、保證飛行安全[6]。該軟件主要通過文字、圖形及聲音3種方式傳遞故障信息,并且劃分故障等級。故障等級不同,采用的報警方式不同。
(1)當出現飛行數據超出協議規定的范圍的情況時,飛行數據信息界面中相應的數據顯示為:“--”,且文字顏色由正常的綠色變為紅色,以便操作人員查看。
(2)當機載電壓值、地面電壓值或電池電量值低于設定的報警閾值,則對應圖標變為紅色。
(3)當出現鏈路丟失、解算失敗、無IMU數據、低電壓返航、氣壓計異常等報警提示時,軟件主界面頂端位置彈出報警提示框,并在報警框中顯示故障信息,為使報警信息更加醒目,報警框中文字顏色為紅色。
(3)當涉及飛行安全的重要指標出現故障或載荷設備鏈接異常時,軟件同時會通過聲音報警的方式提示操作人員。當報警解除后,聲音報警自動停止,操作人員也可以手動關閉聲音報警。
4 電子地圖模塊
該系統使用第三方地圖庫,采用動態顯示加載外部庫的方式調用地圖庫。地面站軟件使用Qt自帶的QLibrary進行加載,通過調用協議中指定的接口函數加載電子地圖,并將無人機下傳的經度、緯度、高度等信息傳送給地圖庫。地圖庫可以對無人機當前飛行位置進行標注,繪制無人機運行軌跡,并支持地圖的基本操作功能,包括:放大、縮小、清除軌跡、打開漫游、取消漫游、進入量算、退出量算等。
加載地圖庫的步驟如下:
(1)把調用的地圖庫放在與地面站軟件.exe同一路徑中。
(2)在地面站軟件顯示地圖的UI界面上拖拽一個QWidget控件,用于顯示加載的地圖。
(3)加載地圖庫。
5 數據存儲與回放
5.1 數據存儲
數據存儲的主要功能是按照指定的路徑和存儲格式存儲無人機下傳的飛行數據及載荷設備下傳的圖像數據等信息,并且能夠在必要時將存儲的數據進行回放。
本軟件采用文本的形式存儲數據,數據存儲在一個單獨的線程中進行,使用QTextStream類進行存儲,該類能將二進制文件以數據流的形式進行存儲[7]。當網口從指定端口和IP地址接收到無人機下傳的飛行數據后,在指定文件夾下,建立以當前時間命名的文本文檔,通過QTextStream的out函數將接收的數據寫入文本文檔中。
5.2 數據回放
數據回放功能主要是根據選擇的數據文件將存儲的數據以與接收時完全相同的方式顯示,復現飛行狀況,以便更準確地對飛行數據進行分析[8]。
數據回放的前提需斷開無人機與地面站軟件的連接。否則,界面既顯示無人機下傳的數據又顯示回放數據,會造成界面數據跳動、圖像錯亂等現象。
數據回放多用于觀察無人機整體飛行狀況或故障排查,很多情況下并不需要對每一幀數據都仔細觀察,而在排查故障時,又需要對故障數據詳細排查。因此,本研究設計了6種回放速度,分別為0.5倍、0.75倍、正常速度、1.5倍、2倍、3倍。操作人員可以通過點擊回放速度按鈕,選擇合適的回放速度。
6 測試結果分析及結論
開發完成的地面站軟件經過3種測試方式驗證其性能。(1)專門開發了一套針對此地面站軟件的測試程序,對軟件的功能進行逐一測試;(2)邀請具有測評資質的第三方測評機構對軟件測評,測評機構分別對軟件的功能、外部接口、內部接口、適應性、安全性等方面進行了兩輪測試,軟件最終通過測評;(3)在各種環境下,經多輪實際飛行實驗,對軟件功能進行測試。經多種測試結果分析,該套軟件具有界面簡潔、操作方便等特點,較好地實現了各部分功能,具有較強的實用性。整個系統是基于Qt平臺開發的,具有良好的可移植性和擴展性。
參考文獻
[1]付松源.系留多旋翼無人機及其在戰術通信中的應用[J].電子技術應用,2018(4):14-17,22.
[2]龍文彪.系留多旋翼無人機及其應用[J].科技創新導報,2020(2):57,59.
[3]吳侹.系留多旋翼無人機通信系統在應急救災通信中的應用[J].移動通信,2016(15):68-71.
[4]李帥,范項媛.基于Qt的無人機地面站軟件系統的設計[J].雷達科學與技術,2017(4):410-414,420.
[5]吳許夢華,龐振岳.基于Qt的多旋翼電動無人機地面站軟件設計與實現[J].飛機設計,2020(3):9-13,17.
[6]寧金星,盧京潮,閆建國.基于VC++的無人機飛控地面站軟件的開發[J].計算機測量與控制,2009(3):596-598.
[7]SUMMERFIELD M.Advanced Qt programming:creating great software with C++ and Qt 4[M].London:Prentice Hall,2011.
[8]嚴赫.無人機地面站軟件的設計實現及其數據庫應用[D].長春:吉林大學,2019.
(編輯 王永超)
Design and implementation of ground station software for tethered multi-rotor unmanned aerial vehicle based on QtSun Meijuan, Zou Tianyu, Ma Jing
(Spaceflight Shenzhou Craft Co., Ltd., Tianjin 300301, China)
Abstract: The tethered multi-rotor UAV adds tethered cables on the basis of the multi rotor UAV, so that it can be directly powered by the ground power supply. Therefore,the problem of short endurance of multi rotor UAV is solved. In this regard, a ground station software system of tethered multirotor UAV with complete functions and simple operation is developed based on Qt5.14.2. The system realizes the functions of real-time display of UAV telemetry data,telemetry command sending,fault alarm prompt, electronic map display, carrying different loads, data storage and playback. After several actual flight tests, the reliability, integrity and portability of the system functions are verified.
Key words: tethered multi-rotor; unmanned aerial vehicle; Qt; ground station software