黃 虎 ,黃 鵬 ,鐘 山 ,龍天瑤 ,黃元輝
(1.成都理工大學 信息科學與技術學院,成都 610059;2.成都理工大學 核技術與自動化工程學院,成都 610059)
近年來,機器人技術得到飛速發展,已經應用到無人駕駛、物流、工業等相關領域。自主導航與避障技術作為機器人的關鍵技術,主要包含有定位、建圖和路徑規劃3個方面。其中,前2個方面稱為實時定位與建圖SLAM,通常需要激光雷達、攝像頭及超聲波傳感器等傳感器,對環境進行感知而進行建圖[1-2];第3個方面稱為路徑規劃,是指在復雜的環境中,滿足一定的約束條件下,如行走路徑的長度短、路徑的代價低、時間短等,找到一條從指定起始位置到指定目標位置的安全、無碰撞的優化路徑[3-4]。目前主流移動機器人的路徑規劃多用于室內進行自主導航。而室外復雜環境下的路徑規劃,難度較大且成本較高。尋找低成本實現室外遠距離路徑規劃的算法,一直是當前路徑規劃的研究熱點之一。
高德地圖Amap開放平臺是一個集定位、導航、路線規劃、搜索等功能的,成熟的開源性平臺[5]。它能夠高效地進行全局靜態路徑規劃,但不適用于局部路徑的動態規劃。故在此提出一種新的路徑規劃方式,并設計了基于激光雷達與高德地圖的移動機器人平臺,將機器人操作系統ROS的局部動態路徑規劃與高德地圖的全局路徑規劃相結合,實現了機器人室外遠距離路徑規劃與導航避障。
ROS是一個適用于機器人的開源的操作系統[6-7]。它提供了操作系統應有的服務,包括:硬件抽象,底層設備控制,常用函數的實現,進程間消息傳遞,以及包管理。它也提供用于獲取、編譯、編寫,以及跨計算機運行代碼所需的工具和庫函數。在此主要使用move_base包,訂閱激光雷達、map地圖、amcl的定位等消息,規劃出全局和局部路徑,將路徑轉化為機器人的速度信息,最終實現機器人導航[8-9]。系統框圖如圖1所示。

圖1 系統框圖Fig.1 Systematic block diagram
首先,通過遠程終端輸入目的地,將目的地坐標信息通過4G網絡傳輸到平板電腦,平板電腦上運行的基于高德地圖應用程序編程接口API(application programming interface)的導航 App,通過 GPS定位當前所在位置進行全局的靜態路徑規劃,并將路徑分割為多段,每段端點作為子目標點。通過迭代將子目標點依次送入移動機器人平臺中,作為機器人的當前目標點。移動機器人平臺利用激光雷達和里程計等傳感器進行SLAM,通過D*算法規劃出一條到子目標點動態路徑[10-11],并將速度信息傳回STM32,驅動機器人平臺移動,實現移動機器人室外遠距離導航與避障。
樹莓派Raspberry Pi是一種基于ARM的微型電腦主板,擁有體積小、功能豐富等優點,可以運行完整的操作系統[12]。在此,選用樹莓派3代B型作為主控,它擁有1.2 GHz的主頻,1 GB內存,能滿足開發的需求。在樹莓派上安裝Ubuntu mate系統,并運行ROS,通過串口和STM32進行通信,并處理各傳感器數據。
激光雷達作為移動機器人感知環境的主要傳感器,通過發射和接受激光掃描周圍環境,并將環境信息轉換為點云數據。在此,選用思嵐A1激光雷達,掃描范圍廣,掃描精度較高,能準確地將周圍環境轉換為點云數據,通過串口傳送給ROS中,滿足該設計的開發需求。激光雷達參數見表1。

表1 激光雷達參數Tab.1 Lidar parameters
采用STM32F103C8T6作為底層驅動MCU,對IMU進行解算,得到移動機器人平臺角速度;通過編碼器進行解算,得到移動機器人平臺線速度。對角速度和線速度進行積分,得到里程計信息,將該信息通過串口發送至ROS上層,同時STM32通過串口接收ROS上層發送的速度指令并執行,驅動電機使機器人移動。模塊間的數據通信如圖2所示。

圖2 模塊數據通信Fig.2 Module data communication
選擇安卓系統的平板電腦,運行基于高德地圖API的導航軟件。平板電腦內置有GPS定位模塊與基站定位模塊,可以定位當前機器人位置。內置4G通信模塊,可以通過遠程客戶端對移動機器人進行位置監測和發出目的地指令。結合自身位置與目標點指令,規劃、分割路徑,并通過串口通信將子目標點迭代發送至ROS,進行全局導航。
該平臺通過使用高德地圖開放平臺的接口,開發出一款導航App。在平板電腦上通過4G信號接收終端發來的目的地指令,在原高德地圖路徑規劃的基礎上,將路徑分割為多段,并提取每段路徑端點的經緯度坐標,將其通過串口通信發送至ROS中,便于ROS進行下一步數據處理。同時,通過4G通信發送實時位置到終端,便于終端查詢機器人位置。軟件導航界面如圖3所示。

圖3 導航軟件界面Fig.3 Navigation software interface
為使導航App的數據能夠指導移動機器人平臺的運動,以移動機器人平臺的出發點為坐標原點,建立了世界坐標系。導航App將路徑端點的經緯度數據通過串口發送給移動平臺,系統將經緯度坐標轉換為世界坐標系上的坐標[13],同時系統將編碼器和磁力計數據也轉換為世界坐標,實現數據轉換。
以正北為y軸正方向,正東為x軸正方向,編碼器及磁力計數據轉換如下:設由編碼器獲得的速度為v,從磁力計獲取的角度為θ,則轉換的坐標分別為

經緯度的數據轉換以A,B兩點為例:設A,B點的經度分別為 LonA,LonB;維度分別為 LatA,LatB。 坐標轉換如圖4所示。

圖4 坐標轉換示意圖Fig.4 Diagram of coordinate transformation
可以計算得:

由于受地形,基站和GPS信號等影響,經緯度坐標轉換存在一定隨機誤差。因此單獨采用經緯度坐標估計移動平臺位置是不準確的。使用ROS中robot_pose_ekf擴展卡爾曼濾波融合包,對來自imu[14-16],里程計和經緯度坐標的nav_msgs/Odometry消息進行監聽,經過多傳感器融合,使經緯度坐標隨機誤差的影響大大下降,能夠用以測算移動平臺的實際位置。
路徑算法的流程如圖5所示。主要包含以下4個步驟:
步驟1目標點輸入,使用高德地圖開放平臺進行路徑規劃,將全局路徑分割為n個子目標節點。

圖5 路徑算法框圖Fig.5 Path algorithm block diagram
步驟2將第 1個子目標節點 F(n),(n=1)點作為機器人的當前子目標點,利用D*算法進行局部動態路徑規劃到達子目標節點F(n)。
步驟3機器人當前位置F(t)與當前子目標點F(n)之間的距離為M,最小允許距離誤差為D。當M 步驟4當從當前位置F(t)到當前子目標點F(n)的實際用時T小于期望時間E,且機器人當前位置F(t)與當前子目標點F(n)之間的距離 M滿足M 在Gazebo和Rviz平臺進行仿真,仿真結果如圖6所示。結果表明,該路徑算法有效節省了機器人在未知環境中路徑規劃的時間,減少了拐角次數與陷入死區次數,避免了路徑的偏離,能夠有效解決移動機器人遠距離路徑規劃的問題。 試驗效果如圖7所示。移動平臺從圖7d所示起點出發,運行至目標點,運行過程平穩,建圖效果良好,如圖8所示(所建立的地圖為圖7c中圈出的部分)。 圖6 算法仿真結果Fig.6 Simulation results of the algorithm 圖7 試驗效果Fig.7 Experimental effect 圖8 移動機器人同步建圖Fig.8 Mobile robot synchronization mapping 該平臺能進行有效的導航和避障,順利到達目標區域,運行路程全長1.2 km,運行時間37 min,最大速度0.64 m/s,運行過程無碰撞,在一定程度以低成本解決了室外機器人遠距離導航和避障。 然而,由于設計使用的激光雷達為二維雷達,所以對地形存在坑洼的地帶不能有效避障。在后續的改進中,計劃采用多線激光雷達進行三維同步建圖,以克服這一缺陷。 將搭載ROS系統的移動機器人、激光雷達與高德地圖相結合,并進行相關硬件與軟件的設計,搭建了一個室外移動機器人平臺。仿真試驗表明,該設計能夠以低成本實現室外機器人遠距離路徑規劃導航和避障,在一定程度上能推動機器人行業的發展,為室外機器人的研發提供了一種新的方案。4 試驗結果與分析



5 結語