02/11/2025
SLAM Toolbox – Công cụ mạnh mẽ giúp robot “tự tìm đường và ghi nhớ thế giới quanh mình”
Khác với gmapping hay karto, SLAM Toolbox được tối ưu cho ROS2, hỗ trợ multi-session mapping, lưu / tải map động, pose graph optimization và khả năng localization-only mode cực ổn định.
1️⃣ Cấu trúc tổng thể
SLAM Toolbox được triển khai như một node ROS2 duy nhất có thể chạy ở hai chế độ:
✅ Online SLAM (Mapping mode)
- Xây dựng bản đồ trong khi robot di chuyển.
- Thực hiện pose graph optimization định kỳ để giảm drift.
- Cho phép serialization bản đồ (save state) để tiếp tục mapping sau này.
✅ Localization mode
- Không cập nhật bản đồ, chỉ định vị robot trên map có sẵn.
- Sử dụng scan matching + pose graph để tăng độ chính xác định vị.
2️⃣ Các topic chính:
/slam_toolbox/scan : Nhận dữ liệu LIDAR (LaserScan)
/slam_toolbox/map: Xuất bản đồ occupancy grid
/slam_toolbox/pose: Vị trí và hướng hiện tại của robot
/slam_toolbox/serialized_map: Map dạng binary để lưu / load
/slam_toolbox/graph_visualization: Hiển thị graph các node và constraint
3️⃣ Các tham số quan trọng
- use_sim_time: đồng bộ với thời gian mô phỏng Gazebo.
- resolution: độ phân giải của bản đồ (mỗi ô pixel).
- minimum_travel_distance & minimum_travel_heading: ngưỡng để thêm keyframe mới.
- map_update_interval: chu kỳ cập nhật bản đồ.
- do_loop_closing: bật/tắt loop closure.
- mode: mapping hoặc localization.
4️⃣ Bên trong thuật toán
SLAM Toolbox dựa trên Karto + Ceres Solver, với các bước chính:
- Scan matching để ước lượng pose tương đối.
- Pose graph optimization (dùng nonlinear least squares) để giảm sai lệch tích lũy.
- Loop closure detection giúp hiệu chỉnh bản đồ khi robot quay lại vùng đã đi qua.
- Điểm mạnh là khả năng chạy liên tục, cập nhật graph động mà không reset mapping.