Obliczanie macierzy jakobianowej dla kinematyki odwrotnej


19

Podczas obliczania analitycznej macierzy jakobianowej do rozwiązywania odwrotnej kinematyki analitycznej czytałem z wielu miejsc, że mogę użyć tej formuły do ​​utworzenia każdej kolumny złącza w macierzy jakobskiej:

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

Tak, że a jest osią obrotu w przestrzeni świata, r jest punktem obrotu w przestrzeni świata, a epos jest pozycją efektora końcowego w przestrzeni świata.

Nie rozumiem jednak, jak to może działać, gdy stawy mają więcej niż jeden DOF. Weź jako przykład:

enter image description here

W θ są ostrości obrotowa, tym e jest efektor koniec, g jest celem efektora końcowego, P1 , P2 i P3 widzenia są przeguby.

Po pierwsze, jeśli miałbym obliczyć jakobianową macierz na podstawie powyższej formuły dla diagramu, otrzymam coś takiego:

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]

Zakłada się, że wszystkie osie obrotu są (0,0,1) i wszystkie mają tylko jeden obrotowy DOF. Tak więc uważam, że każda kolumna dotyczy jednego DOF, w tym przypadku θ# .

Oto problem: co zrobić, jeśli wszystkie stawy mają pełne 6 DOF? Teraz powiedzieć, dla każdego połączenia, muszę DOFs obrotowych we wszystkich osiach θx , θy i θz , a także translacji DOFs we wszystkich osiach tx , ty i tz .

Aby wyjaśnić moje pytanie, załóżmy, że gdybym „zdecydowanie” zastosował powyższą formułę do wszystkich DOF wszystkich stawów, prawdopodobnie otrzymam macierz Jakobian:

enter image description here

(kliknij, aby zobaczyć pełny rozmiar)

Jest to jednak niesamowicie dziwne, ponieważ wszystkie 6 kolumn DOF dla każdego połączenia powtarzają to samo.

Jak mogę użyć tej samej formuły do ​​zbudowania jakobińskiej matrycy ze wszystkimi DOF? Jak wyglądałaby macierz jakobowska w tym przypadku?


Właściwie nie jestem pewien, czy powinienem zamieścić to pytanie tutaj, w matematyce, w GamesDev lub w fizyce. Mam wrażenie, że zadałem to pytanie w niewłaściwym miejscu.
ksenon

Myślę, że twoim błędem jest to, że nie zmieniłeś „a” dla każdego DOF, dlatego wyglądają tak samo.

Odpowiedzi:


11

Muszę przyznać, że często nie widziałem tej konkretnej formuły, ale domyślam się, że w przypadku więcej niż jednego DOF, oceniłbyś ją dla każdego połączenia w każdej kolumnie, a następnie (być może?) Pomnożyłeś te wyniki w każda kolumna.

Ale pozwólcie, że zasugeruję prostsze podejście do jakobianów w kontekście dowolnych wielu DOF: Zasadniczo, jakobian mówi wam, jak daleko porusza się każde połączenie, jeśli przesuniesz końcową ramkę efektora w jakimkolwiek arbitralnie wybranym kierunku. Niech są skierowane do przodu kinematyka, gdzie θ = [ θ 1 , . . . , Θ n ] są stawów, f poz jest usytuowanie części przednich kinematyki i f bakteriozy części obrotowej. Następnie można uzyskać jakobian, różnicując kinematykę przednią w odniesieniu do zmiennych wspólnych: f(θ)θ=[θ1,...,θn]fposfrot jest jakobianem twojego manipulatora. Odwrócenie da ci kinematykę odwrotną w stosunku doprędkości. To może jeszcze być użyteczny jednak, jeśli chcesz wiedzieć, jak daleko każdy przegub musi przejść, jeśli chcesz przenieść swój końcowy efektor jakimśmałejilościΔXw dowolnym kierunku (bo na poziomie pozycji, byłoby to faktycznie być linearyzacji): Δθ=J-1Δx

J=fθ=[fposθ1,fposθ2...,fposθnfrotθ1,frotθ2...,frotθn]
Δx
Δθ=J1Δx

Mam nadzieję, że to pomaga.


Dzięki za odpowiedź! Ale to oznaczałoby, że będę musiał obliczyć wartości liczbowo? Właściwie widziałem ten analityczny przykład z graphics.cs.cmu.edu/nsp/course/15-464/Fall09/handouts/IK.pdf ze Slajdu 19 i graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt na Slajdzie 78. Na podstawie slajdów wydaje się, że być może nie będę musiał przechodzić przez metody numeryczne. W sytuacjach, gdy nie mam faktycznych funkcji do rozróżnienia, mogę użyć tej formuły. Ale problem polega na tym, że mam więcej DOF dla każdego stawu.
ksenon

Jeśli dobrze rozumiem slajdy, poradziłbyś sobie z przypadkiem wielu (rotacyjnych) DOF, określając wektory dla każdego z tych połączeń, gdzie P i jest pozycją złącza. Tak więc, jeśli masz, powiedzmy 46 stawów, rzeczywiście dostaniesz jakobian z 46 kolumnami i 6 rzędami (lub 3, jeśli zaniedbujesz orientację efektora końcowego). Krótko mówiąc: możesz zastosować tę formułę do dowolnej liczby stawów i nie musisz „łączyć” jej z innymi stawami. (eiPi)Pi
Daniel Eberts

Ale co się stanie, jeśli złącze ma wiele DOF, takich jak , θ y , θ z , i translacyjnych DOF, takich jak t x , t y , t z ? Teraz każde złącze ma 6 DOF. Z mojego zrozumienia, jak działa matryca jakobowska dla IK, pierwsze 6 kolumn będzie pochodnymi efektora końcowego w odniesieniu do 6 różnych DOF, a te pierwsze 6 kolumn mają opisywać pierwsze połączenie. Kolejne 6 kolejnych kolumn opisuje drugie połączenie w odniesieniu do 6 DOF i tak dalej. Korzystanie z równania ( e i - P i )θxθyθztxtytz(eiPi), does it mean each joint's 6 columns are automatically packed into one column?
xenon

3
Ah, I see. No, in that case, the formula wouldn't work because it was designed for rotational joints with one axis of rotation. If you want to treat e.g. spherical joints, you would either need a different formula which treats that specific joint type or you need a closed form of the robot's forward kinematics. If you have that, you can differentiate it w.r.t. the joints θ and obtain the Jacobian.
Daniel Eberts

Thanks! :) Just curious though, is Slide 58 in graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt hinting that it is possible to use the formula for rotational joints with 3 DOFs? Which means if a joint has no translational DOFs and have purely 3 rotational DOFs, it is still possible? Though I am not sure why it is taking (1,0,0,0) to multiply with various rotations to get the different DOFs.
xenon

2

Your formula for a 6 dof joint assumes that all 6 joints have the axis (0,0,1) in the world frame and that all joints are revolute. Since the 6 joints are thus identical, their columns in the Jacobian are also identical.

Starting over, suppose a joint has an axis a going through a point r. Let e be the position of the end-effector. The coordinates of a, r, and e are all given in the world frame and are being updated as the robot is being moved. The axis a has length 1.

If the joint is revolute, the column of the Jacobian for the joint is

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

If the joint is prismatic, the column is

Jp(a)=[a0]

Suppose we have a 6 dof joint which is not only spherical but can translate in space too. Suppose the axes of the joint are ax, ay, and az and that each revolute and prismatic joint shares an axis, so that the Jacobian for the joint becomes

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

The axes ax, ay, and az depend on the forward kinematics of the robot. To illustrate, let the transformation of the kth joint in the world frame be given by

Fk=i=1kLiTi

where the transformations Li are constants, and the transformations Ti depend on the joint variables. Let Rc(q) and Pc(q) be the transformations that rotate and translate by q about the coordinate axis named c (either x, y, or z).

Let Δq=(Δpx,Δpy,Δpz,Δθx,Δθy,Δθz) be a displacement, computed by help of the Jacobian, for the ith joint. Let ΔT=Px(Δpx)Py(Δpy)Pz(Δpz)Rx(Δθx)Ry(Δθy)Rz(Δθz) and update the local transformation of the joint by:

TiTiΔT

In this formulation of the forward kinematics, the axes ax, ay, and az of joint i are exactly the columns of the rotation matrix of Fi. Also the position r is the translation vector of Fi.


0

As far as I understand your question that you want the Jacobian matrix for the 6 DOF joint.

Let me start with very basics of robotics. You are in the vary initial phase of robotics learning. You need to understand that each joint represent a single DOF either it would be revolute or prismatic joint.

As far as spherical joint is concern, it can be converted in to 3 revolute joint with three mutually perpendicular axis. So, now you have simplified your spherical joint.

Moving forward to Jacobian matrix. It contain 6 rows. First 3 rows represents orientation and last 3 rows indicated position with reference to a particular coordinate system. Each column in matrix indicate a single joint. So the number of joint/DOF you have the same number column you have in Jacobian matrix.

Here is the more clear view to your question: A single joint never fulfil more than one DOF, because it complicates the joint and precise control will never achieve. Even if we consider hypothetically a joint with more than one DOF, you need to convert that joint into multiple joints with 1 DOF each to simplify the mathematics and solution.

Ideally 6 DOF robot with 6 revolute joint works for majority on the real problems. But as per your question you considered 6 joint robot with each joint having 3 DOF that makes 18 DOF robot. This will give redundant DOF (i.e. 18-6= 12 redundant DOF). So, to reach robot end-effector to any location with any orientation you will have infinite different solutions (solution means rotation of each joint). So solve this kind of inverse kinematics problem you will require iterative method of inverse kinematics.

Hope, I have answered your question more clearly. To learn basic robotics you can refer John J. Craig - Introduction to Robotics Mechanics and Control -Pearson Education, Inc.

Regards, Manan Kalasariya

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.