Bài toán số ít tại bộ giải động học nghịch đảo


9

Tôi đang vật lộn với vấn đề này trong nhiều ngày. Tôi thực sự hy vọng rằng ai đó có thể cho tôi một gợi ý vấn đề là gì.

Robot bao gồm 5 trục. Trục đầu tiên xoay quanh trục z và 4 trục khác xoay quanh trục y. Và người giải quyết cơ bản hoạt động.

Đây là những gì tôi đã làm cho đến nay:

  1. Tôi tính toán hệ số khả năng thao tác với ma trận Jacobian của tôi (chỉ phần dịch, vì chỉ có vị trí được theo dõi ở đây. Thực ra, tôi cũng đã thử với ma trận Jacobian kết hợp, vì vậy không chỉ phần dịch mà còn cả phần quay. dù sao):

  2. Sau đó, hệ số giảm xóc là:

    nhập mô tả hình ảnh ở đây

  3. Hệ số giảm xóc sau đó được tích hợp vào phép tính nghịch đảo giả:

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy, đây chỉ là một bộ giải động học ngược giả cổ điển với phương pháp bình phương nhỏ nhất được làm ẩm. Yếu tố khả năng thao tác theo chuyển động (vấn đề) thứ hai là: nhập mô tả hình ảnh ở đây Khả năng thao tác giảm xuống ở đầu video. Nhưng tại sao? Theo tôi biết, yếu tố khả năng thao tác này cho thấy sự phụ thuộc tuyến tính của các trục. Đối với tôi các trục dường như không phụ thuộc tuyến tính trong phần đầu.

Chuyển động giật này làm tôi phát điên. Như bạn có thể thấy trong hình ảnh động đầu tiên, bộ giải dường như hoạt động đúng. Tôi đang thiếu gì ở đây?


1
Chào mừng đến với Robotics , Joe! Đây là một câu hỏi tuyệt vời, nhưng tiếc là tôi không nghĩ có đủ chi tiết để trả lời câu hỏi. Khi một hệ thống đi đến một điểm kỳ dị, tôi sẽ mong đợi một số trục chuyển động sẽ tạo ra một cú swing hoang dã, giống như một trục xoay 180 độ vì một trục khác đang cố gắng đi 89 đến 91 độ (nếu 90 độ là điểm kỳ dị). Tôi không thực sự thấy hành vi đó ở đây. Tôi tự hỏi liệu đây có phải là vấn đề triển khai không, chẳng hạn như sử dụng một cái gì đó như atanthay vì atan2, v.v. Bạn có thể chỉnh sửa câu hỏi của mình để đăng mã bạn đang sử dụng không?
Chuck

1
@ Chuck, tôi đã chỉnh sửa câu hỏi để có thể nhìn thấy "cú swing hoang dã". (nhìn vào hoạt hình 2. được cập nhật)
Joe

Câu trả lời:


1

Như những người khác đã chỉ ra, phải có vấn đề với việc bạn thực hiện thuật toán IK vì sẽ không có bất kỳ hành vi đơn lẻ nào trong các mô tả bạn đưa ra.

Bây giờ bạn có hai lựa chọn thay thế: hoặc là bạn bắt đầu gỡ lỗi mã hoặc bạn có thể muốn khai thác thực tế rằng vấn đề có thể dễ dàng bị phá vỡ trong hai bài toán con mà bạn có thể dễ dàng sử dụng phần lớn mã được viết cho đến nay.

(xd,yd,zd)θ1d=arctan(ydxd)

θ1d

θ1˙=K1(θ1dθ1).

RSO(3)θ1dz

R=(cosθ1dsinθ1d0sinθ1dcosθ1d0001).

R(xd,0,zd)1=RT(xd,yd,zd)Txz

(xd,zd)1


Tôi nghĩ rằng không cần phải phá vỡ vấn đề trong các bài toán con. Vì khai báo của vectơ đơn vị đã chỉ ra những gì bạn vừa mô tả.
Joe

Việc chia nhỏ chỉ là một đề xuất để cho phép bạn sử dụng lại 4 DOF Jacobian, đây là một phần của mã của bạn hoạt động trơn tru, như bạn đã báo cáo ở đầu bài viết của mình.
Ugo Pattacini

0

Tôi nghĩ rằng bạn đã giới thiệu một điểm kỳ dị thuật toán ở trục cổ tay đầu tiên. Tôi nhận ra rằng, khi nó xuống tới 90 độ, thì thay vì đến 91, nó cố gắng lật ngược lại từ 0 đến -269 độ.

Tất nhiên đây là đầu cơ mà không thấy mã.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.