Làm thế nào có thể giải quyết vấn đề động học nghịch đảo?


20

Động học về phía trước của một cánh tay robot có thể được giải quyết dễ dàng. Chúng ta có thể đại diện cho mỗi khớp bằng cách sử dụng ma trận biến đổi Denavit Nhận Hartenberg .

Ví dụ: nếu khớp là bộ truyền động tuyến tính, nó có thể có ma trận biến đổi:ith

d iTtôi= =[10000100001dtôi0001] trong đó độ dài tiện ích được xác định bởidtôi

trong khi đó, một liên kết xoay có thể là:

α LTtôi= =[100L0cosαtôi-tộiαtôi00tộiαtôicosαtôi00001] nơi là góc và là chiều dài của liên kết.αL

Sau đó, chúng ta có thể tìm vị trí và hướng của bộ tạo kết thúc bằng cách nhân tất cả các ma trận biến đổi: .ΠTtôi

Câu hỏi là, làm thế nào để chúng ta giải quyết vấn đề nghịch đảo?

Về mặt toán học, cho một kết thúc mong muốn vị trí effector , tìm các thông số , mà . Những phương pháp tồn tại để giải phương trình này?d i α iT i = MMdtôiαtôiΠTtôi= =M

Câu trả lời:


11

Ngày trước, khi tôi đang học, làm điều này khi tôi đi cùng, tôi đã sử dụng gradient đơn giản để giải quyết vấn đề IK.

Trong mô hình của bạn, bạn thử xoay mỗi khớp một lượng nhỏ, xem mức độ khác nhau gây ra lỗi vị trí điểm cuối. Làm xong việc đó, sau đó bạn xoay mỗi khớp theo một tỷ lệ thuận với lợi ích mà nó mang lại. Sau đó, bạn làm điều đó nhiều lần cho đến khi bạn đủ gần.

Nói chung, điều này được gọi là theo dõi độ dốc, hoặc theo sau đồi. Hãy tưởng tượng một cánh tay robot với hai bậc tự do:

IK

Khớp xoay Một bit nhỏ di chuyển điểm cuối theo hướng a . Xoay khớp B một bit nhỏ di chuyển điểm cuối theo hướng b . Cả hai thứ này di chuyển chúng ta đến gần mục tiêu hơn với cùng một lượng, vì vậy chúng ta nên xoay cả hai khớp với tốc độ như nhau.

Nếu chúng ta vẽ đồ thị khoảng cách đến mục tiêu so với các góc khớp, nó sẽ trông như thế này:

IK

Tôi đã tô màu trong một số đường viền chỉ để giúp đỡ. Chúng ta có thể thấy con đường thuật toán này đi. Những gì bạn sẽ nhận thấy là trong không gian chung, đường dẫn đi không có vẻ tối ưu. Nó có một đường cong. Tuy nhiên, trong không gian thực, bạn sẽ thấy điểm cuối lấy một đường thẳng khá thẳng đến mục tiêu. Bạn cũng có thể thấy rằng thực sự có hai giải pháp cho vấn đề và thuật toán vừa tìm ra giải pháp gần nhất.

Đây không phải là cách duy nhất để giải quyết vấn đề động học nghịch đảo. Đó chắc chắn không phải là cách tốt nhất.

Ưu điểm:

  • Nó đơn giản về mặt khái niệm, thật tuyệt nếu bạn chỉ học cái này.
  • Thật dễ dàng để thực hiện, ngay cả khi tầm nhìn của ma trận biến đổi Denavit tội Hartenberg mang đến cho bạn sự sợ hãi.
  • Nó rất chung chung, cho phép bạn sử dụng tất cả các loại khớp: quay, tuyến tính, một cái gì đó khác, miễn là bạn có thể ước tính cách chúng khiến điểm cuối di chuyển.
  • Nó đối phó tốt, ngay cả khi không có hoặc vô số giải pháp.

Nhược điểm:

  • Nó chậm, mất nhiều lần lặp để tìm giải pháp. Tuy nhiên, thật tốt nếu bạn có thể có cánh tay thực sự theo dõi tiến trình của thuật toán như đã tính.
  • Nó có thể bị mắc kẹt trong cực tiểu địa phương. IE Nó có thể không tìm thấy giải pháp tốt nhất có thể, nếu nó tìm thấy một giải pháp đủ tốt.

Có nhiều thông tin chi tiết hơn về nó trên trang web rất cũ của tôi: Trang web đẹp mắt và có kết cấu đẹp mắt .


3

Có một số giải pháp cho vấn đề này xoay quanh Ma trận Jacobian. Trình chiếu này bao gồm các phương pháp Jacobian và cũng đề cập đến một phương pháp Xuất phát theo chu kỳ, mà tôi không quen thuộc.

Có rất nhiều tài nguyên về chủ đề này - nếu bạn hỏi google về "động học nghịch đảo Jacobian" .

Ngoài ra, hãy xem Chương 5.3 của các ghi chú bài giảng từ Khóa học mở của M IT về Giới thiệu Robotics .


1

Có hai cách tiếp cận rộng:

  • các giải pháp phân tích, đưa ra một tư thế đầu cuối, tính toán trực tiếp các tọa độ khớp. Nói chung, giải pháp không phải là duy nhất, vì vậy bạn có thể tính toán một tập hợp tọa độ khớp có thể. Một số có thể khiến robot tấn công mọi thứ trong môi trường của nó (hoặc chính nó) hoặc nhiệm vụ của bạn có thể giúp bạn chọn một giải pháp cụ thể, nghĩa là. bạn có thể thích khuỷu tay lên (hoặc xuống) hoặc robot có cánh tay ở bên trái (hoặc phải) của thân cây. Nhìn chung, có những hạn chế trong việc thu được giải pháp phân tích, đối với robot 6 trục, một cổ tay hình cầu (tất cả các trục giao nhau) được giả định. Các giải pháp phân tích cho nhiều loại robot khác nhau đã được tính toán trong nhiều thập kỷ và bạn có thể tìm thấy một bài báo đưa ra giải pháp cho robot của mình.
  • các giải pháp số, như được mô tả trong các câu trả lời khác, sử dụng phương pháp tối ưu hóa để điều chỉnh tọa độ khớp cho đến khi động học chuyển tiếp đưa ra giải pháp phù hợp. Một lần nữa, có một tài liệu khổng lồ về điều này, và rất nhiều phần mềm.

Sử dụng Hộp công cụ Robotics của tôi cho MATLAB, tôi tạo mô hình của robot 6 trục nổi tiếng sử dụng các tham số Denavit-Hartenberg

>> mdl_puma560
>> p560

p560 = 

Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE            
 - viscous friction; params of 8/95;                             
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|          0|          0|     1.5708|          0|
|  2|         q2|          0|     0.4318|          0|          0|
|  3|         q3|    0.15005|     0.0203|    -1.5708|          0|
|  4|         q4|     0.4318|          0|     1.5708|          0|
|  5|         q5|          0|          0|    -1.5708|          0|
|  6|         q6|          0|          0|          0|          0|
+---+-----------+-----------+-----------+-----------+-----------+

sau đó chọn tọa độ khớp ngẫu nhiên

>> q = rand(1,6)
q =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

sau đó tính toán động học về phía trước

>> T = p560.fkine(q)
T = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

Bây giờ chúng ta có thể tính toán các động học nghịch đảo bằng cách sử dụng một giải pháp phân tích được công bố cho một robot có 6 khớp và một cổ tay hình cầu

>> p560.ikine6s(T)
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

và voila, chúng ta có tọa độ khớp ban đầu.

Giải pháp số

>> p560.ikine(T)
Warning: ikine: rejected-step limit 100 exceeded (pose 1), final err 0.63042 
> In SerialLink/ikine (line 244) 
Warning: failed to converge: try a different initial value of joint coordinates 
> In SerialLink/ikine (line 273) 

ans =

     []

đã thất bại, và đây là một vấn đề phổ biến vì họ thường cần một giải pháp ban đầu tốt. Hãy thử

>> p560.ikine(T, 'q0', [1 1 0 0 0 0])
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

mà bây giờ đưa ra một câu trả lời nhưng nó khác với giải pháp phân tích. Mặc dù vậy cũng không sao, vì có nhiều giải pháp cho vấn đề IK. Chúng tôi có thể xác minh rằng giải pháp của chúng tôi là chính xác bằng cách tính toán động học chuyển tiếp

>> p560.fkine(ans)
ans = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

và kiểm tra xem nó có giống với phép biến đổi mà chúng ta đã bắt đầu không (đó là).

Các nguồn lực khác:


0

Khi bạn muốn tính toán động học nghịch đảo của robot với 6DOF, bạn nên sử dụng giải pháp của pieper, bạn nói rằng khi bạn có một robot có sáu bậc tự do và ba trục giao nhau, bạn có thể sử dụng nó. Có bằng chứng đơn giản bạn có thể dễ dàng chứng minh, nếu bạn cần giúp đỡ tôi có thể gợi ý cho bạn


Bạn có phiền khi cung cấp thêm chi tiết về bằng chứng?
50k4

Chào mừng đến với Robotics Parhamsagharichiha. Cảm ơn câu trả lời của bạn nhưng chúng tôi đang tìm kiếm câu trả lời toàn diện cung cấp một số giải thích và bối cảnh. Câu trả lời một dòng không thể làm điều này, vì vậy vui lòng chỉnh sửa câu trả lời của bạn để giải thích tại sao nó đúng, lý tưởng với trích dẫn. Câu trả lời không bao gồm giải thích có thể được gỡ bỏ.
Chuck
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.