0
本文作者: 科技剪刀手 | 2016-12-28 18:38 |
雷鋒網(wǎng)按:本文作者SLAMTEC(思嵐科技公號(hào)slamtec-sh)技術(shù)顧問,專注SLAM及相關(guān)傳感器研發(fā)應(yīng)用。本文是《機(jī)器人自主移動(dòng)的秘密》系列第二篇。
SLAM主要解決機(jī)器人的實(shí)時(shí)定位與自動(dòng)建圖問題,那么,在實(shí)際應(yīng)用時(shí),SLAM究竟是如何實(shí)現(xiàn)的呢?在實(shí)現(xiàn)過程中有哪些難點(diǎn)?
這是一個(gè)完整的SLAM和導(dǎo)航系統(tǒng)的主要架構(gòu)圖:
其中,SLAM核心過程包括3個(gè)步驟,第一步稱為預(yù)處理。
我們知道,激光雷達(dá)和其他雷達(dá)設(shè)備一樣,某一個(gè)時(shí)刻只能獲取它所在位置的環(huán)境信息。
這就是我們所說的點(diǎn)云,它只能反映機(jī)器人所在環(huán)境中的一個(gè)部分。第一步預(yù)處理就是對(duì)激光雷達(dá)原始數(shù)據(jù)進(jìn)行優(yōu)化,剔除一些有問題的數(shù)據(jù),或者進(jìn)行濾波。
第二步是匹配,也就是說把當(dāng)前這一個(gè)局部環(huán)境的點(diǎn)云數(shù)據(jù)在已經(jīng)建立地圖上尋找到對(duì)應(yīng)的位置,這個(gè)步驟非常關(guān)鍵。
這個(gè)是ICP的點(diǎn)云匹配算法,用于實(shí)現(xiàn)匹配。說這個(gè)過程關(guān)鍵,就是因?yàn)樗暮脡?,直接影響了SLAM構(gòu)建地圖的精度。這個(gè)過程和我們玩拼圖游戲有點(diǎn)類似,就是在已經(jīng)拼好的畫面中找到相似之處,確定新的一個(gè)拼圖該放在哪里。
在SLAM過程中,需要將激光雷達(dá)當(dāng)前采集的點(diǎn)云(紅色部分)匹配拼接到原有地圖中。
如果不進(jìn)行匹配過程,所構(gòu)建的地圖可能就亂成一團(tuán),變成這樣。
在這個(gè)部分完畢以后,就進(jìn)行第三步,地圖融合,也就是將這一輪來自激光雷達(dá)的新數(shù)據(jù)拼接到原始地圖當(dāng)中,最終完成地圖的更新。
就像這個(gè)圖一樣,這個(gè)過程是永遠(yuǎn)伴隨SLAM過程的。
數(shù)據(jù)融合和簡單的貼圖是有很大的差異的。因?yàn)閷?shí)際上傳感器描繪的世界存在一定的誤差,或者正巧在這個(gè)時(shí)間環(huán)境有了變化,例如機(jī)器人旁邊闖入了一只小貓。
因此,實(shí)際要進(jìn)行的過程會(huì)更加復(fù)雜,需要用很多概率算法,并采用濾波的方式進(jìn)行融合。將上述這個(gè)過程逐次執(zhí)行,就最終產(chǎn)生了我們看到的柵格地圖。
這個(gè)過程聽起來其實(shí)并不復(fù)雜,但是要處理好有很大難度。這里舉幾個(gè)例子,比如叫做Loop Closure(回環(huán))問題。如果匹配算法不足夠優(yōu)秀,或者環(huán)境中存在很不巧的干擾,當(dāng)機(jī)器人繞著環(huán)境一圈后,就會(huì)發(fā)現(xiàn)原本是應(yīng)該閉合的一個(gè)環(huán)形走廊斷開了。
比如正常地圖應(yīng)該這樣:
如果處理不好,實(shí)際地圖就成這樣:
對(duì)于環(huán)境比較大的場景,回環(huán)問題是不得不面對(duì)的,但現(xiàn)實(shí)總是不完美的,即使是激光雷達(dá)這種高精度傳感器,也難免存在誤差。而回環(huán)問題的難點(diǎn)恰恰在于在一開始出現(xiàn)少許誤差的時(shí)候,并不會(huì)被發(fā)覺,直到機(jī)器人繞著環(huán)路一圈,隨著誤差的累加,發(fā)現(xiàn)環(huán)路已經(jīng)無法閉合時(shí),此時(shí)已經(jīng)釀成大錯(cuò),一般很難回天。當(dāng)然這個(gè)問題并不是無解,一個(gè)好的商用化SLAM系統(tǒng),回環(huán)問題是否能很好的解決,就成為評(píng)判這個(gè)系統(tǒng)實(shí)力的指標(biāo)了。
這是前兩天在我們辦公室進(jìn)行的測試,左邊的視頻是基于開源的ROS機(jī)器人操作系統(tǒng)進(jìn)行的地圖構(gòu)建,右邊的是基于SLAMWARE構(gòu)建的地圖。
當(dāng)機(jī)器人已經(jīng)繞場一周后,ROS構(gòu)建的地圖出現(xiàn)了中斷,而SLAMWARE構(gòu)建的地圖是一個(gè)完美的閉環(huán),它與我們辦公室的設(shè)計(jì)圖完美重合。
除了算法層面的回環(huán)問題,SLAM實(shí)際應(yīng)用中還有很多這種坑,比如走廊問題與外界干擾問題。
以外界干擾問題來說,通常,激光雷達(dá)作為機(jī)器人的眼睛,一般是安裝在底盤上的,它能看到的視野很有限。當(dāng)受到外界干擾(人類或者寵物等等)后,機(jī)器人很容易丟失定位精度,無法正常完成后續(xù)的建圖工作。
當(dāng)機(jī)器人安裝SLAMWARE后,機(jī)器人受到干擾,可以完全不受影響,照樣能夠正常工作。
目前,SLAM的開源實(shí)現(xiàn)代表多為學(xué)術(shù)界,實(shí)際應(yīng)用有很多Corner Case要處理,需要傳感器、系統(tǒng)參數(shù)、其他輔助設(shè)備的聯(lián)合調(diào)優(yōu)。
一般來說,上述的SLAM過程對(duì)于運(yùn)算消耗是巨大的,雖然并沒有達(dá)到像訓(xùn)練神經(jīng)網(wǎng)絡(luò)動(dòng)用服務(wù)器集群那種地步,但傳統(tǒng)上需要PC級(jí)別的處理器。
除配備激光雷達(dá)外,還需要機(jī)器人具有IMU(慣性測量單元)、里程計(jì)來為激光雷達(dá)提供輔助數(shù)據(jù),否則SLAM系統(tǒng)也難以得到運(yùn)行??偟膩碚f,SLAM算法本身是一個(gè)對(duì)于外部系統(tǒng)有著多種依賴的算法,這是一個(gè)切實(shí)的工程問題。
很多機(jī)器人,比如掃地機(jī)是不可能裝一個(gè)PC進(jìn)去的,為了讓SLAM能在這類設(shè)備里運(yùn)行,除了解決激光雷達(dá)成本外,還要對(duì)SLAM算法做出很好的優(yōu)化。
這也是我們思嵐科技SLAMTEC主要的努力方向,一方面,我們這7年多很好的解決了各類實(shí)際SLAM算法難點(diǎn),另一方面,我們把SLAM這個(gè)復(fù)雜的系統(tǒng)做了很大的優(yōu)化,可以放到一個(gè)硬幣那么大的模塊內(nèi)部,降低尺寸功耗。此外,它還集成了IMU等配套傳感器,力求做到對(duì)于SLAM的使用便捷性。
那么,機(jī)器人利用SLAM技術(shù)得到了有效的空間信息后,它是怎樣實(shí)現(xiàn)路徑規(guī)劃的?SLAM和路徑規(guī)劃之間關(guān)系是怎樣的?下一篇文章,雷鋒網(wǎng)將持續(xù)更新,如有興趣可持續(xù)關(guān)注。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。