Cánh tay robot có sáu khớp. Biết góc của cả sáu thì tính được đầu tay ở đâu — chỉ là hình học. Nhưng biết muốn đầu tay ở đâu rồi tìm ra sáu góc thì là bài toán khác hẳn, và nó có nhiều bẫy.
Bài toán thuận — dễ và luôn có một đáp án
Phát biểu. Cho các góc khớp, tính vị trí và hướng của đầu tay trong không gian.
Cách giải. Nhân liên tiếp các phép biến đổi hình học từ gốc ra tới đầu. Mỗi khớp đóng góp một phép xoay và một phép tịnh tiến.
Tính chất quan trọng. Luôn có đúng một đáp án. Một bộ góc khớp cho ra đúng một tư thế đầu tay. Không có mơ hồ.
Tính nhanh. Chỉ là phép nhân ma trận, chạy được ở tần số rất cao trên phần cứng khiêm tốn.
Dùng ở đâu. Hiển thị trạng thái robot, kiểm tra va chạm, và làm nền cho các phương pháp giải bài toán ngược bằng lặp.
Chi tiết dễ sai. Quy ước hệ toạ độ. Mỗi nhà sản xuất định nghĩa gốc và chiều dương khác nhau. Phần lớn lỗi động học trong thực tế là lỗi quy ước chứ không phải lỗi toán.
Bài toán ngược — khó vì nhiều lý do
Phát biểu. Cho vị trí và hướng mong muốn của đầu tay, tìm bộ góc khớp đạt được điều đó.
Khó thứ nhất — có thể không có nghiệm. Điểm nằm ngoài tầm với thì không bộ góc nào đạt được. Hệ thống phải xử lý trường hợp này thay vì trả về kết quả vô nghĩa.
Khó thứ hai — thường có nhiều nghiệm. Cánh tay sáu khớp điển hình có tới tám cách khác nhau để đưa đầu tay tới cùng một chỗ. Khuỷu lên hay khuỷu xuống, vai xoay trước hay sau.
Chọn nghiệm nào là quyết định thật. Nghiệm gần tư thế hiện tại nhất thường tốt vì di chuyển ít. Nhưng có nghiệm va chạm với môi trường, có nghiệm gần giới hạn khớp. Phải lọc.
Khó thứ ba — với robot dư bậc tự do thì vô số nghiệm. Cánh tay bảy khớp có thể giữ nguyên đầu tay mà vẫn xoay khuỷu. Tập nghiệm là một đường liên tục chứ không phải các điểm rời rạc.
Dư bậc tự do vừa là gánh nặng vừa là cơ hội. Có thể dùng bậc tự do thừa để tránh vật cản, tránh giới hạn khớp, hoặc chọn tư thế cứng vững hơn — nhưng phải có tiêu chí phụ để chọn.
Điểm kỳ dị
Hiện tượng gây nhiều sự cố thực tế và ít được giải thích rõ.
Là gì. Những tư thế mà robot mất một hướng chuyển động. Ở đó, muốn đầu tay dịch theo hướng nào đó thì một hoặc nhiều khớp phải quay với tốc độ vô hạn.
Ví dụ dễ hình dung. Cánh tay duỗi thẳng hết cỡ. Muốn đầu tay ra xa thêm một milimet thì không khớp nào làm được. Đây là kỳ dị ở biên tầm với.
Ví dụ nguy hiểm hơn. Hai trục khớp trùng nhau ở cổ tay. Robot vẫn ở giữa vùng làm việc, không có dấu hiệu gì bất thường, nhưng một hướng xoay bị mất.
Triệu chứng thực tế. Robot đang đi mượt bỗng giật mạnh, một khớp quay rất nhanh, hoặc bộ điều khiển báo lỗi tốc độ. Nhiều người tưởng phần cứng hỏng.
Cách xử lý — tránh trước. Lập kế hoạch quỹ đạo tránh vùng gần kỳ dị. Có chỉ số đo mức độ gần kỳ dị dùng làm ràng buộc.
Cách xử lý — làm dịu. Cho phép sai lệch nhỏ so với quỹ đạo mong muốn để đổi lấy tốc độ khớp hữu hạn. Đầu tay đi hơi lệch nhưng không giật.
Lời khuyên thiết kế. Bố trí vị trí làm việc tránh xa vùng kỳ dị ngay từ khi lắp đặt. Rẻ hơn nhiều so với xử lý bằng phần mềm sau này.
Các cách giải bài toán ngược
Giải tích. Với một số cấu hình cánh tay nhất định, có công thức đóng cho ra tất cả nghiệm ngay lập tức. Nhanh, chính xác, cho biết đủ mọi nghiệm. Chỉ áp dụng được với cấu hình hình học đặc biệt — may mắn là nhiều cánh tay công nghiệp được thiết kế đúng theo cấu hình đó chính vì lý do này.
Lặp bằng ma trận Jacobi. Bắt đầu từ tư thế hiện tại, tính hướng cần điều chỉnh để giảm sai lệch, bước một bước nhỏ, lặp lại. Áp dụng được cho mọi cấu hình. Chậm hơn, chỉ cho một nghiệm, và có thể không hội tụ gần kỳ dị.
Tối ưu có ràng buộc. Đặt thành bài toán cực tiểu hoá sai lệch với các ràng buộc về giới hạn khớp và tránh va chạm. Linh hoạt nhất, xử lý được dư bậc tự do một cách tự nhiên, tốn tính toán nhất.
Học từ dữ liệu. Huấn luyện mạng ánh xạ từ tư thế mong muốn sang góc khớp. Chạy rất nhanh khi triển khai nhưng không chính xác tuyệt đối và khó đảm bảo ràng buộc.
Chọn thế nào. Có công thức giải tích thì dùng. Không có thì dùng tối ưu nếu đủ tài nguyên, dùng lặp nếu cần nhẹ. Học máy chỉ hợp khi cần rất nhanh và chấp nhận sai số nhỏ.
Sai lệch giữa mô hình và robot thật
Chỗ lý thuyết đẹp gặp thực tế.
Kích thước không đúng bản vẽ. Chiều dài các thanh có dung sai chế tạo. Sai một milimet ở khớp gốc thành sai vài milimet ở đầu tay.
Độ rơ khớp. Hộp số có khe hở. Đổi chiều quay thì có một khoảng chết. Động học không mô hình hoá điều này.
Độ võng dưới tải. Thanh và khớp biến dạng đàn hồi khi mang vật nặng. Đầu tay xuống thấp hơn tính toán.
Giãn nở nhiệt. Robot chạy vài giờ thì nóng lên và kích thước thay đổi. Với ứng dụng cần độ chính xác cao thì phải khởi động máy trước khi làm việc.
Hiệu chỉnh động học. Đo vị trí thật ở nhiều tư thế bằng thiết bị chính xác, rồi ước lượng lại các tham số hình học thật của chính con robot đó. Cải thiện độ chính xác đáng kể.
Điều đáng nhớ. Độ lặp lại và độ chính xác là hai chuyện khác nhau. Robot có thể quay lại đúng một điểm với sai số rất nhỏ nhưng điểm đó lệch so với toạ độ được yêu cầu. Nhiều ứng dụng chỉ cần độ lặp lại — và đó là lý do dạy điểm bằng tay vẫn phổ biến trong công nghiệp dù nghe có vẻ thô sơ.
Câu hỏi thường gặp
Vì sao bài toán động học ngược khó hơn bài toán thuận?
Bài toán thuận luôn có đúng một đáp án. Bài toán ngược có thể không có nghiệm, thường có nhiều nghiệm, và với robot dư bậc tự do thì có vô số nghiệm phải chọn theo tiêu chí phụ.
Điểm kỳ dị là gì và biểu hiện thế nào?
Là tư thế robot mất một hướng chuyển động, khiến khớp phải quay rất nhanh. Biểu hiện là robot đang đi mượt bỗng giật mạnh hoặc báo lỗi tốc độ — nhiều người tưởng phần cứng hỏng.
Nên chọn cách giải bài toán ngược nào?
Có công thức giải tích thì dùng vì nhanh và cho đủ mọi nghiệm. Không có thì dùng tối ưu có ràng buộc nếu đủ tài nguyên, hoặc phương pháp lặp nếu cần nhẹ.
Độ lặp lại khác độ chính xác thế nào?
Độ lặp lại là quay về đúng một điểm với sai số nhỏ; độ chính xác là tới đúng toạ độ được yêu cầu. Nhiều ứng dụng chỉ cần độ lặp lại, nên dạy điểm bằng tay vẫn phổ biến.
Đọc thêm trong SLAM & định vị và Lập kế hoạch chuyển động.