隨著路徑的不斷延伸,機器人在建圖過程中會存在一些累計誤差,除了利用局部優化、全局優化等來調整之外,還可以利用迴環檢測來優化位姿。
什麼是迴環檢測?
迴環檢測,又稱閉環檢測,是指機器人識別曾到達某場景,使得地圖閉環的能力。說的簡單點,就是機器人在左轉一下,右轉一下建圖的時候能意識到某個地方是“我”曾經來過的,然後把此刻生成的地圖與剛剛生成的地圖做匹配。
![SLAM大法之迴環檢測 —— 如何提升機器人迴環檢測的能力](http://p2.ttnews.xyz/loading.gif)
迴環檢測成功
迴環檢測之所以能成為一個難點,是因為:如果迴環檢測成功,可以顯著地減小累積誤差,幫助機器人更精準、快速的進行避障導航工作。而錯誤的檢測結果可能使地圖變得很糟糕。因此,迴環檢測在大面積、大場景地圖構建上是非常有必要的 。
![SLAM大法之迴環檢測 —— 如何提升機器人迴環檢測的能力](http://p2.ttnews.xyz/loading.gif)
迴環檢測失敗
如何提升機器人迴環檢測能力?
那麼,怎麼才能讓機器人的迴環檢測能力得到一個質的提升呢?首先要有一個算法上的優化。
基於圖優化的SLAM算法
基於圖優化的SLAM 3.0 算是提升機器人迴環檢測能力的一大突破。
SLAM 3.0採用圖優化的方式進行建圖,進行了圖片集成與優化處理,當機器人運動到已經探索過的原環境時,SLAM 3.0可依賴內部的拓撲圖進行主動式的閉環檢測。當發現了新的閉環信息後,SLAM 3.0使用Bundle Adjuestment(BA)等算法對原先的位姿拓撲地圖進行修正(即進行圖優化),從而能有效的進行閉環後地圖的修正,實現更加可靠的環境建圖。
SLAM 3.0閉環檢測
SLAM 3.0環路閉合邏輯:先小閉環,後大閉環 ;選擇特徵豐富的點作為閉環點;多走重合之路,完善閉環細節。即使在超大場景下建圖,也不慌。
超大場景下的地圖閉合
詞袋模型
除了SLAM算法的升級和優化之外,現在還有很多系統採用成熟的詞袋模型方法來幫助機器人完成閉環,說的簡單點就是把
幀與幀之間進行特徵比配。1、從每幅圖像中提取特徵點和特徵描述,特徵描述一般是一個多維向量,因此可以計算兩個特徵描述之間的距離;
2、將這些特徵描述進行聚類(比如k-means),類別的個數就是詞典的單詞數,比如1000;也可以用Beyes、SVM等;
3、將這些詞典組織成樹的形式,方便搜索。
K叉樹字典
利用這個樹,就可以將時間複雜度降低到對數級別,大大加速了特徵匹配。
相似度計算
這種做法是從外觀上根據兩幅圖像的相似性確定迴環檢測關係,那麼,如何確定兩個地圖之間的相關性呢?
比如對於圖像A和圖像B,我們要計算它們之間的相似性評分:s(A,B)。如果單單用兩幅圖像相減然後取範數,即為: s(A,B)=||AB||s(A,B)=||AB||。但是由於一幅圖像在不同角度或者不同光線下其結果會相差很多,所以不使用這個函數。而是使用相似度計算公式。
這裡,我們提供一種方法叫TF-IDF。
TF的意思是:某特徵在一幅圖像中經常出現,它的區分度就越高。另一方面,IDF的思想是,某特徵在字典中出現的頻率越低,則分類圖像時的區分度越高。
對於IDF部分,假設所有特徵數量為n,某個節點的Wi所含的數量特徵為Ni,那麼該單詞的IDF為:
TF是指某個特徵在單副圖像中出現的頻率。假設圖像A中單詞Wi出現了N次,而一共出現的單詞次數是n,那麼TF為:
於是Wi的權重等於TF乘IDF之積,即:
考慮權重以後,對於某副圖像,我們可以得到許多個單詞,得到BOW:
(A表示某幅地圖)
如何計算倆副圖像相似度,這裡使用了L1範數形式:
深度學習及其他
除了上面的幾種方式之外,迴環檢測也可以建成一個模型識別問題,利用深度學習的方法幫助機器人完成迴環檢測。比如:決策樹、SVM等。
……
最後,當迴環出現以後,也不要急著就讓機器人停止運動,要繼續保持運動,多走重合的路,在已經完成閉合的路徑上,進一步掃圖完善細節。
繼續走重合之路,完善閉環細節
所以,迴環檢測的力量不可小覷哦~
閱讀更多 SLAMTEC思嵐科技 的文章