孫美娟 鄒天宇 馬靖
摘要:系留多旋翼無人機在多旋翼無人機的基礎上增加了系留線纜,使其可以通過地面電源直接供電,解決了多旋翼無人機續(xù)航時間短的問題。對此,文章以Qt5.14.2為開發(fā)平臺,開發(fā)了一套功能完整、操作簡潔的系留多旋翼無人機地面站軟件系統(tǒng)。該系統(tǒng)實現(xiàn)了對無人機遙測數(shù)據(jù)實時顯示、遙測指令發(fā)送、故障報警提示、電子地圖顯示、搭載不同載荷、數(shù)據(jù)存儲和回放等功能。經(jīng)過多次實際飛行測試,驗證了系統(tǒng)功能的可靠性、完整性及可移植性。
關鍵詞:系留多旋翼;無人機;Qt;地面站軟件
中圖分類號:TP18
文獻標志碼:A
0 引言
系留多旋翼無人機在傳統(tǒng)無人機技術上增加了系留線纜系統(tǒng),既可采用自身攜帶的備用電池進行供電,也可通過地面線纜系統(tǒng)向無人機供電,實現(xiàn)為無人機提供長期、不間斷的電力動力,從而實現(xiàn)無人機長時間滯空[1-2]。與普通多旋翼無人機相比,系留多旋翼無人機解決了其續(xù)航時間短、動力不足等缺陷,能夠廣泛應用于應急救災、電磁監(jiān)控等民用領域,同時也在軍事領域發(fā)揮重要作用[3-4]。
本文是基于Qt5.14.2開發(fā)環(huán)境進行的無人機地面站軟件開發(fā),使用C++語言編程,可實現(xiàn)“一次編寫,隨處編譯”,支持程序在Windows和Linux平臺下運行,有利于國產(chǎn)化的推廣[5]。
1 軟件需求與功能設計
1.1 軟件需求
本軟件主要適用于某項目系留多旋翼無人機的控制,軟件需滿足如下設計需求:
(1)能夠控制無人機及載荷狀態(tài),實時顯示無人機飛行狀態(tài)信息及載荷狀態(tài)信息;(2)對接收到的異常數(shù)據(jù)進行報警提示;(3)加載電子地圖并在地圖上顯示定位信息及飛行軌跡信息;(4)支持搭載不同類型載荷;(5)支持對接收的飛行數(shù)據(jù)及載荷數(shù)據(jù)進行存儲及回放。
1.2 功能設計
根據(jù)上述需求,系統(tǒng)功能采用模塊化設計,軟件主要功能如圖1所示。
2 通信模塊
通信模塊的實現(xiàn)是通過UDP協(xié)議下的Socket網(wǎng)絡編程實現(xiàn)的。UDP通信是無連接型的,相比于TCP具有更高的傳輸速率。通常在傳輸圖像信息、信號信息等大數(shù)據(jù)量或周期性的數(shù)據(jù)時采用UDP傳輸,因為傳輸過程中即使偶爾丟一兩包數(shù)據(jù),也不影響結果的可靠性。
2.1 發(fā)送遙控指令
遙控指令的發(fā)送采用UDP組播的形式,每條指令由數(shù)據(jù)頭、有效長度、消息ID、指令數(shù)據(jù)、校驗字組成。遙控指令主要包括控制無人機起飛前的檢查指令、起飛指令、飛行中的控制指令、降落指令等。其中,起飛前檢查包括電機檢測、磁校準、電機轉動、參數(shù)設置等指令;飛行過程中包括對無人機的高度、航向、飛行時間等的規(guī)劃指令。
操作人員可以隨時單擊地面站軟件上的指令按鈕向無人機發(fā)送相應指令,但無人機的安全飛行對指令的發(fā)送有其內(nèi)在的邏輯要求。因此,發(fā)送遙控指令最大的難點在于如何實現(xiàn)大量指令的合理發(fā)送。這需要根據(jù)系留多旋翼無人機的特點,了解其內(nèi)部操作邏輯,既能滿足研制要求,也符合無人機安全飛行原則。比如:發(fā)送起飛指令的前提是需先成功發(fā)送解鎖指令,使飛機達到解鎖狀態(tài);而發(fā)送解鎖指令的前提需先成功發(fā)送自檢指令,完成無人機起飛前的檢查。
2.2 接收遙測數(shù)據(jù)
實現(xiàn)對遙測數(shù)據(jù)的接收和解析是地面站軟件的核心功能之一,無人機通過機載數(shù)據(jù)鏈路將采集的飛行信息和載荷狀態(tài)信息等數(shù)據(jù)發(fā)送到地面的數(shù)據(jù)鏈路接收裝置,地面鏈路再將接收的數(shù)據(jù)傳送到地面站軟件。軟件接收到數(shù)據(jù)后,不能直接發(fā)送到界面顯示,需要先按照指定協(xié)議校驗,校驗通過再進行解析、運算以及邏輯處理,將數(shù)據(jù)顯示到界面[6]。接收遙測數(shù)據(jù)的代碼如下。
(1)使用QUdpSocket,創(chuàng)建組播對象。
QUdpSocket* udpYKGroup;
udpYKGroup = new QUdpSocket(this);
(2)綁定IP和端口。
bool YKret = udpYKGroup->
bind(QHostAddress(localIP),YK_Port, QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint); //讀取配置文件中的localIP
(3)指定接收數(shù)據(jù)的網(wǎng)卡。
QList
QNetworkInterface intf;
foreach(QNetworkInterface intf, list)
{
foreach(QNetworkAddressEntry entry, intf.addressEntries()){
if(entry.ip()==QHostAddress(localIP)){
udpYCGroup->setMulticastInterface(intf);
……
}}
(4)接收遙測數(shù)據(jù)。
while(udpYCGroup->hasPendingDatagrams())
{
QByteArray *datagram;
datagram = new QByteArray();
datagram->resize(udpYCGroup->pendingDatagramSize());
udpYCGroup->readDatagram(datagram->data(), datagram->size());
}
(5)數(shù)據(jù)校驗、解析。
3 數(shù)據(jù)顯示模塊
為保證操作便捷、界面整潔,地面站軟件將接收到的數(shù)據(jù)分為幾個界面進行顯示,分別為主界面、飛行數(shù)據(jù)信息界面以及載荷數(shù)據(jù)信息界面。其中,主界面主要顯示載荷圖像信息、報警信息和重要飛行數(shù)據(jù)信息。飛行數(shù)據(jù)界面顯示無人機下傳的所有飛行數(shù)據(jù)信息;載荷信息界面顯示載荷設備下傳的所有載荷狀態(tài)信息。
3.1 飛行數(shù)據(jù)信息顯示
飛行數(shù)據(jù)信息采用圖表、圖形與文字的組合方式進行顯示。其中,與無人機飛行狀態(tài)有關的橫滾角、俯仰角、航向角等關鍵數(shù)據(jù)使用實時曲線圖形式顯示在軟件的主界面,以便操作人員通過界面曲線變化情況,直觀地觀察無人機整體飛行狀態(tài),及時調整飛行姿態(tài)。無人機的信號強弱、電壓值和電池電量,參考手機的信號和電池電量的顯示形式,以圖形的方式在主界面的右上方顯示,操作人員可以實時觀察無人機通信和電壓情況。無人機下傳的所有飛行數(shù)據(jù)信息在飛行信息界面顯示。當有需要時,操作人員可以點擊飛行信息按鈕調出該界面,從而更全面、準確地觀察無人機的飛行狀態(tài)。
3.2 載荷數(shù)據(jù)信息顯示
載荷數(shù)據(jù)的顯示內(nèi)容由無人機搭載的載荷類型決定,不同載荷類型顯示界面不同。載荷數(shù)據(jù)主要分為兩部分,一部分為載荷自身的設備狀態(tài)信息,操作人員可以通過點擊主界面的載荷狀態(tài)按鈕調出該界面;另一部分為載荷設備探測到的圖像信息、信號頻譜信息等,該信息在軟件主界面顯示。
3.3 報警信息顯示
故障報警信息提示是無人機地面站軟件極其重要的功能之一,它可以提醒地面操作人員根據(jù)報警內(nèi)容實施相應的控制策略,以便及時排除故障、保證飛行安全[6]。該軟件主要通過文字、圖形及聲音3種方式傳遞故障信息,并且劃分故障等級。故障等級不同,采用的報警方式不同。
(1)當出現(xiàn)飛行數(shù)據(jù)超出協(xié)議規(guī)定的范圍的情況時,飛行數(shù)據(jù)信息界面中相應的數(shù)據(jù)顯示為:“--”,且文字顏色由正常的綠色變?yōu)榧t色,以便操作人員查看。
(2)當機載電壓值、地面電壓值或電池電量值低于設定的報警閾值,則對應圖標變?yōu)榧t色。
(3)當出現(xiàn)鏈路丟失、解算失敗、無IMU數(shù)據(jù)、低電壓返航、氣壓計異常等報警提示時,軟件主界面頂端位置彈出報警提示框,并在報警框中顯示故障信息,為使報警信息更加醒目,報警框中文字顏色為紅色。
(3)當涉及飛行安全的重要指標出現(xiàn)故障或載荷設備鏈接異常時,軟件同時會通過聲音報警的方式提示操作人員。當報警解除后,聲音報警自動停止,操作人員也可以手動關閉聲音報警。
4 電子地圖模塊
該系統(tǒng)使用第三方地圖庫,采用動態(tài)顯示加載外部庫的方式調用地圖庫。地面站軟件使用Qt自帶的QLibrary進行加載,通過調用協(xié)議中指定的接口函數(shù)加載電子地圖,并將無人機下傳的經(jīng)度、緯度、高度等信息傳送給地圖庫。地圖庫可以對無人機當前飛行位置進行標注,繪制無人機運行軌跡,并支持地圖的基本操作功能,包括:放大、縮小、清除軌跡、打開漫游、取消漫游、進入量算、退出量算等。
加載地圖庫的步驟如下:
(1)把調用的地圖庫放在與地面站軟件.exe同一路徑中。
(2)在地面站軟件顯示地圖的UI界面上拖拽一個QWidget控件,用于顯示加載的地圖。
(3)加載地圖庫。
5 數(shù)據(jù)存儲與回放
5.1 數(shù)據(jù)存儲
數(shù)據(jù)存儲的主要功能是按照指定的路徑和存儲格式存儲無人機下傳的飛行數(shù)據(jù)及載荷設備下傳的圖像數(shù)據(jù)等信息,并且能夠在必要時將存儲的數(shù)據(jù)進行回放。
本軟件采用文本的形式存儲數(shù)據(jù),數(shù)據(jù)存儲在一個單獨的線程中進行,使用QTextStream類進行存儲,該類能將二進制文件以數(shù)據(jù)流的形式進行存儲[7]。當網(wǎng)口從指定端口和IP地址接收到無人機下傳的飛行數(shù)據(jù)后,在指定文件夾下,建立以當前時間命名的文本文檔,通過QTextStream的out函數(shù)將接收的數(shù)據(jù)寫入文本文檔中。
5.2 數(shù)據(jù)回放
數(shù)據(jù)回放功能主要是根據(jù)選擇的數(shù)據(jù)文件將存儲的數(shù)據(jù)以與接收時完全相同的方式顯示,復現(xiàn)飛行狀況,以便更準確地對飛行數(shù)據(jù)進行分析[8]。
數(shù)據(jù)回放的前提需斷開無人機與地面站軟件的連接。否則,界面既顯示無人機下傳的數(shù)據(jù)又顯示回放數(shù)據(jù),會造成界面數(shù)據(jù)跳動、圖像錯亂等現(xiàn)象。
數(shù)據(jù)回放多用于觀察無人機整體飛行狀況或故障排查,很多情況下并不需要對每一幀數(shù)據(jù)都仔細觀察,而在排查故障時,又需要對故障數(shù)據(jù)詳細排查。因此,本研究設計了6種回放速度,分別為0.5倍、0.75倍、正常速度、1.5倍、2倍、3倍。操作人員可以通過點擊回放速度按鈕,選擇合適的回放速度。
6 測試結果分析及結論
開發(fā)完成的地面站軟件經(jīng)過3種測試方式驗證其性能。(1)專門開發(fā)了一套針對此地面站軟件的測試程序,對軟件的功能進行逐一測試;(2)邀請具有測評資質的第三方測評機構對軟件測評,測評機構分別對軟件的功能、外部接口、內(nèi)部接口、適應性、安全性等方面進行了兩輪測試,軟件最終通過測評;(3)在各種環(huán)境下,經(jīng)多輪實際飛行實驗,對軟件功能進行測試。經(jīng)多種測試結果分析,該套軟件具有界面簡潔、操作方便等特點,較好地實現(xiàn)了各部分功能,具有較強的實用性。整個系統(tǒng)是基于Qt平臺開發(fā)的,具有良好的可移植性和擴展性。
參考文獻
[1]付松源.系留多旋翼無人機及其在戰(zhàn)術通信中的應用[J].電子技術應用,2018(4):14-17,22.
[2]龍文彪.系留多旋翼無人機及其應用[J].科技創(chuàng)新導報,2020(2):57,59.
[3]吳侹.系留多旋翼無人機通信系統(tǒng)在應急救災通信中的應用[J].移動通信,2016(15):68-71.
[4]李帥,范項媛.基于Qt的無人機地面站軟件系統(tǒng)的設計[J].雷達科學與技術,2017(4):410-414,420.
[5]吳許夢華,龐振岳.基于Qt的多旋翼電動無人機地面站軟件設計與實現(xiàn)[J].飛機設計,2020(3):9-13,17.
[6]寧金星,盧京潮,閆建國.基于VC++的無人機飛控地面站軟件的開發(fā)[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]嚴赫.無人機地面站軟件的設計實現(xiàn)及其數(shù)據(jù)庫應用[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