welcom ! Handel home

2025年3月21日 星期五

ORB-SLAM3 支援 ROS1 整合

 ORB-SLAM3 支援 ROS1 整合,而且比 ROS2 更成熟穩定(開發者原本就是基於 ROS1 開發 wrapper 的),很多研究和專案也是以 ROS1 為基礎。


🎯 你將達成的目標:

✅ 使用 ROS1(如 Noetic)整合 ORB-SLAM3,讓它:

  • 訂閱 /camera/image_raw/imu/data(視狀況)
  • 自動建圖 + 發布 /odom, /tf, /orbslam3/pose
  • 可搭配 rosbag 回放或實時相機串流
  • 可與導航、控制、地圖伺服器等 ROS 節點整合

🛠️ Step-by-step:ROS1 + ORB-SLAM3 整合流程


🧱 1. 環境建議

項目建議
作業系統Ubuntu 20.04
ROS 版本ROS Noetic
OpenCV4.x(libopencv-dev
相依套件Pangolin、GTSAM、Eigen3

🧰 2. 建立 ROS1 工作區

bash
mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make
bash
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

📦 3. 下載 ORB-SLAM3 ROS1 Wrapper

bash
cd ~/catkin_ws/src git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

這個 repo 已經內含 ROS1 的 Examples/ROS 範例


⚙️ 4. 編譯 ORB-SLAM3 with ROS

bash
cd ~/catkin_ws catkin_make -j$(nproc)

💡 若出現錯誤:

  • 檢查你有沒有安裝 libopencv-dev, libpangolin-dev, libyaml-cpp-dev
  • 若用 CUDA 編譯報錯,可先試純 CPU 模式

📁 5. 建立相機設定檔與詞彙檔

你需要:

  • camera.yaml(內含 fx, fy, cx, cy...)
  • ORBvoc.txt(詞彙檔,可從 GitHub releases 下載)

放在 /home/yourname/ORB_SLAM3/config/ 路徑下


▶️ 6. 執行 ORB-SLAM3 ROS 節點

範例:單目相機

bash
rosrun ORB_SLAM3 Mono \ /home/you/ORB_SLAM3/Vocabulary/ORBvoc.txt \ /home/you/ORB_SLAM3/Examples/ROS/Monocular/YourCam.yaml \ true # ← 表示使用圖像時間戳同步

📡 7. rosbag 播放影像資料

bash
rosbag play your_video_data.bag

記得要包含 /camera/image_raw 話題。


📤 8. ORB-SLAM3 ROS 輸出資訊

話題說明
/orbslam3/pose相機 pose(geometry_msgs/PoseStamped)
/tf世界 → 相機轉換(可用於地圖)
/map(無)ORB-SLAM3 不會主動發布地圖話題,但你可改寫程式導出

🚀 延伸功能與整合建議

功能說明
加上 IMU 支援使用 Mono_Inertial 模式,訂閱 /imu/data
整合導航可將 /orbslam3/pose/odommove_base
地圖儲存可用 Open3D、evo、PCL 將點雲或軌跡儲存成 .ply/.pcd

🧪 測試範例 rosbag

可先測試官方資料集:

  • TUM RGBD
  • EuRoC MAV(含 IMU)

✅ 小結:你現在可以...

bash
# 播放 rosbag rosbag play yourdata.bag # 執行 ORB-SLAM3 節點 rosrun ORB_SLAM3 Mono ORBvoc.txt camera.yaml true

📌 再透過 rviz 查看 pose、軌跡
📌 再與導航或控制整合


❓想進一步?

我可以幫你:

  • 寫完整 ROS Launch 檔 → roslaunch orbslam3_run.launch
  • 整合 ROS bag 播放 + slam + tf + odom
  • 改寫 node 將 pose 導出為 /odom
  • 產生 .ply 地圖儲存器

要不要我幫你包一份 ROS1 launch 包?

還是把你的影片轉 ROS Bag?



沒有留言: