Đến nội dung chính
Robot & AI hiện thân

SLAM: Robot định vị và xây dựng bản đồ

Hiểu odometry, data association, loop closure và lý do bản đồ phụ thuộc vào ước lượng pose.

Mức giải thích

SLAM đồng thời ước lượng trạng thái robot và bản đồ môi trường từ quan sát. Robot dùng bản đồ để hiểu nó ở đâu, trong khi chính pose ước lượng quyết định quan sát được đặt vào bản đồ thế nào.

Mục tiêu học tập

  • Phân biệt localization, mapping, odometry và SLAM.
  • Giải thích drift và loop closure.
  • Nhận ra gauge freedom, scale và data-association failure.

Biết mình ở đâu khi bản đồ chưa có

Odometry ước lượng chuyển động tương đối; mapping tích hợp quan sát thành bản đồ; localization tìm pose trong bản đồ đã biết. SLAM tối ưu pose và map cùng nhau. Front-end trích xuất hoặc ghép quan sát; back-end kết hợp các ràng buộc.

Camera, lidar và IMU cung cấp các loại tín hiệu khác nhau. ORB-SLAM là ví dụ feature-based monocular SLAM, không phải kiến trúc duy nhất và không đại diện mọi thiết bị.

Drift và loop closure

Loop detection tạo candidate; geometric verification kiểm tra trước khi thêm ràng buộc. Back-end tối ưu các pose để phù hợp odometry và loop closure. Robust losses hoặc cơ chế loại outlier có thể giảm tác động phép ghép sai nhưng không loại mọi lỗi.

Kiểm tra quỹ đạo trước khi nhìn bản đồ đẹp

Kiểm tra calibration, sync, frame convention và lost-tracking events. ATE và relative pose error đo các khía cạnh khác nhau; alignment SE(3) khác alignment có scale. Báo cách alignment cùng metric.

Workflow & kiến trúc

Các node là pose; cạnh nối tiếp là ràng buộc odometry; cạnh vòng khép kín bổ sung loop closure trước tối ưu graph. Minh họa không phải quỹ đạo đo hay bản đồ thực.
01Quan sát + calibration
02Ghép / odometry
03Loop verification
04Tối ưu pose + map
Workflow minh họa · Các bước cần được điều chỉnh theo bài toán thực tế.

Ứng dụng & giới hạn

  • Ước lượng quỹ đạo robot trong môi trường chưa biết.
  • Tạo map cho navigation hoặc khảo sát có kiểm chứng.

Điểm mạnh

Kết hợp quan sát nhiều thời điểm để ràng buộc pose và môi trường.

Giới hạn cần nhớ

Cảnh ít texture, vật thể động, calibration sai hoặc false loop closure có thể làm mất theo dõi hoặc méo bản đồ.

Thử trong một project nhỏ

LEARN BY DOING

Vẽ graph bốn pose quanh một hình vuông. Đánh dấu cạnh odometry và loop closure; giải thích vì sao cần cố định một pose và vì sao loop sai nguy hiểm.

PYTHON · VÍ DỤ MINH HỌA
from math import cos, sin, pi
def move_local(x, y, heading, dx, dy):
    return (x + cos(heading)*dx - sin(heading)*dy,
            y + sin(heading)*dx + cos(heading)*dy)
x, y = move_local(0.0, 0.0, pi/2, 1.0, 0.0)
assert abs(x) < 1e-12 and abs(y - 1.0) < 1e-12
print(x, y)

Rigid transform 2D với góc radian và khoảng cách cùng đơn vị; chưa có sensor fusion, loop closure hay SLAM thực.

Nguồn tham khảo

  1. Cadena et al. — Past, Present, and Future of SLAM (2016)
  2. Mur-Artal, Montiel & Tardós — ORB-SLAM (2015)

KEEP EXPLORING

Đọc tiếp để nối các ý tưởng.