目錄
0.前言
1.定位和建圖
1.里程計(Odometry)
2.掃描匹配(Scan Matching)
3.結尾
0.前言
好久不見各位,前段時間忙著考試(6級和一些專業課)和擺爛斷更了近30天,現在哥們回來更新了。前面講了一大堆ROS和一些機器人理論知識,而這次我們將進入到SLAM(前面在小大小鬧,現在正題開始)。
1.定位和建圖
·確認機器人相對環境的狀態(位姿——位置和姿態)。
·定位可以以全局框架來進行,也可以以相對一個任意起點來進行。
·定位是Slam的關鍵組成。
簡單介紹一下經典Slam架構的主要5個部分:
1)傳感器數據:指機器人中里程計、激光雷達、雙目相機等傳感器信息的讀取。(下文的里程計里也有提及)
2)前端匹配:主要任務為對特征進行處理,估計相鄰地圖間的相對位姿,得到局部地圖。
3)后端優化(Optimization):后端接收不同時刻前端測量的相對位姿,和回環檢測的信息,對其進行優化,得到全局一致的軌跡和地圖。
4)回環檢測(Loop?Closing):回環檢測判斷機器人是否曾經到達過該位姿,檢測到回環則將信息傳遞給后端進行處理。
5)建圖(Mapping):根據估計的軌跡來建立對應的地圖。
同樣也可以參看谷歌的SLAM算法Cartographer的結構:
1.里程計(Odometry)
里程計:從一個姿態開始,結合運動控制和測量來估計當前姿態。(傳感器數據中的一種)
通常我們會使用一個速度控制器、輪式編碼器、IMU等設備來動態集成可用的信息。
速度控制器理解成為加速度配比器被我認為是更優的理解方式,因為現實中速度并不可能瞬間獲取到,而是經由加速度和時間的累積等來,同理的位移也是是由速度和時間的累積得來:
我們都希望一切的數據精準無誤,但受限于上圖的開環結構和現實中器件始終無法100%精準運行的限制導致上面的每一個環節都有可能被加入噪聲(noise)干擾:
實際表現便是我們希望機器人位移3m但實際上卻位移了3.1m。受限于開環控制沒有反饋機制來對誤差進行矯正,所以一旦噪聲出現將會隨著時間不斷累積——表現為第二次位移位移了3.2m誤差就來到了0.3m。
依舊是這張圖,當噪聲在加速度環節就產生了,那隨著加速度和時間的不斷積分變換下去,在子環節都將產生噪聲累積,且噪聲累積是幾何關系的:
一旦噪聲產生且不斷累積,機器人的位置的不確定性就會不斷增加,當時間無窮時,機器人就完全無法確認位置了。回歸到本章的重點定位和建圖,當機器人本體無法精準定位時,機器人的建圖也就失去了精確性,設想實際地圖的長度為6m但因為定位的噪聲就導致了計算得到了5.7m或者6.3m。為了解決這種情況就出現了以后我們會講到的回環檢測。
2.掃描匹配(Scan Matching)
OK,獲取到了傳感器的可用數據后需要需要進行前端匹配,而掃描匹配自然就是其中一種方式。(其實掃描匹配和視覺上經常拼接是一樣的,只是使用了專業名詞。)
這里推薦查看:An ICP variant using a point-to-line metric這篇論文,是有關迭代最近點算法的。在ROS里面就是點云了。
·掃描匹配:跨時間收集的范圍測量定位方式,掃描匹配。
在定位當中,我們需要參考世界框架來確定自己的位置,而掃描匹配大多就是使用激光雷達SLAM算法的關鍵模塊。而在使用rgb和depth camera(rgb相機和深度相機)時又將會深度探討最近點算法迭代的概念和一些實現機理。
擴展:剛巧的是,最近我在游玩鳴潮是經常受困于其索敵系統,于是打算在B站上看一下大佬們對這方面的解釋,當我漸漸觀看后巧妙的發現原來游戲的索敵系統竟和掃描匹配的思想極為類似。附上視頻鏈接:我決定自己做一套索敵系統_單機游戲熱門視頻 (bilibili.com)
谷歌的slam算法Cartographer當中掃描匹配是一個相當重要的模塊,掃描匹配在本地進行運作使地圖本地的一致性。
3.結尾
OK,因為知識量確實很大就先到這里了,下一篇文章我們來重點擴展講解掃描匹配,現在已經正式步入到了SLAM的領域,對于是自學的我來說也需要一點時間來思考如何才能將這些內容整理好、講述出來。