樊伊君,高加瓊
(1.河南省地質(zhì)礦產(chǎn)勘查開發(fā)局第一地質(zhì)礦產(chǎn)調(diào)查院,洛陽 471023;2.四川職業(yè)技術(shù)學(xué)院 管理系,遂寧 629000)
目前在移動通信網(wǎng)絡(luò)覆蓋范圍內(nèi),圖像傳輸方式可以通過第四代移動通信(4G)信號或者計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行傳輸[1-3].但在一些偏遠(yuǎn)的山區(qū),常常出現(xiàn)發(fā)射信號的基站出現(xiàn)問題或是遠(yuǎn)離發(fā)射基站覆蓋的區(qū)域,致使商業(yè)網(wǎng)絡(luò)通信沒有辦法實(shí)現(xiàn)信息的有效傳輸.在區(qū)域小范圍地質(zhì)地貌普查中該問題突出,特別是在工作人員無法到達(dá)的險(xiǎn)要山區(qū),通過無人機(jī)攜帶圖像獲取設(shè)備,通過短距離傳輸協(xié)議可以很好地解決這一難題.
傳統(tǒng)的地質(zhì)普查采用大型航空器或遙感衛(wèi)星等測繪手段[4],投入成本高.在小區(qū)域地形地貌初步探測中,選擇投入少、見效快的方法獲得初步的圖像對進(jìn)一步開展地貌探測具有顯著的作用.ZigBee是一種具有低成本、短時(shí)延、低功耗、安全性及可靠性高和傳輸距離短等特點(diǎn)的無線傳感器網(wǎng)絡(luò)通信技術(shù),可以很好的解決短距離無線圖像信息的傳輸,主要用于距離短、功耗低且傳輸速率不高的各種電子設(shè)備,支持最高250 kbit·s-1、20 kbit·s-1和40 kbit·s-1三種傳輸速率[5],與移動通信的CDMA網(wǎng)或GSM網(wǎng)不同的是,ZigBee網(wǎng)絡(luò)主要是為工業(yè)現(xiàn)場自動化控制數(shù)據(jù)傳輸而建立,每個(gè)ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)不僅本身可以直接進(jìn)行數(shù)據(jù)采集和監(jiān)控,還可以通過路由節(jié)點(diǎn)自動中轉(zhuǎn)終端節(jié)點(diǎn)傳過來的數(shù)據(jù)資料.ZigBee網(wǎng)絡(luò)可多達(dá)65 535個(gè)無線數(shù)傳模塊(節(jié)點(diǎn))組成的無線數(shù)傳網(wǎng)絡(luò)平臺[6],在整個(gè)網(wǎng)絡(luò)范圍內(nèi),每一個(gè)ZigBee網(wǎng)絡(luò)數(shù)傳模塊之間可以相互通信,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)間的距離可以從標(biāo)準(zhǔn)的75 m通過路由無限擴(kuò)展.通過一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)(又稱協(xié)調(diào)器節(jié)點(diǎn))即可自組織一個(gè)網(wǎng)絡(luò),網(wǎng)絡(luò)形成后其他節(jié)點(diǎn)可以直接加入或通過多跳方式加入該網(wǎng)絡(luò),目前已被廣泛應(yīng)用到智能控制、智能家居、智能監(jiān)控和智能管理等諸多領(lǐng)域[2].
文中擬提出一種基于無人機(jī)的圖像文件傳輸方案,以ZigBee技術(shù)的圖像傳輸為基礎(chǔ),研究圖像文件數(shù)據(jù)傳輸系統(tǒng)組成與關(guān)鍵技術(shù).
系統(tǒng)主要包括:無人機(jī)圖像獲取系統(tǒng)、數(shù)傳部分和地面接收處理三部分組成,圖像獲取部分完成圖像的獲取與分包,數(shù)傳部分完成分包后數(shù)據(jù)的傳輸,地面接收處理部分由計(jì)算機(jī)進(jìn)行圖像合包與人機(jī)交互界面的展示,無人機(jī)主要實(shí)現(xiàn)圖像的采集和發(fā)送.系統(tǒng)的路由節(jié)點(diǎn)和協(xié)調(diào)器節(jié)點(diǎn)采用的是ZigBee CC2530套件[3].ZigBee CC2530不僅支持2.4 GHz IEEE 802.15.4 /ZigBee標(biāo)準(zhǔn)的數(shù)據(jù)傳輸,而且具有穩(wěn)定強(qiáng)大的網(wǎng)絡(luò)組網(wǎng)能力.
系統(tǒng)設(shè)計(jì)的總體結(jié)構(gòu)框圖如圖1所示.
地-空數(shù)據(jù)傳輸網(wǎng)絡(luò)是系統(tǒng)設(shè)計(jì)的關(guān)鍵,安全可靠的傳輸是保證數(shù)據(jù)準(zhǔn)確可靠的第一步.文中通過中心協(xié)調(diào)器來創(chuàng)建ZigBee網(wǎng)絡(luò),當(dāng)有節(jié)點(diǎn)加入時(shí),協(xié)調(diào)器給加入的節(jié)點(diǎn)分配地址,節(jié)點(diǎn)、路由器和協(xié)調(diào)器之間可組成星型網(wǎng)絡(luò)、樹形網(wǎng)絡(luò)和網(wǎng)狀網(wǎng)絡(luò),可根據(jù)需要組建網(wǎng)絡(luò),加入此網(wǎng)絡(luò)的節(jié)點(diǎn)就可進(jìn)行相互通信,完成地-空之間的數(shù)據(jù)無線傳輸.
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
地面計(jì)算機(jī)完成接收數(shù)據(jù)的處理、人機(jī)交互界面的設(shè)計(jì)和合包后圖像的顯示.采用的開發(fā)工具是VC++6.0軟件和MSComm控件.
MSComm為Windows環(huán)境下的串行通信編程Active控件,主要通過串行端口接收圖像數(shù)據(jù).該控件提供兩種處理數(shù)據(jù)通信的方法:事件驅(qū)動法和查詢法,文中系統(tǒng)的數(shù)據(jù)通信采用事件驅(qū)動法[7].
事件驅(qū)動方法是處理串行端口交互作用的一種非常有效的方法,在許多情況下,事件發(fā)生時(shí)需要得到通知.這些情況包括:在串口接收區(qū)中如果有字符;Carier Detect(簡稱CD)或Request to Send(簡稱RTS)線上一個(gè)字符到達(dá);某一事件發(fā)生時(shí)等.在這些場景中,就可以利用MSComm控件的OnComm事件捕獲并處理這些通信事件.
在實(shí)際編程應(yīng)用中,在OnComm事件的處理函數(shù)中加入新事件的處理代碼,這使得系統(tǒng)程序響應(yīng)及時(shí),可靠性高,且每個(gè)MSComm控件對應(yīng)一個(gè)串口端口完成通信.
無人機(jī)圖像數(shù)據(jù)傳輸采用臺灣DTK公司的CC2530系統(tǒng)套件,套件有三種節(jié)點(diǎn)類型:ZigBee協(xié)調(diào)器(Coordinator)、路由節(jié)點(diǎn)(Router)和終端節(jié)點(diǎn)(EndDevice),通過ZigBee Configuration界面對ZigBee模塊進(jìn)行節(jié)點(diǎn)功能配置,根據(jù)節(jié)點(diǎn)位置設(shè)置成所需要的節(jié)點(diǎn)類型[8].其中終端節(jié)點(diǎn)與無人機(jī)通過RS232串口連接圖像采集設(shè)備,路由節(jié)點(diǎn)用來接收并中轉(zhuǎn)(如果距離較大)終端節(jié)點(diǎn)發(fā)送的數(shù)據(jù),通常安裝在傳輸文件的地點(diǎn)的合適地方(可視區(qū)域),該節(jié)點(diǎn)位置可以固定也可以移動;協(xié)調(diào)器通過RS232串口線和接收端計(jì)算機(jī)連接,用來接收終端節(jié)點(diǎn)或者路由節(jié)點(diǎn)發(fā)送的圖像數(shù)據(jù),并通過RS232串口線傳送給地面計(jì)算機(jī),無人機(jī)完成圖像數(shù)據(jù)采集、分包以及處理,接收端計(jì)算機(jī)完成圖像數(shù)據(jù)的解碼、合并等操作,通過上位機(jī)人機(jī)交互界面可判斷圖像文件接收與解碼情況,以此決定下一步執(zhí)行的操作[9].
系統(tǒng)研究的數(shù)據(jù)傳輸系統(tǒng)由圖像數(shù)據(jù)預(yù)處理模塊、ZigBee數(shù)據(jù)傳輸模塊、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收三個(gè)模塊組成,圖像傳輸模塊如圖2所示.
圖2 圖像傳輸模塊框架
圖像接收部分由地面計(jì)算機(jī)完成,采用VC++軟件,編寫程序?qū)邮盏臄?shù)據(jù)進(jìn)行處理,用以保證數(shù)據(jù)在無線傳輸中的完整性、正確性的關(guān)鍵模塊[10].ZigBee中傳輸屬于小數(shù)據(jù)量的無線傳輸,一般都在幾十kbyte到幾百kbyte(壓縮后)之間的文件,對于圖像類的較大數(shù)據(jù)量的數(shù)據(jù)無法直接實(shí)現(xiàn)傳輸,因此要對文件進(jìn)行分包操作.
實(shí)際應(yīng)用中如果設(shè)定的單個(gè)包文件越大,數(shù)據(jù)傳輸?shù)臅r(shí)間就越短,單個(gè)包文件越小,傳輸?shù)臅r(shí)間就越長.因此可根據(jù)實(shí)際需要設(shè)定包的大小,對實(shí)時(shí)性要求較高的場合,可以將包分的大一點(diǎn),盡量減少分包與合包的次數(shù),節(jié)省時(shí)間,對準(zhǔn)確性要求較高的情況下,可以將包分的小一點(diǎn),確保文件可靠傳輸[11].無論何種情況,接收到的文件包在合包之前要進(jìn)行數(shù)據(jù)一致性檢驗(yàn),確保數(shù)據(jù)完整正確.
圖像分包后就要開始數(shù)據(jù)傳輸,數(shù)據(jù)正確傳輸是保證最終圖像完整齊全的前提.當(dāng)發(fā)送端單片機(jī)對數(shù)據(jù)分包并完成正確命名后,依次將不同編號的分包數(shù)據(jù)通過ZigBee節(jié)點(diǎn)模塊進(jìn)行傳輸,如果傳輸距離較大,可以增加中間的路由節(jié)點(diǎn),數(shù)據(jù)首先通過終端節(jié)點(diǎn)傳送到路由節(jié)點(diǎn)或者中心節(jié)點(diǎn)(也可以稱為協(xié)調(diào)節(jié)點(diǎn)或協(xié)調(diào)器),協(xié)調(diào)器將每一個(gè)分包數(shù)據(jù)接收后進(jìn)行排序、對照檢查包數(shù)量,正確無誤后按順序通過RS232接口傳送給接收端計(jì)算機(jī)上位機(jī)軟件,進(jìn)行數(shù)據(jù)的解碼、合并、存儲和圖像顯示等操作,完成整個(gè)數(shù)據(jù)流的傳輸過程[9].
無人機(jī)在開始發(fā)送數(shù)據(jù)時(shí),首先要在發(fā)送端對文件按照壓縮算法進(jìn)行哈夫曼壓縮編碼、分包和編號等操作[12].接收端協(xié)調(diào)器按順序依次接收ZigBee網(wǎng)絡(luò)協(xié)調(diào)器傳送過來的分包數(shù)據(jù),首先將接收分包的序號與本地的接收狀態(tài)變量相比較,如果二者相等就表明是新的數(shù)據(jù)包,就接受該數(shù)據(jù)包,并發(fā)送確認(rèn)報(bào)文,否則就丟棄,丟棄后則需要給發(fā)送端發(fā)送重傳報(bào)文,讓發(fā)送端重傳剛才的分包.并將正確接收的分包進(jìn)行保存、解壓和合并,命名為“-”前的部分,將整個(gè)文件保存為jpg形式.在接收端計(jì)算機(jī)的上位機(jī)界面上可以顯示文件的接收進(jìn)度以及文件的保存狀態(tài).可以根據(jù)包的編號順序在上位機(jī)文件夾中找到保存的分包文件,可以對其進(jìn)行查看、編輯和刪除等操作.
ZigBee網(wǎng)絡(luò)支持網(wǎng)絡(luò)內(nèi)任意節(jié)點(diǎn)與路由器、路由器與路由器以及路由器與協(xié)調(diào)器(中心節(jié)點(diǎn))數(shù)據(jù)的相互傳輸,終端節(jié)點(diǎn)與終端節(jié)點(diǎn)之間不能傳輸數(shù)據(jù).網(wǎng)絡(luò)傳輸方式支持透明傳輸、點(diǎn)對點(diǎn)傳輸兩種.
傳輸時(shí)首先要確定接收端在哪里,接收節(jié)點(diǎn)的位置信息,接收節(jié)點(diǎn)要獲得接收的數(shù)據(jù)來自哪個(gè)節(jié)點(diǎn)所連的無人機(jī),節(jié)點(diǎn)要首先判斷數(shù)據(jù)是否發(fā)送給該節(jié)點(diǎn),如果確定“是”就接收,如果發(fā)現(xiàn)“否”就拒絕接收,所以本實(shí)驗(yàn)涉及的數(shù)據(jù)傳輸主要是peer to peer傳輸.
點(diǎn)對點(diǎn)(peer to peer)數(shù)據(jù)傳輸有以下三種幀格式[13]:
① 完整包短地址尋址方式
指令格式:0xFD + 數(shù)據(jù)長度 + 目標(biāo)地址+數(shù)據(jù),在接收端則要包括接收方收到發(fā)送端的全部數(shù)據(jù) + 來源地址;
② 短地址尋址方式
用ZigBee提供的短地址尋址,通過對發(fā)送方進(jìn)行設(shè)置,接收方收到數(shù)據(jù)后,將包頭、包尾去掉;
③ 自定義地址尋址
該方式去掉包頭和包尾,用自定義地址尋址方式,通過對發(fā)送方進(jìn)行設(shè)置,接收方收到數(shù)據(jù)后,將包頭、包尾去掉.
系統(tǒng)在一臺民用無人機(jī)和一臺地面計(jì)算機(jī)之間實(shí)現(xiàn)圖像的采集、分包、壓縮、無線傳輸、合包、解壓成圖顯示等關(guān)鍵技術(shù),具有成本低、操作簡單等優(yōu)點(diǎn),文件傳輸安全、穩(wěn)定和可靠性高等特點(diǎn).
無人機(jī)發(fā)送圖像時(shí),對圖像文件進(jìn)行壓縮,對壓縮后的文件計(jì)算其字節(jié)數(shù),如果數(shù)據(jù)量沒有超過分包上限,就不用對數(shù)據(jù)進(jìn)行分包直接發(fā)送,如果文件數(shù)據(jù)量大于分包的上限就要對數(shù)據(jù)進(jìn)行分包.
文件分包步驟:
① 獲取文件的名稱,將文件名稱放在第一個(gè)包中進(jìn)行傳輸,文件的名稱不要超過分包的上限也就是10 kbyte,告知接收端由發(fā)送端發(fā)送此名稱的文件.
② 根據(jù)實(shí)際情況將文件分包,分成10 kbyte字節(jié)一個(gè)數(shù)據(jù)分包,將分包的文件名改為<源文件名-分割后的序號i>.分包時(shí)依次循環(huán)分割獲取的圖像文件,直到滿足設(shè)定的文件大小要求,完成數(shù)據(jù)傳輸前文件預(yù)處理操作.分包完成之后通過串口依次對所分的數(shù)據(jù)分包進(jìn)行壓縮處理,通過ZigBee無線網(wǎng)絡(luò)進(jìn)行傳輸.
圖像文件分包過程如圖3所示.
圖3 文件分包過程
獲得的圖像文件進(jìn)行分包完成操作后,對分包后的文件依次按順序進(jìn)行傳輸,為了保證數(shù)據(jù)包文件傳輸?shù)恼_性,接收端計(jì)算機(jī)在接收到分包文件后須發(fā)送確認(rèn)報(bào)文,空中無人機(jī)端ZigBee協(xié)調(diào)器根據(jù)收到的確認(rèn)報(bào)文來判斷分包發(fā)送是否成功,以及判斷是否需要重新發(fā)送數(shù)據(jù)包,如果發(fā)送成功就繼續(xù)發(fā)送下一個(gè)分包并刪除剛才成功發(fā)送的數(shù)據(jù)包,如果發(fā)送失敗就重新發(fā)送剛才失敗的數(shù)據(jù)包,直到發(fā)送成功或達(dá)到所設(shè)置的上限[14].地面端計(jì)算機(jī)通過停止等待協(xié)議進(jìn)行上述操作.
停止等待協(xié)議在分包的小文件經(jīng)過ZigBee無線傳感器網(wǎng)絡(luò)傳輸?shù)浇邮斩撕?,只有收到序號正確的確認(rèn)報(bào)文后,才發(fā)送新的數(shù)據(jù)包,否則重新發(fā)送剛才發(fā)送的數(shù)據(jù)包.序號為分包后“文件名”+“-”后的序號.如果發(fā)送端接收到連續(xù)相同序號的確認(rèn)報(bào)文,那么就表明接收端接收到了錯(cuò)誤的分包.說明剛才發(fā)送端數(shù)據(jù)包不正確,可能是重復(fù)、錯(cuò)序或者丟包,這時(shí)將剛才發(fā)送的數(shù)據(jù)包再次發(fā)送,直到收到序號正確的確認(rèn)報(bào)文.在實(shí)際應(yīng)用中,有時(shí)由于各種干擾,會多次傳輸失敗,多次請求重發(fā),這種情況是不允許的,因此可以設(shè)置系統(tǒng)無限制的重傳重發(fā)的次數(shù)(文中將最大重新發(fā)送次數(shù)設(shè)定為3次),防止無限制重發(fā),造成系統(tǒng)出現(xiàn)崩潰的情況,如果出現(xiàn)超過規(guī)定的次數(shù),則提示“文件發(fā)送失敗”告警,這樣就需要檢查錯(cuò)誤的原因,排除錯(cuò)誤后繼續(xù)傳送數(shù)據(jù).
分包后的圖像文件經(jīng)過停止等待協(xié)議按發(fā)送順序依次被接收端接收,接收端將接收的文件分包保存在計(jì)算機(jī)中指定的文件夾中,并將小文件合并為一個(gè)大文件,大文件以小文件名的“文件名”命名,每次成功合并后就將接收的新的文件分包刪除.將合并后的文件保存在計(jì)算機(jī)中的指定位置.依次循環(huán)來完成文件的合并,完成整個(gè)文件的接收[15].
實(shí)驗(yàn)采用無人機(jī)型號為DJI Inspire V2.0,T600四旋翼飛行器,主要參數(shù)包括:最大飛行高度4 500 m,最大上升速度5 m·s-1,下降速度4 m·s-1,最大水平飛行速度22 m·s-1,最大俯仰角度35°,可承受最大風(fēng)力10 m·s-1,飛行時(shí)間約18 min.飛行器圖像傳感器:SONY EXMOR 1/2.3″,照片分辨率4 000×3 000 pixel.在計(jì)算機(jī)上安裝Visual Studio 2017軟件并配置Open CV模塊進(jìn)行實(shí)驗(yàn)測試.用RS232串口線將一個(gè)ZigBee通信模塊連接到接收端計(jì)算機(jī)上,如果測試的無人機(jī)與計(jì)算機(jī)相隔比較遠(yuǎn)就需要設(shè)置路由節(jié)點(diǎn),對發(fā)送的文件進(jìn)行中繼;一個(gè)終端節(jié)點(diǎn),一個(gè)中心節(jié)點(diǎn)就能完成系統(tǒng)測試.然后給ZigBee模塊上電,系統(tǒng)加電后,設(shè)置傳感器網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)為星型網(wǎng)絡(luò),完成實(shí)現(xiàn)無線數(shù)據(jù)傳輸功能,在終端接收計(jì)算機(jī)上用上位機(jī)軟件實(shí)現(xiàn)接收數(shù)據(jù)的數(shù)據(jù)驗(yàn)證、合包和解碼等操作,得到圖像的十六進(jìn)制代碼,接收完數(shù)據(jù)后保存數(shù)據(jù),如圖4所示.
圖4 收到的十六進(jìn)制數(shù)據(jù)及圖像展示
單擊界面中的“展示”按鈕后,出現(xiàn)轉(zhuǎn)化后的實(shí)際圖像,實(shí)驗(yàn)獲取的圖像像素?cái)?shù)為339×272 pixel,圖像大小約92 kbyte,圖像清晰,效果良好.從圖4中可看出,在分辨率要求不高的情況下,獲取的圖片可以清晰判斷地面一般建筑物與構(gòu)筑物,滿足一般對地質(zhì)外形與地貌識讀要求.
文中在對地形地貌圖像特征研究的基礎(chǔ)上,通過對近距離無線網(wǎng)絡(luò)數(shù)據(jù)傳輸特點(diǎn)的比較,提出了一種基于ZigBee的無人機(jī)無線圖像傳輸系統(tǒng),包括無人機(jī)圖像獲取部分、數(shù)據(jù)預(yù)處理、數(shù)據(jù)傳輸、數(shù)據(jù)分包與合包和壓縮與解壓等模塊,設(shè)計(jì)并實(shí)現(xiàn)了系統(tǒng)的硬件組成(下位機(jī))、軟件設(shè)計(jì)(上位機(jī))、數(shù)據(jù)傳輸關(guān)鍵技術(shù)及數(shù)據(jù)傳輸格式,并進(jìn)行了實(shí)驗(yàn)測試.測試結(jié)果表明,在小區(qū)域野外地質(zhì)普查測量中,可以得到較為清晰的照片,滿足初步了解地形地貌特征.系統(tǒng)的無線網(wǎng)絡(luò)組網(wǎng)簡單、靈活,具有硬件成本低、軟件編程簡單等特點(diǎn),有一定的應(yīng)用前景.受條件所限,對傳輸?shù)膶?shí)時(shí)性和安全性沒有進(jìn)行設(shè)計(jì)與實(shí)現(xiàn),在條件完善時(shí)將開展下一步工作.