Cinemática inversa de manipuladores seriales

BE3027 - Robótica Médica
¿Qué tenemos hasta ahora?


cinemática directa

cinemática diferencial

cinemática diferencial
¿A qué queremos llegar?

cinemática inversa
especificación de la tarea
(se tiene)
referencias para los servos
(se quiere)
A pesar que el planteamiento es claro, se tiene un problema considerable
A pesar que el planteamiento es claro, se tiene un problema considerable
(en general) función extremadamente no lineal de la configuración
A pesar que el planteamiento es claro, se tiene un problema considerable
encontrar este mapeo resulta muy difícil y en muchos casos NO existe solución analítica
Ejemplo: cinemática inversa analítica

espacio de configuración
espacio de tarea
Ejemplo: cinemática inversa analítica

R
R
manipulador RR
empleando trigonometría y métodos algebráicos
empleando trigonometría y métodos algebráicos
\(\arctan\) pero válida en \((-\pi, \pi]\) (programación)
las expresiones trigonométricas muestran múltiples soluciones al problema


si bien hay casos en donde podemos encontrar la solución analítica, hacerlo no es tan buena idea
\(\to\) expresiones complejas e individuales, incluso para manipuladores triviales
\(\to\) solución dada en lazo abierto (no corrige errores)
¿Qué hacemos entonces?
emplear algoritmos basados en control (lazo cerrado) para encontrar la cinemática inversa de forma numérica
>> be3027_clase7_robotRR_ik.mlx
pose del efector final como vector de estado
pose del efector final como vector de estado
orientación del efector final en forma vectorial
error de pose
error de orientación
error de posición
pose de EF deseada
dinámica del error
Ley de control: imponemos una dinámica deseada para el error
Ley de control: imponemos una dinámica deseada para el error
Ley de control: imponemos una dinámica deseada para el error
sistema LTI
???
pseudo-inversa de Moore Penrose
lo más cercano numéricamente
a la inversa de una matriz no cuadrada
Ji = pinv(J)integramos mediante forward Euler o RK4 y obtenemos un método iterativo para calcular la configuración en función de la pose
integramos mediante forward Euler o RK4 y obtenemos un método iterativo para calcular la configuración en función de la pose
Arquitectura general de los algoritmos de cinemática inversa
Aparentemente todo está bien, pero si nos fijamos en el error...
Aparentemente todo está bien, pero si nos fijamos en el error...
no es así de fácil
¿Cómo representamos al error de orientación entonces?
¿Cómo representamos al error de orientación entonces?
¿Cómo representamos al error de orientación entonces?
No, difícil de operar
No, conlleva singularidades
No, conlleva singularidades
No, hay que volver a R
¿Cómo representamos al error de orientación entonces?
No, difícil de operar
No, conlleva singularidades
No, conlleva singularidades
No, hay que volver a R
¿Solución?
Cuaterniones unitarios
¿Cómo representamos al error de orientación entonces?
Recordemos que:
Por lo que, si dos cuaterniones están alineados, su parte compleja valdrá 0
¿Cómo representamos al error de orientación entonces?
Recordemos que:
Por lo que, si dos cuaterniones están alineados, su parte compleja valdrá 0
¿Cómo funciona el ikine de la Robotics Toolbox?








ikine
(en general)
NO necesariamente


ikine
(en general)
NO necesariamente
Para que el problema tenga solución y se acople a los GDL del robot, la Robotics Toolbox emplea la noción de máscaras


ikine
(en general)
NO necesariamente
>> be3027_clase7_p560ik.m
Obteniendo intuición detrás de los algoritmos
idea fundamental (prestando atención sólo a la posición)
idea fundamental (prestando atención sólo a la posición)
idea fundamental (prestando atención sólo a la posición)
pseudo-inversa del jacobiano >> pinv(Jv)
\(\mathbf{T}_d\equiv\) meta
\({^B}\mathbf{T}_E(\mathbf{q})\)
efector final
el algoritmo debe llevar al efector final a la pose deseada o "meta"
\(\mathbf{T}_d\equiv\) meta
\({^B}\mathbf{T}_E(\mathbf{q})\)
efector final
Nota 1: el robot sólo puede cambiar su configuración
Nota 2: por el momento nos interesa sólo la posición
configuración actual: \(\mathbf{q}_1\)
¿Cuál es la discrepancia entre la posición deseada y la posición actual?
configuración actual: \(\mathbf{q}_1\)
¿Cuál es la discrepancia entre la posición deseada y la posición actual?
configuración actual: \(\mathbf{q}_1\)
¿Cuál es la discrepancia entre la posición deseada y la posición actual?
configuración actual: \(\mathbf{q}_1\)
configuración actual: \(\mathbf{q}_1\)
¿Hacia dónde, potencialmente, puede moverse el robot?
¿Hacia dónde, potencialmente, puede moverse el robot?
configuración actual: \(\mathbf{q}_1\)
entonces el robot hace un movimiento pequeño tomando todo en consideración
configuración actual: \(\mathbf{q}_2\)
entonces el robot hace un movimiento pequeño tomando todo en consideración
configuración actual: \(\mathbf{q}_2\)
entonces el robot hace un movimiento pequeño tomando todo en consideración
configuración actual: \(\mathbf{q}_2\)
y se repite el proceso hasta que el error/discrepancia sea lo suficientemente pequeño
pueden obtenerse algoritmos similares pero para la orientación o la pose completa
Todo algoritmo de cinemática inversa cumple con la estructura
donde \(\mathbf{q}_{k+1} \to \mathbf{q}_d\) conforme incrementa el número de iteraciones
BE3027 - Lecture 7 (2026)
By Miguel Enrique Zea Arenales
BE3027 - Lecture 7 (2026)
- 149