Đến nội dung chính
Thư viện GKNơi khơi nguồn tò mò
Tiếng Việt

Từ đầu ngón tay tính ngược về khớp: Động học nghịch (Inverse Kinematics)

Khi cầm chiếc cốc trên bàn, chúng ta không tính xem cần xoay vai bao nhiêu độ hay gập khuỷu tay bao nhiêu độ. Chỉ cần quyết định đưa tay tới chiếc cốc, các khớp sẽ tự điều chỉnh góc. Robot phải thực hiện việc này bằng tính toán, và phép tính tìm ngược các góc khớp từ vị trí mà đầu ngón tay cần tới chính là “động học nghịch (Inverse Kinematics)”.

Nói đơn giản, động học nghịch là “bài toán xác định cần xoay hoặc kéo dài mỗi khớp bao nhiêu để bàn tay hay công cụ gắn ở cuối cánh tay robot đạt được vị trí và hướng mong muốn”. Công việc của robot diễn ra ở đầu ngón tay, nhưng động cơ lại gắn tại các khớp, nên động học nghịch nối kết hai phía này có mặt trong hầu hết các quá trình vận động của cánh tay robot.

Trong tài liệu này, chúng ta sẽ lần lượt tìm hiểu sự khác biệt giữa động học thuận và động học nghịch, những đặc tính phức tạp như có nhiều nghiệm hoặc không có nghiệm, rồi đến các phương pháp giải và ứng dụng thực tế.

Động học thuận xác định vị trí và hướng của đầu ngón tay từ các góc khớp, còn động học nghịch tìm các góc khớp từ vị trí và hướng mục tiêu. Cánh tay phẳng có 2 khớp có thể có hai tư thế cho cùng một vị trí đầu ngón tay, và không có nghiệm đối với mục tiêu nằm ngoài tầm với của cánh tay.
Động học nghịch là bài toán tìm tư thế các khớp từ mục tiêu. Phần so sánh dưới đây sử dụng ví dụ cánh tay phẳng có 2 khớp, chỉ cần khớp vị trí đầu ngón tay; trong tính toán thực tế còn phải xét hướng mục tiêu, giới hạn khớp và va chạm. Nguồn: Lynch·Park, Modern Robotics, chương 6.

Phép tính chuyển mục tiêu của đầu ngón tay thành chuyển động của các khớp

Động học thuận và động học nghịch khác nhau ở đâu?

Trong phòng thí nghiệm sáng sủa, một cánh tay robot màu trắng có 6 trục vươn kẹp về phía chiếc cốc gốm trên bàn gỗ, bên cạnh có một cánh tay người

Cánh tay robot có cấu trúc dạng chuỗi, gồm các thanh cứng gọi là khâu (Link) nối với nhau bằng khớp (Joint). Bộ phận ở cuối chuỗi này, trực tiếp cầm đồ vật hoặc thực hiện hàn, được gọi là cơ cấu chấp hành cuối (End Effector).

(1) Động học thuận (Forward Kinematics)
Đây là phép tính xác định đầu ngón tay ở đâu khi đã biết tất cả các góc khớp. Chỉ cần lần lượt kết hợp chiều dài và góc của các khâu bằng hàm lượng giác nên ta thu được một nghiệm duy nhất, rõ ràng.

(2) Động học nghịch (Inverse Kinematics)
Ngược lại, đây là phép tính đặt trước vị trí và hướng mà đầu ngón tay cần đạt tới, rồi tìm ngược các góc khớp. Lệnh con người đưa cho robot thường lấy đầu ngón tay làm mốc, chẳng hạn “hãy di chuyển tới phía trên con vít này”, nên trong công việc thực tế, động học nghịch được sử dụng thường xuyên hơn nhiều.

Nếu ví với cánh tay người, động học thuận hỏi “khi gập vai 30 độ và khuỷu tay 90 độ thì bàn tay chạm tới đâu”, còn động học nghịch hỏi “cần gập vai và khuỷu tay bao nhiêu độ để đưa bàn tay tới quai cốc”. Với động học thuận, chỉ cần thực hiện theo trình tự tính toán, nhưng động học nghịch khó hơn nhiều vì phải giải các phương trình phi tuyến liên quan đồng thời đến nhiều khớp.


Bài toán phức tạp có nhiều nghiệm hoặc không có nghiệm

Trên bàn làm việc sáng sủa, hai cánh tay robot để bàn giống hệt nhau dùng kẹp chạm vào cùng một quả cầu kim loại, một cánh tay nâng khuỷu lên cao còn cánh tay kia gập khuỷu xuống thấp

Động học nghịch khó không chỉ vì khối lượng tính toán. Với cùng một mục tiêu, số nghiệm thay đổi tùy theo tình huống.

(1) Trường hợp có nhiều nghiệm
Ngay cả khi cầm cùng một chiếc cốc, ta vẫn có thể nâng khuỷu tay lên hoặc hạ xuống. Trong số các robot công nghiệp 6 trục, những robot có cấu trúc ba trục khớp cổ tay giao nhau tại một điểm có thể cho tới 8 nghiệm đối với một tư thế.

(2) Trường hợp có vô số nghiệm
Khi số bậc tự do nhiều hơn mức cần thiết, như ở cánh tay robot có 7 khớp, sẽ có vô số nghiệm, chẳng hạn giữ cố định đầu ngón tay và chỉ xoay khuỷu tay một vòng. Robot như vậy được gọi là robot dư bậc tự do (Redundant Robot).

(3) Trường hợp không có nghiệm
Với vị trí quá xa ngoài tầm với của cánh tay hoặc hướng mà khớp không thể gập tới, dù tính toán thế nào cũng không có nghiệm. Vùng không gian mà đầu ngón tay có thể chạm tới được gọi là không gian làm việc (Workspace).

  • Điểm kỳ dị (Singularity): Ở tư thế cánh tay duỗi thẳng hoặc hai trục khớp nằm trùng trên một đường thẳng, đầu ngón tay không thể di chuyển theo một số hướng nhất định; ở gần những tư thế này, dù đầu ngón tay chỉ chuyển động nhỏ, các khớp cũng phải xoay rất nhanh.

Hai hướng tiếp cận để giải bài toán động học nghịch

Trong phòng nghiên cứu đại học sáng sủa, một nhà nghiên cứu robot đang điều chỉnh cánh tay robot nhỏ; màn hình máy tính xách tay bên cạnh hiển thị mô hình khung dây 3 chiều của cánh tay robot với các khớp được biểu diễn bằng những quả cầu màu, cùng một quỹ đạo cong

Các phương pháp giải bài toán động học nghịch nhìn chung chia thành hai hướng: giải trực tiếp bằng công thức và tiến dần từng bước tới nghiệm.

(1) Phương pháp giải tích (Analytical Method)
Phương pháp này sử dụng cấu trúc hình học của robot để tính trực tiếp các góc khớp bằng công thức. Năm 1968, Donald L. Pieper thuộc Đại học Stanford, Hoa Kỳ, đã chỉ ra rằng với robot 6 trục có ba trục cổ tay giao nhau tại một điểm, có thể tách riêng vị trí cổ tay và hướng bàn tay để giải bằng công thức. Đó là lý do nhiều robot công nghiệp có cổ tay được thiết kế như vậy.

(2) Phương pháp số (Numerical Method)
Phương pháp này bắt đầu từ một tư thế phỏng đoán ban đầu rồi giảm dần sai lệch so với mục tiêu. Cách tiêu biểu là tính lặp bằng ma trận Jacobi (Jacobian Matrix), biểu thị mức dịch chuyển của đầu ngón tay khi các khớp chuyển động một lượng nhỏ, với ưu điểm là có thể áp dụng cho robot có bất kỳ cấu trúc nào. Tuy nhiên, tùy tư thế xuất phát mà quá trình có thể đi tới các nghiệm khác nhau, và phép tính dễ mất ổn định ở gần điểm kỳ dị, nên người ta kết hợp các biện pháp bổ trợ như phương pháp bình phương tối thiểu có giảm chấn (Damped Least Squares), chủ động giảm chuyển động đi một chút để ổn định quá trình.

  • Phương pháp heuristic (Heuristic Method): Lặp lại các quy tắc đơn giản để nhanh chóng tìm được nghiệm gần đúng, như phương pháp hạ tọa độ tuần hoàn (Cyclic Coordinate Descent), lần lượt xoay từng khớp để điều chỉnh, hoặc FABRIK (Forward And Backward Reaching Inverse Kinematics), được công bố năm 2011.

Động học nghịch trong thực tế

Trên con đường sỏi ngoài trời sáng sủa, một robot bốn chân nhấc một chân có khớp gối và cổ chân gập lại, chuẩn bị đặt bàn chân lên một hòn đá phẳng

Động học nghịch được sử dụng ở mọi nơi cần đưa đầu ngón tay hoặc đầu ngón chân tới đúng vị trí, từ nhà máy đến nhân vật trên màn hình.

  • Robot công nghiệp (Industrial Robot): Khi đường hàn hoặc quỹ đạo phun sơn được xác định bằng tọa độ đầu ngón tay, bộ điều khiển sẽ chuyển chúng thành các góc khớp tại từng thời điểm để điều khiển động cơ.
  • Robot có chân (Legged Robot): Robot xác định trước vị trí đặt chân tiếp theo, rồi tính góc khớp gối và cổ chân bằng động học nghịch để đi trên mặt đất gồ ghề.
  • Robot phẫu thuật (Surgical Robot): Robot chuyển động tác tay mà bác sĩ thực hiện trên thiết bị điều khiển thành vị trí mục tiêu của đầu dụng cụ mảnh đưa vào trong cơ thể, rồi tính theo thời gian thực các góc khớp cần thiết để đạt vị trí đó.
  • Hoạt hình máy tính (Computer Animation): Khi nhân vật trong trò chơi leo cầu thang, hệ thống căn đầu ngón chân theo mặt đất và tự động tính các khớp chân để bàn chân không xuyên qua sàn hoặc lơ lửng trên không.

Động học nghịch là phép tính xuất phát từ mục tiêu mà đầu ngón tay cần tới để tìm ngược các góc khớp. Bài toán có thể có nhiều nghiệm hoặc không có nghiệm, đồng thời còn có trở ngại mang tên điểm kỳ dị, nhưng nhờ các công thức tận dụng cấu trúc hình học và phép tính lặp, ngày nay cánh tay robot, robot có chân và cả nhân vật trên màn hình đều có thể chuyển động tự nhiên.

Xác định rõ mục tiêu mà đầu ngón tay cần chạm tới trước khi xét từng khớp chính là bước đầu tiên để robot chuyển động chính xác.