為滿足實時性的一些限制,閉環檢測是僅僅利用有限數量的一些定位點,同時在需要的時候又能夠訪問到整個地圖的定位點。當地圖中定位點的數目使得找到定位匹配的時間超過某個閥值時,rtab-map就將wm(working memory)中不太可能形成閉環的定位點轉移到ltm(long-term memory)中,這樣這些被轉移的位置點就不參與下次閉環檢測的運算。當乙個閉環被檢測到時,其領接定位點又能夠重新的從ltm中取回放入wm中,用於將來的閉環檢測。
由於ltm中的定位點並不參與閉環檢測,因此選擇wm中的哪些定點轉移到ltm中非常重要。
rtab-map的思想是:假設更頻繁的被訪問的定位點比其他的定位點更易於形成閉環。這樣乙個定位點被連續訪問的次數就可以用來衡量其易於形成閉環的權重。當需要從wm轉移定位點到ltm中時,優先選擇具有最低權重的定位點。如果具有最低權重的定位點又有多個時,優先選擇被儲存時間最長的那乙個。
stm(short-term memory)用於觀察連續影象在時間上的相似度,並依此更新定位點的權重。
wm用於檢測定位點在空間上的閉環假設。
rtab-map閉環檢測時並沒有使用stm中的定位點,因為多數情況下,最後獲取的定位點大多與其最近的定位點相似。
stm的儲存量大小t取決於機械人的速度和定位點獲取的頻率,定位點數量達到t時,在stm中儲存時間最長的定位點就被移動到wm中。
rtab-map用離散貝葉斯過濾器來估計形成閉環的概率,將新的定位點與儲存在wm中的定位點進行比較。當發現新舊定位點之間有高概率形成閉環時,乙個閉環就被檢測到了,新舊定位點也就被鏈結在一起。有兩個關鍵個步驟,乙個是「取回」:對於具有形成閉環概率最高的那個定位點,將它的那些沒有在wm中的領接定位點,重新從ltm中取出放回到wm中。第二個步驟叫做「轉移」:當閉環檢測的處理時間超過閥值,具有最低權重的定位點中,儲存時間最長的將被轉移到ltm中,被轉移的定位點的數量取決於當前依賴迴圈中的wm儲存的定位點的數量。
優點:選擇增量式的建立方法,而不是採用預先訓練號的詞典,好處在於針對乙個特定的環境不需要與訓練過程。
詞袋方法:第一步:利用surf演算法從不同類別的影象中提取視覺詞彙向量,這些向量代表的是影象中區域性不變的特徵點; 基於opencv從影象中提取surf特徵(閥值超過tresponse)來得到視覺單詞。第二步:將所有特徵點向量集合到一塊,利用k-means演算法合併詞義相近的視覺詞彙,構造乙個包含k個詞彙的單詞表;
第三步:統計單詞表中每個單詞在影象中出現的次數,從而將影象表示成為乙個k維數值向量
注意:當提取到的特徵的數目很少時(小於閥值tbad)被認為是乙個很差的簽名,將不會被用於閉環檢測。比如室內一堵白牆的影象。
量化處理(找到詞典中已有單詞之間的匹配),rtab-map中採用最近鄰和次近鄰的比率nndr,如果乙個特徵到最近鄰的距離比到次近鄰的距離的****r倍藥效,那麼這個特徵就能夠被其最近鄰的特徵單詞所表示。由四個隨機化的kd-tree(flann)構成的分類森林來提高最近鄰匹配的速率。kd-tree的構建是基於分層k-means聚類的,這樣可以減低建立樹的時間。
這樣乙個定位點lt就可以用簽名zt和時間索引t來建立,初始權重0,並與lt-1在圖中建立乙個時間上的雙向鏈結。
為了更新獲取到的定位點的權重,將lt和stm中的最後乙個定位點進行比較,相似度s通過(1)式來衡量
npair表示定位點簽名間匹配上的單詞對的數量,nzt與nzc分別對應簽名zt與zc的總單詞數目。如果s超過固定的相似度閥值tsimilarity,則將被比較的定位點lc被融合到lt中。融合後的簽名中只儲存來自zc的單詞,二詞典中新增的來自zt的單詞會被刪除:zt被清空,將zc複製到zt中。
最後lt的權重設定為lc的權重再加1,而且lc的鄰接和閉環鏈結重新鏈結到lt,lc則從stm中刪除。
作用:估計當前定位點lt和儲存在wm中的定位點形成閉環的概率來記錄閉環假設。
閉環檢測完成後,具有形成閉環概率最高的定位點的那些沒在wm中的鄰接定位點,會重新從ltm取回到wm中。
注意:由於資料庫中載入定位點是很消耗時間的,因此一次迴圈最多取回兩個定位點(在c中定義的鄰接範圍內)。當超過兩個定位點可以被取回時,時間上鄰接的定位給點優先於在空間上的鄰接定位點。
當處理一幀影象的時間超過ttime的時候,具有最低權重的定位點中,儲存時間最長的將被轉移到ltm中。
注意為了使離散貝葉斯過濾器能夠合理的估計閉環假設,具有最高閉環假設定位點的鄰接定位給點是不允許被轉移的。
ttime是通過實驗經驗來設定的,較高值的ttime意味著更多的定位點會儲存在wm中,這樣更多的閉環假設能夠被儲存起來,也就更好的代表了整個環境。
因為rtab-map中計算時間代價最好的步驟是建立kd-tree,因此處理獲取的每一幀影象的時間可以通過改變詞典的大小來限制管理,詞典的大小也間接影響了wm的大小。
視覺slam十四講 附錄篇rtabmap程式試用
在工程現場試用一下rtabmap演算法,由於在出差,只能用最簡單的裝置進行實驗。驗證嚴酷環境中,視覺slam演算法是否能夠重建實驗環境,為之後部分機械人研製提供實驗憑證。某處礦山井下巷道 運輸巷道和井下提公升罐籠入口處 整體環境地面基本沒有積水,但潮氣很重。運輸巷道燈光有點昏暗,巷道標識物很少,牆壁...
IsPostBack原理詳解
這個屬性相信大家一定經常用吧 判斷是否為回發 切記這是判斷是否回發 而聽到很多人說這是判斷是否第一次載入頁面 還有的說是否為重新整理 很多人說做專案時 pageload事件裡 都要加上 但是確不太理解原因 說加上這個肯定沒錯 可是 上篇的例子裡 不就錯了麼?所以 一定要理解原理 為了把這個說清楚 這...
solr原理詳解
solr對外提供標準的http介面來實現對資料的索引的增加 刪除 修改 查詢。在 solr 中,使用者通過向部署在servlet 容器中的 solr web 應用程式傳送 http 請求來啟動索引和搜尋。solr 接受請求,確定要使用的適當solrrequesthandler,然後處理請求。通過 h...