welcom ! Handel home

2025年3月20日 星期四

視覺 SLAM (vSLAM) + IMU

 想深入的是 視覺 SLAM (vSLAM) + IMU,這是非常實用也熱門的組合!

接下來我會完整介紹:

  1. ORB-SLAM3 是什麼?支援什麼模式?
  2. 安裝與建構流程
  3. 使用「相機 + IMU」進行 vSLAM(Visual-Inertial SLAM)
  4. 操作步驟與設定檔解說
  5. 附上範例啟動指令與結果解讀

🎯 1. ORB-SLAM3 簡介

ORB-SLAM3 是目前非常強大的開源 SLAM 系統,由西班牙 Zaragoza 大學開發。它支援:

模式說明
Monocular單鏡頭相機
Stereo雙鏡頭相機
RGB-D彩色+深度(如 Realsense)
Visual-Inertial相機 + IMU(本次重點)

ORB-SLAM3 的視覺慣性版本使用的是 VIO(Visual-Inertial Odometry)技術,可以在相機快速移動或光線變化時提升定位穩定性。


🛠️ 2. 安裝與建構 ORB-SLAM3(Ubuntu + ROS2 或 ROS1 建議)

環境需求(建議使用 Ubuntu 20.04)

  • C++14 compiler
  • Pangolin
  • Eigen3
  • OpenCV (3.x or 4.x)
  • GTSAM(僅限 Visual-Inertial 模式)
  • OpenCV-contrib
  • Boost

👉 官方建議直接依照 GitHub README 的 build.sh 步驟安裝:

bash
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod +x build.sh ./build.sh

🎥 3. Visual-Inertial SLAM 實作概念圖

css
[ 相機影像 ] [ IMU 加速度、角速度 ] ↓ ↓ [ 視覺前端 ORB 特徵提取 ] [ IMU 整合 ] ↘ ↙ [ VIO 優化後位姿(SLAM) ][ 地圖建構、姿態估算 ]

IMU 幫助:

  • 角速度提供短時間內方向變化 → 抵抗模糊
  • 加速度協助預估移動 → 降低重定位延遲

⚙️ 4. 操作流程(以 Euroc MAV Dataset 為例)

4-1. 資料格式要求

  • 相機影像(通常是 grayscale 圖片序列)
  • IMU 記錄(加速度、角速度)
  • .yaml 相機+IMU 設定檔

👉 你可以使用 EuRoC Dataset 作為練習資料集。


4-2. 啟動命令範例

bash
./Examples/Stereo-Inertial/stereo_inertial_euroc \ Vocabulary/ORBvoc.txt \ Examples/Stereo-Inertial/EuRoC.yaml \ path_to_euroc_dataset/MH_01_easy

4-3. EuRoC.yaml 設定檔重點參數(你也可以自定義)

yaml
# 相機參數(可從校正資料取得) Camera.fx: 458.654 Camera.fy: 457.296 Camera.cx: 367.215 Camera.cy: 248.375 # IMU 參數 IMU.NoiseGyro: 0.001 # [rad/s/sqrt(Hz)] IMU.NoiseAcc: 0.01 # [m/s^2/sqrt(Hz)] IMU.GyroWalk: 0.0001 IMU.AccWalk: 0.001

🔍 5. 輸出結果說明

當你成功運行後,你會看到:

  • 即時相機畫面與提取的 ORB 特徵點
  • 地圖建構的 3D 點雲與相機軌跡
  • 可選擇輸出 .txt(姿態)與 .ply(點雲)

📂 延伸應用建議

應用方向技術補充
真實設備測試需整合 IMU + 相機(如 ZED2、Realsense T265)
ROS 整合ORB-SLAM3 支援 ROS1/ROS2 節點包
模擬場景可用 Isaac Sim 輸出相機與 IMU 串流
訓練 AI 模型可利用 ORB-SLAM3 的定位結果作為 supervision 資料標籤

🧪 想要用你自己的影片 + IMU?

你需要提供:

  1. MP4 → 圖片序列(已給過程式)
  2. IMU 資料檔(.csv 或 .txt)
  3. 自己的相機與 IMU 配置 .yaml

我可以幫你組出:

  • 一個可跑 ORB-SLAM3 的資料資料夾結構
  • 自動生成格式轉換器(ex: IMU CSV 轉 SLAM 格式)

📩 要不要我幫你寫一個「影片 + IMU」資料轉換器,或直接幫你跑一份 ORB-SLAM3 的測試 pipeline?你目前手上有 IMU 資料嗎(格式是?)我們可以直接對接來跑。

沒有留言: