已經透過 mp4_to_slam_dataset.py
拆解影片,產生了:
slam_frames/
:存放每張影格rgb.txt
:影格與時間戳的對應表
✅ 下一步就是把這些資料丟給 ORB-SLAM3 使用啦!
🎯 ORB-SLAM3 使用你自己的資料步驟
🧱 Step 0:檔案整理結構
建議整理為:
🛠️ Step 1:準備相機設定檔 camera.yaml
ORB-SLAM3 需要一份 .yaml
檔來描述相機內參(focal length、中心點、畸變等),格式如下:
🔧 如果你不知道真實內參,可以先試用上述預設值(較寬容),未來可使用 kalibr
或 opencv calibration
工具取得精確值。
▶️ Step 2:執行 ORB-SLAM3
🔹 環境先決:
- 已安裝 ORB-SLAM3 並
build.sh
成功 - 進入 ORB-SLAM3 的根目錄
🔹 指令格式(Monocular):
📌 替換以上路徑為你的實際檔案路徑!
🖼️ 執行時會看到:
- 即時建構的地圖(3D 點雲)
- 相機軌跡(白色路徑線)
- 視窗顯示當前影像與 ORB 特徵點
💾 [進階] 匯出軌跡與地圖
匯出相機軌跡:
按 Ctrl+C
結束後,會在終端輸出軌跡資訊
或修改 ORB-SLAM3 原始碼,將 pose 儲存成 .txt
檔
匯出地圖點雲:
ORB-SLAM3 本身沒有直接匯出 .ply
功能,但你可以:
- 匯出軌跡
- 使用第三方工具(如 evo、Open3D)合成點雲
🧪 Troubleshooting 小提醒
問題 | 解法 |
---|---|
Camera calibration error | 確認 .yaml 內參是否符合影像解析度 |
No frames processed | 確認 rgb.txt 的時間戳與圖片檔名對應無誤 |
顯示畫面不動 | 確認 fps 設定與 rgb.txt 間距一致 |
🧰 範例資料參考
如果你需要測試,EuRoC、TUM RGB-D 都是官方支援資料集,可先驗證環境。
✅ 總結你要做的是:
然後觀察視窗、確認 ORB 特徵點與軌跡是否建構成功 ✅
如果你需要:
- 轉
.txt
軌跡成 ROS 的/odom
話題 - 後續與
nav2
導航整合 - 或我幫你包成 ROS 節點、Docker 套件
也可以隨時說一聲,我可以幫你串接下一步!是否要我幫你整合成一個 ROS2 launch 套件?
=========================================
使用 Docker 執行 ORB-SLAM3 是非常方便又乾淨的方式,不用煩惱系統相依與 OpenCV/GTSAM 編譯問題,下面我會給你:
- 一個可直接用的 Dockerfile
- 執行步驟
- 資料掛載與執行範例
🐳 為什麼用 Docker 跑 ORB-SLAM3?
✅ 好處:
- 避免 host 環境衝突(OpenCV、CMake、GTSAM)
- 方便在不同機器/Jetson/伺服器間部署
- 容易整合 ROS、Python、SLAM 工具鏈
📂 資料結構建議
你先把資料放在一個資料夾,例如:
🧰 Dockerfile(含完整建構步驟)
🏗️ 建置 Docker 映像
▶️ 執行容器(並掛載資料)
假設你有資料夾 my_dataset/
包含:
slam_frames/
rgb.txt
camera.yaml
執行容器並將資料掛進去:
(⚠️ 若用 WSL 或 headless server,GUI 請使用 VNC / headless 模式)
▶️ 容器內執行 ORB-SLAM3
✅ 完成效果
你會看到:
- GUI 顯示當前畫面與 ORB 特徵點
- SLAM 視窗畫出相機軌跡與地圖點雲
📁 進階建議
類型 | 建議 |
---|---|
使用 ROS | 可用 ROS Docker base 加上 ros-bridge |
與 Jetson 搭配 | 使用 nvcr.io/nvidia/l4t-base 作為 base |
匯出點雲 | 修改 System.cc 內部,寫入 SaveKeyFrameTrajectoryTUM |
🧪 小補充
如你影片有 IMU,也可以接 mono_inertial_euroc
執行,架構幾乎一樣,只需多一份 IMU 資料與參數。
需要我幫你:
- 加上
rosbag
支援? - 整合 IMU + ROS 節點轉換器?
- 用 GUI or no-GUI 模式部署?
也可以直接提供你的影片與參數,我幫你打包一份現成 Docker 執行模板 ✅ 要嗎?
沒有留言:
張貼留言