□ 楊 楊
(1.南京郵電大學 自動化學院,江蘇 南京 210023;2.南京郵電大學 人工智能學院,江蘇 南京 210023)
近些年,物流業(yè)的快速發(fā)展對物資運輸速度和成本控制提出更高的要求[1]。由于物流無人機的機動性高、成本低、體積小等,能夠為輕型物資運輸提供良好平臺,受到物流企業(yè)的青睞,例如Amazon公司等[2]。物流無人機主要應用場景包括快遞包裹運送、倉庫物資調度等[3],但無論是運送快遞還是調度物資,如何合理規(guī)劃運輸航跡是確保物流無人機安全運輸的重要課題之一[4]。
面對該課題,許多高校相繼開設物流無人機航跡規(guī)劃相關課程,但存在諸多教學困難[5]。一方面,由于物流無人機航跡規(guī)劃算法數據量大、航跡顯示不直觀、實驗設備等局限性,課程往往采用多媒體課件教學的模式。課件的頻繁切換往往會讓學生眼花繚亂,航跡規(guī)劃算法結果不直觀,導致教學效果較差。另一方面,現有無人機航跡規(guī)劃演示平臺都偏向無人機實飛掃描采樣環(huán)境,建立模型,搭配GPS等定位手段開展無人機航跡規(guī)劃[6]。但由于實驗設備資金、安全性、物流場地模擬等因素,同時該類無人機航跡規(guī)劃平臺實用性強、專業(yè)性強,操作時需要考慮諸多因素,操作繁瑣,難以在教學課堂上實飛物流無人機來進行教學演示,無法讓每位學生沉浸式體驗,不適用于物流無人機航跡規(guī)劃教學,甚至會使學生產生畏難情緒,降低學習積極性[7]。
針對上述物流專業(yè)相關課程授課中的困難,本文提出采用MATLAB與JAVA混合編程思想[8],將復雜問題轉換為不同語言之間相互傳遞函數的問題,融合MATLAB在數據操作方面的優(yōu)勢和JAVA中良好實現的MVC模型[9]開發(fā)一個交互性強、操作簡單的物流無人機航跡規(guī)劃演示教學平臺。教師可以根據教學所需實時調整仿真平臺各項控制參數,設計模擬物流過程中存在的障礙物,通過點擊人機交互界面上的運行按鈕運行算法,實現各個航跡點的顯示,同時進行航跡的動態(tài)繪制,將物流無人機航跡規(guī)劃算法得出的大量數據以一種可視化的方式直觀地展現出來,使課程內容具體化與形象化。該平臺既可用于物流無人機航跡規(guī)劃的教學演示與實驗操作,也可安裝單機版用于學生課后自學。
基于MATLAB和JAVA混合編程的物流無人機航跡規(guī)劃教學演示平臺通過MATLAB與JAVA參數交互,利用JAVA圖形用戶接口(GUI)設計一個交互式教學演示平臺。圖1中的圖(a)、圖(b)分別為物流無人機航跡規(guī)劃教學演示平臺的主界面和結構框圖。平臺的界面設計主要分為三大模塊——功能區(qū)、繪制區(qū)、參數區(qū);教學演示系統(tǒng)主要分為三大模式——隨機模式、重置模式、手動模式。
教學過程中,教師可以按照課程需要,選擇相應操作模式。隨機模式中,教師可在參數區(qū)輸入障礙點個數、障礙點半徑,確認參數無誤后,點擊[START]按鈕,算法將隨機生成障礙點坐標,模擬物流無人機飛行過程中可能遇到的障礙物,并在繪制區(qū)動態(tài)繪制相應的障礙物和航線,實時坐標顯示中顯示航跡坐標;在重置模式中,教師可點擊[RESET]按鈕,獲取一組默認值,教學演示平臺將自動通過參數傳遞機制將默認參數傳送給MATLAB中的航跡規(guī)劃算法,利用隨機函數生成障礙點坐標,在繪制區(qū)動態(tài)繪制相應的障礙物和航線,并且在航跡繪制過程中能夠在實時坐標顯示中顯示航跡的位置;在手動模式下,教師可在參數區(qū)輸入障礙點個數、障礙點半徑、障礙點坐標,確認參數無誤后,點擊[MANUAL]按鈕,算法將根據已設參數進行航跡規(guī)劃,動態(tài)繪制相應的障礙物和航線。
(a)教學演示平臺主界面
(b)教學演示平臺結構框架圖1 物流無人機教學演示平臺
本教學演示平臺意圖將物流無人機航跡規(guī)劃算法結果可視化,簡化初始值對算法結果的影響,降低物流無人機航跡規(guī)劃學習難度,加深學習印象。作為一門開發(fā)技術,JAVA很好地實現了模型-視圖-控制器(Model-View-Controller,MVC)模型的控制層。因此,本教學演示平臺利用JAVA圖形用戶接口(GUI)制作人機交互界面。但是,由于JAVA在矩陣運算和數據分析方面的能力明顯較弱,尤其在需要多次循環(huán)操作數組矩陣之類數據時速度變得緩慢,而物流無人機航跡規(guī)劃算法需要大量的矩陣運算和循環(huán)操作,為考慮教學要求,本文借助擅于數值計算、符號運算、矩陣計算的MATLAB編程軟件。通過MATLAB與JAVA混合編程實現優(yōu)勢互補,縮短開發(fā)時間,降低程序設計的復雜度。同時,程序可以脫離MATLAB環(huán)境獨立運行,增加了本教學平臺在教學實踐中的實用性。
本教學演示平臺采用實時接口技術實現數據的傳輸,通過混合編程大幅減少程序的代碼量,同時提高程序的運行速度,能更好地配合教學。本教學演示平臺的內在結構由兩個層面組成,如圖2所示。第一個層面是算法以及建模的應用層,這一層是在MATLAB中實現的。通過GUI界面的用戶傳遞,內存變量接受存儲,在通過接口傳遞給MATLAB的算法系統(tǒng),最終計算出符合條件的最優(yōu)航跡。第二層是人機交互層,這一層使用JAVA編寫GUI界面實現,可以設置算法初始參數,實時動態(tài)繪制MATLAB返回的最優(yōu)航跡。
圖2 平臺數據傳輸示意圖
為提高算法運行效率,方便算法分析比較以及提供更好的觀賞性,本教學演示平臺采用的關鍵技術有航跡規(guī)劃算法跨平臺調用、仿真數據分割存儲、GUI動態(tài)繪制等技術。
在MATLAB環(huán)境中采用粒子群算法求解目標函數的最優(yōu)解,該最優(yōu)解為從起點到終點間避開障礙物的最短路徑各點坐標(xi,yi),以數組形式存儲。為方便基于JAVA的Eclipse調用MATLAB中的求解函數,平臺將基于MATLAB環(huán)境編寫的算法函數打包成jar包供JAVA平臺調用。
由于JAVA與MATLAB調用的單向性,本教學演示平臺將可變參數的設置用JAVA編寫,再傳入MATLAB環(huán)境完成仿真實驗,從而獲取相應返回值。由于基于JAVA的Eclipse環(huán)境與MATLAB中的數組意義不對等,因此Eclipse采用Object類接收MATLAB程序返回值,將其轉化成字符串,并經過多次分割,再存進數組。
本教學演示平臺采用自定義地圖的方式描繪坐標系并畫圖模擬實際物流場景,涉及坐標系的轉換問題。JAVA代碼實現描點時常采用fillOval方法,但精度較低,本平臺采用Eclipse2D.Double類畫圖,精度可達小數點后14位。為實現動態(tài)顯示路徑,本平臺在畫圖函數中采用多線程處理,每畫一個路徑點,就在參數列相應顯示該點坐標,采用線程延時Thread.sleep(500)(此處延時500ms),視覺上形成動態(tài)顯示的效果。
本教學演示平臺通過JAVA圖形用戶接口(GUI)開發(fā)了一個交互性強、操作簡單的物流無人機航跡規(guī)劃演示教學平臺,在參數區(qū)允許對物流無人機航跡規(guī)劃算法各類參數按教學需要進行設置;在功能區(qū)提供繪圖功能,演示范例以及航跡位置實時顯示;在繪制區(qū)實現物流無人機航跡的動態(tài)繪制。本教學演示平臺通過提供參數設置功能和航跡動態(tài)顯示,促進現代教育手段和傳統(tǒng)教育手段有機結合,能夠在計算機的平臺上對物流無人機航跡規(guī)劃問題進行仿真演示,彌補了傳統(tǒng)PPT教學扁平化、枯燥的缺陷,能夠輔助教師生動有趣、形象直觀地展現教學內容。通過使用MATLAB與JAVA混合編程,充分利用各語言的優(yōu)點,優(yōu)化了程序設計、提高了軟件運行效率,貼合了教學需求,避免浪費寶貴的課堂時間。
①使用者打開Eclipse軟件,選擇演示平臺對應的JAVA程序,按下[RUN]按鈕啟動程序,進入教學演示平臺主界面,如圖3所示。
圖3 教學演示平臺主界面
②根據教學需求或實驗需求,選擇要使用的物流無人機航跡規(guī)劃算法。
③在教學演示平臺中的參數設置單元對應輸入窗口進行障礙物參數的設置以及算法初始化參數的設置,參數包括障礙物個數、障礙物半徑、障礙物坐標等。本教學演示平臺提供三種不同模式的教學演示系統(tǒng):隨機模式、手動模式、重置模式。
④功能單元的[START]功能對應教學演示系統(tǒng)的隨機模式。在此模式下,使用者可以設置障礙點個數n和半徑r。本實例中使用的具體參數在參數單元顯示,分別為4和20,如圖4所示。
圖4 隨機模式下參數設置
⑤確認各參數項參數設置后點擊功能區(qū)[SRART]按鈕運行仿真平臺。通過參數傳遞機制,JAVA將已設參數傳送給MATLAB中的航跡規(guī)劃算法進行初始化。
⑥算法將航跡點返回JAVA之后,在演示平臺界面的航跡繪制單元進行動態(tài)繪圖,同時在數據單元實時顯示航跡點坐標,如圖5所示。
圖5 隨機模式下航跡繪制
⑦演示結束后,若需要調節(jié)參數進行多次演示,重復上述步驟即可,如圖6所示。
圖6 隨機模式下修改參數后
⑧功能單元的[RESET]功能對應教學演示系統(tǒng)的重置模式。在該模式下,教學演示系統(tǒng)為使用者提供一組默認參數,具體數值在參數單元顯示,分別為3和6。
⑨點擊功能區(qū)[RESET]按鈕后,教學演示平臺通過參數傳遞機制將默認參數傳送給MATLAB中的航跡規(guī)劃算法進行初始化。
⑩算法將航跡點返回JAVA之后,在演示平臺界面的航跡繪制單元進行動態(tài)繪圖,同時在數據單元實時顯示航跡點坐標。如圖7所示。
圖7 重置模式
(B11)功能單元的[MANUAL]功能對應教學演示系統(tǒng)的手動模式。在此模式下,使用者可以設置障礙點個數n、半徑r以及四個障礙點坐標。本實例中使用的具體參數在參數單元顯示,依次為4,32,45,16,67,71,112,123,156,167。
(B12)確認各參數項參數設置后點擊功能區(qū)[MANUAL]按鈕運行仿真平臺。通過參數傳遞機制,JAVA將已設參數傳送給MATLAB中的航跡規(guī)劃算法進行初始化。
(B13)算法將航跡點返回JAVA之后,在演示平臺界面的航跡繪制單元進行動態(tài)繪圖,同時在數據單元實時顯示航跡點坐標,如圖8所示。
圖8 手動模式
①在教學過程中,教師使用本教學演示平臺進行輔助教學,結合課本內容,生動形象地講解物流無人機航跡規(guī)劃學習中的知識點,吸引學生注意力,擺脫煩悶枯燥的課堂氛圍,可有效提高教學效率和質量。
②由于本教學平臺操作簡易、交互性強,不占用人力物力等特點,每個學生都可在課后自主學習物流無人機航跡規(guī)劃相關知識,及時地在平臺上進行仿真演練,發(fā)現其中規(guī)律,可有效增加學生的學習效率,減少物流無人機航跡規(guī)劃學習難度。
③在本教學演示平臺中,使用者可根據自己的想法自由控制算法初始值等,具有高自由度的特點。每個參數的修改都會影響到航跡規(guī)劃結果,多個參數之間更是存在著相互作用的復雜關系。學生在使用教學演示平臺時發(fā)現往往自己心念一動,航跡規(guī)劃結果就大不相同,使學習過程中充滿了趣味性和好奇感,可提高學生學習積極性以及培養(yǎng)學生對物流行業(yè)調度問題的探索與研究能力。
①算法研究。
在本教學演示平臺中,教師可選擇同一算法,但是調節(jié)參數單元的參數設置。通過讓學生觀察同一算法不同參數設置下得出的航跡差異,促使學生對單個參數對航跡規(guī)劃算法初始化的影響以及多個參數是否存在相互作用進行思考和研究。
②比較算法。
在本教學演示平臺中,教師可針對同一問題在參數單元設置相同的參數,但是選擇不同的航跡規(guī)劃算法。通過讓學生觀察不同算法對同一航跡規(guī)劃問題得出的航跡,促使學生對各個算法的優(yōu)缺點進行思考和研究。
③實際物流環(huán)境。
在本教學演示平臺中,教師可針對不同物流場景設置不同的障礙物位置,通過不同航跡規(guī)劃算法,讓學生觀察不同物流場景下各個航跡規(guī)劃算法得到的物流無人機飛行路徑,引發(fā)學生對物流調度路徑的思考和研究。
本文介紹了一套物流無人機航跡規(guī)劃教學演示平臺的設計和實現方法,其作為教學演示平臺,是對傳統(tǒng)教學手段的有益補充。由于教學演示平臺的特性,使用
者不需要親自進行物流無人機操作并且可以反復利用,減少了人力、物力的消耗。通過本教學演示平臺,教師可以在課堂上演示各種物流無人機航跡規(guī)劃算法,以及不同的物流場景下物流無人機的飛行路徑,形象直觀地讓使用者認識到不同算法、不同算法參數對物流無人機航跡的影響,直觀展示了算法各個航跡點的計算過程,使教學更加靈活,實現物流無人機航跡規(guī)劃教學理論與實踐的緊密結合。整套仿真教學系統(tǒng)可以克服多媒體教學和實物教學的局限性,增強交互性、節(jié)約成本、無場地限制,提高學生學習興趣、改善課堂效果,同時做成單機版亦能方便學生課后自學,可進一步深入學習與物流相關的規(guī)劃知識與設計方法。