魯 翔,彭緒富,2
(1.湖北師范大學 計算機與信息工程學院,湖北 黃石 435002;2.湖北師范大學 文理學院,湖北 黃石 435000)
隨著科學技術的發展,人工智能的興起,移動機器人迅速發展[1],目前,機器人已經廣泛應用在工業、農業、醫療、服務、軍事、娛樂日常生活等多個領域,甚至在危險、骯臟和枯燥的環境中也有很好的應用[2]。然而在很多情況下,機器人工作空間的信息都是未知的,比如在礦井檢測、深海探索、危險救援[3]等工作環境下,人類無法進入其中探測情況,所以需要移動機器人進入對其進行探測,構建出環境的地圖。只有在具備了先驗地圖的情況下,才能進行相應的導航、路徑規劃、避障和其他操作[4]。現在大多數的建圖算法,例如Hector SLAM、Karto SLAM和Cartographer[5,6]等,都是通過人工手動、使用鍵盤或者游戲桿進行控制機器人移動,通過激光雷達掃描地圖進行構建地圖[7]。在面對大而復雜的環境中,會比較消耗人力物力,因此機器人的自主探索建圖至關重要[8]。
本文提出一種基于邊界探索的自主探索建圖算法,結合了Frontier_exploration和Gmapping算法,機器人操作系統(Robot Operating System,ROS)下實現指定區域建圖,分別通過仿真和實驗驗證了該算法建圖效果良好。
從ROS系統出發,實現指定區域建圖,主要實現運用Gmapping算法和Frontier_exploration算法進行定位建圖與邊界探索,通過move_base包發布命令實現機器人移動。
ROS是運行在Ubuntu等主操作系統上的次級操作系統,具有分布式的開源軟件架構,支持C++、Python等多種編程語言,集成了用于機器人視覺開發的OpenCV庫,擁有SLAM地圖構建和導航功能包。ROS可以使用標準化機器人描述格式(URDF)建立自己的機器人模型,也可以使用Gazebo仿真軟件,建立理想的模擬環境,在模擬環境中,驅動機器人進行避障,路徑規劃,地圖構建和導航等仿真實驗[9]。
Frontier_exploration全稱Frontier-based exploration,基于邊界探索方法,由Yamauchi[10]首次提出,核心思想是移動機器人根據目前已知的環境信息,通過傳感器掃描周圍環境找尋未知區域和空閑區域的交界處(即邊界),來獲取更多環境信息[11]。Frontier_exploration算法通過證據柵格的方式來表示地圖。根據傳感器獲得的信息,判斷當前環境是否被占用,可以將所有的區域分為:未知區域、空閑區域、障礙區域。三種區域地圖顯示如圖1:

圖1 區域比較圖(黑色部分代表障礙區域,灰色部分代表未知區域,白色部分代表空閑區域)
帶有F標志的處于未知區域和空白區域的交界處,為邊界區域,機器人通過選擇邊界長度大于自身閾值且距離最近的邊界區域,來進行下一步的探索[12]。
Gmapping是基于濾波SLAM框架的常用開源SLAM[13,14]算法。由于Gmapping算法可以實時構建地圖,在構建小場景地圖所需的計算量較小且精度較高[15],本文實驗環境為室內環境,因此采用該算法作為實驗定位與建圖算法。
move_base是ROS下關于機器人路徑規劃的中心樞紐。它通過訂閱激光雷達、map地圖、amcl的定位等數據,然后規劃出全局和局部路徑,再將路徑轉化為機器人的速度信息,最終實現機器人導航。
結合Frontier_exploration算法、Gmapping算法實現指定區域建圖,建圖流程如圖2所示:

圖2 建圖流程圖
1)結合rviz可視化界面,指定機器人要探索的目標區域(注:目標區域為一個封閉圖形)。
2)開始使用Gmapping算法定位與構建局部地圖,探索檢測未知區域和空閑區域的交界處,作為邊界。
3)設置一個閾值,閾值一般設置為機器人的直徑,判斷檢測到邊界的長度與閾值大小,如果邊界長度小于閾值,則為無效邊界,放棄該邊界并記錄;如果邊界長度大于閾值,則將該邊界加入待探索邊界組。
4)在待探索邊界組中,采取距離最近原則探索邊界,使用move_base包控制移動機器人,在探索該邊界的同時更新地圖,再繼續移動機器人,查看是否仍有未探索的邊界,若有,則返回第二步繼續進行,直至再無未探索邊界后,建圖完成。
采用基于兩輪差速驅動的Turtlebot3平臺,如圖3所示。硬件搭配有華夫板底盤、基于Arduino的開源控制板OpenCR、樹莓派3B+、存儲卡、計算機、編碼器、IMU(慣性測量單元)、360°激光傳感器LiDAR等器件。

圖3 Turtlebot3機器人
分別在計算機和樹莓派3B+上安裝Ubuntu16.04系統和Ubuntu mate16.04 系統,配上相應版本的ROS Kinetic Kame系統,通過SSH服務使得計算機與樹莓派進行信息交互。指定區域建圖算法建圖時,通過接收激光傳感器掃描環境信息數據、里程計數據和IMU數據,實現初步地圖建立與定位,通過rviz可視化軟件指定建圖區域,通過move_base包發布速度指令通過OpenCR電路板發布到機器人底盤,從而控制機器人移動和建圖。
基于Gazebo仿真平臺,建立了一個如圖4右側的仿真環境,仿真環境為一個六邊形加九個圓柱組成,分別對Gmapping算法和本文提出的指定區域建圖算法進行模擬仿真,圖4和圖5分別展示了兩種算法建圖的過程,Gmapping算法通過鍵盤控制機器人移動掃描環境建圖,后者通過rviz可視化軟件,運行Publish Point來給定探索區域進行建圖,建圖完成后兩種算法保存的地圖對比如圖6所示,建圖所需時間如表1所示。

圖4 Gmapping算法建圖

圖5 指定區域建圖算法建圖

表1 兩種算法建圖時間對比分析

圖6 兩種算法仿真建圖結果對比
對比仿真建圖的結果和建圖所需時間對比,在環境地圖較規則的時候,本文提出的指定區域建圖算法和常用的Gmapping算法建圖效果無差別,然而本算法建圖時間更短,而且只用給定一個初始探索的區域,后續建圖便不需要人手工控制,更方便。
在此搭建一個總尺寸為4×4m小型實驗環境,如圖7所示,為了排除人為走動對建圖的影響,實際機器人探索建圖的環境為紅線以上的部分。

圖7 實驗環境地圖
兩種算法建圖過程和仿真,對比圖8中兩種算法結果,可以看出兩種算法對環境建圖效果大致上都能滿足后續導航的需要,而本算法建圖時間更短,但是在障礙物細小且過多的情況下,建圖效果不如Gmapping算法,在這些地方容易出現自轉不前等情況。

圖8 兩種算法實驗建圖結果對比
本文提出了一種基于邊界探索的指定區域建圖算法,從仿真和實際環境下,對比Gmapping算法建圖效果,兩種算法都能夠完整地探索環境并建立地圖。在較為寬敞且規則的環境下,本文算法在建圖效率更好。Gmapping算法因為在人為控制下,速度過快或者過慢都會影響建圖的效果,有時需要多次探索重復的地方,本文算法則不會出現該問題。但是在過于復雜且障礙物過多的情況下,本文算法建圖效果略差,且有時會在原地打轉,這也是后續需要優化的重點之一。