淮安神舟建設(shè)招標(biāo)網(wǎng)站電商平臺(tái)怎么做
文章將介紹使用的基于機(jī)器人操作系統(tǒng)(ROS)框架工作的SLAM算法。 在ROS中提供的五種基于2D激光的SLAM算法分別是:HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM。當(dāng)然最后還有比較經(jīng)典的google開(kāi)源的cartographer,雖然不是基于ROS的但是大牛們已經(jīng)將它修改為基于ROS的版本的cartographer_ros,
ROS(Robot Operating System)是一個(gè)基于Linux的開(kāi)源操作系統(tǒng),目的在于構(gòu)建一個(gè)能夠整合不同研究成果,實(shí)現(xiàn)算法,代碼重用的機(jī)器人軟件平臺(tái)。ROS是當(dāng)前比較流行的機(jī)器人控制框架,它讓我們節(jié)省時(shí)間構(gòu)建機(jī)器人的系統(tǒng)框架,更專注算法層面的研究。極大的提高了開(kāi)發(fā)效率。提供了包括硬件抽象描述、底層設(shè)備控制、常用功能的實(shí)現(xiàn),程序間信息的傳遞、程序包管理以及一些可視化數(shù)據(jù)程序和軟件庫(kù),并在此平臺(tái)的基礎(chǔ)上開(kāi)源了很多諸如定位構(gòu)圖,運(yùn)動(dòng)與規(guī)劃,感知與決策等應(yīng)用軟件包。
??機(jī)器人爆炸式增長(zhǎng)的一個(gè)主要問(wèn)題是不能在不同的機(jī)器人平臺(tái)上重復(fù)使用代碼。然而,ROS中的硬件抽象層及其消息服務(wù)允許創(chuàng)建可用于許多不同機(jī)器人平臺(tái)的新代碼。而且,ROS提供了一套穩(wěn)定的機(jī)器人軟件包,公認(rèn)的SLAM評(píng)估方法都依賴于機(jī)器人社區(qū)可用的標(biāo)準(zhǔn)數(shù)據(jù)集。 本文中研究了基于激光的主要二維SLAM算法,所有SLAM的結(jié)果都使用占用網(wǎng)格作為最終輸出,使用地圖相似性的性能指標(biāo)進(jìn)行分析。 重點(diǎn)是放在地圖質(zhì)量,而不是姿態(tài)估計(jì)誤差,因?yàn)橛成漭敵鍪艿奖镜鼗瘑?wèn)題的高度影響。 主要目標(biāo)是提供ROS中所有五種算法的優(yōu)缺點(diǎn)概述,提供簡(jiǎn)單而準(zhǔn)確的定量比較,從而為ROS開(kāi)發(fā)者定義一個(gè)通用的指導(dǎo)方針,以選擇最符合他們需求的算法。
(1)HectorSLAM
HectorSLAM是一種結(jié)合了魯棒性較好的掃描匹方法2D SLAM方法和使用慣性傳感系統(tǒng)的導(dǎo)航技術(shù)。傳感器的要求:高更新頻率小測(cè)量噪聲的激光掃描儀.不需要里程計(jì),使空中無(wú)人機(jī)與地面小車在不平坦區(qū)域運(yùn)行存在運(yùn)用的可能性.作者利用現(xiàn)代激光雷達(dá)的高更新率和低距離測(cè)量噪聲,通過(guò)掃描匹配實(shí)時(shí)地對(duì)機(jī)器人運(yùn)動(dòng)進(jìn)行估計(jì)。所以當(dāng)只有低更新率的激光傳感器時(shí),即便測(cè)距估計(jì)很精確,對(duì)該系統(tǒng)都會(huì)出現(xiàn)一定的問(wèn)題,如下圖是該系統(tǒng)生成的二維地圖。
http://kaspar.informatik.uni-freiburg.de/~slamEvaluation/datasets.php
http://www.ros.org/wiki/hector_slam
利用已經(jīng)獲得的地圖對(duì)激光束點(diǎn)陣進(jìn)行優(yōu)化, 估計(jì)激光點(diǎn)在地圖的表示,和占據(jù)網(wǎng)格的概率.,其中掃描匹配利用的是高斯牛頓的方法進(jìn)行求解. 找到激光點(diǎn)集映射到已有地圖的剛體轉(zhuǎn)換(x,y,theta).具體的公式如下:
? ? ? ? ? ? ?
?下圖二維地圖是hectorSLAM 多分辨率地圖的表示。 網(wǎng)格單元格長(zhǎng)度(從左到右):20厘米,10厘米和5厘米 ,使用多分辨率地圖表示,以避免陷入局部最小化。 這個(gè)解決方案背后的想法是在內(nèi)存中有不同的地圖,同時(shí)使用之前估計(jì)的姿勢(shì)來(lái)更新它們。 計(jì)算成本?仍然很低,所以地圖總是一致的
?最后,3D空間導(dǎo)航狀態(tài)估計(jì)是基于EKF濾波器。 但是,這種情況是僅在IMU存在時(shí)才需要,例如在空中機(jī)器人的情況下。 因此,這里我們只討論二維的SLAM
它會(huì)將不再這項(xiàng)工作中使用。如下圖顯示了HectorSLAM方法的概述。
?(2)Gmapping
Gmapping是一種基于激光的SLAM算法,它已經(jīng)集成在ROS中,是移動(dòng)機(jī)器人中使用最多的SLAM算法。這個(gè)算法已經(jīng)由Grisetti等人提出是一種基于?Rao-Blackwellized的粒子濾波的 SLAM方法?;诹W訛V波的算法用許多加權(quán)粒子表示路徑的后驗(yàn)概率,每個(gè)粒子都給出一個(gè)重要性因子。但是,它們通常需要大量的粒子才能獲得比較好的的結(jié)果,從而增加該算法的的計(jì)算復(fù)雜性。此外,與PF重采樣過(guò)程相關(guān)的粒子退化耗盡問(wèn)題也降低了算法的準(zhǔn)確性。粒子退化問(wèn)題包括在重采樣階段從樣本集粒子中消除大量的粒子。發(fā)生這種情況是因?yàn)樗鼈兊闹匾詸?quán)重可能變得微不足道。因此,這意味著有一定的小概率時(shí)間會(huì)消除正確的假設(shè)的粒子。為了避免粒子的退化問(wèn)題,已經(jīng)開(kāi)發(fā)了自適應(yīng)重采樣技術(shù)。
作者還提出了一種計(jì)算精確分布的方法,不僅考慮機(jī)器人平臺(tái)的運(yùn)動(dòng),還考慮最近的觀察。提出了在使用測(cè)距運(yùn)動(dòng)模型時(shí)結(jié)合觀測(cè)值提出建議分布。然而,當(dāng)一個(gè)移動(dòng)機(jī)器人裝備一個(gè)非常精確的傳感器LRF時(shí),可以使用該傳感器的模型,因?yàn)樗梢詫?shí)現(xiàn)了極高的似然函數(shù)。 基于此,作者整合了最近的傳感器觀測(cè)zt,并且他們計(jì)算高斯分布近似有效地獲得下一代粒子分布。
?
這種自適應(yīng)重采樣降低了PF預(yù)測(cè)步驟中機(jī)器人姿態(tài)的不確定性。 結(jié)果,由于掃描匹配過(guò)程,所需的粒子數(shù)量減少,因?yàn)椴淮_定性較低。 實(shí)驗(yàn)中,Gmapping使用的粒子數(shù)量是30,與普通PF方法相比,這是非常低的。
?(3)LagoSLAM
???LagoSLAM 是線性近似圖優(yōu)化,不需要初始假設(shè)?;镜膱D優(yōu)化slam的方法就是利用最小化非線性非凸代價(jià)函數(shù).每次迭代, 解決局部凸近似的初始問(wèn)題來(lái)更新圖配置,過(guò)程迭代一定次數(shù)直到局部最小代價(jià)函數(shù)達(dá)到. (假設(shè)起始點(diǎn)經(jīng)過(guò)多次迭代使得局部代價(jià)函數(shù)最小).?。假設(shè)圖中每個(gè)節(jié)點(diǎn)的相對(duì)位置和方向都是獨(dú)立的,作者求解了一個(gè)等價(jià)于非凸代價(jià)函數(shù)的方程組。為此,提出了一套基于圖論的程序,通過(guò)線性定位和線性位置估計(jì),得到非線性系統(tǒng)的一階近似。
?(4)KartoSLAM
KartoSLAM是基于圖優(yōu)化的方法,用高度優(yōu)化和非迭代?cholesky矩陣進(jìn)行稀疏系統(tǒng)解耦作為解.圖優(yōu)化方法利用圖的均值表示地圖,每個(gè)節(jié)點(diǎn)表示機(jī)器人軌跡的一個(gè)位置點(diǎn)和傳感器測(cè)量數(shù)據(jù)集,箭頭的指向的連接表示連續(xù)機(jī)器人位置點(diǎn)的運(yùn)動(dòng),每個(gè)新節(jié)點(diǎn)加入,地圖就會(huì)依據(jù)空間中的節(jié)點(diǎn)箭頭的約束進(jìn)行計(jì)算更新.
KartoSLAM的ROS版本,其中采用的稀疏點(diǎn)調(diào)整(the Spare Pose Adjustment(SPA))與掃描匹配和閉環(huán)檢測(cè)相關(guān).landmark越多,內(nèi)存需求越大,然而圖優(yōu)化方式相比其他方法在大環(huán)境下制圖優(yōu)勢(shì)更大.在某些情況下KartoSLAM更有效,因?yàn)樗麅H包含點(diǎn)的圖(robot pose),求得位置后再求map.
?(5)CoreSLAM
? ? ? ? COreSLAM最小化性能損失的一種slam算法.將算法簡(jiǎn)化為距離計(jì)算與地圖更新的兩個(gè)過(guò)程,? 第一步,每次掃描輸入,基于簡(jiǎn)單的粒子濾波算法計(jì)算距離,粒子濾波的匹配器用于激光與地圖的匹配,每個(gè)濾波器粒子代表機(jī)器人可能的位置和相應(yīng)的概率權(quán)重,這些都依賴于之前的迭代計(jì)算. 選擇好最好的假設(shè)分布,即低權(quán)重粒子消失,新粒子生成..在更新步驟,掃描得到的線加入地圖中,當(dāng)障礙出現(xiàn)時(shí),圍繞障礙點(diǎn)繪制調(diào)整點(diǎn)集,而非僅一個(gè)孤立點(diǎn)。
?以上各種激光測(cè)距儀的SLAM的算法的對(duì)比:
(6)cartographer
cartographer是Google的實(shí)時(shí)室內(nèi)建圖項(xiàng)目,傳感器安裝在背包上面,可以生成分辨率為5cm的2D格網(wǎng)地圖。獲得的每一幀laser scan數(shù)據(jù),利用scan match在最佳估計(jì)位置處插入子圖(submap)中,且scan matching只跟當(dāng)前submap有關(guān)。在生成一個(gè)submap后,會(huì)進(jìn)行一次局部的回環(huán)(loop close),利用分支定位和預(yù)先計(jì)算的網(wǎng)格,所有submap完成后,會(huì)進(jìn)行全局的回環(huán)。