Calcular la matriz jacobiana para cinemática inversa


19

Al calcular la matriz jacobiana para resolver una cinemática inversa analíticamente, leí en muchos lugares que podría usar esta fórmula para crear cada una de las columnas de una articulación en la matriz jacobiana:

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

De modo que a es el eje de rotación en el espacio mundial, r es el punto de pivote en el espacio mundial, y epos es la posición del efector final en el espacio mundial.

Sin embargo, no entiendo cómo puede funcionar esto cuando las articulaciones tienen más de un DOF. Tome lo siguiente como ejemplo:

ingrese la descripción de la imagen aquí

El θ es el DOF rotacional, el e es el efector final, el g es el objetivo del efector final, el P1 , P2 y P3 son las articulaciones.

Primero, si tuviera que calcular la matriz jacobiana basada en la fórmula anterior para el diagrama, obtendría algo como esto:

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]

Se supone que todos los ejes de rotación son (0,0,1) y todos ellos solo tienen un DOF rotacional. Entonces, creo que cada columna es para un DOF, en este caso, el θ# .

Ahora, aquí está el problema: ¿Qué pasa si todas las articulaciones tienen 6 DOF completos? Digamos ahora, para cada articulación, tengo DOF rotacionales en todos los ejes, θx , θy y θz , y también DOF traslacionales en todos los ejes, tx , ty y tz .

Para aclarar mi pregunta, supongamos que si aplicara "con fuerza" la fórmula anterior a todos los DOF ​​de todas las articulaciones, entonces probablemente obtendré una matriz jacobiana como esta:

ingrese la descripción de la imagen aquí

(haga clic para tamaño completo)

Pero esto es increíblemente extraño porque las 6 columnas del DOF para cada articulación repiten lo mismo.

¿Cómo puedo usar la misma fórmula para construir la matriz jacobiana con todos los DOF? ¿Cómo sería la matriz jacobiana en este caso?


En realidad, no estoy seguro de si debería haber publicado esta pregunta aquí, en matemáticas, en GamesDev o en física. Tengo la sensación de que he publicado esta pregunta en el lugar equivocado.
xenón

Creo que su error es que no cambió la a 'para cada DOF, por eso se ven todos iguales.

Respuestas:


11

Tengo que admitir que no he visto esa fórmula específica muy a menudo, pero supongo que en el caso de más de un DOF, la evaluaría para cada articulación en cada columna y luego (¿tal vez?) Multiplicaría esos resultados en cada columna

Pero permítanme sugerir un enfoque más simple a los jacobianos en el contexto de muchos DOF ​​arbitrarios: Básicamente, el jacobiano le dice qué tan lejos se mueve cada articulación, si mueve el marco efector final en una dirección elegida arbitrariamente. Deje que sea la cinemática directa, donde θ = [ theta 1 , . . . , θ n ] son las articulaciones, f pos es la parte posicional de la cinemática delantera y f rot la parte rotacional. Entonces puedes obtener el jacobiano diferenciando la cinemática delantera J = f(θ)θ=[θ1,...,θn]fposfrot con respecto a las variables conjuntas: es el jacobiano de tu manipulador. Invertirlo le daría la cinemática inversa con respecto a lasvelocidades. Sin embargo, aún puede ser útil si desea saber qué tan lejos debe moverse cada articulación si desea mover su efector final en unapequeñacantidadΔxen cualquier dirección (porque en el nivel de posición, esto sería efectivamente una linealización): Δθ=J-1Δx

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

Espero que esto ayude.


¡Gracias por responder! ¿Pero esto significaría que tendré que calcular los valores numéricamente? En realidad, vi este ejemplo analítico de graphics.cs.cmu.edu/nsp/course/15-464/Fall09/handouts/IK.pdf de la diapositiva 19 y graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt en la diapositiva 78. De las diapositivas, parece que no tendré que pasar por los métodos numéricos. En situaciones en las que no tengo las funciones reales para diferenciar, puedo usar esta fórmula. Pero el problema es lo que sucede cuando tengo más DOF ​​para cada articulación.
xenón

Si entiendo las diapositivas correctamente, manejaría el caso de muchos DOF ​​arbitrarios (rotacionales) determinando los vectores para cada una de esas juntas, donde P i es la posición de la junta. Entonces, si tiene, digamos 46 articulaciones, de hecho obtendría un jacobiano con 46 columnas y 6 filas (o 3, si descuida la orientación del efector final). En pocas palabras: puede aplicar esa fórmula para cualquier cantidad de articulaciones y no tiene que "combinarla" con otras articulaciones. (eiPi)Pi
Daniel Eberts el

Pero, ¿qué sucede si una articulación tiene muchos DOF ​​como , θ y , θ z y DOF traslacionales como t x , t y , t z ? Ahora, cada articulación tiene 6 DOF. Desde mi entendimiento de cómo funciona la matriz jacobiana para IK, las primeras 6 columnas serán las derivadas del efector final con respecto a los 6 DOF diferentes, y estas primeras 6 columnas son para describir la primera articulación. Las siguientes 6 columnas siguientes describirán la segunda articulación con respecto a los 6 DOF, etc. Usando la ecuación ( e i - P i )θxθyθztxtytz(eiPi), ¿significa que las 6 columnas de cada junta se empaquetan automáticamente en una columna?
xenón

3
Ah, ya veo. No, en ese caso, la fórmula no funcionaría porque fue diseñada para juntas rotativas con un eje de rotación. Si desea tratar, por ejemplo, las articulaciones esféricas, necesitaría una fórmula diferente que trate ese tipo específico de articulación o necesita una forma cerrada de la cinemática delantera del robot. Si tiene eso, puede diferenciarlo entre las articulaciones y obtener el jacobiano. θ
Daniel Eberts el

¡Gracias! :) Sin embargo, es curioso, ¿es la Diapositiva 58 en graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt insinuando que es posible usar la fórmula para juntas rotativas con 3 DOF? ¿Qué significa que si una articulación no tiene DOF traslacionales y tiene solo 3 DOF rotacionales, todavía es posible? Aunque no estoy seguro de por qué se tarda en multiplicarse con varias rotaciones para obtener los diferentes DOF. (1,0,0,0)
xenón

2

(0,0,1) en el marco mundial y que todas las juntas son giratorias. Como las 6 articulaciones son así idénticas, sus columnas en el jacobiano también son idénticas.

arearea1 .

Si la articulación es revoluta, la columna del jacobiano para la articulación es

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

Si la articulación es prismática, la columna es

Jp(a)=[a0]

axayaz

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.