Robot có kế hoạch đi từ bếp ra bàn số bảy. Giữa đường một nhân viên bước ngang. Kế hoạch tính trước không biết gì về người đó, và chuyện xảy ra tiếp theo phụ thuộc vào một tầng hoàn toàn khác.
Hai tầng, hai vai trò
Tầng lập kế hoạch toàn cục. Dùng bản đồ đã biết, tính toàn bộ tuyến từ đầu tới đích. Nhìn xa, tránh được ngõ cụt, tìm được đường vòng hợp lý. Chậm — tính mất từ vài chục mili giây tới vài giây.
Tầng phản ứng cục bộ. Chỉ nhìn dữ liệu cảm biến ngay lúc này trong bán kính vài mét, quyết định bước đi tiếp theo. Nhanh — chạy hàng chục lần mỗi giây. Không nhớ, không nhìn xa.
Vì sao cần cả hai. Chỉ có tầng toàn cục thì robot đâm vào mọi thứ không có trên bản đồ. Chỉ có tầng cục bộ thì robot mắc kẹt trong ngõ cụt và không bao giờ tới đích ở phòng bên.
Cách ghép chuẩn. Tầng toàn cục cho ra tuyến đường; tầng cục bộ bám theo tuyến đó nhưng lệch ra khi cần tránh; khi lệch quá xa hoặc tuyến bị chặn hẳn thì yêu cầu tính lại toàn cục.
Chỗ khó nằm ở giao diện giữa hai tầng. Khi nào thì lệch, khi nào thì tính lại, khi nào thì dừng hẳn — phần lớn lỗi điều hướng thực tế nằm ở chính những quyết định này chứ không ở thuật toán của từng tầng.
Các phương pháp phản ứng thường dùng
Trường lực nhân tạo. Đích hút, vật cản đẩy. Robot đi theo tổng hợp lực. Cực kỳ đơn giản, chạy rất nhanh. Nhược điểm nổi tiếng là cực tiểu địa phương — robot kẹt ở chỗ lực hút và lực đẩy triệt tiêu nhau, điển hình là trước một bức tường lõm.
Cửa sổ động. Xét tập các cặp tốc độ tiến và tốc độ xoay mà robot thực hiện được trong khoảnh khắc tới, mô phỏng quỹ đạo ngắn cho mỗi cặp, chấm điểm theo mức tiến về đích và khoảng cách tới vật cản, chọn cặp tốt nhất. Tôn trọng được giới hạn động lực học thật của robot. Đây là phương pháp phổ biến nhất trong robot dịch vụ.
Vận tốc tránh va. Tính tập vận tốc dẫn tới va chạm trong tương lai gần rồi chọn ngoài tập đó. Xử lý tốt trường hợp vật cản cũng đang di chuyển — hợp với chỗ đông người.
Điểm chung. Tất cả đều chỉ nhìn ngắn hạn, tất cả đều có thể kẹt, và tất cả đều cần tầng toàn cục cứu khi kẹt.
Cực tiểu địa phương và cách thoát
Vấn đề kinh điển, đáng hiểu kỹ vì nó xuất hiện dưới nhiều dạng.
Biểu hiện. Robot dừng lại, hoặc đi tới đi lui, hoặc quay tại chỗ, dù đường đi tồn tại. Người quan sát thấy rõ phải làm gì, robot thì không.
Nguyên nhân. Tầng phản ứng chỉ tối ưu cục bộ. Ở một số cấu hình vật cản, mọi hướng đi đều làm điểm số xấu đi, nên nó đứng yên.
Cách thoát — gọi tầng toàn cục. Cách chuẩn. Phát hiện không tiến triển trong vài giây thì tính lại tuyến với thông tin vật cản mới.
Cách thoát — hành vi khôi phục. Lùi lại một đoạn, quay tại chỗ để quét lại, xoá bộ nhớ vật cản tạm. Các hệ thống thực tế đều có một chuỗi hành vi như vậy theo thứ tự leo thang.
Cách thoát — nhờ người. Sau khi thử hết mà vẫn kẹt thì báo. Có ngưỡng rõ ràng để chuyển sang bước này quan trọng hơn là cố làm thuật toán thông minh hơn.
Sai lầm thường gặp. Không phát hiện được tình trạng kẹt. Robot loay hoay hai mươi phút mà hệ thống vẫn tưởng đang bình thường.
Vật cản di động và hành vi xã hội
Phần khó nhất trong môi trường có người.
Vật cản đứng yên dễ hơn nhiều. Người thì di chuyển, đổi hướng, và quan trọng nhất là họ cũng đang phản ứng lại robot.
Bài toán tương tác hai chiều. Robot nhường, người cũng nhường, cả hai cùng dừng. Hoặc cả hai cùng lách một bên. Ai từng gặp tình huống này với người khác trên hành lang đều hiểu, và với robot thì nó tệ hơn vì robot không đọc được ý định.
Dự đoán quỹ đạo người. Hướng nghiên cứu tích cực — mô hình dự đoán vài giây tới người sẽ ở đâu, rồi lập kế hoạch tránh vùng đó. Cải thiện rõ nhưng dự đoán sai thì hành vi trở nên khó hiểu.
Chuẩn mực xã hội. Giữ khoảng cách thoải mái, đi bên phải, không cắt ngang trước mặt người, giảm tốc khi tới gần. Những quy tắc này không phải an toàn mà là để người xung quanh thấy dễ chịu, và chúng ảnh hưởng lớn tới việc robot được chấp nhận hay bị ghét.
Kinh nghiệm thực tế. Robot đi chậm và dừng rõ ràng được chấp nhận tốt hơn robot đi nhanh và lách khéo. Người ta cần đoán được nó sắp làm gì, hơn là cần nó tối ưu.
Chỉnh hệ thống điều hướng trong thực tế
Phần công việc chiếm nhiều thời gian nhất khi triển khai.
Bán kính an toàn. Đặt lớn thì robot không qua được cửa hẹp; đặt nhỏ thì va quệt. Đây là tham số phải chỉnh theo từng mặt bằng và không có giá trị chung.
Tốc độ tối đa theo khu vực. Chậm ở chỗ đông, nhanh ở hành lang vắng. Đặt một giá trị cho toàn nhà là cách chắc chắn gây khó chịu ở đâu đó.
Ngưỡng tính lại tuyến. Tính lại quá thường xuyên thì robot do dự, đi giật cục. Quá hiếm thì nó cố bám tuyến đã chặn.
Thời gian chờ trước khi khôi phục. Chờ ngắn thì robot bỏ cuộc trong khi người sắp đi qua. Chờ dài thì nó đứng im quá lâu.
Cách chỉnh đúng. Ghi lại nhật ký điều hướng ngoài thực địa, tìm chỗ hay kẹt, chỉnh theo từng chỗ cụ thể. Chỉnh trong mô phỏng gần như không bao giờ chuyển được sang thực tế.
Và điều đáng nhớ nhất: phần lớn sự cố điều hướng ngoài thực tế không phải lỗi thuật toán mà là tham số chưa hợp với mặt bằng đó.
Câu hỏi thường gặp
Vì sao cần cả tầng toàn cục lẫn tầng phản ứng?
Chỉ có tầng toàn cục thì robot đâm vào thứ không có trên bản đồ; chỉ có tầng phản ứng thì robot mắc kẹt trong ngõ cụt và không tới được đích ở xa.
Cực tiểu địa phương biểu hiện thế nào?
Robot dừng lại, đi tới đi lui hoặc quay tại chỗ dù có đường đi. Nguyên nhân là tầng phản ứng chỉ tối ưu cục bộ nên mọi hướng đều làm điểm số xấu đi.
Vì sao vật cản là người lại khó hơn vật cản tĩnh?
Vì người cũng đang phản ứng lại robot, tạo ra tình huống cả hai cùng nhường hoặc cùng lách một bên. Robot không đọc được ý định nên không giải quyết được như hai người với nhau.
Phần lớn sự cố điều hướng thực tế do đâu?
Không phải lỗi thuật toán mà là tham số chưa hợp với mặt bằng — bán kính an toàn, tốc độ theo khu vực, ngưỡng tính lại tuyến và thời gian chờ trước khi khôi phục.
Đọc thêm trong Học tăng cường cho robot và Điều khiển & lý thuyết.