張雨晴, 呂 程, 高金鳳
(1 浙江理工大學信息科學與工程學院, 杭州 310018; 2 杭州市水務集團有限公司, 杭州 310009)
隨著科學技術的進步,機器人技術不斷創新,已經在餐飲、物流等領域起著重要作用,代替人類從事危險、重復和繁瑣的工作。 無接觸配送智能車是一種可以節省勞動力的工具。 然而,當前的無接觸配送小車操作繁瑣、功能單一、自動化程度不高,尤其是在狹小、擁擠的動態環境中無法勝任配送工作[1]。
提升智能車的集成程度、運動路徑精度,規劃出更合理、時間更短、平滑性更高和誤差更小的移動路徑等問題已成為研究的重點[2]。 本文設計了一款基于ROS 操作系統的多功能無人配送智能車,該智能車可通過遙控、語音導航和運動跟隨3 種方式控制,以實現物資的配送。
遠程控制設備和無人配送智能車的連接示意圖如圖1 所示。 該智能車基于ROS 機器人操作系統,包括遠程控制設備、配送小車和無線網絡系統,其中配送小車和遠程遙控設備需處于同一無線局域網中。 該智能車包括儲物筐和移動底盤,移動底盤采用3 層平臺結構,移動底盤的上層設有深度攝像機、麥克風語音裝置、WIFI 模塊和激光雷達導航避障裝置;中層設有單片機驅動板和上位機;下層設有電源擴展板和麥克納姆輪。 上位機控制激光雷達導航避障裝置和深度攝像機。 通過遙控、語音導航和運動跟隨3 種方式,控制智能車進行配送任務。

圖1 遠程控制設備與無人配送智能車連接示意圖Fig. 1 Connection diagram of remote control and unmanned intelligent delivery vehicle
智能車平臺總體架構圖如圖2 所示。 該智能車平臺的總體架構由軟件控制系統層、硬件層和驅動層3 部分組成。 硬件層包括慣性測量單元、深度攝像機、激光雷達、里程計和電機。 思嵐A1 激光雷達和樂視深度攝像機將采集到的數據直接發送給上位機,慣性測量單元、里程計和電機由下位機控制。 軟件控制系統層包括能夠實現建圖功能的功能包、導航框架和路徑規劃功能包。

圖2 智能車平臺總體架構圖Fig. 2 Overall architecture of intelligent vehicle platform
該智能車控制系統由ROS 機器人操作系統和STM32 運動控制器組成。 ROS 機器人操作系統控制激光雷達導航避障裝置和深度攝像機,并將處理后的信息實時傳輸給同一局域網上的遠程遙控設備。 遠程遙控設備接收信息后發送指令給STM32運動控制器,從而控制小車的運動[3]。
ROS 機器人操作系統安裝在PC 上作為上位機,其主要模塊是定位導航模塊。 運動信息通過上位機傳送給STM32 下位機,下位機通過訂閱話題的方式接收并使用 PID ( Proportion Integration Differentiation)算法調節電機的速度,向上位機傳運動數據和傳感器信息[4]。
該無人配送智能車使用ROS 機器人操作系統作為平臺, 應用 Gmapping SLAM (Simultaneous Localization and Mapping)建圖算法將激光雷達采集的環境信息進行建圖。 用AMCL(Adaptive Monte Carlo Localization)自適應蒙特卡洛定位算法實現精確定位[5],同時結合A?全局路徑規劃算法和DWA(Dynamic Window Approach)局部路徑規劃算法,以規劃出最優路徑。 此外,為了提高適用性,該系統還設計了跟隨和語音導航功能。
構建地圖是實現智能車定位導航、路徑規劃和自主移動工作的前提條件。 采用SLAM 建圖理論,智能車在未知環境中移動,利用脈沖式激光傳感器獲取周圍環境信息。 傳感器向周圍發射脈沖信號,接收回波信號,通過計時電路計算激光往返時間來確定智能車與障礙物的距離,從而構建地圖。
該智能車使用開源Gmapping 功能包訂閱里程計、慣性測量單元和深度信息,同時完成一些必要的參數設置。
定位過程:首先,通過智能車不同位置坐標系之間的變換關系,可以顯示運動狀態;其次,利用基于擴展卡爾曼濾波算法的robot_pose_ekf 算法,輪式里程計的數據和慣性測量單元的信息融合濾波并輸出;最后,通過AMCL 定位框架在已知地圖中進行智能車定位,實現持續定位跟蹤[6]。
該智能車的語音交互系統由語音喚醒、語音采集、命令詞識別和語音合成等部分組成。 語音識別采用的是開源的科大訊飛公司的語音功能包,能夠將采集到的語音轉化為文本,通過命令詞識別功能,將語音指令轉換為對應的地點名稱和坐標,并發布到智能車的控制話題中,以實現準確到達目標位置的目的。
對針對靜態地圖使用A?算法可以快速有效地規劃出全局地圖的最佳路徑,但無法很好應對動態環境[7]。 DWA 算法則能夠使機器人很好地處理小范圍的動態環境,避開障礙物,但規劃出的路徑不一定是最優路徑[8]。 因此,本文通過路徑規劃功能包將A?全局路徑規劃算法和DWA 局部路徑規劃算法結合起來。 在智能車構建生成地圖后,首先通過A?算法規劃出全局最優路徑規劃,讓智能車按照該路徑行駛。 在行駛過程中,如果動態環境影響到下一個路徑并導致節點被占用,就使用DWA 算法規劃出動態的局部路徑,使智能車繞過障礙物,回到A?規劃的路徑。
2.4.1 全局路徑規劃算法改進
A?算法結合了具有全局性特點的Dijkstra 算法和最佳優先算法BFS(Best First Search)。 Dijkstra算法被廣泛用于智能車路徑規劃的全局搜索。 雖然BFS 算法可以減小Dijkstra 算法的搜索范圍,但是規劃出的路徑不一定是最優路徑。 改進后的A?算法可以減少傳統的A?算法在路徑規劃時會產生冗余點和拐點的問題。 A?算法示意圖如圖3 所示。

圖3 A?算法示意圖Fig. 3 A ?algorithm diagram
A?算法的評價函數,式(1):
當前點的評價函數f(n) 由過去成本函數g(n)和當前成本函數h(n) 組成,過去成本函數是起點(x0,y0) 到當前點(x1,y1) 的距離,當前成本函數當前點(x1,y1) 到目標點(x2,y2) 的距離,式(2) 和式(3):
這種算法通過改進評價函數的計算方式,降低了算法的計算量,從而能更加快速有效地生成平滑路徑。當h(n) 權重比過大時,雖然能夠減少尋路的工作量,但是不能規劃出最佳路徑;而當h(n) 權重比過小時,雖然可以規劃出最佳路徑,但是工作量較大,通過引入權重比例系數改變評價函數的權重比,改善路徑,以及通過節點優化改進路徑生成策略。
2.4.2 局部路徑規劃算法改進
本文提出了一種改進的動態窗口法,可以有效解決無人配送智能車在局部路徑規劃時加速度超出規定范圍和實際路徑偏離全局路徑過多之類的問題。 該方法分為兩步:首先對智能車自身的速度空間進行動力學約束、運動學約束和障礙物約束;其次,對速度空間的數據采樣后,利用動力學公式進行軌跡推算。 軌跡推算示意圖如圖4 所示。

圖4 軌跡推算示意圖Fig. 4 Schematic diagram of trajectory estimation
在不考慮路況的理想情況下,軌跡推算公式(4)如下:
其中,[xt+dt,yt+dt,θt+dt,]T是t+dt時刻小車在世界坐標系下的位姿,[xt,yt,θt]T是t時刻小車在世界坐標系下的位姿,[dx,dy,dθ]是dt時間內小車在底盤坐標系下的理想變化量。
實際軌跡推算公式中,應該考慮誤差對于dt時間內智能車底盤坐標的變化量的影響。
誤差補償后的公式(6):
該算法首先通過DWA 算法對速度進行動力學約束,把智能車加速度控制在不會導致輪胎垂直載荷過小的合理范圍內。 其次,該算法對軌跡誤差進行閉環的補償,從而減少了實際路徑和全局路徑的誤差。
本實驗在構建的地圖上設置了多個目標點和巡航路線,通過QT Creator 開發的遙控軟件或語音指令,用戶可以輕松地遙控智能車。
經過將改進后的A?算法與傳統的A?算法進行仿真實驗對比,不同A?算法尋路時間對比見表1,表明改進的A?算法路徑查找時間更短。

表1 不同A?算法尋路時間對比Tab. 1 Comparison of pathfinding time of different A?algorithms
經過仿真實驗比較傳統的局部路徑規劃算法和改進后的局部路徑規劃算法,傳統DWA 和改進DWA 精確度對比見表2,優化后的DWA 路徑規劃算法比傳統DWA 路徑規劃算法的誤差更小。

表2 傳統DWA 和改進DWA 精確度對比Tab. 2 Comparison of accuracy between traditional DWA and improved DWA
本文設計了一種無人配送智能車,該智能車具備良好的語音交互特性、準確建圖和精準定位能力,以及運動跟隨和精準配送功能。 在改進后的路徑規劃算法的支持下,該智能車能夠更快更精確地到達目的地。 未來的研究可以進一步優化無人配送智能車的性能,以滿足不同應用場景的需求。