隨著路徑的不斷延伸,機器人在建圖過程中會存在一些累計誤差,除了利用局部優化、全局優化等來調整之外,還可以利用回環檢測來優化位姿。 什么是回環檢測? 回環檢測,又稱閉環檢測,是指機器人識別曾到達某場景,使得地圖閉環的能力。說的簡單點,就是機器人在左轉一下,右轉一下建圖的時候能意識到某個地方是“我”曾經來過的,然后把此刻生成的地圖與剛剛生成的地圖做匹配。  回環檢測成功 回環檢測之所以能成為一個難點,是因為:如果回環檢測成功,可以顯著地減小累積誤差,幫助機器人更精準、快速的進行避障導航工作。而錯誤的檢測結果可能使地圖變得很糟糕。因此,回環檢測在大面積、大場景地圖構建上是非常有必要的 。  回環檢測失敗 如何提升機器人回環檢測能力? 那么,怎么才能讓機器人的回環檢測能力得到一個質的提升呢?首先要有一個算法上的優化。 1. 基于圖優化的SLAM算法
基于圖優化的SLAM 3.0 算是提升機器人回環檢測能力的一大突破。 SLAM 3.0采用圖優化的方式進行建圖,進行了圖片集成與優化處理,當機器人運動到已經探索過的原環境時,SLAM 3.0可依賴內部的拓撲圖進行主動式的閉環檢測。當發現了新的閉環信息后,SLAM 3.0使用Bundle Adjuestment(BA)等算法對原先的位姿拓撲地圖進行修正(即進行圖優化),從而能有效的進行閉環后地圖的修正,實現更加可靠的環境建圖。  SLAM 3.0閉環檢測 SLAM 3.0環路閉合邏輯:先小閉環,后大閉環 ;選擇特征豐富的點作為閉環點;多走重合之路,完善閉環細節。即使在超大場景下建圖,也不慌。  超大場景下建圖完整閉合過程 2.詞袋模型 除了SLAM算法的升級和優化之外,現在還有很多系統采用成熟的詞袋模型方法來幫助機器人完成閉環,說的簡單點就是把幀與幀之間進行特征比配。 1、從每幅圖像中提取特征點和特征描述,特征描述一般是一個多維向量,因此可以計算兩個特征描述之間的距離; 2、將這些特征描述進行聚類(比如k-means),類別的個數就是詞典的單詞數,比如1000;也可以用Beyes、SVM等; 3、將這些詞典組織成樹的形式,方便搜索。 
利用這個樹,就可以將時間復雜度降低到對數級別,大大加速了特征匹配。
3.相似度計算 這種做法是從外觀上根據兩幅圖像的相似性確定回環檢測關系,那么,如何確定兩個地圖之間的相關性呢? 比如對于圖像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范數形式:  4.深度學習及其他 除了上面的幾種方式之外,回環檢測也可以建成一個模型識別問題,利用深度學習的方法幫助機器人完成回環檢測。比如:決策樹、SVM等。 …… 最后,當回環出現以后,也不要急著就讓機器人停止運動,要繼續保持運動,多走重合的路,在已經完成閉合的路徑上,進一步掃圖完善細節。  繼續走重合之路,完善閉環細節
|