魯 翔,彭緒富,2
(1.湖北師范大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖北 黃石 435002;2.湖北師范大學(xué) 文理學(xué)院,湖北 黃石 435000)
隨著科學(xué)技術(shù)的發(fā)展,人工智能的興起,移動(dòng)機(jī)器人迅速發(fā)展[1],目前,機(jī)器人已經(jīng)廣泛應(yīng)用在工業(yè)、農(nóng)業(yè)、醫(yī)療、服務(wù)、軍事、娛樂(lè)日常生活等多個(gè)領(lǐng)域,甚至在危險(xiǎn)、骯臟和枯燥的環(huán)境中也有很好的應(yīng)用[2]。然而在很多情況下,機(jī)器人工作空間的信息都是未知的,比如在礦井檢測(cè)、深海探索、危險(xiǎn)救援[3]等工作環(huán)境下,人類(lèi)無(wú)法進(jìn)入其中探測(cè)情況,所以需要移動(dòng)機(jī)器人進(jìn)入對(duì)其進(jìn)行探測(cè),構(gòu)建出環(huán)境的地圖。只有在具備了先驗(yàn)地圖的情況下,才能進(jìn)行相應(yīng)的導(dǎo)航、路徑規(guī)劃、避障和其他操作[4]?,F(xiàn)在大多數(shù)的建圖算法,例如Hector SLAM、Karto SLAM和Cartographer[5,6]等,都是通過(guò)人工手動(dòng)、使用鍵盤(pán)或者游戲桿進(jìn)行控制機(jī)器人移動(dòng),通過(guò)激光雷達(dá)掃描地圖進(jìn)行構(gòu)建地圖[7]。在面對(duì)大而復(fù)雜的環(huán)境中,會(huì)比較消耗人力物力,因此機(jī)器人的自主探索建圖至關(guān)重要[8]。
本文提出一種基于邊界探索的自主探索建圖算法,結(jié)合了Frontier_exploration和Gmapping算法,機(jī)器人操作系統(tǒng)(Robot Operating System,ROS)下實(shí)現(xiàn)指定區(qū)域建圖,分別通過(guò)仿真和實(shí)驗(yàn)驗(yàn)證了該算法建圖效果良好。
從ROS系統(tǒng)出發(fā),實(shí)現(xiàn)指定區(qū)域建圖,主要實(shí)現(xiàn)運(yùn)用Gmapping算法和Frontier_exploration算法進(jìn)行定位建圖與邊界探索,通過(guò)move_base包發(fā)布命令實(shí)現(xiàn)機(jī)器人移動(dòng)。
ROS是運(yùn)行在Ubuntu等主操作系統(tǒng)上的次級(jí)操作系統(tǒng),具有分布式的開(kāi)源軟件架構(gòu),支持C++、Python等多種編程語(yǔ)言,集成了用于機(jī)器人視覺(jué)開(kāi)發(fā)的OpenCV庫(kù),擁有SLAM地圖構(gòu)建和導(dǎo)航功能包。ROS可以使用標(biāo)準(zhǔn)化機(jī)器人描述格式(URDF)建立自己的機(jī)器人模型,也可以使用Gazebo仿真軟件,建立理想的模擬環(huán)境,在模擬環(huán)境中,驅(qū)動(dòng)機(jī)器人進(jìn)行避障,路徑規(guī)劃,地圖構(gòu)建和導(dǎo)航等仿真實(shí)驗(yàn)[9]。
Frontier_exploration全稱(chēng)Frontier-based exploration,基于邊界探索方法,由Yamauchi[10]首次提出,核心思想是移動(dòng)機(jī)器人根據(jù)目前已知的環(huán)境信息,通過(guò)傳感器掃描周?chē)h(huán)境找尋未知區(qū)域和空閑區(qū)域的交界處(即邊界),來(lái)獲取更多環(huán)境信息[11]。Frontier_exploration算法通過(guò)證據(jù)柵格的方式來(lái)表示地圖。根據(jù)傳感器獲得的信息,判斷當(dāng)前環(huán)境是否被占用,可以將所有的區(qū)域分為:未知區(qū)域、空閑區(qū)域、障礙區(qū)域。三種區(qū)域地圖顯示如圖1:
圖1 區(qū)域比較圖(黑色部分代表障礙區(qū)域,灰色部分代表未知區(qū)域,白色部分代表空閑區(qū)域)
帶有F標(biāo)志的處于未知區(qū)域和空白區(qū)域的交界處,為邊界區(qū)域,機(jī)器人通過(guò)選擇邊界長(zhǎng)度大于自身閾值且距離最近的邊界區(qū)域,來(lái)進(jìn)行下一步的探索[12]。
Gmapping是基于濾波SLAM框架的常用開(kāi)源SLAM[13,14]算法。由于Gmapping算法可以實(shí)時(shí)構(gòu)建地圖,在構(gòu)建小場(chǎng)景地圖所需的計(jì)算量較小且精度較高[15],本文實(shí)驗(yàn)環(huán)境為室內(nèi)環(huán)境,因此采用該算法作為實(shí)驗(yàn)定位與建圖算法。
move_base是ROS下關(guān)于機(jī)器人路徑規(guī)劃的中心樞紐。它通過(guò)訂閱激光雷達(dá)、map地圖、amcl的定位等數(shù)據(jù),然后規(guī)劃出全局和局部路徑,再將路徑轉(zhuǎn)化為機(jī)器人的速度信息,最終實(shí)現(xiàn)機(jī)器人導(dǎo)航。
結(jié)合Frontier_exploration算法、Gmapping算法實(shí)現(xiàn)指定區(qū)域建圖,建圖流程如圖2所示:
圖2 建圖流程圖
1)結(jié)合rviz可視化界面,指定機(jī)器人要探索的目標(biāo)區(qū)域(注:目標(biāo)區(qū)域?yàn)橐粋€(gè)封閉圖形)。
2)開(kāi)始使用Gmapping算法定位與構(gòu)建局部地圖,探索檢測(cè)未知區(qū)域和空閑區(qū)域的交界處,作為邊界。
3)設(shè)置一個(gè)閾值,閾值一般設(shè)置為機(jī)器人的直徑,判斷檢測(cè)到邊界的長(zhǎng)度與閾值大小,如果邊界長(zhǎng)度小于閾值,則為無(wú)效邊界,放棄該邊界并記錄;如果邊界長(zhǎng)度大于閾值,則將該邊界加入待探索邊界組。
4)在待探索邊界組中,采取距離最近原則探索邊界,使用move_base包控制移動(dòng)機(jī)器人,在探索該邊界的同時(shí)更新地圖,再繼續(xù)移動(dòng)機(jī)器人,查看是否仍有未探索的邊界,若有,則返回第二步繼續(xù)進(jìn)行,直至再無(wú)未探索邊界后,建圖完成。
采用基于兩輪差速驅(qū)動(dòng)的Turtlebot3平臺(tái),如圖3所示。硬件搭配有華夫板底盤(pán)、基于Arduino的開(kāi)源控制板OpenCR、樹(shù)莓派3B+、存儲(chǔ)卡、計(jì)算機(jī)、編碼器、IMU(慣性測(cè)量單元)、360°激光傳感器LiDAR等器件。
圖3 Turtlebot3機(jī)器人
分別在計(jì)算機(jī)和樹(shù)莓派3B+上安裝Ubuntu16.04系統(tǒng)和Ubuntu mate16.04 系統(tǒng),配上相應(yīng)版本的ROS Kinetic Kame系統(tǒng),通過(guò)SSH服務(wù)使得計(jì)算機(jī)與樹(shù)莓派進(jìn)行信息交互。指定區(qū)域建圖算法建圖時(shí),通過(guò)接收激光傳感器掃描環(huán)境信息數(shù)據(jù)、里程計(jì)數(shù)據(jù)和IMU數(shù)據(jù),實(shí)現(xiàn)初步地圖建立與定位,通過(guò)rviz可視化軟件指定建圖區(qū)域,通過(guò)move_base包發(fā)布速度指令通過(guò)OpenCR電路板發(fā)布到機(jī)器人底盤(pán),從而控制機(jī)器人移動(dòng)和建圖。
基于Gazebo仿真平臺(tái),建立了一個(gè)如圖4右側(cè)的仿真環(huán)境,仿真環(huán)境為一個(gè)六邊形加九個(gè)圓柱組成,分別對(duì)Gmapping算法和本文提出的指定區(qū)域建圖算法進(jìn)行模擬仿真,圖4和圖5分別展示了兩種算法建圖的過(guò)程,Gmapping算法通過(guò)鍵盤(pán)控制機(jī)器人移動(dòng)掃描環(huán)境建圖,后者通過(guò)rviz可視化軟件,運(yùn)行Publish Point來(lái)給定探索區(qū)域進(jìn)行建圖,建圖完成后兩種算法保存的地圖對(duì)比如圖6所示,建圖所需時(shí)間如表1所示。
圖4 Gmapping算法建圖
圖5 指定區(qū)域建圖算法建圖
表1 兩種算法建圖時(shí)間對(duì)比分析
圖6 兩種算法仿真建圖結(jié)果對(duì)比
對(duì)比仿真建圖的結(jié)果和建圖所需時(shí)間對(duì)比,在環(huán)境地圖較規(guī)則的時(shí)候,本文提出的指定區(qū)域建圖算法和常用的Gmapping算法建圖效果無(wú)差別,然而本算法建圖時(shí)間更短,而且只用給定一個(gè)初始探索的區(qū)域,后續(xù)建圖便不需要人手工控制,更方便。
在此搭建一個(gè)總尺寸為4×4m小型實(shí)驗(yàn)環(huán)境,如圖7所示,為了排除人為走動(dòng)對(duì)建圖的影響,實(shí)際機(jī)器人探索建圖的環(huán)境為紅線(xiàn)以上的部分。
圖7 實(shí)驗(yàn)環(huán)境地圖
兩種算法建圖過(guò)程和仿真,對(duì)比圖8中兩種算法結(jié)果,可以看出兩種算法對(duì)環(huán)境建圖效果大致上都能滿(mǎn)足后續(xù)導(dǎo)航的需要,而本算法建圖時(shí)間更短,但是在障礙物細(xì)小且過(guò)多的情況下,建圖效果不如Gmapping算法,在這些地方容易出現(xiàn)自轉(zhuǎn)不前等情況。
圖8 兩種算法實(shí)驗(yàn)建圖結(jié)果對(duì)比
本文提出了一種基于邊界探索的指定區(qū)域建圖算法,從仿真和實(shí)際環(huán)境下,對(duì)比Gmapping算法建圖效果,兩種算法都能夠完整地探索環(huán)境并建立地圖。在較為寬敞且規(guī)則的環(huán)境下,本文算法在建圖效率更好。Gmapping算法因?yàn)樵谌藶榭刂葡?,速度過(guò)快或者過(guò)慢都會(huì)影響建圖的效果,有時(shí)需要多次探索重復(fù)的地方,本文算法則不會(huì)出現(xiàn)該問(wèn)題。但是在過(guò)于復(fù)雜且障礙物過(guò)多的情況下,本文算法建圖效果略差,且有時(shí)會(huì)在原地打轉(zhuǎn),這也是后續(xù)需要優(yōu)化的重點(diǎn)之一。
湖北師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2022年3期