張玉恒 武燕 徐延勇/河南機電職業(yè)學(xué)院
無人機快遞是提升鄉(xiāng)村物流效率的有效途徑,本文針對鄉(xiāng)村環(huán)境下的無人機物流問題,探討了無人機物流監(jiān)控系統(tǒng)構(gòu)建問題,給出了物流中心服務(wù)器、客戶端及實時通信等的設(shè)計方案,為下一步的系統(tǒng)實現(xiàn)奠定了基礎(chǔ)。
無人機由于其本身速度快、飛行直達、無擁堵等特點,可以有效提高鄉(xiāng)村物流配送的效率,降低配送成本。因此,推動物流無人機廣泛應(yīng)用于農(nóng)村電商物流市場,對中國物流行業(yè)、農(nóng)村電商行業(yè)和民用無人機行業(yè)具有重要意義。
無人機物流監(jiān)控是無人機物流運輸中十分重要的環(huán)節(jié),影響著無人機飛行的安全和貨物投遞的時效性。然而,目前無人機的監(jiān)控,大多是利用無線數(shù)傳設(shè)備對單架無人機進行點對點通信,無法滿足對多架無人機同時進行監(jiān)控。隨著4G網(wǎng)絡(luò)的發(fā)展和普遍應(yīng)用,可以滿足低空(300m以下)無人機數(shù)據(jù)傳輸?shù)囊螅軌蜃鳛闊o人機物流監(jiān)控的通信手段,實現(xiàn)無人機的組網(wǎng)和遠距離飛行,這就為鄉(xiāng)村無人機物流系統(tǒng)奠定了基礎(chǔ)。鄉(xiāng)村無人機物流系統(tǒng)一般由上級物流中心、無人機物流中心、鄉(xiāng)村投遞點、無人機、通信基站及導(dǎo)航衛(wèi)星等幾部分組成,各部分通過無線或有線的方式接入互聯(lián)網(wǎng)。
借助于互聯(lián)網(wǎng),可以實現(xiàn)無人機物流的實時有效監(jiān)控。基于互聯(lián)網(wǎng)的無人機物流監(jiān)控系統(tǒng)架構(gòu)如圖1所示,為三層架構(gòu),分別是表示層、業(yè)務(wù)層和數(shù)據(jù)層。其中表示層包括中心客戶端、投遞點客戶端;業(yè)務(wù)層包含Web服務(wù)器、GIS服務(wù)器,數(shù)據(jù)庫為postgreSQL云數(shù)據(jù)庫。
圖1 監(jiān)控系統(tǒng)架構(gòu)圖
業(yè)務(wù)層主要是實現(xiàn)客戶端請求的服務(wù)接口,由Web服務(wù)器、GIS服務(wù)器組成。
(1)Web服務(wù)器
Web服務(wù)器是指駐留于因特網(wǎng)上某種類型計算機的程序,可以向瀏覽器等Web客戶端提供文檔,Web服務(wù)器具有高度通用性、語言獨立性、平臺獨立性和高度可集成性等特點。而Ubuntu是一個以桌面應(yīng)用為主的開源GNU/Linux操作系統(tǒng),它為用戶提供一個穩(wěn)定、主要由自由軟件構(gòu)建而成的操作系統(tǒng)。在Ubuntu上搭建web的服務(wù)器,可以結(jié)合兩者的優(yōu)點,快速開發(fā)出一個穩(wěn)定通用的服務(wù)器。
基于Ubuntu的Web服務(wù)器架構(gòu)如圖3所示,主要所需要的組件包括:nginx、uwsgi、django開發(fā)包、python運行環(huán)境、postgreSQL數(shù)據(jù)庫。
web服務(wù)器在Nginx服務(wù)器通過8000端口進行監(jiān)聽,當(dāng)有數(shù)據(jù)請求到達端口時,會解包分析是靜態(tài)請求還是動態(tài)請求,如果是請求CSS文件、JS文件等靜態(tài)請求,則直接尋找到時文件并返回至客戶端;如果是動態(tài)請求,則將請求轉(zhuǎn)發(fā)到uwsgi服務(wù)器。Uwsgi服務(wù)器再將請求進行解析,并將解析結(jié)果轉(zhuǎn)發(fā)至對應(yīng)的Django模塊。Django模塊再經(jīng)過Request中間件處理,之后使用URLConf正則匹配發(fā)送的url,進一步解析出是訪問哪個功能模塊,之后在Views這一功能模塊中獲取發(fā)送的業(yè)務(wù)數(shù)據(jù),并通過ORM組件訪問數(shù)據(jù)庫,最后將需要的數(shù)據(jù)封裝成JSON格式,并逐步返回至Response處理器和uwsgi服務(wù)器,然后uwsgi服務(wù)器再將數(shù)據(jù)返回至nginx,niginx服務(wù)器再將數(shù)據(jù)返回至客戶端。
(2)GIS服務(wù)器
GIS服務(wù)器是目前業(yè)內(nèi)功能最強的專業(yè)級GIS數(shù)據(jù)采集器,可以滿足復(fù)雜環(huán)境及多樣化的使用需求,因此可以利用GIS服務(wù)器對地圖數(shù)據(jù)進行管理,并對多架無人機的飛行航跡數(shù)據(jù)進行采集處理。GIS服務(wù)功能架構(gòu)如圖3所示,主要包括了如下組件:postgreSQL+postGIS、osm2pgsql、mapnik以及mod_tile等。
在此系統(tǒng)架構(gòu)中,首先將O S M文件利用osm2pgsql轉(zhuǎn)換工具導(dǎo)入到PostgreSQL中對并PostGIS進行擴展,然后使用Mapnik對地圖元數(shù)據(jù)進行渲染,并以瓦片的形式進行展示,其地圖的樣式由Mapnike style sheet文件控制;最后將瓦片數(shù)據(jù)通過Apache服務(wù)器發(fā)送給客戶端。
客戶端將GIS發(fā)送來的瓦片數(shù)據(jù)進行渲染,然后監(jiān)聽用戶的響應(yīng),并實時處理地圖數(shù)據(jù)。
目前Android設(shè)備的應(yīng)用越來越廣泛,得益于Android系統(tǒng)開放性、開源、免費、可定制、束縛少、開發(fā)自由度高等優(yōu)點,基于Android的客戶端是一種可靠、便捷的開發(fā)途徑。Android軟件由前臺顯示界面與后臺服務(wù)兩部分組成。前臺界面主要用于顯示接收到的消息以,并生產(chǎn)向服務(wù)器提交的消息,后臺服務(wù)主要完成持續(xù)定位、數(shù)據(jù)存儲、異常捕獲以及與服務(wù)器之間通信的功能,另外還將數(shù)據(jù)通過廣播的方式向前臺界面發(fā)送。基于Android的客戶端架構(gòu)如圖4所示。
圖2 Web服務(wù)器架構(gòu)
圖3 GIS服務(wù)器架構(gòu)
圖4 Android客戶端框架圖
(1)地圖顯示
地圖顯示是無人機飛行監(jiān)控的一個重要功能,目前與osm相關(guān)的地圖顯示項目比較多,其中OSMdroid是基于OSM地圖服務(wù)器而實現(xiàn)的功能完善的MapView替代品,它還具備一個模塊化的瓦片內(nèi)容提供系統(tǒng)以及在線和離線瓦片來源,另外還包括多圖層支持的繪圖圖標(biāo),也支持用戶自己繪制形狀。選用OSMdroid進行地圖開發(fā)是一個很好的選擇。
1)實時定位
定位功能允許用戶使用在途追蹤功能時查看無人機的定位信息,客戶端在OSM地圖上顯示出無人機所在的實時位置,和實時定位的時間,并定時進行位置信息的更新。
2)飛行軌跡
飛行軌跡功能允許用戶使用在途追蹤功能時查看無人機從出發(fā)地至目的地的所有定位信息,在散點軌跡界面還有消息提示欄,顯示無人機的序號和托運單的起始地點。
(2)調(diào)度管理模塊
調(diào)度管理模塊實現(xiàn)對無人機的調(diào)度管理,主要完成以下一些功能:
1)無人機調(diào)度登記
無人機調(diào)度登記需要填寫出發(fā)地、目的地、計劃出發(fā)時間以及計劃送達時間等信息基于使用的無人機編號。填好信息后,將信息上傳到服務(wù)器,服務(wù)器再將此登記傳送給鄉(xiāng)村投遞點。
2)調(diào)度查詢
調(diào)度查詢需要針對兩端進行。對于物流中心端,可以對每一個托運單的詳細的調(diào)度信息進行查詢,也可以查看每架無人機上掛載了多少貨物。對于投遞端,可以對投送到這一投遞點的托運單詳細信息進行查詢,并對目的地是此投遞點的無人機上掛載的貨物進行查看。
3)投遞點貨物接收確認
當(dāng)無人機將貨物送達投遞點時,投遞點及時將貨物信息進行確認,并將信息上傳到服務(wù)器,服務(wù)器再將此登記傳送給無人機調(diào)度中心。然后無人機進行返航、充電或電池更換等操作。
4)無人機的輔助控制
無人機一般按預(yù)定航路進行自主飛行,但針對貨物配送錯誤或無人機在飛行過程出現(xiàn)的非關(guān)鍵部位故障,需要中心適時發(fā)出控制指令,控制使無人機返航或就近降落。
(1)數(shù)據(jù)交換格式
數(shù)據(jù)交換格式是計算機不同程序之間或者不同編程語言之間進行數(shù)據(jù)交換所定義的標(biāo)準(zhǔn)化的格式。JSON是一種輕量級的數(shù)據(jù)交換格式具有簡單、靈活的特點。JSON由鍵值對構(gòu)成,可以滿足系統(tǒng)數(shù)據(jù)傳輸實時性和可靠性要求,因此選取JSON作為數(shù)據(jù)交互的方式。
(2)HTTP通信協(xié)議與請求框架
HTTP協(xié)議是一種簡單協(xié)議,它主要是為了包裝數(shù)據(jù)而制定的一個規(guī)范,具有易于開發(fā)、SDK與測試工具豐富等特點,另外HTTP所占用的80端口通常不會被防火墻阻擋,因此服務(wù)器提供給客戶端的所有接口都是基于該協(xié)議。。在本系統(tǒng)中,數(shù)據(jù)傳輸層使用TCP/IP協(xié)議,,因為TCP/IP協(xié)議是面向連接的、可靠的數(shù)據(jù)傳輸協(xié)議,可以保障數(shù)據(jù)的可靠性,它使用一個網(wǎng)絡(luò)地址和一個端口號來唯一的標(biāo)識設(shè)備。
在本系統(tǒng)中使用Fast Android Networking LibraryH框架,該框架與JSON集成良好,并且在發(fā)起請求時一方面可以輕松的取消以降低系統(tǒng)開銷,一方面還可以監(jiān)控請求的詳細數(shù)據(jù)分析,另外該框架還與RxJava集成性良好,適合向響應(yīng)性編程過度。
(3)實時通信功能
WebSocket是一個持久化的協(xié)議,它基于TCP的協(xié)議,普通的WebSocket連接使用80端口,基于安全傳輸協(xié)議(TLS)的連接使用443端口。相比于使用輪詢實現(xiàn)的即時通訊,WebSocket協(xié)議只需要瀏覽器和服務(wù)器之間進行一次握手,服務(wù)器與客戶端的連接是全雙工、雙向的,使用單套接字,服務(wù)器可以主動發(fā)送數(shù)據(jù)給客戶端,客戶端也可以隨時向服務(wù)器發(fā)送數(shù)據(jù),此外服務(wù)器與客戶端之間數(shù)據(jù)傳輸?shù)臉?biāo)頭信息很小?;赪ebSocket的優(yōu)點,實時通信采用WebSocket實現(xiàn)。WebSocket客戶端與服務(wù)器之間建立連接需要三個步驟:客戶端發(fā)送握手請求、服務(wù)器響應(yīng)握手請求、客戶端處理服務(wù)器端響應(yīng)。
無人機將在鄉(xiāng)村物流領(lǐng)域發(fā)揮重要的作用,而無人機物流監(jiān)控系統(tǒng)是保障系統(tǒng)安全穩(wěn)定運行的基礎(chǔ),無人機物流監(jiān)控系統(tǒng)設(shè)計包含中心服務(wù)器、客戶端的構(gòu)建及實時通信功能設(shè)計等,下一步將依照本文設(shè)計進行系統(tǒng)實現(xiàn)?!?/p>
(參考文獻:略。如有需要,請聯(lián)系編輯部。)