朱成杰,張東升
(安徽理工大學(xué) 電氣與信息工程學(xué)院,安徽 淮南 232000)
當(dāng)前,機(jī)器人運(yùn)動(dòng)控制理論技術(shù)發(fā)展日新月異,但算法理論與實(shí)際應(yīng)用結(jié)合的案例仍遠(yuǎn)遠(yuǎn)落后于理論技術(shù)的發(fā)展,隨著自動(dòng)駕駛技術(shù)的不斷提高,機(jī)器人自主運(yùn)動(dòng)能力越發(fā)被一線科研人員重視。 機(jī)器人自主運(yùn)動(dòng)能力的提高,離不開成本逐漸降低的激光雷達(dá)的應(yīng)用,而激光雷達(dá)的使用又為SLAM 算法的現(xiàn)實(shí)應(yīng)用奠定了基礎(chǔ)[1]。
針對現(xiàn)實(shí)應(yīng)用場景的高復(fù)雜度,本文引入了SLAM算法對移動(dòng)機(jī)器人的建圖定位進(jìn)行分析,并通過ROS(Robot Operating System)的仿真平臺(tái)Gazebo 搭建仿真環(huán)境,實(shí)現(xiàn)了SLAM 算法建圖定位仿真。 針對仿真存在的一些問題,本文同時(shí)引入了實(shí)物移動(dòng)機(jī)器人平臺(tái),進(jìn)行了Gmapping 方法和Hector SLAM 方法的建圖定位測試。 根據(jù)仿真以及實(shí)物測試結(jié)果,分析比較提出了更加適用于實(shí)際場景的SLAM 算法,為SLAM 算法的應(yīng)用提供了一種可靠方法。
SLAM (Simultaneous Localization and Mapping),也稱CML (Concurrent Mapping and Localization),即并發(fā)建圖定位。 根據(jù)SLAM 技術(shù)依賴的傳感器,業(yè)內(nèi)人士將SLAM 技術(shù)分為激光SLAM 技術(shù)和視覺SLAM 技術(shù)兩大類。 激光SLAM 技術(shù)發(fā)展早于視覺SLAM 技術(shù),相對較為成熟可靠,隨著近年來機(jī)器視覺的熱度不斷增加,視覺SLAM 技術(shù)也得到了飛速的發(fā)展。 國外學(xué)者將SLAM 技術(shù)的發(fā)展劃分為3 個(gè)階段:經(jīng)典階段(Classic Age: 1986—2004 年)、 算 法 分 析 階 段(Algorithmic-Analysis Age: 2004—2015 年)、魯棒感知階段(Robust-Perception Age: 2015—至今)。 當(dāng)前的SLAM 技術(shù)研究,主要集中在提高SLAM 算法對于不同環(huán)境的適應(yīng)能力以及魯棒性,同時(shí)考慮計(jì)算效率和輕量化的程序?qū)崿F(xiàn)。 目前,主流應(yīng)用的2D-SLAM 算法有Gmapping,Hector Slam,cartographer(谷歌)等[2-3]。
下面主要介紹Gmapping 方法和Hector SLAM 方法的基本原理[4]。 Gmapping 方法實(shí)質(zhì)是對于RBpf 方法的一種改進(jìn),具體體現(xiàn)在對粒子的提議分布的改進(jìn)和選擇性重復(fù)采樣過程的改進(jìn)。 RBpf 方法直接根據(jù)觀測數(shù)據(jù)z1:t和控制數(shù)據(jù)u1:t求解地圖和位姿的聯(lián)合分布,其策略是先對位姿進(jìn)行預(yù)估,再進(jìn)行聯(lián)合分布的求解,即先定位再建圖。 對于位姿的預(yù)估,RBpf 使用了重要性重采樣方法,實(shí)現(xiàn)過程可分為:(1)粒子采樣;(2)粒子權(quán)值計(jì)算;(3)粒子重采樣;(4)位姿預(yù)估[5]。 其原理如下。
先明確最終實(shí)現(xiàn)的是預(yù)估位姿和地圖的聯(lián)合分布。
在公式(3)中,將求解權(quán)值的遞推公式表達(dá)了出來,只需求解出提議分布即可[6]。
提高包含正確信息的有效粒子所占比例,或者提高有效粒子所占權(quán)重,無疑會(huì)使提議分布的結(jié)果更加接近正確的目標(biāo)分布結(jié)果。 重復(fù)采樣可以解決有效粒子比重提升的問題,但也帶來了新的問題。 在頻繁的重復(fù)采樣過程中,有效粒子的比重不斷增加,隨之而來的是粒子信息多樣性的破壞,在經(jīng)歷了無數(shù)次的重復(fù)采樣,粒子經(jīng)過迭代復(fù)制,最終將只剩下若干個(gè)包含相同地圖信息的粒子,造成粒子信息退化。 為解決這一問題,可以先從目標(biāo)分布中找到概率大的區(qū)域,然后直接在概率大的區(qū)域進(jìn)行采樣,利用采樣得到的數(shù)據(jù)建立高斯模型,用此模型模擬提議分布的結(jié)果,這樣勢必可以解決粒子退化問題,同時(shí)也相應(yīng)減少了重復(fù)采樣次數(shù)過多帶來的計(jì)算問題。 以下公式(4)為模擬提議分布的高斯函數(shù)模型。
據(jù)此模型可求解出下一時(shí)刻機(jī)器人的位姿信息,進(jìn)而達(dá)到建圖定位的目標(biāo)。
Hector SLAM 方法是一種基于掃描匹配的SLAM方法,支持?jǐn)?shù)據(jù)上可以不使用里程計(jì)的信息進(jìn)行定位和建圖。 其使用IMU 以及具有良好容錯(cuò)性的掃描匹配策略進(jìn)行建圖定位,在硬件方面主要依靠精度高、干擾噪聲小的激光雷達(dá)進(jìn)行數(shù)據(jù)采集。
Gazebo 是一款3D 動(dòng)態(tài)模擬器,能在復(fù)雜的室內(nèi)和室外環(huán)境中,準(zhǔn)確有效地模擬機(jī)器人群。 Gazebo 平臺(tái)包括多個(gè)物理引擎、豐富的機(jī)器人模型庫和環(huán)境庫、各種傳感器模型,可視化圖形界面為移動(dòng)機(jī)器人的設(shè)計(jì)提供了方便,同時(shí),可依賴現(xiàn)有機(jī)器人模型進(jìn)行一些算法的運(yùn)行測試。 本文使用了TurtleBot 機(jī)器人模型作為算法的測試載體,避免了算法實(shí)現(xiàn)的過程中再搭建機(jī)器人的模型,節(jié)約了開發(fā)的時(shí)間成本[7-8]。
在仿真世界中,項(xiàng)目引入機(jī)器人模型TurtleBot,將算法程序植入到TurtleBot 機(jī)器人的運(yùn)行程序中,進(jìn)而實(shí)現(xiàn)機(jī)器人的運(yùn)行控制與建圖定位。 通過鍵盤控制機(jī)器人在仿真世界中的移動(dòng),并對環(huán)境進(jìn)行建圖。 如圖1所示為Gazebo 環(huán)境下搭建的3D 仿真場景,用于機(jī)器人在仿真環(huán)境中進(jìn)行模擬建圖;如圖2 所示為所建仿真場景,用于機(jī)器人在仿真環(huán)境下用SLAM 算法建圖的對比。
圖1 仿真場景
圖2 2D 場景
由Gmapping 方法與Hector 方法基本原理可知,Gmapping 方法依賴?yán)锍逃?jì)提供的信息,而Hector 方法只依賴高精度的雷達(dá)信息。 為此,仿真設(shè)計(jì)實(shí)現(xiàn)了里程計(jì)正常工作時(shí),Gmapping 方法的建圖以及里程計(jì)發(fā)布錯(cuò)誤信息時(shí)的建圖情況[9-10]。
如圖3 所示為里程計(jì)信息發(fā)布無誤時(shí),使用Gmapping 方法在仿真場景中所建立的地圖;如圖4 所示為里程計(jì)發(fā)布錯(cuò)誤里程信息時(shí),Gmapping 方法建立的地圖。 基于圖3 及圖4 可以分析出,里程計(jì)發(fā)布信息出錯(cuò)時(shí),地圖場景發(fā)生了明顯的偏移,與仿真搭建的2D 平面結(jié)構(gòu)存在較大的誤差。 在仿真中使用了機(jī)器人碰撞墻壁而不停止電機(jī)運(yùn)行的方式,模擬發(fā)布里程計(jì)的錯(cuò)誤信息,進(jìn)而實(shí)現(xiàn)了實(shí)際場景機(jī)器人運(yùn)動(dòng)中車輪懸空的場景模擬。
圖3 Gmapping 正確里程計(jì)仿真
圖4 Gmapping 錯(cuò)誤里程計(jì)仿真
實(shí)物測試平臺(tái)選取的機(jī)器人車體框架尺寸為595 mm×631 mm×242 mm,為滿足機(jī)器人的運(yùn)動(dòng)需求,采用兩主動(dòng)輪驅(qū)動(dòng),兩萬向輪配合轉(zhuǎn)動(dòng),同時(shí)輔以行星減速電機(jī)作為動(dòng)力源。 基于算法運(yùn)算量較大的考量,使用小型工控機(jī)作為上位機(jī)運(yùn)行載體,下位機(jī)系統(tǒng)運(yùn)行在以STM32F407 系列芯片為MCU 的核心板上。 現(xiàn)實(shí)場景算法建圖模擬中,用高特征值的實(shí)驗(yàn)室環(huán)境來模擬實(shí)際生活中高復(fù)雜度的場景。
在實(shí)物機(jī)器人的建圖定位過程中, 先使用Gmapping 方法進(jìn)行測試。 區(qū)別于仿真環(huán)境中使用機(jī)器人碰撞墻壁產(chǎn)生錯(cuò)誤里程計(jì)信息,實(shí)際場景測試中,采用了人為干預(yù)的方法產(chǎn)生錯(cuò)誤里程計(jì)信息,具體措施是將機(jī)器人車體抬起懸空以及外力干預(yù)轉(zhuǎn)向等。 因?qū)嶋H生活環(huán)境的復(fù)雜性,使用多角度的外力干擾,能更加真實(shí)地模擬機(jī)器人在復(fù)雜場景的運(yùn)行。
如圖5、圖6 所示為使用Gmapping 方法在真實(shí)環(huán)境中的建圖效果,其中,圖6 為使用外力干預(yù)導(dǎo)致里程計(jì)失效或里程計(jì)信息發(fā)布錯(cuò)誤時(shí)的建圖效果。 如圖7、圖8 所示為使用Hector SLAM 方法在相同的真實(shí)環(huán)境中所建地圖,其中,圖8 為外力干預(yù)使得里程計(jì)信息失效或發(fā)布錯(cuò)誤信息時(shí)所建地圖。 分析上述地圖信息,里程計(jì)信息對于兩種SLAM 方法建圖定位的影響存在較大的差別,Gmapping 方法對于里程計(jì)的嚴(yán)重依賴,使其并不適用于實(shí)際場景的建圖定位策略;Hector SLAM方法不依賴?yán)锍逃?jì)信息建圖定位以及其良好的容錯(cuò)性,顯然更加適合高復(fù)雜度環(huán)境的機(jī)器人建圖定位的應(yīng)用。
圖5 Gmapping 正確里程計(jì)
圖6 Gmapping 錯(cuò)誤里程計(jì)
圖7 Hector SLAM 正確里程計(jì)
圖8 Hector SLAM 錯(cuò)誤里程計(jì)
通過仿真以及實(shí)物模擬測試結(jié)果可以得出,HectorSLAM 方法相比主流的Gmapping 方法,更加適合實(shí)際場景的機(jī)器人建圖定位使用。 但在模擬測試中,仍然存在一些值得注意的問題,如:在使用Hector SLAM 方法進(jìn)行建圖定位分析時(shí),若外力干預(yù)使得機(jī)器人發(fā)生較高速度的轉(zhuǎn)向,所建立的地圖將會(huì)發(fā)生較嚴(yán)重的漂移和畸變,從而影響實(shí)際建圖定位效果。 同時(shí),Hector SLAM 方法依賴較高幀率的激光雷達(dá),當(dāng)雷達(dá)的掃描幀率低于40 Hz 時(shí),建圖的效果也將與理論結(jié)果存在一定偏差。 因此,在使用Hector SLAM 方法作為機(jī)器人建圖定位算法時(shí),需要提供較高品質(zhì)的雷達(dá)才能達(dá)到理想效果。