顧國民, 盧 瑾, 潛 杰
(浙江工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,杭州 310023)
隨著無人機(jī)技術(shù)的逐漸成熟,無人機(jī)已應(yīng)用于工業(yè)巡檢,例如地質(zhì)勘測[1]、電力巡檢[2-5]、輸油管道[6]、噴灑農(nóng)業(yè)等。與傳統(tǒng)人工巡檢相比,無人機(jī)巡檢地形條件限制小,時(shí)間節(jié)省,有利于提高巡檢效率。巡檢實(shí)際工作場景中受到信號干擾或阻擋較為嚴(yán)重時(shí),地面工作站容易丟失對無人機(jī)的監(jiān)視,無法實(shí)時(shí)查看無人機(jī)當(dāng)前狀態(tài)以及作業(yè)情況,甚至造成無人機(jī)飛行過程中失控、丟失的情況發(fā)生[7-11]。
樹莓派是一款采用ARM架構(gòu)的微型電腦主板,具有強(qiáng)大的系統(tǒng)功能和接口資源,具備所有PC的基本功能,可安裝完整的Linux系統(tǒng),支持多種語言進(jìn)行應(yīng)用開發(fā),經(jīng)過多代產(chǎn)品的迭代,功能穩(wěn)定,開發(fā)資料眾多,通用性好,且具有體積小、功耗低和重量輕等特點(diǎn)。
對于無人機(jī)而言,低功耗以及重量輕的優(yōu)點(diǎn)能夠最大限度減少對無人機(jī)續(xù)航的影響[12-15]。本文針對無人機(jī)巡檢過程中產(chǎn)生的問題,設(shè)計(jì)了一套以樹莓派為平臺的無人機(jī)飛行監(jiān)控機(jī)載系統(tǒng),以解決巡檢無人機(jī)作業(yè)過程中突發(fā)的信息中斷缺陷,并在該情況下依托移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)實(shí)施緊急信息回傳和設(shè)備定位等功能。
無人機(jī)飛行數(shù)據(jù)監(jiān)控機(jī)載系統(tǒng)具備以下功能:
(1)增加備用電源裝置,實(shí)現(xiàn)主、備電源兩種供電方式,確保無人機(jī)一旦出現(xiàn)電源故障,機(jī)載系統(tǒng)依然可以持續(xù)工作。
(2)對無人機(jī)狀態(tài)、網(wǎng)絡(luò)連接狀態(tài)以及電源狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測,并顯示監(jiān)測結(jié)果。
(3)機(jī)載系統(tǒng)實(shí)時(shí)存儲無人機(jī)網(wǎng)絡(luò)狀態(tài)、電源、無人機(jī)數(shù)據(jù)程序、系統(tǒng)以及無人機(jī)飛行狀態(tài)數(shù)據(jù)等信息。
(4)利用4G移動(dòng)通信技術(shù)將設(shè)備定位及機(jī)載系統(tǒng)工作狀態(tài)數(shù)據(jù)實(shí)時(shí)傳送至起到類似飛機(jī)飛行數(shù)據(jù)記錄儀的功能,提高無人機(jī)巡檢工作的穩(wěn)定性。
為實(shí)現(xiàn)以上功能,機(jī)載系統(tǒng)分為微型主板、電源、顯示以及通信等模塊主要部分,各模塊安裝于防水防塵的外盒中,并固定于無人機(jī)頂部,系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)圖
機(jī)載系統(tǒng)硬件包括主控平臺、電源、顯示、通信以及負(fù)責(zé)無人機(jī)與主控平臺間交互的串口通信模塊,系統(tǒng)原理如圖2所示。
圖2 機(jī)載系統(tǒng)工作原理圖
微型主板是機(jī)載系統(tǒng)的核心部分,主要負(fù)責(zé)計(jì)算、處理各種數(shù)據(jù),如無人機(jī)的位姿、飛行速度以及電池電量等信息,同時(shí)要保持與地面站的數(shù)據(jù)連接,需要有足夠的運(yùn)算精度與能力,足夠的通信接口等。本文選用樹莓派3B作為無人機(jī)二次開發(fā)平臺,安裝Arm版操作系統(tǒng)Ubuntu Mate 16.04,并在該操作系統(tǒng)上部署機(jī)器人操作系統(tǒng)(Robot Operating System,ROS)作為DJI OSDK開發(fā)環(huán)境,通過其訂閱和分發(fā)功能與無人機(jī)進(jìn)行通信,并對獲取得的無人機(jī)傳感器信息進(jìn)行處理,得到當(dāng)前時(shí)間、GPS經(jīng)緯度、飛行高度、飛行速度、電池電量等信息,存儲在本地以待移動(dòng)通信系統(tǒng)進(jìn)行上傳。微型主板與其他功能模塊進(jìn)行連接。
機(jī)載系統(tǒng)具有主電源供電和備用電源供電兩種方式,無人機(jī)出現(xiàn)電源故障依然可以監(jiān)控其作業(yè)狀態(tài)及位置,并記錄無人機(jī)作業(yè)信息。
電源模塊由降壓、主、備電源切換以及備用電源模塊組成。降壓穩(wěn)壓模塊采用UBEC 5A,其輸入端與無人機(jī)的電源輸出端連接,輸出端與UPS電源模塊的輸入端連接,無人機(jī)輸出電壓為24 V,降壓穩(wěn)壓模塊將24 V降低到5 V,提供3 A的輸出電流;備用電池模塊包括電源管理擴(kuò)展板和充電電池,電源管理擴(kuò)展板采用U100 UPS,電池采用18650鋰電池,其中U100 UPS的電源輸出管腳和GND管腳分別和微型主板的電源輸入管腳和GND管腳連接。主、備電源切換采用一路光耦隔離模塊檢測電源輸入模式,模塊的輸入端與降壓模塊的輸出端連接,信號輸出端OUT-I/O與樹莓派的第13號GPIO管腳連接,接地端與樹莓派的GND管腳相連。當(dāng)有電源接入時(shí),輸出為低電平;電源斷開時(shí),輸出為高電平,通過樹莓派的GPIO讀取高、低電平信號,進(jìn)行電源輸入的判斷。
機(jī)載系統(tǒng)對無人機(jī)狀態(tài)、網(wǎng)絡(luò)連接狀態(tài)以及電源狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測并顯示,顯示模塊選用7.4 mm e-Paper柔性墨水屏,該屏帶有內(nèi)部控制器,使用SPI接口通信,且具有支持局部刷新、功耗低、視角寬、斷電仍可清晰顯示等優(yōu)點(diǎn)。顯示模塊的SPI通信接口與樹莓派Board物理引腳進(jìn)行連接,顯示屏幕嵌于外盒頂部。顯示屏劃分為5個(gè)部分,分別用于顯示系統(tǒng)時(shí)間、OSDK連接狀態(tài)、網(wǎng)絡(luò)連接狀態(tài)、無人機(jī)工作狀態(tài)及系統(tǒng)運(yùn)行狀態(tài)。
本文采用4G LTE WIFI Dongle無線上網(wǎng)卡,通過USB口與樹莓派進(jìn)行連接,安裝在機(jī)載系統(tǒng)盒內(nèi),通信系統(tǒng)利用3G/4G移動(dòng)通信信號,將飛行數(shù)據(jù)通過http協(xié)議實(shí)時(shí)上傳至云端。經(jīng)驗(yàn)證,無人機(jī)搭載本系統(tǒng)使用4G模塊在高度100 m的環(huán)境下可以穩(wěn)定運(yùn)行。
無人機(jī)的主控芯片為單片機(jī),樹莓派屬于PC機(jī),兩者之間的通信需要通過信號轉(zhuǎn)換,本文采用CH340G芯片與無人機(jī)主控芯片連接,實(shí)現(xiàn)USB轉(zhuǎn)TTL,將電平轉(zhuǎn)換到雙方都能識別的信號,以便樹莓派能有效地讀取無人機(jī)發(fā)送的信號。CH340G芯片通過排線與無人機(jī)上的UART口連接,CH340G芯片的TX腳連接無人機(jī)的RX腳,RX腳連接無人機(jī)的TX腳,通過USB口將CH340G芯片與樹莓派連接,將雙方識別的電平轉(zhuǎn)換為通信電平。
選用Python和C++語言編程,利用Python簡潔的語法特性和強(qiáng)大的圖像庫支持,實(shí)現(xiàn)狀態(tài)顯示、網(wǎng)絡(luò)檢測、供電方式判斷等功能,C++語言實(shí)現(xiàn)無人機(jī)行數(shù)據(jù)信息讀取等功能,運(yùn)行流程如圖3所示。
圖3 機(jī)載系統(tǒng)運(yùn)行流程圖
機(jī)載系統(tǒng)在無人機(jī)開機(jī)時(shí)自動(dòng)通電開機(jī),在進(jìn)入系統(tǒng)后,無人機(jī)飛行數(shù)據(jù)獲取、處理以及上傳等功能的程序均以腳本方式自動(dòng)運(yùn)行,無須人為進(jìn)行任何操作。
圖4為ubuntu16.04開機(jī)自啟動(dòng)腳本文件start.sh。
圖4 自啟動(dòng)腳本文件
設(shè)備開機(jī)后機(jī)載系統(tǒng)自動(dòng)運(yùn)行入口腳本,啟動(dòng)各模塊功能,并以記事本格式存儲信息,信息數(shù)據(jù)包括網(wǎng)絡(luò)狀態(tài)、電源狀態(tài)、無人機(jī)數(shù)據(jù)程序狀態(tài)、系統(tǒng)狀態(tài)以及無人機(jī)飛行數(shù)據(jù)等。機(jī)載系統(tǒng)從存儲信息中讀取部分信息實(shí)時(shí)上傳至云端。腳本文件運(yùn)行順序分別為:
(1)開啟墨水屏驅(qū)動(dòng)程序腳本,讀取系統(tǒng)狀態(tài)值,并通過墨水屏顯示當(dāng)前系統(tǒng)狀態(tài)。
(2)調(diào)用ROS系統(tǒng)版本SDK,通過ROS的發(fā)布功能以不同主題發(fā)布無人機(jī)的狀態(tài)數(shù)據(jù),待訂閱程序進(jìn)行接受并處理。
(3)判斷當(dāng)前網(wǎng)絡(luò)狀態(tài),實(shí)時(shí)修改系統(tǒng)網(wǎng)絡(luò)狀態(tài),并在網(wǎng)絡(luò)可用的情況下進(jìn)行數(shù)據(jù)上傳。
(4)通過樹莓派的GPIO口判斷主板的供電方式是主電源供電還是備用電源供電。
(5)訂閱發(fā)布的主題消息獲取無人機(jī)原始數(shù)據(jù),將無人機(jī)原始數(shù)據(jù)處理后存儲到本地待發(fā)送文件,并保存以開始時(shí)間命名的日志文件。
飛行數(shù)據(jù)信息獲取模塊主要實(shí)現(xiàn)無人機(jī)原始數(shù)據(jù)的獲取、處理及本地保存,DJI OSDK是一個(gè)用于開發(fā)無人機(jī)應(yīng)用程序的開發(fā)工具包,基于OSDK開發(fā)的應(yīng)用程序能夠運(yùn)行在機(jī)載計(jì)算機(jī)上,通過調(diào)用OSDK的開放接口,實(shí)現(xiàn)飛行控制及圖像感知等應(yīng)用功能,OSDK提供了豐富的接口,方便開發(fā)者使用第3方應(yīng)用程序和算法框架,滿足用戶個(gè)性化的應(yīng)用功能和控制需求。
基于OSDK開發(fā)的應(yīng)用程序運(yùn)行在嵌入式操作系統(tǒng)ROS,并通過ROS的發(fā)布功能將無人機(jī)的狀態(tài)數(shù)據(jù)以不同主題進(jìn)行發(fā)布,包括電池電量信息、GPS信息。以及可以測量速度、方向的IMU信息,訂閱程序接受發(fā)布的主題消息獲取無人機(jī)原始數(shù)據(jù),進(jìn)行處理后存儲本地待發(fā)送文件中,并保存以開始時(shí)間命名的日志文件,圖5是無人機(jī)機(jī)載系統(tǒng)訂閱程序接收消息并處理的工作流程圖。
圖5 訂閱程序流程圖
機(jī)載系統(tǒng)從無人機(jī)獲取原始數(shù)據(jù)信息,采樣頻率3 Hz,計(jì)算處理得到包括定位時(shí)間、經(jīng)度、維度、高度、水平速度、垂直速度、與起飛點(diǎn)距離以及電池電量,詳細(xì)格式見表1,存儲于本地gps.txt文件。無人機(jī)應(yīng)用程序的開發(fā)工具包工作狀態(tài)存儲于osdkstatue.txt文件。
表1 采集數(shù)據(jù)格式表
網(wǎng)絡(luò)檢測模塊用于獲取數(shù)據(jù)上傳之前,判斷當(dāng)前網(wǎng)絡(luò)狀態(tài),實(shí)時(shí)修改系統(tǒng)網(wǎng)絡(luò)狀態(tài)信息,并在網(wǎng)絡(luò)可用的情況下將文件gps.txt中存儲的數(shù)據(jù)進(jìn)行發(fā)送,工作流程如圖6所示,當(dāng)前網(wǎng)絡(luò)的狀態(tài)信息將存儲于本地的networkstatue.txt文件。
電源檢測模塊通過GPIO口讀取高低電平信號進(jìn)行判斷,低電平為主電源供電,高電平為備用電源供電,若是備用電源供電,機(jī)載系統(tǒng)根據(jù)設(shè)定時(shí)間工作運(yùn)行后實(shí)現(xiàn)自動(dòng)關(guān)閉,電源狀態(tài)信息保存于本地shutdown.txt文件。
通過開啟墨水屏驅(qū)動(dòng)程序腳本,讀取系統(tǒng)狀態(tài)值顯示當(dāng)前系統(tǒng)狀態(tài),狀態(tài)信息分別從osdkstatue.txt、networkstatue.txt以及shutdown.txt文件中讀取,并存儲為systatue.txt。顯示屏劃分為5個(gè)部分,分別用于顯示系統(tǒng)時(shí)間、OSDK連接狀態(tài)、網(wǎng)絡(luò)連接狀態(tài)、無人機(jī)M300工作狀態(tài)及系統(tǒng)運(yùn)行狀態(tài),根據(jù)程序啟動(dòng)和信號獲取情況設(shè)計(jì)8種機(jī)載系統(tǒng)狀態(tài),見表2。
表2 機(jī)載系統(tǒng)狀態(tài)表
圖7為網(wǎng)絡(luò)程序未啟動(dòng)狀態(tài)(表2中狀態(tài)3)下的墨水屏工作狀態(tài)顯示示例。
圖7 狀態(tài)顯示示例
無人機(jī)機(jī)載系統(tǒng)搭載的飛行設(shè)備采用的是四旋翼無人機(jī)經(jīng)緯M300 RTK,該無人機(jī)可支持懸停、低速巡航,最大有效載荷為2.7 kg,抗風(fēng)能力達(dá)到7級,可適應(yīng)-20~50℃的溫度環(huán)境。
圖8為機(jī)載系統(tǒng)設(shè)備實(shí)物圖。
圖8 機(jī)載系統(tǒng)實(shí)物圖
實(shí)驗(yàn)過程中,除顯示屏嵌套安裝在密閉外盒表面,其他機(jī)載系統(tǒng)部件組裝在外盒中,并固定在無人機(jī)頂部,實(shí)驗(yàn)場景如圖9所示。
圖9 機(jī)載系統(tǒng)安裝圖
實(shí)際測試中,針對無人機(jī)飛行的高度以及速度進(jìn)行的實(shí)驗(yàn)論證,在保證安全可靠的前提下,目前得到的飛行高度為100 m;飛行最大速度為12 m/s,實(shí)際續(xù)航時(shí)間在26 min左右,有效單次飛行距離為16 km。
圖10為無人機(jī)在校園內(nèi)實(shí)際飛行測試中,機(jī)載系統(tǒng)上傳鷹眼實(shí)時(shí)繪制的飛行軌跡圖以及回傳的飛行數(shù)據(jù)及定位信息。
圖10 校園實(shí)測飛行軌跡及飛行數(shù)據(jù)圖
本文基于樹莓派設(shè)計(jì)一套對無人機(jī)飛行數(shù)據(jù)實(shí)時(shí)監(jiān)視的機(jī)載系統(tǒng),解決無人機(jī)在飛出遙控范圍或遇到突發(fā)事件下失控的問題,利用移動(dòng)通信技術(shù)為系統(tǒng)開發(fā)多鏈路的數(shù)據(jù)傳輸系統(tǒng),提高數(shù)據(jù)傳輸?shù)目煽啃?,同時(shí)降低無人機(jī)的飛行風(fēng)險(xiǎn),保證每次飛行作業(yè)數(shù)據(jù)能得到有效、高效的保管,實(shí)現(xiàn)數(shù)據(jù)的可追溯,極大地提高了無人機(jī)巡檢工作的穩(wěn)定性和安全性,對教學(xué)、科研及生產(chǎn)等領(lǐng)域都有較大的參考價(jià)值。