SLAM (simultaneous localization and mapping) là một phương pháp được sử dụng cho các phương tiện tự hành, cho phép xây dựng bản đồ và định vị phương tiện trong bản đồ đó cùng một lúc. Thuật toán SLAM cho phép phương tiện vạch ra bản đồ môi trường không xác định. Các kỹ sư sử dụng thông tin bản đồ để thực hiện các nhiệm vụ như lập kế hoạch đường đi và tránh chướng ngại vật.
Tại sao SLAM quan trọng?
SLAM là chủ đề nghiên cứu kỹ thuật trong nhiều năm. Nhưng với những cải tiến lớn về tốc độ xử lý của máy tính và sự sẵn có của các cảm biến giá rẻ như camera và laser rangefinder, SLAM hiện được ứng dụng rộng rãi trong một số lĩnh vực thực tế.
Để hiểu tại sao SLAM quan trọng, hãy xem hiệu quả của những ứng dụng sau.
Ví dụ về SLAM
Xem xét robot hút bụi trong nhà. Nếu không có SLAM, nó sẽ chỉ di chuyển ngẫu nhiên trong phòng và không thể làm sạch toàn bộ bề mặt sàn. Thêm vào đó, việc di chuyển ngẫu nhiên sử dụng quá nhiều năng lượng, khiến pin nhanh hết. Mặt khác, robot dùng SLAM có thể sử dụng thông tin như số vòng quay bánh xe và dữ liệu từ camera và cảm biến hình ảnh để xác định số lượng chuyển động cần thiết. Đây được gọi là “localization” (tạm dịch, “bản địa hóa”). Robot cũng có thể sử dụng đồng thời camera và các cảm biến khác để tạo bản đồ các chướng ngại vật trong môi trường xung quanh và tránh làm sạch cùng một khu vực hai lần. Đây được gọi là “mapping”.
SLAM hữu ích trong nhiều ứng dụng khác như điều hướng một đội robot di động để sắp xếp các kệ hàng trong nhà kho, đậu xe tự lái ở một nơi trống hoặc giao gói hàng bằng cách điều hướng một máy bay không người lái trong môi trường không xác định.
SLAM hoạt động như thế nào?
Có hai loại công nghệ được sử dụng để tạo SLAM. Loại đầu tiên là cảm biến xử lý tín hiệu, bao gồm xử lý front-end, phụ thuộc phần lớn vào các cảm biến được sử dụng. Loại thứ hai là tối ưu hóa pose-graph, bao gồm xử lý back-end, là loại cảm biến bất khả tri (sensor agnostic).
Để hiểu rõ hơn về phần xử lý front-end, hãy cùng tìm hiểu về 2 phương thức SLAM khác nhau: visual SLAM (SLAM trực quan) và lidar SLAM.
Visual SLAM
Visual SLAM (vSLAM) sử dụng hình ảnh thu được từ camera và các cảm biến hình ảnh khác. Visual SLAM có thể sử dụng camera đơn giản (camera góc rộng, hình cầu và fish-eye), kết hợp với mắt camera (stereo và nhiều camera) và RGB-D camera (depth and ToF camera).
Visual SLAM được thực hiện chi phí thấp với các camera giá rẻ. Ngoài ra, vì camera cung cấp một lượng lớn thông tin nên chúng có thể được sử dụng để phát hiện các điểm mốc (vị trí đã đo trước đó). Phát hiện mốc cũng có thể được kết hợp với tối ưu hóa dựa trên đồ thị để đạt được sự linh hoạt trong việc triển khai SLAM.
Monocular SLAM là khi vSLAM sử dụng một camera đơn làm cảm biến duy nhất, khiến cho việc xác định độ sâu trở nên khó khăn. Điều này có thể được giải quyết bằng cách phát hiện các điểm đánh dấu AR, bàn cờ hoặc các đối tượng đã biết khác trong hình ảnh để xác định vị trí hoặc bằng cách kết hợp thông tin máy ảnh với một cảm biến khác, chẳng hạn như đơn vị đo lường quán tính (IMUs), có thể đo các đại lượng vật lý như vận tốc và định hướng. Công nghệ liên quan đến vSLAM bao gồm cấu trúc từ chuyển động (SfM), đo thị giác (Visual odometry) và điều chỉnh gói (bundle adjustment).
Thuật toán visual SLAM có thể được phân chia thành hai loại. Phương pháp quét rải rác khớp với các điểm đặc trưng của hình ảnh và sử dụng các thuật toán như PTAM và ORB-SLAM. Loại thứ hai, phương pháp quét dày đặc sử dụng độ sáng tổng thể của hình ảnh và các thuật toán như DTAM, LSD-SLAM, DSO, SVO.
LiDAR SLAM
Light detection and ranging – LiDAR là phương pháp sử dụng chủ yếu cảm biến laser (hoặc cảm biến khoảng cách).
So với camera, ToF và các cảm biến khác, laser chính xác hơn nhiều và được sử dụng cho các phương tiện di chuyển tốc độ cao như ô tô tự lái và máy bay không người lái. Các giá trị đầu ra từ cảm biến laser là 2D (x, y) hoặc dữ liệu đám mây điểm (point cloud data) 3D (x, y, z). Đám mây điểm cảm biến laser cung cấp các phép đo khoảng cách có độ chính xác cao và hoạt động rất hiệu quả để xây dựng bản đồ với SLAM. Về cơ bản, chuyển động được ước tính tuần tự bằng cách khớp với các đám mây điểm. Chuyển động (quãng đường đã đi) này sử dụng để xác định vị trí của xe. Đối với đối sánh đám mây điểm lidar, các thuật toán đăng ký như điểm gần nhất lặp đi lặp lại – ICP (iterative closest point) và thuật toán biến đổi phân phối bình thường – NDT (normal distributions transform) được sử dụng. Bản đồ đám mây điểm 2D hoặc 3D có thể được biểu diễn dưới dạng bản đồ lưới hoặc bản đồ voxel.
Mặt khác, các đám mây điểm không chi tiết về mật độ như hình ảnh và không phải lúc nào cũng cung cấp đủ các tính năng để đối sánh. Ví dụ, ở những nơi có ít chướng ngại vật, rất khó để căn chỉnh các đám mây điểm và điều này có thể dẫn đến mất dấu vị trí của phương tiện. Ngoài ra, đối sánh đám mây điểm thường yêu cầu sức mạnh xử lý cao, vì vậy cần phải tối ưu hóa các quy trình để cải thiện tốc độ. Do những thách thức này, việc bản địa hóa cho các phương tiện tự hành có thể liên quan đến việc kết hợp các kết quả đo lường khác như wheel odometry, hệ thống vệ tinh định vị toàn cầu (GNSS) và dữ liệu IMU. Đối với các ứng dụng như robot nhà kho, SLAM 2D lidar thường được sử dụng, trong khi SLAM sử dụng đám mây điểm 3D có thể được sử dụng cho UAV và xe tự động.
Những thách thức phổ biến với SLAM
Mặc dù SLAM được sử dụng cho một số ứng dụng thực tế, nhưng vẫn có những khó khăn về kỹ thuật hạn chế việc áp dụng nó trong điều kiện chung.
1. Lỗi tích lũy bản địa hóa (Localization errors accumulate), gây ra độ lệch đáng kể so với giá trị thực tế
SLAM ước tính chuyển động tuần tự, bao gồm một số sai số. Lỗi tích lũy theo thời gian, gây ra độ lệch đáng kể so với giá trị thực tế. Nó cũng có thể khiến dữ liệu bản đồ bị thu gọn hoặc biến dạng, gây khó khăn cho những lần tìm kiếm tiếp theo. Lấy ví dụ về việc lái xe quanh một lối đi hình vuông. Khi xảy ra lỗi này, điểm xuất phát và điểm kết thúc của robot không còn khớp với nhau. Đây được gọi là sự cố đóng vòng lặp. Các lỗi ước lượng đặt ra như thế này là không thể tránh khỏi. Điều quan trọng là phát hiện các lần đóng vòng lặp và xác định cách sửa hoặc loại bỏ lỗi tích lũy.
Một biện pháp xử lý khác là ghi nhớ một số đặc điểm từ một địa điểm đã đến trước đây làm mốc và giảm thiểu lỗi bản địa hóa. Pose-graph được xây dựng để giúp sửa lỗi. Bằng cách giải quyết vấn đề giảm thiểu lỗi như một vấn đề tối ưu hóa, dữ liệu bản đồ sẽ chính xác hơn. Loại tối ưu hóa này được gọi là điều chỉnh gói (bundle adjustment) trong SLAM trực quan.
2. Bản địa hóa không thành công và mất dấu vị trí trên bản đồ
Lập bản đồ hình ảnh và đám mây điểm không xem xét các đặc điểm chuyển động của robot. Trong một số trường hợp, cách tiếp cận này có thể tạo ra các ước tính vị trí không liên tục. Ví dụ, kết quả tính toán cho thấy một robot đang di chuyển với vận tốc 1 m/s đột nhiên tiến về phía trước thêm 10m. Loại lỗi bản địa hóa này có thể được ngăn chặn bằng cách sử dụng thuật toán khôi phục hoặc bằng cách kết hợp mô hình chuyển động với nhiều cảm biến để thực hiện các tính toán dựa trên dữ liệu cảm biến.
Một số phương pháp sử dụng mô hình chuyển động với sự kết hợp cảm biến. Phương pháp phổ biến là sử dụng Kalman filtering để bản địa hóa. Vì hầu hết các robot dẫn động vi sai và xe bốn bánh thường sử dụng mô hình chuyển động phi tuyến nên Kalman filter mở rộng và bộ lọc hạt (particle filters) (Monte Carlo localization) thường được sử dụng. Các bộ lọc Bayes linh hoạt hơn như unscented Kalman filters cũng có thể được sử dụng trong một vài trường hợp. Một số cảm biến thường được sử dụng là thiết bị đo lường quán tính như IMU, Attitude and Heading Reference System (AHRS), hệ thống dẫn đường quán tính (Inertial Navigation System, INS), cảm biến gia tốc kế, cảm biến con quay hồi chuyển (gyro sensors), cảm biến từ tính (magnetic sensors). Wheel encoder được gắn vào xe để đo hình học (odometry: sử dụng dữ liệu từ cảm biến chuyển động để ước tính sự thay đổi vị trí theo thời gian).
Khi bản địa hóa không thành công, biện pháp đối phó để khôi phục là ghi nhớ một mốc làm key-frame từ một địa điểm đã đến trước đó. Khi tìm kiếm một điểm mốc, quy trình trích xuất đối tượng địa lý được áp dụng để nó có thể quét ở tốc độ cao. Một vài phương pháp dựa trên đặc điểm hình ảnh bao gồm bag of features (BoF) và bag of visual words (BOVW). Gần đây, deep learning được sử dụng để so sánh khoảng cách giữa các tính năng.
3. Chi phí tối ưu hóa và tính toán cao để xử lý hình ảnh, xử lý đám mây điểm
Chi phí tính toán là một vấn đề khi triển khai SLAM trên phần cứng của xe. Tính toán thường được thực hiện trên các bộ vi xử lý nhúng nhỏ gọn và năng lượng thấp có khả năng xử lý hạn chế. Để đạt được bản địa hóa chính xác, điều cần thiết là phải thực hiện xử lý hình ảnh và đối sánh đám mây điểm ở tần suất cao. Ngoài ra, các tính toán tối ưu hóa như đóng vòng lặp là quá trình tính toán cao. Thách thức đặt ra là làm thế nào để thực hiện xử lý tính toán tốn kém như vậy trên các máy vi tính nhúng.
Một biện pháp đối phó là chạy song song các quy trình khác nhau. Các quá trình như trích xuất tính năng, là bước đầu tiên của quá trình đối sánh, tương đối thích hợp để song song hóa. Sử dụng CPU đa lõi để xử lý, tính toán nhiều dữ liệu theo lệnh đơn (SIMD) và GPU nhúng có thể cải thiện tốc độ hơn nữa trong một số trường hợp. Ngoài ra, giảm mức độ ưu tiên và thực hiện tối ưu hóa pose-graph đều đặn (việc thực hiện pose-graph trong một chu kỳ tương đối dài) cũng có thể cải thiện hiệu suất.