SLAM大法之迴環檢測 —— 如何提升機器人迴環檢測的能力

隨著路徑的不斷延伸,機器人在建圖過程中會存在一些累計誤差,除了利用局部優化、全局優化等來調整之外,還可以利用迴環檢測來優化位姿。

什麼是迴環檢測?

迴環檢測,又稱閉環檢測,是指機器人識別曾到達某場景,使得地圖閉環的能力。說的簡單點,就是機器人在左轉一下,右轉一下建圖的時候能意識到某個地方是“我”曾經來過的,然後把此刻生成的地圖與剛剛生成的地圖做匹配。

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

迴環檢測成功

迴環檢測之所以能成為一個難點,是因為:如果迴環檢測成功,可以顯著地減小累積誤差,幫助機器人更精準、快速的進行避障導航工作。而錯誤的檢測結果可能使地圖變得很糟糕。因此,迴環檢測在大面積、大場景地圖構建上是非常有必要的 。

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

迴環檢測失敗

如何提升機器人迴環檢測能力?

那麼,怎麼才能讓機器人的迴環檢測能力得到一個質的提升呢?首先要有一個算法上的優化。

基於圖優化的SLAM算法

基於圖優化的SLAM 3.0 算是提升機器人迴環檢測能力的一大突破。

SLAM 3.0採用圖優化的方式進行建圖,進行了圖片集成與優化處理,當機器人運動到已經探索過的原環境時,SLAM 3.0可依賴內部的拓撲圖進行主動式的閉環檢測。當發現了新的閉環信息後,SLAM 3.0使用Bundle Adjuestment(BA)等算法對原先的位姿拓撲地圖進行修正(即進行圖優化),從而能有效的進行閉環後地圖的修正,實現更加可靠的環境建圖。

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

SLAM 3.0閉環檢測

SLAM 3.0環路閉合邏輯:先小閉環,後大閉環 ;選擇特徵豐富的點作為閉環點;多走重合之路,完善閉環細節。即使在超大場景下建圖,也不慌。

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

超大場景下的地圖閉合

詞袋模型

除了SLAM算法的升級和優化之外,現在還有很多系統採用成熟的詞袋模型方法來幫助機器人完成閉環,說的簡單點就是把

幀與幀之間進行特徵比配

1、從每幅圖像中提取特徵點和特徵描述,特徵描述一般是一個多維向量,因此可以計算兩個特徵描述之間的距離;

2、將這些特徵描述進行聚類(比如k-means),類別的個數就是詞典的單詞數,比如1000;也可以用Beyes、SVM等;

3、將這些詞典組織成樹的形式,方便搜索。

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

K叉樹字典

利用這個樹,就可以將時間複雜度降低到對數級別,大大加速了特徵匹配。

相似度計算

這種做法是從外觀上根據兩幅圖像的相似性確定迴環檢測關係,那麼,如何確定兩個地圖之間的相關性呢?

比如對於圖像A和圖像B,我們要計算它們之間的相似性評分:s(A,B)。如果單單用兩幅圖像相減然後取範數,即為: s(A,B)=||AB||s(A,B)=||AB||。但是由於一幅圖像在不同角度或者不同光線下其結果會相差很多,所以不使用這個函數。而是使用相似度計算公式

這裡,我們提供一種方法叫TF-IDF。

TF的意思是:某特徵在一幅圖像中經常出現,它的區分度就越高。另一方面,IDF的思想是,某特徵在字典中出現的頻率越低,則分類圖像時的區分度越高。

對於IDF部分,假設所有特徵數量為n,某個節點的Wi所含的數量特徵為Ni,那麼該單詞的IDF為:

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

TF是指某個特徵在單副圖像中出現的頻率。假設圖像A中單詞Wi出現了N次,而一共出現的單詞次數是n,那麼TF為:

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

於是Wi的權重等於TF乘IDF之積,即:

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

考慮權重以後,對於某副圖像,我們可以得到許多個單詞,得到BOW:

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

(A表示某幅地圖)

如何計算倆副圖像相似度,這裡使用了L1範數形式:

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

深度學習及其他

除了上面的幾種方式之外,迴環檢測也可以建成一個模型識別問題,利用深度學習的方法幫助機器人完成迴環檢測。比如:決策樹、SVM等。

……

最後,當迴環出現以後,也不要急著就讓機器人停止運動,要繼續保持運動,多走重合的路,在已經完成閉合的路徑上,進一步掃圖完善細節

SLAM大法之迴環檢測  —— 如何提升機器人迴環檢測的能力

繼續走重合之路,完善閉環細節

所以,迴環檢測的力量不可小覷哦~


分享到:


相關文章: