ORBSlam2的位姿優化演算法

2021-08-04 05:41:30 字數 1383 閱讀 5662

orbslam2中使用了對極約束,三角測量,pnp投影和bundleadjustment演算法

本文著重講解在orbslam2中使用到的bundleadjustment優化演算法。

區域性ba優化的過程是,通過當前取得的關鍵幀找到附近的區域性關鍵幀,區域性地圖點和可以觀察到這些區域性地圖點但是不是區域性關鍵幀的關鍵幀作為固定關鍵幀。

我們通過固定附近的fixfk,統一優化附近的區域性關鍵幀和當前關鍵幀的位姿,如果區域性關鍵幀為空,那麼不調整區域性關鍵幀。

構造區域性關鍵幀列表

構造在區域性關鍵幀中看到的區域性地圖點列表

設定頂點

進行優化,這裡的優化過程不同於上面的全域性ba優化。

首先進行5次迭代優化

然後檢查優化正確點的觀測值,將異常點排除在外,繼續進行一次10次迭代優化

在tracking執行緒中,每一次進行位姿優化的時候,每進行過一次pnp投影操作將地圖點投影到當前平面上之後,都會進行一次poseoptimization位姿優化,通過ba優化重投影誤差。

在這裡個方法中,先是利用g2o的設定了每個幀頂點

再將每個地圖點作為頂點儲存起來作為優化的引數,要注意的是,這裡資訊矩陣不是單位矩陣,而是單位矩陣和關鍵點所在高斯模糊金字塔的層數的乘積,並且為了防止錯誤的關鍵點擾亂其他關鍵點的優化,從而使用了huber核函式來使魯棒性更強

再使用四次最小二乘的優化

最後再將原本的位姿替換為優化後的位姿,並返回正常值的數量。

ORB SLAM2執行自己的資料集

coding utf 8 import os import cv2 import numpy as np defgetname num strtmp strres while num 10 num num 10 n len strtmp for i in range 0,5 n strres str...

Kinect跑自己的ORB SLAM2遇到的坑

需要注意的是,kinect自己帶了乙個opencv3.3.1,我以前安了乙個3.4.0,後來又安了乙個2.4.16.6,這樣opencv就比較亂,在執行.build.sh的時候就會報錯,大概是這種型別的錯誤 於是我就把opencv2.4.16.6給解除安裝了,沒想到它把3.4.0也卸了一部分相同的部...

特徵點法的巔峰之作 ORBSLAM2

orb slam 是西班牙 zaragoza 大學的 ra l mur arta 編寫的視覺 slam 系統。它是乙個完整的 slam 系統,包括視覺里程計 跟蹤 回環檢測,是一種完全基於稀疏特徵點的單目 slam 系統,同時還有單目 雙目 rgbd 相機的介面。其核心是使用 orb orinted...