SLAM主要解決機器人的實時定位與自動建圖問題,那么,在實際應用時,SLAM究竟是如何實現的呢?在實現過程中有哪些難點?
這是一個完整的SLAM和導航系統的主要架構圖:
7.jpg (48.44 KB, 下載次數: 100)
下載附件
2017-8-11 10:55 上傳
其中,SLAM核心過程包括3個步驟,第一步稱為預處理。我們知道,激光雷達和其他雷達設備一樣,某一個時刻只能獲取它所在位置的環境信息。
這就是我們所說的點云,它只能反映機器人所在環境中的一個部分。第一步預處理就是對激光雷達原始數據進行優化,剔除一些有問題的數據,或者進行濾波。
8.jpg (30.19 KB, 下載次數: 119)
下載附件
2017-8-11 10:55 上傳
第二步是匹配,也就是說把當前這一個局部環境的點云數據在已經建立地圖上尋找到對應的位置,這個步驟非常關鍵。
9.gif (846.29 KB, 下載次數: 99)
下載附件
2017-8-11 10:55 上傳
這個是ICP的點云匹配算法,用于實現匹配。說這個過程關鍵,就是因為它的好壞,直接影響了SLAM構建地圖的精度。這個過程和我們玩拼圖游戲有點類似,就是在已經拼好的畫面中找到相似之處,確定新的一個拼圖該放在哪里。
在SLAM過程中,需要將激光雷達當前采集的點云(紅色部分)匹配拼接到原有地圖中。
10.jpg (22.98 KB, 下載次數: 67)
下載附件
2017-8-11 10:55 上傳
如果不進行匹配過程,所構建的地圖可能就亂成一團,變成這樣。
11.jpg (69.25 KB, 下載次數: 69)
下載附件
2017-8-11 10:55 上傳
在這個部分完畢以后,就進行第三步,地圖融合,也就是將這一輪來自激光雷達的新數據拼接到原始地圖當中,最終完成地圖的更新。
就像這個圖一樣,這個過程是永遠伴隨SLAM過程的。
12.jpg (17.45 KB, 下載次數: 88)
下載附件
2017-8-11 10:55 上傳
數據融合和簡單的貼圖是有很大的差異的。因為實際上傳感器描繪的世界存在一定的誤差,或者正巧在這個時間環境有了變化,例如機器人旁邊闖入了一只小貓。
因此,實際要進行的過程會更加復雜,需要用很多概率算法,并采用濾波的方式進行融合。將上述這個過程逐次執行,就最終產生了我們看到的柵格地圖。
13.gif (1.35 MB, 下載次數: 79)
下載附件
2017-8-11 10:55 上傳
這個過程聽起來其實并不復雜,但是要處理好有很大難度。這里舉幾個例子,比如叫做Loop Closure(回環)問題。如果匹配算法不足夠優秀,或者環境中存在很不巧的干擾,當機器人繞著環境一圈后,就會發現原本是應該閉合的一個環形走廊斷開了。
比如正常地圖應該這樣:
14.jpg (14.73 KB, 下載次數: 92)
下載附件
2017-8-11 10:55 上傳
如果處理不好,實際地圖就成這樣:
15.jpg (24.97 KB, 下載次數: 90)
下載附件
2017-8-11 10:56 上傳
對于環境比較大的場景,回環問題是不得不面對的,但現實總是不完美的,即使是激光雷達這種高精度傳感器,也難免存在誤差。而回環問題的難點恰恰在于在一開始出現少許誤差的時候,并不會被發覺,直到機器人繞著環路一圈,隨著誤差的累加,發現環路已經無法閉合時,此時已經釀成大錯,一般很難回天。 當然這個問題并不是無解,一個好的商用化SLAM系統,回環問題是否能很好的解決,就成為評判這個系統實力的指標了。
這是前兩天在我們辦公室進行的測試,左邊的視頻是基于開源的ROS機器人操作系統進行的地圖構建,右邊的是基于SLAMWARE構建的地圖。 插入的視頻:ROS構建地圖和SLAMWARE構建的地圖
當機器人已經繞場一周后,ROS構建的地圖出現了中斷,而SLAMWARE構建的地圖是一個完美的閉環,它與我們辦公室的設計圖完美重合。
16.png (595.57 KB, 下載次數: 95)
下載附件
2017-8-11 10:56 上傳
除了算法層面的回環問題,SLAM實際應用中還有很多這種坑,比如走廊問題與外界干擾問題。
以外界干擾問題來說,通常,激光雷達作為機器人的眼睛,一般是安裝在底盤上的,它能看到的視野很有限。當受到外界干擾(人類或者寵物等等)后,機器人很容易丟失定位精度,無法正常完成后續的建圖工作。
當機器人安裝SLAMWARE后,機器人受到干擾,可以完全不受影響,照樣能夠正常工作。
目前,SLAM的開源實現代表多為學術界,實際應用有很多Corner Case要處理,需要傳感器、系統參數、其他輔助設備的聯合調優。
一般來說,上述的SLAM過程對于運算消耗是巨大的,雖然并沒有達到像訓練神經網絡動用服務器集群那種地步,但傳統上需要PC級別的處理器。
除配備激光雷達外,還需要機器人具有IMU(慣性測量單元)、里程計來為激光雷達提供輔助數據,否則SLAM系統也難以得到運行。總的來說,SLAM算法本身是一個對于外部系統有著多種依賴的算法,這是一個切實的工程問題。
很多機器人,比如掃地機是不可能裝一個PC進去的,為了讓SLAM能在這類設備里運行,除了解決激光雷達成本外,還要對SLAM算法做出很好的優化。
這也是我們思嵐科技SLAMTEC主要的努力方向,一方面,我們這7年多很好的解決了各類實際SLAM算法難點,另一方面,我們把SLAM這個復雜的系統做了很大的優化,可以放到一個硬幣那么大的模塊內部,降低尺寸功耗。此外,它還集成了IMU等配套傳感器,力求做到對于SLAM的使用便捷性。
17.jpg (23.94 KB, 下載次數: 99)
下載附件
2017-8-11 10:56 上傳
那么,機器人利用SLAM技術得到了有效的空間信息后,它是怎樣實現路徑規劃的?SLAM和路徑規劃之間關系是怎樣的?下期,我們再見。
|