NghienCuuRobot.comNghiên Cứu Robot
SLAM & định vị

SLAM là gì và vì sao nó khó hơn vẻ ngoài

Robot vừa dựng bản đồ vừa xác định vị trí của mình trên chính bản đồ đó — bài toán con gà quả trứng của ngành.

Robot di chuyển trong hành lang có cảm biến quét

SLAM viết tắt của simultaneous localisation and mapping — vừa định vị vừa dựng bản đồ. Nghe như hai việc, thực ra là một, và chính chỗ đó làm nó khó.

Bản chất bài toán

Nếu đã có bản đồ, định vị là việc dễ. Robot quét xung quanh, so với bản đồ, tìm chỗ khớp nhất. Bài toán này giải được từ lâu.

Nếu đã biết mình ở đâu, dựng bản đồ cũng dễ. Cứ đứng ở toạ độ đã biết, quét, ghi vật thể thấy được vào bản đồ theo toạ độ đó.

Vấn đề là robot không có cả hai. Nó bước vào một toà nhà lạ, không bản đồ, không biết mình đứng đâu. Muốn dựng bản đồ phải biết vị trí; muốn biết vị trí phải có bản đồ.

Cách thoát ra là ước lượng cả hai cùng lúc và chấp nhận cả hai đều có sai số. Robot đi một đoạn, ước lượng mình đã đi bao xa, ghi những gì thấy được, rồi liên tục hiệu chỉnh cả bản đồ lẫn vị trí sao cho toàn bộ dữ liệu quan sát khớp nhau nhất có thể.

Đó là lý do SLAM luôn là bài toán tối ưu chứ không phải bài toán đo đạc. Không có phép đo nào cho ra đáp án đúng; chỉ có lời giải làm mọi quan sát mâu thuẫn nhau ít nhất.

Sai số tích luỹ — kẻ thù chính

Hiểu chỗ này là hiểu vì sao SLAM cần đến những kỹ thuật phức tạp.

Robot ước lượng chuyển động bằng odometry — đếm vòng quay bánh xe, hoặc dùng IMU đo gia tốc và xoay. Mỗi phép đo lệch một chút.

Sai số cộng dồn không giới hạn. Đi mười mét lệch mười centimet còn chấp nhận được. Đi một trăm mét, lệch có thể lên vài mét. Bánh xe trượt, sàn trơn, thảm dày — mỗi thứ thêm sai số.

Hậu quả nhìn thấy được: robot đi vòng quanh một tầng nhà rồi quay về điểm xuất phát, nhưng bản đồ nó dựng ra thì hành lang không khép kín — hai đầu lệch nhau vài mét.

Không có cảm biến nào chữa được điều này bằng cách chính xác hơn. Cảm biến tốt hơn làm sai số nhỏ hơn, nhưng nó vẫn tích luỹ. Bản chất là cộng dồn, không phải độ chính xác.

Lời giải nằm ở chỗ khác: nhận ra rằng mình đã từng ở đây rồi. Kỹ thuật đó gọi là đóng vòng.

Đóng vòng — nhận ra chỗ cũ

Cơ chế quan trọng nhất trong SLAM và cũng dễ hỏng nhất.

Ý tưởng. Khi robot quay lại một nơi đã đi qua, nó nhận ra khung cảnh này quen. Lúc đó nó có một ràng buộc mới: hai thời điểm cách nhau rất xa trong hành trình thực ra ở cùng một chỗ. Ràng buộc này cho phép kéo toàn bộ bản đồ về đúng, gỡ được sai số đã tích luỹ suốt quãng đường.

Cách nhận ra. Với camera thì so đặc trưng hình ảnh; với LiDAR thì so hình dạng đám điểm quét được. Hệ thống giữ một thư viện những nơi đã đi qua và tra cứu liên tục.

Vì sao dễ hỏng. Nhiều nơi trông giống nhau. Hai hành lang trong cùng toà nhà văn phòng gần như không phân biệt được. Nếu hệ thống nhận nhầm, nó áp một ràng buộc sai, và bản đồ bị bẻ méo nghiêm trọng — thường là hỏng hẳn chứ không phải lệch chút ít.

Vì thế các hệ thống thực tế rất thận trọng. Thà bỏ lỡ một cơ hội đóng vòng còn hơn chấp nhận nhầm một cái. Có cơ chế kiểm tra nhiều lớp trước khi tin.

Các họ giải pháp

Lọc — filter-based. Thế hệ đầu, dùng bộ lọc Kalman mở rộng hoặc lọc hạt. Robot giữ một ước lượng duy nhất và cập nhật dần theo mỗi quan sát mới. Nhẹ, chạy được trên phần cứng yếu, nhưng khó sửa lại quá khứ khi phát hiện sai.

Đồ thị — graph-based. Cách phổ biến hiện nay. Mỗi vị trí robot từng đứng là một nút, mỗi quan sát là một cạnh ràng buộc. Khi có ràng buộc mới, hệ thống tối ưu lại toàn bộ đồ thị. Sửa được quá khứ, chính xác hơn nhiều, nhưng tốn tính toán và cần lưu lịch sử.

Theo cảm biến. SLAM dùng LiDAR ổn định, ít phụ thuộc ánh sáng, đắt hơn. SLAM dùng camera rẻ, nhiều thông tin, nhưng chết trong phòng tối hoặc trước bức tường trắng không đặc trưng. Kết hợp camera với IMU là hướng phổ biến vì bù được điểm yếu của nhau.

Hướng học sâu. Dùng mạng nơ-ron thay cho phần trích đặc trưng hoặc phần nhận diện nơi chốn. Cải thiện rõ ở khâu nhận ra chỗ cũ, nhưng phần tối ưu hình học vẫn dùng phương pháp cổ điển vì đáng tin hơn.

SLAM trong sản phẩm thật

Khoảng cách giữa bài báo và máy đang chạy ngoài đời.

Robot dịch vụ thường không làm SLAM khi vận hành. Chúng dựng bản đồ một lần lúc lắp đặt, rồi mỗi ngày chỉ định vị trên bản đồ có sẵn. Nhẹ hơn nhiều và ổn định hơn nhiều.

Bản đồ hỏng khi mặt bằng thay đổi. Kê lại bàn ghế, dựng vách mới, đổi bố trí kho — robot bắt đầu lạc. Đây là nguyên nhân sự cố phổ biến nhất ở các cụm robot dịch vụ, và cách xử lý là quét lại bản đồ chứ không phải sửa phần mềm.

Môi trường động là điểm yếu chưa giải quyết tốt. Chỗ đông người, mọi thứ robot thấy đều di chuyển. Các hệ thống thực tế xử lý bằng cách bỏ qua vật thể động và chỉ tin vào cấu trúc tĩnh — tường, cột, trần.

Ngoài trời là bài toán khác hẳn. Có GPS thì bài toán nhẹ đi nhiều, nhưng GPS không dùng được trong nhà, dưới tán cây hoặc giữa nhà cao tầng.

Điều đáng nhớ: SLAM đã đủ tốt cho không gian trong nhà tương đối ổn định. Nó chưa đủ tốt cho môi trường thay đổi liên tục — và đó vẫn là hướng nghiên cứu đang mở.

Câu hỏi thường gặp

SLAM khác gì với định vị thông thường?

Định vị thông thường cần có bản đồ trước. SLAM là trường hợp robot không có bản đồ lẫn không biết vị trí, phải ước lượng cả hai cùng lúc — vì thế nó là bài toán tối ưu chứ không phải đo đạc.

Vì sao sai số tích luỹ không chữa được bằng cảm biến tốt hơn?

Vì bản chất là cộng dồn chứ không phải độ chính xác. Cảm biến tốt hơn làm mỗi bước lệch ít hơn, nhưng đi đủ xa thì tổng sai số vẫn lớn. Lời giải là đóng vòng — nhận ra nơi đã đi qua.

Đóng vòng dễ hỏng ở chỗ nào?

Nhiều nơi trông giống nhau, nhất là hành lang văn phòng. Nhận nhầm một cặp sẽ áp ràng buộc sai và bẻ méo cả bản đồ, nên hệ thống thực tế thà bỏ lỡ còn hơn chấp nhận nhầm.

Robot dịch vụ ngoài đời có chạy SLAM liên tục không?

Thường không. Chúng dựng bản đồ một lần lúc lắp đặt rồi chỉ định vị trên bản đồ có sẵn. Khi mặt bằng thay đổi thì phải quét lại bản đồ — đây là nguyên nhân sự cố phổ biến nhất.

Đọc thêm trong Học tăng cường cho robotĐiều khiển & lý thuyết.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138