
5 minute read
3.6 Tìm đường cho robot
from Nghiên cứu, thiết kế, chế tạo mobile robot tự hành tích hợp một số công nghệ xử lý ảnh và thuật toán
Hình 3.18 Kết quả giảm nhiễu nhờ việc tinh chỉnh các giá trị HSV dùng để phân ngưỡng.
3.6 Tìm đường cho robot Có thể phân loại cách giải quyết bài toán tìm đường cho robot theo hai trường hợp như sau:
Advertisement
Trường hợp 1: Robot chưa biết trước thông tin của bản đồ. Trong trường hợp này thì bản đồ là đã có, nhưng do không sử dụng cảm biến có thể bao quát được bản đồ như camera, nên thông tin về bản đồ đối với robot coi như là chưa có. Trong trường hợp này thì dựa theo dạng bản đồ mà robot sẽ được lập trình để đi tới đích một cách thủ công hoặc phải được lập trình theo hướng tiến hành chạy dò line. Sau khi đã dò line xong, robot thông qua thuật toán sẽ thu được một đường thích hợp để đi đến đích. Một số thuật toán dò đường phổ biến như sau [30]:
- Thuật toán bám theo tường: Thuật toán này được áp dụng với điều kiện là mê cung liền mạch, không bị đứt đoạn. Với mê cung đã thỏa mãn điều kiện trên, robot chỉ cần liên tục bám theo tường trái hoặc tường phải thì có thể đi đến đích.
Hình 3.19 Thuật toán tìm đường theo quy tắc bám phải [30].
- Thuật toán Pledge: Phương pháp thực hiện của thuật toán này là sự kết hợp giữa việc bám tường nhưng có xét đến việc đếm góc quay. Nhờ đó, robot có thể đi đến đích (thoát khỏi mê cung) trong các bản đồ phức tạp hơn, như việc robot được đặt ở vị trí xuất phát bên trong nhưng tách hẳn ra khỏi phần còn lại của bản đồ.

Hình 3.20 Thuật toán Pledge giúp thoát khỏi các vật cản phức tạp [30]. Ngoài ra, còn nhiều thuật toán khác có thể được áp dụng để dò đường đi như thuật toán ngẫu nhiên, thuật toán Tremaux, thuật toán lấp kín đường cụt. Tuy nhiên, các phương pháp này tồn nhìn chung tồn tại nhược điểm như sau: - Robot phải tiến hành chạy dò đường. Càng có nhiều cặp vị trí xuất phát và vị trí đích thì việc chạy dò đường càng phải tiến hành nhiều lần. - Với mỗi dạng bản đồ thì người lập trình phải lập trình cho robot theo thuật toán phù hợp nếu không robot có thể không tìm được đường đi. Ngoài ra, kết quả của việc dò đường có thể không cho ra kết quả là đường ngắn hoặc phù hợp nhất. - Nếu lập trình thủ công đường đi cho robot thì khối lượng công việc sẽ tăng lên khi bản đồ phức tạp lên do số lượng vị trí xuất phát, vị trí đích và các ngã rẽ tăng lên. Đồng thời, khi có sự thay đổi về bản đồ thì có thể toàn bộ quá trình này phải thực hiện lại từ đầu.
Trường hợp 2: Robot đã biết trước thông tin về bản đồ. Để robot có thể biết trước thông tin về bản đồ thì robot cần phải được trang bị các loại cảm biến có khả năng bao quát môi trường xung quanh như cảm biến Lidar hoặc camera. Trong đó, việc sử dụng một camera gắn ngoài có khả năng bao quát môi trường hoạt động và kết nối không dây với robot là một giải phát rất hiệu quả trong việc thu thập thông tin về bản đồ. Sau khi đã có được thông tin về bản đồ thì các thuật toán tìm đường tự động có thể được áp dụng để tìm đường.
Thuật toán tìm đường tự động là các thuật toán giúp tìm đường một cách tự động dựa trên các dữ liệu đã biết. Việc tìm đường tự động này dựa trên việc phân chia bản đồ thành các nút, sau đó áp dụng thuật toán lên các nút này để tìm ra đường đi. Do đó, để áp dụng được thuật toán tìm đường tự động thì dữ liệu về bản đồ phải là đã biết, để từ đó có thể thu thập được thông tin về các nút, ví dụ như nút nào thuộc đường có thể đi, nút nào không thuộc về đường có thể đi. Có nhiều thuật toán tìm đường tự động đã được phát triển như Grass Fire, Greedy Best First Search, Dijkstra hay A* [21]:
- Thuật toán Grass Fire: Trong thuật toán Grass Fire, các nút lân cận với nút đang xét sẽ đều được chọn làm nút đang xét kế tiếp, nếu nút lân cận thuộc về vật cản thì bỏ qua không xét. Thuật toán lặp lại cho đến khi nút đích là một trong các nút đang xét. Ưu điểm của thuật toán này là đơn giản, có thể tìm được đường đi ngắn nhất nhưng tốc độ chậm vì số lượng nút phải xét lớn và tăng nhanh khi số lượng nút tăng. - Thuật toán Dijkstra: Ý tưởng của thuật toán là tìm kiếm có lựa chọn. Tức là tại các nút lân cận của nút đang xét thuật toán sẽ ưu tiên chọn ra một nút làm nút đang xét tiếp theo dựa theo giá trị chi phí (cost) từ nút lân cận đó với nút đang xét hiện tại. Nút nào có chi phí này nhỏ nhất sẽ được lựa chọn. Thuật toán Dijkstra phức tạp hơn so với Grass Fire nhưng có tốc độ tìm đường nhanh hơn vì số lượng nút phải xét ít hơn. - Thuật toán Greedy Best First Search: Thuật toán này cũng là một thuật toán tìm kiếm có lựa chọn. Nhưng thay vì ưu tiện lựa chọn giá trị chi phí giữa nút lân cận và nút đang xét thì thuật toán ưu tiên lựa chọn giá trị chi phí ước lượng giữa nút lân cận của nút đang xét so với nút đích (heuristic). Ưu điểm của thuật toán này là tốc độ nhanh hơn so với
Dijkstra nhưng nhược điểm là đường tìm ra được có thể không phải là ngắn nhất. - Thuật toán A*: Thuật toán A* có thể coi như một sự kết hợp giữa thuật