Tính toán ma trận Jacobian cho Động học nghịch đảo


19

Khi tính toán ma trận Jacobian để giải quyết một phép phân tích nghịch đảo, tôi đã đọc từ nhiều nơi mà tôi có thể sử dụng công thức này để tạo từng cột của khớp trong ma trận Jacobian:

Ji=eϕi=[[ai×(eposri)]T[ai]T]

Sao cho là trục quay trong không gian thế giới, là điểm mấu chốt trong không gian thế giới và là vị trí của hiệu ứng kết thúc trong không gian thế giới.arepos

Tuy nhiên, tôi không hiểu làm thế nào điều này có thể hoạt động khi các khớp có nhiều DOF. Lấy ví dụ sau đây làm ví dụ:

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

Các là DOF quay, các là effector kết thúc, các là mục tiêu của các effector kết thúc, các , và là các khớp.θegP1P2P3

Đầu tiên, nếu tôi tính toán ma trận Jacobian dựa trên công thức trên cho sơ đồ, tôi sẽ nhận được một cái gì đó như thế này:

J=[((0,0,1)×e)x((0,0,1)×(eP1))x((0,0,1)×(eP2))x((0,0,1)×e)y((0,0,1)×(eP1))y((0,0,1)×(eP2))y((0,0,1)×e)z((0,0,1)×(eP1))z((0,0,1)×(eP2))z000000111]

Điều này được giả định rằng tất cả các trục quay là và tất cả chúng chỉ có một DOF quay. Vì vậy, tôi tin rằng mỗi cột dành cho một DOF, trong trường hợp này là .(0,0,1)θ#

Bây giờ, đây là vấn đề: Điều gì xảy ra nếu tất cả các khớp có đủ 6 DOF? Bây giờ, đối với mọi khớp, tôi có DOF quay trong tất cả các trục, , và , và cả trong tất cả các trục, , và .θxθyθztxtytz

Để làm cho câu hỏi của tôi rõ ràng hơn, giả sử nếu tôi "mạnh mẽ" áp dụng công thức trên cho tất cả các DOF của tất cả các khớp, thì tôi có thể sẽ nhận được một ma trận Jacobian như thế này:

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

(bấm vào để xem kích thước đầy đủ)

Nhưng điều này là vô cùng kỳ lạ bởi vì tất cả 6 cột của DOF cho mọi khớp đều lặp lại cùng một điều.

Làm cách nào tôi có thể sử dụng cùng một công thức để xây dựng ma trận Jacobian với tất cả các DOF? Ma trận Jacobian trông như thế nào trong trường hợp này?


Trên thực tế, tôi không chắc là tôi nên đăng câu hỏi này ở đây, trong Toán học, trong GamesDev hay trong Vật lý. Tôi có cảm giác rằng tôi đã đăng câu hỏi này không đúng chỗ.
xenon

Tôi nghĩ rằng sai lầm của bạn là bạn đã không thay đổi 'cho mỗi DOF, đó là lý do tại sao chúng trông giống nhau.

Câu trả lời:


11

Tôi phải thừa nhận rằng tôi đã không thấy công thức cụ thể đó rất thường xuyên, nhưng tôi đoán là trong trường hợp có nhiều DOF, bạn sẽ đánh giá nó cho mọi khớp trong mỗi cột và sau đó (có lẽ?) Nhân các kết quả đó trong từng cột.

Nhưng hãy để tôi đề nghị một apporach đơn giản hơn cho Jacobian trong bối cảnh nhiều DOF tùy ý: Về cơ bản, Jacobian cho bạn biết, mỗi khớp di chuyển bao xa, nếu bạn di chuyển khung hiệu ứng cuối theo hướng tùy ý. Đặt là động học chuyển tiếp, trong đó là các khớp, là phần vị trí của động học chuyển tiếp và phần quay. Sau đó, bạn có thể có được Jacobian bằng cách phân biệt động học về phía trước đối với các biến chung: θ = [ θ 1 , . . . , Θ n ] e pos f thối J = ff(θ)θ=[θ1,...,θn]fposfrotΔxΔθ=J-1Δx

J=fθ=[fposθ1,fposθ2...,fposθnfrotθ1,frotθ2...,frotθn]
là Jacobian của trình thao tác của bạn. Đảo ngược nó sẽ cung cấp cho bạn các động học nghịch đảo với vận tốc đối với vận tốc . Mặc dù vậy, nó vẫn có thể hữu ích, nếu bạn muốn biết mỗi khớp phải di chuyển bao xa nếu bạn muốn di chuyển hiệu ứng cuối của mình bằng một lượng nhỏ theo bất kỳ hướng nào (vì ở cấp độ vị trí, đây thực sự sẽ là một tuyến tính hóa) : Δx
Δθ=J1Δx

Hy vọng rằng điều này sẽ giúp.


Cảm ơn vì đã trả lời! Nhưng điều này có nghĩa là tôi sẽ phải tính toán các giá trị bằng số? Trên thực tế, tôi đã thấy ví dụ phân tích này từ Graphics.cs.cmu.edu/nsp/cference/15-464/Fall09/handouts/IK.pdf từ Slide 19 và Graphics.ucsd.edu/cifts/cse169_w05/CSE169_13.ppt trên Slide 78. Từ các slide, dường như tôi có thể không phải trải qua các phương pháp số. Trong trường hợp khi tôi không có chức năng thực tế để phân biệt, tôi có thể sử dụng công thức này. Nhưng vấn đề là điều gì xảy ra khi tôi có nhiều DOF hơn cho mỗi khớp.
xenon

Nếu tôi hiểu chính xác các slide, bạn sẽ xử lý trường hợp nhiều DOF (xoay) tùy ý bằng cách xác định các vectơ cho mỗi khớp đó, trong đó là vị trí khớp. Vì vậy, nếu bạn có 46 khớp, bạn thực sự sẽ có được một Jacobian với 46 cột và 6 hàng (hoặc 3, nếu bạn bỏ qua định hướng của bộ lọc cuối). Câu chuyện dài: bạn có thể áp dụng công thức đó cho bất kỳ số lượng khớp nào và không phải "kết hợp" nó với các khớp khác. P i(eiPi)Pi
Daniel Eberts

Nhưng điều gì xảy ra nếu một khớp có nhiều DOF như , , và các như , , ? Bây giờ, mỗi khớp có 6 DOF. Theo hiểu biết của tôi về cách thức ma trận Jacobian hoạt động cho IK, 6 cột đầu tiên sẽ là dẫn xuất của bộ kết thúc đối với 6 DOF khác nhau và 6 cột đầu tiên này là để mô tả khớp đầu tiên. 6 cột tiếp theo sẽ mô tả khớp thứ hai liên quan đến 6 DOF, v.v. Sử dụng phương trình , điều đó có nghĩa là 6 cột của mỗi khớp được tự động đóng gói thành một cột? θ y θ z t x t y t z ( e i - P i )θxθyθztxtytz(eiPi)
xenon

3
Ah tôi thấy. Không, trong trường hợp đó, công thức sẽ không hoạt động vì nó được thiết kế cho các khớp xoay với một trục quay. Nếu bạn muốn điều trị ví dụ như khớp hình cầu, bạn sẽ cần một công thức khác xử lý loại khớp cụ thể đó hoặc bạn cần một dạng khép kín của chuyển động về phía trước của robot. Nếu bạn có điều đó, bạn có thể phân biệt nó với các khớp và lấy Jacobian. θ
Daniel Eberts

Cảm ơn! :) Tuy nhiên, chỉ tò mò, là Slide 58 trong Graphics.ucsd.edu/cifts/cse169_w05/CSE169_13.ppt gợi ý rằng có thể sử dụng công thức cho khớp xoay với 3 DOF không? Điều đó có nghĩa là nếu một khớp không có DOF tịnh tiến và hoàn toàn có 3 DOF quay, thì vẫn có thể? Mặc dù tôi không chắc tại sao phải mất để nhân với các phép quay khác nhau để có được các DOF khác nhau. (1,0,0,0)
xenon

2

Công thức của bạn cho khớp 6 dof giả định rằng tất cả 6 khớp có trục trong khung thế giới và tất cả các khớp đều quay vòng. Vì 6 khớp giống nhau, nên các cột của chúng trong Jacobian cũng giống hệt nhau.(0,0,1)

Bắt đầu lại, giả sử một doanh có một trục đi qua một điểm . Đặt là vị trí của hiệu ứng cuối. Các tọa độ của , và đều được đưa ra trong khung thế giới và đang được cập nhật khi robot đang được di chuyển. Trục có độ dài .arearea1

Nếu khớp là vòng quay, cột của Jacobian cho khớp là

Jθ(a,r)=[a×(er)a]

Nếu khớp là hình lăng trụ, cột là

Jp(a)=[a0]

Giả sử chúng ta có khớp 6 dof không chỉ hình cầu mà còn có thể dịch trong không gian. Giả sử các trục của khớp là , và và rằng mỗi khớp quay và lăng trụ chia sẻ một trục, để Jacobian cho khớp trở thànhaxayaz

J=[Jp(ax)Jp(ay)Jp(az)Jθ(ax,r)Jθ(ay,r)Jθ(az,r)]

Các trục , và phụ thuộc vào động học về phía trước của robot. Để minh họa, hãy để sự biến đổi của khớp thứ trong khung thế giới được đưa ra bởiaxayazk

Fk=i=1kLiTi

trong đó các biến đổi là hằng số và các biến đổi phụ thuộc vào các biến chung. Đặt và là các phép biến đổi xoay và dịch bởi về trục tọa độ có tên ( , hoặc ).LiTiRc(q)Pc(q)qcxyz

Đặt là một sự dịch chuyển, được tính toán bởi sự trợ giúp của Jacobian, cho khớp thứ . Đặt và cập nhật biến đổi cục bộ khớp bởi:Δq=(Δpx,Δpy,Δpz,Δθx,Δθy,Δθz)iΔT=Px(Δpx)Py(Δpy)Pz(Δpz)Rx(Δθx)Ry(Δθy)Rz(Δθz)

TiTiΔT

Trong công thức này của động học chuyển tiếp, các trục , và của khớp chính xác là các cột của ma trận quay của . Ngoài ra, vị trí là vectơ dịch của .a y a z i F i r F iaxayaziFirFi


0

Theo như tôi hiểu câu hỏi của bạn rằng bạn muốn ma trận Jacobian cho khớp 6 DOF.

Hãy để tôi bắt đầu với những điều cơ bản của robot. Bạn đang trong giai đoạn ban đầu khác nhau của việc học robot. Bạn cần hiểu rằng mỗi khớp đại diện cho một DOF duy nhất hoặc nó sẽ là khớp xoay hoặc hình lăng trụ.

Theo như liên quan đến hình cầu, nó có thể được chuyển đổi thành 3 khớp xoay với ba trục vuông góc lẫn nhau. Vì vậy, bây giờ bạn đã đơn giản hóa khớp hình cầu của bạn.

Tiến tới ma trận Jacobian. Nó chứa 6 hàng. 3 hàng đầu tiên biểu thị định hướng và 3 hàng cuối cùng được chỉ định vị trí có tham chiếu đến một hệ tọa độ cụ thể. Mỗi cột trong ma trận chỉ ra một khớp duy nhất. Vì vậy, số lượng khớp / DOF bạn có cùng số cột bạn có trong ma trận Jacobian.

Đây là quan điểm rõ ràng hơn cho câu hỏi của bạn: Một khớp duy nhất không bao giờ thực hiện nhiều hơn một DOF, bởi vì nó làm phức tạp khớp và kiểm soát chính xác sẽ không bao giờ đạt được. Ngay cả khi chúng tôi coi giả thuyết là khớp có nhiều hơn một DOF, bạn cần chuyển đổi khớp đó thành nhiều khớp với mỗi 1 DOF để đơn giản hóa toán học và giải pháp.

Lý tưởng nhất là 6 robot DOF với 6 khớp quay vòng hoạt động cho phần lớn các vấn đề thực sự. Nhưng theo câu hỏi của bạn, bạn đã xem xét 6 robot chung với mỗi khớp có 3 DOF tạo ra 18 robot DOF. Điều này sẽ cung cấp DOF dự phòng (tức là 18-6 = 12 DOF dự phòng). Vì vậy, để tiếp cận robot cuối cùng đến bất kỳ vị trí nào với bất kỳ định hướng nào, bạn sẽ có các giải pháp khác nhau vô hạn (giải pháp có nghĩa là xoay từng khớp). Vì vậy, giải quyết loại vấn đề động học nghịch đảo này, bạn sẽ yêu cầu phương pháp lặp của động học nghịch đảo.

Hy vọng, tôi đã trả lời câu hỏi của bạn rõ ràng hơn. Để học robot cơ bản, bạn có thể tham khảo John J. Craig - Giới thiệu về Cơ học và điều khiển Robotics -Pearson Education, Inc.

Trân trọng, Manan Kalasariya

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.