雷鋒網按:本文作者SLAMTEC(思嵐科技公號slamtec-sh)技術顧問,專注SLAM及相關感測器研發應用。本文是
《機器人自主移動的秘密》
系列第二篇。
SLAM主要解決機器人的即時定位與自動建圖問題,那麼,在實際應用時,SLAM究竟是如何實現的呢?在實現過程中有哪些難點?
這是一個完整的SLAM和導航系統的主要架構圖:
其中,SLAM核心過程包括3個步驟,
第一步稱為預處理
。
我們知道,雷射雷達和其他雷達設備一樣,某一個時刻只能獲取它所在位置的環境資訊。
這就是我們所說的點雲,它只能反映機器人所在環境中的一個部分。第一步預處理就是對雷射雷達原始資料進行優化,剔除一些有問題的資料,或者進行濾波。
第二步是匹配
,也就是說把當前這一個局部環境的點雲資料在已經建立地圖上尋找到對應的位置,這個步驟非常關鍵。
這個是ICP的點雲匹配演算法,用於實現匹配。說這個過程關鍵,就是因為它的好壞,直接影響了SLAM構建地圖的精度。這個過程和我們玩拼圖遊戲有點類似,就是在已經拼好的畫面中找到相似之處,確定新的一個拼圖該放在哪裡。
在SLAM過程中,需要將雷射雷達當前採集的點雲(紅色部分)匹配拼接到原有地圖中。
如果不進行匹配過程,所構建的地圖可能就亂成一團,變成這樣。
在這個部分完畢以後,就進行第三步,地圖融合,也就是將這一輪來自雷射雷達的新資料拼接到原始地圖當中,最終完成地圖的更新。
就像這個圖一樣,這個過程是永遠伴隨SLAM過程的。
資料融合和簡單的貼圖是有很大的差異的。因為實際上感測器描繪的世界存在一定的誤差,或者正巧在這個時間環境有了變化,例如機器人旁邊闖入了一隻小貓。
因此,實際要進行的過程會更加複雜,需要用很多概率演算法,並採用濾波的方式進行融合。將上述這個過程逐次執行,就最終產生了我們看到的柵格地圖。
這個過程聽起來其實並不複雜,但是要處理好有很大難度。這裡舉幾個例子,比如叫做Loop Closure(回環)問題。如果匹配演算法不足夠優秀,或者環境中存在很不巧的干擾,當機器人繞著環境一圈後,就會發現原本是應該閉合的一個環形走廊斷開了。
比如正常地圖應該這樣:
如果處理不好,實際地圖就成這樣:
對於環境比較大的場景,回環問題是不得不面對的,但現實總是不完美的,即使是雷射雷達這種高精度感測器,也難免存在誤差。而回環問題的難點恰恰在於在一開始出現少許誤差的時候,並不會被發覺,直到機器人繞著環路一圈,隨著誤差的累加,發現環路已經無法閉合時,此時已經釀成大錯,一般很難回天。當然這個問題並不是無解,一個好的商用化SLAM系統,回環問題是否能很好的解決,就成為評判這個系統實力的指標了。
這是前兩天在我們辦公室進行的測試,左邊的視頻是基於開源的ROS機器人作業系統進行的地圖構建,右邊的是基於SLAMWARE構建的地圖。
當機器人已經繞場一周後,ROS構建的地圖出現了中斷,而SLAMWARE構建的地圖是一個完美的閉環,它與我們辦公室的設計圖完美重合。
除了演算法層面的回環問題,SLAM實際應用中還有很多這種坑,比如走廊問題與外界干擾問題。
以外界干擾問題來說,通常,雷射雷達作為機器人的眼睛,一般是安裝在底盤上的,它能看到的視野很有限。當受到外界干擾(人類或者寵物等等)後,機器人很容易丟失定位精度,無法正常完成後續的建圖工作。
當機器人安裝SLAMWARE後,機器人受到干擾,可以完全不受影響,照樣能夠正常工作。
目前,SLAM的開源實現代表多為學術界,實際應用有很多Corner Case要處理,需要感測器、系統參數、其他輔助設備的聯合調優。
一般來說,上述的SLAM過程對於運算消耗是巨大的,雖然並沒有達到像訓練神經網路動用伺服器集群那種地步,但傳統上需要PC級別的處理器。
除配備雷射雷達外,還需要機器人具有IMU(慣性測量單元)、里程計來為雷射雷達提供輔助資料,否則SLAM系統也難以得到運行。總的來說,SLAM演算法本身是一個對於外部系統有著多種依賴的演算法,這是一個切實的工程問題。
很多機器人,比如掃地機是不可能裝一個PC進去的,為了讓SLAM能在這類設備裡運行,除了解決雷射雷達成本外,還要對SLAM演算法做出很好的優化。
這也是我們思嵐科技SLAMTEC主要的努力方向,一方面,我們這7年多很好的解決了各類實際SLAM演算法難點,另一方面,我們把SLAM這個複雜的系統做了很大的優化,可以放到一個硬幣那麼大的模組內部,降低尺寸功耗。此外,它還集成了IMU等配套感測器,力求做到對於SLAM的使用便捷性。
那麼,機器人利用SLAM技術得到了有效的空間資訊後,它是怎樣實現路徑規劃的?SLAM和路徑規劃之間關係是怎樣的?下一篇文章,雷鋒網將持續更新,如有興趣可持續關注。