Generación de trayectorias y control cinemático

BE3027 - Robótica Médica

¿Qué tenemos hasta ahora?

(usando una analogía de sistemas de control)

\mathbf{q}
\mathcal{K}\left(\mathbf{q}\right) \subseteq {^B}\mathbf{T}_E(\mathbf{q})

cinemática directa

\dot{\mathbf{q}}
{^B}\mathcal{V}_E=\mathbf{J}(\mathbf{q})\dot{\mathbf{q}}

cinemática diferencial

\mathbf{q}
\mathcal{K}\left(\mathbf{q}\right) \subseteq {^B}\mathbf{T}_E(\mathbf{q})

cinemática directa

\dot{\mathbf{q}}
{^B}\mathcal{V}_E=\mathbf{J}(\mathbf{q})\dot{\mathbf{q}}

cinemática diferencial

\(\mathcal{K}\left(\mathbf{q}\right) + \mathbf{J}(\mathbf{q}) \sim\) función de transferencia

G(s)
\mathbf{q}_f=\mathcal{K}^{-1}\left(\mathbf{T}_d\right)
\mathbf{T}_d={^B}\mathbf{T}_E(\mathbf{q}_d)

tarea deseada

cinemática inversa

\mathbf{q}_f=\mathcal{K}^{-1}\left(\mathbf{T}_d\right)
\mathbf{T}_d={^B}\mathbf{T}_E(\mathbf{q}_d)

tarea deseada

cinemática inversa

\(\mathcal{K}^{-1}\left(\mathbf{T}_d\right)\sim\) controlador

C(s)
{^B}\mathbf{T}_E(\mathbf{q})
\ \mathbf{q}(t)
\mathbf{T}_d
\ \mathbf{q}_f
\ \mathbf{T}_0
\ \mathbf{q}_0
{^B}\mathbf{T}_E(\mathbf{q})
\ \mathbf{q}(t)
\mathbf{T}_d
\ \mathbf{q}_f
\ \mathbf{T}_0
\ \mathbf{q}_0

esto es en teoría lo que esperamos, sin embargo...

{^B}\mathbf{T}_E(\mathbf{q})
\ \mathbf{q}(t)
\mathbf{T}_d
\ \mathbf{q}_f
\ \mathbf{T}_0
\ \mathbf{q}_0

la cinemática inversa sólo nos da esto

{^B}\mathbf{T}_E(\mathbf{q})
\ \mathbf{q}(t)
\mathbf{T}_d
\ \mathbf{q}_f
\ \mathbf{T}_0
\ \mathbf{q}_0

¿Qué ocurre con este comportamiento?

El algoritmo de cinemática inversa

recordemos que el resultado de la cinemática inversa se obtiene mediante el algoritmo iterativo

\mathbf{q}_{k+1}=\mathbf{q}_k+\mathbf{J}^\dagger\left(\mathbf{q}_k\right)\mathbf{e}_k

El algoritmo de cinemática inversa

recordemos que el resultado de la cinemática inversa se obtiene mediante el algoritmo iterativo

\mathbf{q}_{k+1}=\mathbf{q}_k+\mathbf{J}^\dagger\left(\mathbf{q}_k\right)\mathbf{e}_k

entonces, si \(\mathbf{q}_k \to \mathbf{q}_f\) conforme aumentan las iteraciones, ¿Por qué no emplear los \(\mathbf{q}_k\) intermedios para el comportamiento transitorio?

porque el algoritmo NO converge como controlador, sino como método iterativo (discontinuo y "quebradizo")

este comportamiento predomina cuando la diferencia entre \(\mathbf{q}_0\) y \(\mathbf{q}_f\) es considerable

sin embargo, el comportamiento se hace "más continuo" conforme disminuye la diferencia entre \(\mathbf{q}_0\) y \(\mathbf{q}_f\)

Idea:

\mathbf{T}_0
\mathbf{T}_f

Idea: control cinemático

\mathbf{T}_0
\mathbf{T}_f
\mathbf{T}_1
\mathbf{T}_2
\mathbf{T}_3
\mathbf{T}_4
\cdots
\mathbf{T}_0
\mathbf{T}_f

Idea: control cinemático

\mathbf{T}_0
\mathbf{T}_f
\mathbf{T}_1
\mathbf{T}_2
\mathbf{T}_3
\mathbf{T}_4
\cdots
\mathbf{T}_0
\mathbf{T}_f
\mathbf{q}_1
\mathcal{K}^{-1}
\mathbf{q}_4
\mathcal{K}^{-1}

Idea: control cinemático

\mathbf{T}_0
\mathbf{T}_f
\mathbf{T}_1
\mathbf{T}_2
\mathbf{T}_3
\mathbf{T}_4
\cdots
\mathbf{T}_0
\mathbf{T}_f

puede ser un recorrido o una trayectoria

(más adelante...)

Control cinemático (por capas)

control cinemático

\mathcal{K}, \ \mathbf{J}, \ \mathcal{K}^{-1}

Control cinemático (por capas)

control cinemático

\mathcal{K}, \ \mathbf{J}, \ \mathcal{K}^{-1}

(servo) actuador 1

q_{1,\mathrm{ref}}(t) \text{ ó } \dot{q}_{1,\mathrm{ref}}(t)

Control cinemático (por capas)

control cinemático

\mathcal{K}, \ \mathbf{J}, \ \mathcal{K}^{-1}

(servo) actuador 1

(servo) actuador 2

\cdots
q_{1,\mathrm{ref}}(t) \text{ ó } \dot{q}_{1,\mathrm{ref}}(t)
q_{2,\mathrm{ref}}(t) \text{ ó } \dot{q}_{2,\mathrm{ref}}(t)

Control cinemático (por capas)

planificación de movimiento o generación de trayectorias

control cinemático

\mathcal{K}, \ \mathbf{J}, \ \mathcal{K}^{-1}

(servo) actuador 1

(servo) actuador 2

\cdots
q_{1,\mathrm{ref}}(t) \text{ ó } \dot{q}_{1,\mathrm{ref}}(t)
q_{2,\mathrm{ref}}(t) \text{ ó } \dot{q}_{2,\mathrm{ref}}(t)
\mathbf{q}_{\mathrm{ref}}(t) \text{ ó } \mathbf{T}_{\mathrm{ref}}(t)

Control cinemático (por capas)

planificación de movimiento o generación de trayectorias

control cinemático

autónoma (AI)

manual o asistida

\mathcal{K}, \ \mathbf{J}, \ \mathcal{K}^{-1}

(servo) actuador 1

(servo) actuador 2

\cdots
q_{1,\mathrm{ref}}(t) \text{ ó } \dot{q}_{1,\mathrm{ref}}(t)
q_{2,\mathrm{ref}}(t) \text{ ó } \dot{q}_{2,\mathrm{ref}}(t)
\mathbf{q}_{\mathrm{ref}}(t) \text{ ó } \mathbf{T}_{\mathrm{ref}}(t)

Recorridos vs trayectorias

Trayectoria = recorrido + especificación de tiempo

Recorridos vs trayectorias

Trayectoria = recorrido + especificación de tiempo

conjunto de puntos ordenados en el espacio, ya sea \(\mathcal{C}\) o \(\mathcal{T}\), que el manipulador debe seguir (puramente geométrico)

Recorridos vs trayectorias

Trayectoria = recorrido + especificación de tiempo

conjunto de puntos ordenados en el espacio, ya sea \(\mathcal{C}\) o \(\mathcal{T}\), que el manipulador debe seguir (puramente geométrico)

qué tan rápido ejecutará el robot el recorrido

(acorde a los límites de los actuadores)

Recorridos vs trayectorias

Trayectoria = recorrido + especificación de tiempo

conjunto de puntos ordenados en el espacio, ya sea \(\mathcal{C}\) o \(\mathcal{T}\), que el manipulador debe seguir (puramente geométrico)

qué tan rápido ejecutará el robot el recorrido

(acorde a los límites de los actuadores)

velocidades

aceleraciones

Recorridos vs trayectorias

Trayectoria = recorrido + especificación de tiempo

conjunto de puntos ordenados en el espacio, ya sea \(\mathcal{C}\) o \(\mathcal{T}\), que el manipulador debe seguir (puramente geométrico)

qué tan rápido ejecutará el robot el recorrido

(acorde a los límites de los actuadores)

velocidades

aceleraciones

dependiendo qué nos interese, tendremos distintas formas de generarlas

\mathbf{T}_0
\mathbf{T}_f

caso 1: sólo nos interesan las poses de inicio y final

(trayectoria | recorrido punto a punto)

\mathbf{T}_0
\mathbf{T}_f

caso 1: sólo nos interesan las poses de inicio y final

(trayectoria | recorrido punto a punto)

\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_0
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_f
\mathbf{T}_0
\mathbf{T}_f

caso 1: sólo nos interesan las poses de inicio y final

(trayectoria | recorrido punto a punto)

\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_0
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_f

interpolación en \(\mathcal{C}\)

la evolución de la configuración es suave pero no nos interesa lo que hace

\mathbf{T}_0
\mathbf{T}_f

caso 1: sólo nos interesan las poses de inicio y final

(trayectoria | recorrido punto a punto)

\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_0
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_f
qtraj = jtraj(q0, qf, spec)
  • número de segmentos
  • vector de tiempo
  • velocidad inicial y final
\mathbf{T}_0
\mathbf{T}_f

caso 2: nos interesan todas las poses del movimiento

(trayectoria | recorrido continuo)

\mathbf{T}_0
\mathbf{T}_f

caso 2: nos interesan todas las poses del movimiento

(trayectoria | recorrido continuo)

\mathbf{T}_1
\mathbf{T}_\cdots

interpolación en \(\mathcal{T}\)

Ttraj = ctraj(T0, Tf, spec)
\mathbf{T}_0
\mathbf{T}_f

caso 2: nos interesan todas las poses del movimiento

(trayectoria | recorrido continuo)

\mathbf{T}_1
\mathbf{T}_\cdots
  • número de segmentos
  • vector de \([0,1]\) generado con algún esquema de interpolación
Ttraj = ctraj(T0, Tf, spec)
\mathbf{T}_0
\mathbf{T}_f

caso 2: nos interesan todas las poses del movimiento

(trayectoria | recorrido continuo)

\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_0
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_f

IMPORTANTE:

debe regresarse al espacio \(\mathcal{C}\) antes de mandarse a los servos

\mathbf{T}_1
\mathbf{T}_\cdots
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_1
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_\cdots
qtraj = robot.ikine(Ttraj, ...);
\mathbf{T}_0
\mathbf{T}_f

caso 2: nos interesan todas las poses del movimiento

(trayectoria | recorrido continuo)

\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_0
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_f

IMPORTANTE:

debe regresarse al espacio \(\mathcal{C}\) antes de mandarse a los servos

\mathbf{T}_1
\mathbf{T}_\cdots
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_1
\xrightarrow{\mathcal{K}^{-1}} \mathbf{q}_\cdots

>> be3027_clase8_ejemplos_trayectorias.m

BE3027 - Lecture 8 (2024)

By Miguel Enrique Zea Arenales

BE3027 - Lecture 8 (2024)

  • 111