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