Robotics
Thuật toán Dynamic Movement Primitives (DMP)

Thuật toán Dynamic Movement Primitives (DMP)

Trong robot học, một vấn đề quan trọng là làm thế nào để robot học được một chuyển động từ ví dụ và sau đó tái hiện lại chuyển động đó trong các tình huống mới. Chẳng hạn, robot có thể học cách đưa tay tới một vật, gắp một chi tiết, lau một bề mặt, hoặc vẽ một đường cong. Những chuyển động này không chỉ cần đi từ điểm đầu tới điểm cuối, mà còn cần giữ được hình dạng quỹ đạo, độ mượt, tốc độ và khả năng thích nghi với mục tiêu mới.

Dynamic Movement Primitives, thường viết tắt là DMP, là một phương pháp dùng để biểu diễn và sinh chuyển động bằng hệ động lực học. DMP có thể học hình dạng chuyển động từ một quỹ đạo mẫu, sau đó tái tạo lại chuyển động đó với điểm bắt đầu, điểm kết thúc hoặc tốc độ khác.

Có thể hiểu DMP như một cách mã hóa chuyển động thành hai phần chính. Phần thứ nhất là một hệ ổn định kéo robot về mục tiêu. Phần thứ hai là một thành phần phi tuyến giúp quỹ đạo có hình dạng giống chuyển động mẫu.

Ví dụ xuyên suốt

Trong toàn bộ bài viết này, để dễ hình dung các mô tả lý thuyết, ta dùng một ví dụ thống nhất: một robot cầm bút vẽ một nét cong trên mặt bàn.

Ban đầu, người dùng cầm tay robot và kéo bút vẽ một nét cong từ điểm A đến điểm B. Robot ghi lại quỹ đạo mẫu đó. Sau đó, ta muốn robot có thể tự vẽ lại nét cong tương tự, nhưng có thể bắt đầu ở vị trí khác, kết thúc ở vị trí khác, hoặc vẽ nhanh/chậm hơn.

Trong ví dụ này:

  • y0y_0y0​ là điểm bắt đầu của nét vẽ.
  • ggg là điểm kết thúc của nét vẽ.
  • y(t)y(t)y(t) là vị trí đầu bút tại thời điểm ttt.
  • DMP là bộ sinh quỹ đạo giúp robot vẽ lại nét cong.

Trực giác cơ bản của DMP

Nếu chỉ muốn robot đi từ điểm đầu đến điểm cuối, ta có thể dùng một hệ lò xo - giảm chấn. Hệ này giống như việc đầu bút bị một lò xo kéo về điểm đích. Khi đầu bút ở xa đích, lực kéo lớn. Khi đầu bút gần đích, lực kéo nhỏ dần. Thành phần giảm chấn giúp chuyển động không bị dao động quá mức.

Một dạng đơn giản của hệ này là:

τv˙=αz(βz(gy)v),\tau \dot{v} = \alpha_z \left( \beta_z (g - y) - v \right), τy˙=v.\tau \dot{y} = v.

Trong đó:

  • yy là vị trí hiện tại.
  • vv là biến vận tốc.
  • gg là mục tiêu.
  • τ\tau điều chỉnh thời gian thực hiện chuyển động.
  • αz\alpha_z, βz\beta_z điều chỉnh độ hội tụ.

Hệ này có ưu điểm là ổn định: robot sẽ đi về mục tiêu. Tuy nhiên, nếu chỉ dùng hệ này, đầu bút thường đi theo một đường khá đơn giản, gần giống đường thẳng hoặc đường cong rất cơ bản. Nó không đủ để tái hiện một nét cong đặc biệt mà người dùng đã dạy.

DMP thêm vào một thành phần phi tuyến (f(x)):

τv˙=αz(βz(gy)v)+f(x),\tau \dot{v} = \alpha_z \left( \beta_z (g - y) - v \right) + f(x), τy˙=v.\tau \dot{y} = v.

Thành phần f(x)f(x) đóng vai trò như một lực tạo hình quỹ đạo. Nó làm cho đầu bút không chỉ bị kéo thẳng về điểm BB, mà còn đi theo nét cong giống với quỹ đạo mẫu.

Ví dụ dễ hiểu

Giả sử robot cần vẽ một nét cong hình vòng cung từ trái sang phải. Nếu chỉ có lực kéo về đích, đầu bút có thể đi gần như thẳng từ (A) đến (B). Nhưng trong quỹ đạo mẫu, người dùng đã vẽ đầu bút đi lên một chút rồi mới cong xuống về (B). Khi đó, DMP học thêm một lực (f(x)) để ở đoạn đầu đẩy đầu bút đi lên, ở đoạn giữa giữ độ cong, và ở đoạn cuối để đầu bút quay lại đúng điểm (B).

Vì vậy, có thể hiểu đơn giản:

  • Hệ lò xo - giảm chấn bảo đảm robot về đúng đích.
  • Forcing function f(x)f(x) bảo đảm đường đi có hình dạng giống mẫu.

Bình luận & Cảm xúc