Qua cây Particle, chúng ta có thể tiết kiệm thời gian bằng cách chỉ nhớ bản đồ của một particle con từ bản đồ cha của nó. Để thực hiện điều này, ta có thể lưu trữ danh sách các thay đổi của mỗi particle mà các ô lưới khác với bản đồ particle cha. Lưu trữ các thông tin của bản đồ theo cách này có một chút vấn đề khi chúng ta muốn sử dụng bản đồ. Giả sử như robot muốn kiểm tra khu vực ngay phía trước nó để xem có trở ngại hay không. Nếu chúng ta muốn kiểm tra một particle thì có nhiều việc liên quan tới nó như là tất cả các cây tổ tiên phải được cập nhật và danh sách thay đổi cho mỗi particle phải được tìm kiếm cho mỗi điểm. DP-SLAM giải quyết vấn đề này bằng cách phát triển một bản đồ phân bố particle. Bản đồ này là một lưới với một cây cân bằng được lưu trữ trong mỗi nút. Thông tin ô lưới từ tất cả các particle được lưu trữ trong cây. Bản đồ này có thể được hình dung như trong hình 2.10.
Hình 2.10 Bản đồ phân bố particle
Một particle chứa một quan sát của một ô vuông, nó xác định một id duy nhất vào trong cây cùng với dự đoán cho ô lứoi hay không ô lưới. Nếu robot muốn kiểm tra một điểm cụ thể, robot chỉ cần tìm kiếm qua các cây của particle đã cập nhật cho các ô. Đồng thời, ta có thể giữ cho các cây tổ tiên xung quanh cho biết khi nào ta có thể cắt tỉa hoặc giữ lại các nhánh của bản đồ phân phối particle. Một con không có nút anh em sẽ được sát nhập vào nút cha trong cây tổ tiên, trước tiên ta có thể xem xét danh sách các particle, con có thể thay đổi từ bản đồ cha và tạo ra sự thay đổi thích hợp trong lưới phân phối particle.
2.3.3. DP-SLAM trong thực tế
Trên thực tế, độ phức tạp của DP-SLAM đủ nhanh để thực hiện trong thời gian thực. Eliazar và Parr thực hiện DP-SLAM trên một robot nhỏ bằng cách sử dụng độ phân giải 3cm cho ô ô lưới và được gắn vào một corridor 60m sử dụng 9000 particle. Thời gian thu thập dữ liệu cho sự lặp lại của thuật toán DP-SLAM gần bằng lượng thời gian mà một máy tính 2.4GHz thực hiện các tính toán lặp. Hình 2.11 là bản đồ gồm các particle có trọng số cao nhất trong tổng số các particle.
Hình 2.11 Bản đồ DP-SLAM với 9000 particle (Nguồn Eliazar và Parr)
Trong hình vẽ trên, DP-SLAM có khả năng lập bản đồ ở một vùng lớn với độ chính xác cao. Không giống như FastSLam, DP-SLAM hoạt động mà không cần giả định hàng chục nghìn feature có sẵn và dễ theo dõi. Robot tạo ra vòng lặp hoàn chỉnh qua hành lang (corridor) và lập lại bản đồ ở cùng khu vực sau khi đi khoảng 60 m mà không cần liên hệ với những khu vực này. Mặc dù vậy, chúng ta thấy đường khác nhau khi gặp tường. Đây là thể hiện thực tế của DP-SLAM, nói chung là thực hiện công việc tốt với vòng lặp đóng mà KF xử lý kém. Rõ ràng, DP-SLAM là một phương pháp tốt cho bài toán SLAM trong một số môi trường, đặc biệt là khi lập bản đồ trong môi trường hai chiều là chấp nhận được và số lượng các feature có sẵn là không đủ cho các phương pháp khác.
CHƯƠNG 3: THỰC NGHIỆM 3.1. Mô hình thực nghiệm
Hình 3.1. Các thành phần của hệ thống
Cấu trúc của hệ thống gồm 3 thành phần được cài đặt trên 3 nền tảng phần cứng khác nhau:
- RobotLego NXT: Đóng vai trò điều khiển chuyển động cơ bản: Tiến, lùi, quay. Robot còn được trang bị thêm sensor Ultrasonic để đo khoảng cách đến vật cản. PC Hệ điều hành: Windows Nhiệm vụ: - Client giám sát - Remote
Giao tiếp: Wifi
SMART PHONE Hệ điều hành: Android Nhiệm vụ: - Đo góc (Cảm biến từ trường) - Thực thi các thuật toán SLAM - Điều khiển LEGONXT - Http server
Giao tiếp: Bluetooth, Wifi ROBOT LEGO NXT Hệ điều hành: LEJOS Nhiệm vụ: -Chuyển động -Đo khoảng cách (Cảm biến Utrasonic)
- Smart phone: Được gắn trên robot để điều khiển các hoạt động của robot, thực hiện thuật toán SLAM. Cảm biến từ trường tích hợp trong smartphone được sử dụng như la bàn để đo góc xoay của robot. Ngoài ra smartphone còn đóng vai trò server để gửi nhận trạng thái robot cho các máy trạm.
- Client PC: Chương trình phía client nhận dữ liệu bản đồ từ robot và hiển thị lên giao diện người dùng, ngoài ra người sử dụng máy client còn có thể điều khiển được robot bằng các lệnh đơn giản.
Ngôn ngữ sử dụng: Java, C#. Chương trình chạy trên Lego và Smartphone được viết bằng ngôn ngữ Java. Phần mềm giám sát chạy trên nền tảng Windows được viết bằng C#.NET để tận dụng ưu thế về xử lý giao diện, vẽ đồ họa.
3.2. Robot Lego NXT 3.2.1. Giới thiệu
Lego Mindstorms NXT là một bộ robot lập trình được phát hành bởi Lego vào cuối tháng 7 năm 2006. Trong đó NXT đóng vai trò bộ não của robot Mindstorms là một máy tính thông minh kiểm soát các mảnh ghép Lego cho phép một robot Mindstorms trở nên sống động và thực hiện các hoạt động khác nhau.
Các thành phần chính của robot Lego được mô tả trong hình 3.2 bao gồm: Khối NXT (1), Cảm biến chạm (2), Cảm biến âm thanh (3), Cảm biến màu (4), Cảm biến siêu âm (5), Động cơ (6). Ngoài ra, bộ lego còn có rất nhiều mảnh ghép khác nhau để lắp ráp các thành phần của robot.
3.2.2. Lắp ráp robot
Chức năng chính của khối Lego là điều khiển chuyển động và đo khoảng cách. Vì vậy, trong phần thực nghiệm Robot được lắp ráp như hình 5.3.
Trong đó:
- Bộ chuyển động: 2 động cơ trái phải có gắn bánh xe được kết nối vào cổng A,B của khối NXT. Nhờ nguyên lý chuyển động vector robot có thể thực hiện những chuyển động tiến, lùi, quay trái, phải.
- Cảm biến: Sử dụng cảm biến siêu âm (Ultrasonic Sensor). Dùng để quan sát môi trường xung quanh bằng việc đo khoảng cách từ robot đến chướng ngại vật. Cảm biến này kết nối vào cổng số 1 của khối NXT
Hình 3.3 Sơ đồ lắp ráp Robot Lego
Khối NXT
Động cơ+ Bánh xe trái Động cơ + Bánh xe phải
- Khối NXT: Dùng để thực thi chương trình SLAM, trao đổi dữ liệu với smartphone.
Hình 3.4 Robot sau khi được lắp ráp