?直接給總結,整體上orbslam3(僅考慮帶imu)在初始化階段是松耦合,localmap和全局地圖優化是緊耦合。而vins mono則是全程緊耦合。然后兩者最大的區別就在于vins mono其實沒有對地圖點進行優化,為了輕量化,它一直在做的事情其實就是在做關鍵幀位姿的優化,地圖點僅僅在localmap階段直接對每個點做三角化生成的(在localmap和全局優化階段都沒有對地圖點進行優化)。所以vins mono的地圖點就是拿來看的,無論是定位還是建圖都是在和關鍵幀位姿圖打交道,沒用到地圖點。而orbslam3則是在localmap和全局優化階段都會對地圖點進行優化,所以它的地圖點會比較準確,也會參與定位,所以魯棒性會更高,同時計算量也更大。
1.初始化
內容 | ORB-SLAM3 | VINS-Mono |
---|---|---|
初始化目的 | 建立視覺地圖 + 后續重定位/回環 | 初始化 VIO 狀態:位姿、速度、重力、bias |
是否 tightly-coupled 初始化 | ? 否,視覺先建圖后 IMU 對齊 | ? 是,IMU 和視覺一開始就聯合初始化 |
是否支持不帶IMU運行 | ? 支持純視覺初始化 | ? 不支持(VINS 必須有 IMU) |
ORB-SLAM3和VINS-Mono是兩種基于不同理論框架的視覺SLAM系統,它們的初始化過程在目標、方法和對傳感器數據的處理上存在顯著差異。以下是兩者的詳細對比:
1. 初始化目標
ORB-SLAM3 VINS-Mono 主要目標:構建一個準確的稀疏特征點地圖并初始化相機位姿,適用于長期定位和地圖復用。 主要目標:快速恢復相機-IMU的外參、尺度、重力方向、速度等,實現緊耦合的視覺-慣性融合。 依賴純視覺初始化,后續融合IMU(若存在)。 必須依賴IMU數據,視覺初始化僅為輔助。 2. 初始化的觸發條件
ORB-SLAM3 VINS-Mono 純視覺模式:需連續成功匹配兩幀間的特征點(基礎矩陣/單應矩陣)并三角化出3D點。 視覺-慣性模式:需滿足以下條件:
- IMU預積分達到一定時間(默認≥1秒);
- 視覺成功計算滑動窗口中所有幀的位姿(SFM)。視覺-慣性模式:需視覺初始化成功后,再通過IMU數據優化尺度、重力方向等。 若純視覺初始化失敗,系統會持續等待IMU數據滿足條件。 3. 初始化方法細節
ORB-SLAM3
特征匹配與幾何驗證:
提取ORB特征,匹配連續兩幀的特征點。
計算基礎矩陣(Fundamental Matrix)或單應矩陣(Homography),選擇更適合的模型(基于評分)。
三角化地圖點:
從匹配的特征點中三角化出初始3D點,構建稀疏地圖。
全局BA優化:
對初始幀和地圖點進行Bundle Adjustment(BA)優化。
視覺-慣性擴展(若啟用IMU):
通過IMU數據優化尺度、重力方向,并初始化速度、IMU偏置等參數。
VINS-Mono
IMU預積分:
在滑動窗口內預積分IMU數據,計算幀間相對運動(旋轉、速度、位置變化)。
純視覺SFM(Structure from Motion):
使用8點法或5點法計算幀間位姿,三角化特征點,構建局部地圖。
通過PnP和全局BA優化滑動窗口內所有幀的位姿。
視覺-慣性對齊:
緊耦合優化:將視覺和IMU的約束聯合優化,初始化所有狀態量。
4. 對IMU的依賴
ORB-SLAM3 VINS-Mono IMU是可選的。純視覺模式無需IMU,視覺-慣性模式需視覺初始化成功后才融合IMU。 IMU是必需的。初始化階段直接依賴IMU數據,視覺僅提供初始位姿估計。 IMU參數(如偏置)在初始化后通過優化逐步修正。 IMU參數(如偏置、外參)在初始化階段即被顯式估計。 5. 初始化的魯棒性
ORB-SLAM3 VINS-Mono 優點:純視覺初始化對靜止場景或低動態環境更魯棒。
缺點:依賴特征匹配質量,紋理缺失時易失敗;視覺-慣性模式下需等待視覺初始化完成。優點:IMU提供運動激勵,在快速運動或紋理缺失時更魯棒。
缺點:需足夠的IMU激勵(如加速度變化),否則尺度估計可能不準。6. 典型失敗場景
ORB-SLAM3 VINS-Mono - 場景紋理不足,特征匹配失敗。
- 純旋轉運動導致三角化失效。- IMU靜止或勻速運動,導致尺度不可觀。
- 視覺SFM失敗(如動態物體過多)。7. 總結
維度 ORB-SLAM3 VINS-Mono 核心思想 先視覺后慣性,分階段初始化。(松耦合) 視覺-慣性緊耦合聯合初始化。 速度 較慢(需視覺收斂)。 較快(IMU提供即時運動估計)。 適用場景 靜態或低速場景,長期定位。 高動態、快速運動場景。 代碼復雜度 較高(多階段邏輯)。 較高(緊耦合優化)。 ORB-SLAM3初始化流程:
視覺匹配 → 三角化 → BA優化 →(若IMU)→ 視覺-慣性對齊VINS-Mono初始化流程:
IMU預積分 → 視覺SFM → 視覺-慣性松耦合對齊 → 緊耦合優化兩者初始化過程的差異反映了其設計哲學:ORB-SLAM3以視覺為主導,IMU為輔助;而VINS-Mono將IMU視為核心,視覺用于約束漂移。選擇取決于應用場景(如是否需要高頻輸出或應對快速運動)。
2.Localmap階段
ORB-SLAM3 和 VINS-Mono 在
LocalMap
階段雖然都做局部優化,但本質差異非常大,主要體現在:? 總體定位:LocalMap 階段的作用
系統 LocalMap 目的 ORB-SLAM3 建立/維護局部地圖、BA優化、提升追蹤準確性 VINS-Mono 滑動窗口內緊耦合優化(視覺+IMU)以輸出精確軌跡 🔍 核心差異對比(結構化總結)
對比項 ORB-SLAM3 VINS-Mono 核心數據結構 局部關鍵幀集合 + 地圖點 滑動窗口幀 + 特征點 + IMU測量 IMU 融合方式 可選,松耦合/緊耦合,構造虛擬觀測加入BA 強緊耦合(IMU預積分 + 視覺重投影一起優化) 優化目標(變量) 關鍵幀位姿 + 地圖點位置 + IMU偏置 所有滑窗內幀的位姿、速度、bias + 地圖點 優化方法 局部 Bundle Adjustment (BA) 滑動窗口非線性優化(通常基于 Ceres) 地圖點來源 特征點三角化自多個關鍵幀 特征點在滑窗中兩幀間三角化 處理頻率 通常在后臺觸發或關鍵幀插入時觸發 實時持續進行,每幀新圖像都優化 地圖點更新/剔除機制 地圖點維護機制,融合、剔除、替換 無全局地圖點維護,點只在滑窗內短暫存在 與回環連接 可以觸發全局BA、Pose Graph、關鍵幀融合 回環僅4DoF圖優化,不作用于局部地圖點 輸出內容 優化后的當前幀位姿 + 局部地圖點 精確的當前幀軌跡(平滑連續) ?
🧠 更深入地講講每個系統的設計哲學
🔷 ORB-SLAM3 的 LocalMap 特征:
更偏向 地圖維護 與 跟蹤精度提升;
在
Tracking
模塊中,根據當前幀位置選出最近的局部關鍵幀和地圖點;然后進行 PnP + 局部 BA;
IMU 部分在 LocalMap 階段只是可選增強(松耦合時構造邊),不一定每次都用;
非實時優化,重點在于穩定建圖。
📌 優點:
地圖一致性更好;
支持回環后地圖修正;
支持大規模建圖。
🔶 VINS-Mono 的 LocalMap 特征:
本質是一個滑動窗口優化器;
維護一個固定長度(如 10 幀)的窗口;
每次新圖像進來,舊幀被邊緣化,加入新幀后重新優化;
優化內容非常全面(視覺、IMU、bias),但只在小范圍內;
輸出非常平滑、低延遲的軌跡。
📌 優點:
軌跡估計非常精確;
系統適合實時狀態估計(如無人機、AR);
融合 IMU 的能力非常強。
🎯 總結一句話
ORB-SLAM3 的 LocalMap 更像是“地圖構建 + 關鍵幀優化”的局部圖優化,而 VINS-Mono 的 LocalMap 則是一個滑動窗口內的“緊耦合狀態估計器”,重點完全不同
3. Altas地圖管理系統
由于vins mono沒有地圖管理系統,這里不需要比較。
4. 前端視覺里程計
項目 | ORB-SLAM3 前端 VO | VINS-Mono 前端 VO |
---|---|---|
主目標 | 快速建圖 + 建立局部地圖點 + 保持軌跡連續性 | 提供精確的位姿估計供 IMU 融合(VIO) |
特征提取 | ORB 特征(快速 + 稀疏) | FAST + Shi-Tomasi 特征(稀疏,但更魯棒) |
匹配方式 | 基于 ORB 特征匹配(雙向匹配 + RANSAC) | 基于 KLT 光流跟蹤(圖像金字塔) |
深度來源 | 建圖期間通過三角化生成地圖點 | 通常只使用單幀對之間的視差,形成臨時點 |
位姿估計方法 | PnP(當前幀 vs 參考幀) + 局部 BA | 光流跟蹤 + 三角化 + 非線性最小化 |
是否持續建圖點 | ? 是,持續維護地圖點,供回環和重定位使用 | ? 否,只在滑窗中臨時存在 |
IMU 使用情況 | 可選(Loosely-或Tightly-coupled) | 緊耦合(與視覺始終聯合優化) |
是否有 KeyFrame 策略 | ? 有,關鍵幀維護機制驅動地圖構建 | ? 有,滑窗內關鍵幀驅動優化窗口 |
前端優化方式 | Local BA(對局部關鍵幀和地圖點優化) | Sliding Window Optimization(只對滑窗內位姿優化) |
運行頻率 | 可做到實時,但更偏地圖構建 | 高頻,追求低延遲和高精度 |
對地圖依賴性 | 強,需維護地圖點和其觀測 | 弱,不依賴地圖點長時穩定存在 |
?
📌 核心設計差異詳解
1. ? 視覺特征處理方式:
ORB-SLAM3:
使用 ORB 特征(方向 + 不變性強);
匹配時使用BoW + 特征描述子匹配;
構建地圖點、三角化、融合地圖。
VINS-Mono:
使用光流法(Lucas-Kanade + 金字塔)進行幀間跟蹤;
精度高,時間延遲低;
不依賴描述子,適合 IMU 聯合優化。
2. ? 位姿估計策略:
ORB-SLAM3:
當前幀通過與參考關鍵幀進行 2D-3D PnP 位姿估計;
然后再進行局部 BA 優化,聯合多個關鍵幀和地圖點。
VINS-Mono:
用光流跟蹤特征點(2D-2D),再進行三角化;
聯合 IMU 做緊耦合滑窗優化,解算當前幀位姿;
位姿不是直接由 PnP 得到,而是聯合優化殘差后的結果。
3. ? 地圖點維護策略:
ORB-SLAM3 會將地圖點作為圖優化中的長期變量來維護,供回環、重定位、地圖優化用;
VINS-Mono 中的地圖點只用于滑動窗口內的三角化,不進入長期地圖,也不用于回環后的地圖修正。
4. ? 與 IMU 的配合方式:
ORB-SLAM3:
IMU 是可選組件,松耦合或緊耦合可配置;
初始化階段可用視覺軌跡輔助 IMU 對齊;
前端本身可單獨運行純視覺 VO。
VINS-Mono:
天生為 VIO 設計,IMU 是不可或缺的;
從初始化開始就是視覺 + IMU 緊耦合;
視覺只為輔助 IMU 精確建模。
? 總結一句話:
ORB-SLAM3 的前端視覺里程計以“構建可維護地圖”為目標,強調特征匹配與三角化建圖;而 VINS-Mono 的前端則以“高頻、精確、輕量”的 VIO 輸入為目標,強調光流跟蹤與 IMU 緊耦合優化。
5. 回環檢測
項目 | ORB-SLAM3 | VINS-Mono |
---|---|---|
回環檢測觸發方式 | BoW(詞袋)+ 關鍵幀圖檢索 | BoW(詞袋)+ 關鍵幀間相似性 |
使用數據 | ORB 特征 + 詞袋向量 | 特征點(光流跟蹤)+ 詞袋向量 |
回環驗證方式 | 2D-3D PnP + Sim(3) 優化 | 2D-2D 單應性/基礎矩陣 + 4DoF PGO |
回環后處理 | 生成閉環約束,觸發全局 BA 或 Pose Graph 優化(Sim(3)) | 只做 4DoF Pose Graph 優化(x, y, z, yaw) |
地圖點處理 | 觸發地圖點融合、全圖優化 | 地圖點不參與優化,僅關鍵幀位姿調整 |
對地圖影響 | 可全局修正,地圖點更新 | 僅優化位姿,不修正地圖點 |
回環閉合類型 | 強閉環(全局地圖重構) | 弱閉環(軌跡位姿約束) |
IMU 耦合影響 | 可進行 Sim(3)+IMU 聯合優化(閉環后) | 回環中 IMU 信息基本不再使用 |
后端優化類型 | 全局 Bundle Adjustment / Pose Graph | Pose Graph Optimization(4DOF) |
典型效果 | 地圖結構大幅校正,重定位能力強 | 校正軌跡漂移,結構一致性較弱 |
?
🔍 關鍵點詳細對比
1?? 回環檢測觸發機制
ORB-SLAM3:
利用 BoW(詞袋)對關鍵幀之間進行圖檢索;
基于 ORB 特征生成描述子向量,快速查找潛在回環幀;
匹配后使用 2D-3D PnP 和 Sim(3) 優化驗證匹配精度和尺度一致性。
VINS-Mono:
同樣使用詞袋進行圖檢索;
匹配后用**2D-2D(單應/基礎矩陣)**粗匹配+滑動窗口相似性驗證;
不再使用地圖點進行 3D 驗證,匹配更為寬松,效率高但魯棒性稍弱。
2?? 回環后的優化策略
ORB-SLAM3:
成功匹配后構建 Sim(3) 閉環約束(包括尺度);
構造優化圖(Pose Graph),加入閉環邊;
通常會觸發全局 BA(Bundle Adjustment)或 Pose Graph 優化;
同時融合重復地圖點,調整整個地圖結構,精度極高。
VINS-Mono:
成功匹配后,僅加入4DoF 閉環邊(x, y, z, yaw);
執行全局 4DoF Pose Graph Optimization;
并不會融合地圖點,也不會進行全局 BA;
更偏向于校正軌跡而不是地圖本體。
3?? 地圖點與結構維護差異
ORB-SLAM3:
地圖點是長期維護資源;
回環可觸發地圖點融合(MapPoint merge);
新建地圖后會進行結構校正,保證地圖一致性;
重定位、重建時可用地圖點 PnP 精準恢復。
VINS-Mono:
地圖點只存在于滑動窗口中;
回環不會觸發地圖點融合;
不做全局地圖維護,地圖點不可復用;
重定位時僅依靠關鍵幀位置約束。
4?? 對系統漂移與結構一致性的影響
ORB-SLAM3:
長期運行后仍可保證地圖一致性;
地圖和軌跡雙重矯正;
回環后的地圖可以用于可視化、AR、再定位等應用。
VINS-Mono:
長期運行可能存在地圖點漂移、結構誤差;
軌跡偏差被修正,但地圖結構未修正;
回環主要作用是“軌跡拉直”,非重建地圖。
5?? 性能與實時性
ORB-SLAM3:
回環檢測和處理相對復雜,適合計算資源較強設備;
可后臺異步處理,線程間協調。
VINS-Mono:
回環檢測簡化、只優化位姿圖;
實時性好,輕量,適合嵌入式或移動設備。
? 總結一句話:
ORB-SLAM3 的回環檢測是“重建型”回環,強調地圖一致性與閉環融合;而 VINS-Mono 的回環是“校正型”回環,主要校正軌跡并保持輕量,適合實時系統