Algoritmos de cinemática inversa numérica

MT3005 - Robótica 1

¿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
>> mt3005_clase9_manipuladorRR.mlx
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
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
\(\mathcal{K}^{-1}\) como un problema de control
pose del efector final como vector*
pose del efector final como vector*
* orientación del efector final pero en forma vectorial
pose del efector final como vector*
* orientación del efector final pero en forma vectorial
error
error de posición
error de orientación
pose de E.F. deseada
dinámica del error
suposición: puede controlarse \(\dot{\mathbf{q}}\) \(\Rightarrow\) \(\dot{\mathbf{q}}\) es la entrada de control
suposición: puede controlarse \(\dot{\mathbf{q}}\) \(\Rightarrow\) \(\dot{\mathbf{q}}\) es la entrada de control
suposición: puede controlarse \(\dot{\mathbf{q}}\) \(\Rightarrow\) \(\dot{\mathbf{q}}\) es la entrada de control
linealización por feedback
suposición: puede controlarse \(\dot{\mathbf{q}}\) \(\equiv\) \(\dot{\mathbf{q}}\) es la entrada de control
entonces se obtiene el sistema LTI
suposición: puede controlarse \(\dot{\mathbf{q}}\) \(\equiv\) \(\dot{\mathbf{q}}\) es la entrada de control
linealización por feedback
entonces se obtiene el sistema LTI
el sistema es globalmente (exponencialmente) asintóticamente estable siempre y cuando \(\mathbf{K}\succ 0\) (positiva definida), usualmente una matriz diagonal
\(\approx \mathbf{J}^{-1}(\mathbf{q})\), numéricamente lo más cercano a la inversa de una matriz no cuadrada
pseudo-inversa de Moore Penrose
\(\approx \mathbf{J}^{-1}(\mathbf{q})\), numéricamente lo más cercano a la inversa de una matriz no cuadrada
pseudo-inversa de Moore Penrose
para jacobianos "gordos"
(más columnas que filas)
para jacobianos "flacos"
(más filas que columnas)
\(\approx \mathbf{J}^{-1}(\mathbf{q})\), numéricamente lo más cercano a la inversa de una matriz no cuadrada
pseudo-inversa de Moore Penrose
para jacobianos "gordos"
(más columnas que filas)
para jacobianos "flacos"
(más filas que columnas)
Ji = pinv(J)
servos
servos
típicamente reciben setpoints de posición
+ forward Euler o RK4
arquitectura general de los algoritmos de cinemática inversa
arquitectura general de los algoritmos de cinemática inversa
posición
orientación

Arquitectura del controlador

"sensor"
"planta"
término feedforward
control "proporcional"
Arquitectura del controlador
Otras "pseudo-inversas"
si \(\boldsymbol{\xi}_d=\mathrm{cte.}\) entonces \(\dot{\boldsymbol{\xi}}_d=\mathbf{0}\) y
Otras "pseudo-inversas"
si \(\boldsymbol{\xi}_d=\mathrm{cte.}\) entonces \(\dot{\boldsymbol{\xi}}_d=\mathbf{0}\) y
Damped Least-Squares o Levenberg-Marquadt
\(\lambda>0\) y pequeña, mejora el performance en singularidades
Otras "pseudo-inversas"
si \(\boldsymbol{\xi}_d=\mathrm{cte.}\) entonces \(\dot{\boldsymbol{\xi}}_d=\mathbf{0}\) y
Damped Least-Squares o Levenberg-Marquadt
\(\lambda>0\) y pequeña, mejora el performance en singularidades
Traspuesta
numéricamente eficiente, garantiza que el origen \(\mathbf{e}=\mathbf{0}\) es asintóticamente estable bajo la función de Lyapunov \(V(\mathbf{e})=\dfrac{1}{2}\mathbf{e}^\top\mathbf{K}_e \mathbf{e}\)
de nuevo el algoritmo puede separase
posición
orientación
de nuevo el algoritmo puede separase
posición
orientación
de nuevo el algoritmo puede separase
posición
orientación
de nuevo el algoritmo puede separase
posición
orientación
Una alternativa para obtener 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)
\(\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
puede obtenerse una intuición similar para la orientación o la pose completa
Regresando a los algoritmos
Ejemplo: cinemática inversa de posición

PUMA 560
nos interesa obtener una rutina numérica para la cinemática inversa de posición
se asume que se tiene acceso a:
mdl_p560;
p560.fkine(q);
p560.jacob0(q);
% Inicialización del algoritmo
eps = 1e-06; % tolerancia del error
N = 100; % número (máximo) de iteraciones
od = Td(1:3, 4); % posición deseada del EF
q_k = q0; % configuración inicial
T = p560.fkine(q_k').T;
o_k = T(1:3, 4); % posición incial del EF
ep = od - o_k; % error inicial
n = 0;
Q = q0; % array para almacenar la evolución de las iteraciones
% El algoritmo iterativo se repite hasta que el error llegue a la
% tolerancia deseada o se supere el número máximo de iteraciones
while( (norm(ep) > eps) && (n < N) )
T = p560.fkine(q_k').T;
o_k = T(1:3, 4); % posición actual del EF
ep = od - o_k; % error actual
J = p560.jacob0(q_k'); % jacobiano completo
Jv = J(1:3, :); % jacobiano de posición
% Opciones de algoritmos
Ji = pinv(Jv); % pseudo-inversa
%Ji = Jv' / (Jv*Jv' + (0.1^2)*eye(3)); % Levenberg-Marquadt
%Ji = Jv'; % traspuesta
q_k = q_k + Ji * ep; % algoritmo de cinemática inversa
n = n + 1;
Q = [Q, q_k]; % se almacena el histórico de la configuración
end
>> mt3005_clas9_pumaiknum.m
Cinemática inversa de orientación
regresando al error de orientación
Cinemática inversa de orientación
regresando al error de orientación
depende de la representación
???
Cinemática inversa de orientación
regresando al error de orientación
depende de la representación
\(\to \mathbf{R}\)? no, muy complicado de operar
\(\to (\phi,\theta,\psi)\)? no, presentan singularidades
\(\to (\hat{\boldsymbol{\omega}},\theta)\)? no, hay que regresar a \(\mathbf{R}\) para operar
???
¿Solución? cuaterniones unitarios
¿Solución? cuaterniones unitarios
recordemos que
por lo que si
¿Solución? cuaterniones unitarios
recordemos que
por lo que si
\(\Rightarrow \mathcal{Q}_1\) y \(\mathcal{Q}_2\) son iguales \(\equiv\) están alineados
¿Solución? cuaterniones unitarios
recordemos que
por lo que si
\(\Rightarrow \mathcal{Q}_1\) y \(\mathcal{Q}_2\) son iguales \(\equiv\) están alineados
por lo tanto \(\boldsymbol{\epsilon}\to\mathbf{0}\) conforme los cuaterniones se alinean
idea:
idea:
idea:
Un último detalle IMPORTANTE

Un último detalle IMPORTANTE

Un último detalle IMPORTANTE

Un último detalle IMPORTANTE

Un último detalle IMPORTANTE


Un último detalle IMPORTANTE


cinemática inversa
(en general)
Un último detalle IMPORTANTE


cinemática inversa
(en general)
NO necesariamente
Un último detalle IMPORTANTE


cinemática inversa
(en general)
NO necesariamente
Referencias
- Introduction to Inverse Kinematics with Jacobian Transpose, Pseudoinverse and Damped Least Squares methods.pdf
MT3005 - Lecture 9 (2025)
By Miguel Enrique Zea Arenales
MT3005 - Lecture 9 (2025)
- 112