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)
cinemática directa
cinemática diferencial
cinemática directa
cinemática diferencial
\(\mathcal{K}\left(\mathbf{q}\right) + \mathbf{J}(\mathbf{q}) \sim\) función de transferencia
tarea deseada
cinemática inversa
tarea deseada
cinemática inversa
\(\mathcal{K}^{-1}\left(\mathbf{T}_d\right)\sim\) controlador
esto es en teoría lo que esperamos, sin embargo...
la cinemática inversa sólo nos da esto
¿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
El algoritmo de cinemática inversa
recordemos que el resultado de la cinemática inversa se obtiene mediante el algoritmo iterativo
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:
Idea: control cinemático
Idea: control cinemático
Idea: control cinemático
puede ser un recorrido o una trayectoria
(más adelante...)
Control cinemático (por capas)
control cinemático
Control cinemático (por capas)
control cinemático
(servo) actuador 1
Control cinemático (por capas)
control cinemático
(servo) actuador 1
(servo) actuador 2
Control cinemático (por capas)
planificación de movimiento o generación de trayectorias
control cinemático
(servo) actuador 1
(servo) actuador 2
Control cinemático (por capas)
planificación de movimiento o generación de trayectorias
control cinemático
autónoma (AI)
manual o asistida
(servo) actuador 1
(servo) actuador 2
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
caso 1: sólo nos interesan las poses de inicio y final
(trayectoria | recorrido punto a punto)
caso 1: sólo nos interesan las poses de inicio y final
(trayectoria | recorrido punto a punto)
caso 1: sólo nos interesan las poses de inicio y final
(trayectoria | recorrido punto a punto)
interpolación en \(\mathcal{C}\)
la evolución de la configuración es suave pero no nos interesa lo que hace
caso 1: sólo nos interesan las poses de inicio y final
(trayectoria | recorrido punto a punto)
qtraj = jtraj(q0, qf, spec)
caso 2: nos interesan todas las poses del movimiento
(trayectoria | recorrido continuo)
caso 2: nos interesan todas las poses del movimiento
(trayectoria | recorrido continuo)
interpolación en \(\mathcal{T}\)
Ttraj = ctraj(T0, Tf, spec)
caso 2: nos interesan todas las poses del movimiento
(trayectoria | recorrido continuo)
Ttraj = ctraj(T0, Tf, spec)
caso 2: nos interesan todas las poses del movimiento
(trayectoria | recorrido continuo)
IMPORTANTE:
debe regresarse al espacio \(\mathcal{C}\) antes de mandarse a los servos
qtraj = robot.ikine(Ttraj, ...);
caso 2: nos interesan todas las poses del movimiento
(trayectoria | recorrido continuo)
IMPORTANTE:
debe regresarse al espacio \(\mathcal{C}\) antes de mandarse a los servos
>> be3027_clase8_ejemplos_trayectorias.m
Robótica médica y cirugía asistida por computadora
¿Qué tenemos hasta ahora?
podemos hacer que el robot ejecute (cinemáticamente hablando) la tarea que necesitemos
podemos hacer que el robot ejecute (cinemáticamente hablando) la tarea que necesitemos
dependerá de la aplicación
en nuestro caso...
Recordemos: tareas 4A
automation
autonomy
augmentation
assistance
robótica médica
Cirugía (robótica) asistida por computadora
principalmente basadas en imágenes médicas
combinación de imágenes médicas con navegación y registro
Navegación
Navegación
Registro
aquí se da el principal/mayor aporte del robot
¿Qué tanto asiste el robot al cirujano? Depende del paradigma de control
Movimiento semi-autónomo
Movimiento pre-programado de forma interactiva por el cirujano, basado en imágenes médicas. Ej: inserción de agujas o instrumentos, trayectorias de herramientas de corte.
Movimiento semi-autónomo
Control teleoperado
El robot en el lado del paciente replica los movimientos registrados por la interfaz para el cirujano.
Hands-on compliant control
El cirujano recibe retroalimentación sobre la fuerza ejercida en el efector final del robot y viceversa.
Estos paradigmas no son mutuamente excluyentes ya que frecuentemente se usa una mezcla de los mismos.
Cirujano vs robot
Potencial de impacto