Saltar al contenido principal
Etapa 5 · Capítulo 25 · Teoría

25. Planificación de Trayectorias y Control del Brazo Robótico

Capítulo 25 del Curso de Introducción a la IA Física de Seeed: trayectoria frente a recorrido, interpolación en espacio articular y en espacio cartesiano, polinomios lineales, cúbicos y quínticos, y la orden de par construida a partir de feedforward (modelo y gravedad) más corrección de error por feedback.

25.1 Objetivos de Aprendizaje​

Ayudar al usuario a entender cómo el brazo genera un movimiento continuo, suave y seguro a partir de una pose objetivo.

Después de este capítulo deberías ser capaz de:

  1. Separar un movimiento en un recorrido (forma) y una trayectoria (tiempo), y decir cuál de los dos restringe una tarea.
  2. Elegir entre interpolación en espacio articular y en espacio cartesiano.
  3. Explicar la diferencia entre interpolación lineal, cúbica y quíntica, y por qué el comportamiento de arranque/parada importa.
  4. Explicar feedforward, feedback y compensación de gravedad, y cómo se compone la orden de par.
Recorrido frente a trayectoria (1/2)
Recorrido y trayectoria en un brazo robótico (2/2)

25.2 Recorrido vs. Trayectoria​

Imagina caminar desde casa hasta la oficina.

Recorrido = la ruta que tomas (forma)

Gira a la izquierda al salir por la puerta, toma la carretera principal, cruza el puente, gira a la derecha, llega a la oficina

No importa lo rápido o lento que camines, esta ruta permanece igual.

Trayectoria = el ritmo al que caminas (tiempo + velocidad)

Sal por la puerta en 10 segundos, haz una pausa en el puente durante 1 minuto, espera en el semáforo en rojo de abajo durante 30 segundos

Misma carretera, cambia si caminas rápido o despacio.

Diferencia clave

DimensiónRecorridoTrayectoria
DescripciónDóndeDónde + cuándo
DominioEspacioEspacio + tiempo
Se ocupa deFormaTiempo, velocidad, aceleración
Ejemplo"Ve en línea recta de A a B""Ve de A a B a velocidad constante en 5 segundos"

Correspondencia en el brazo robótico

TareaRecorridoTrayectoria
SoldaduraForma del cordón de soldaduraVelocidad de movimiento a lo largo del cordón
AgarreDe A al borde de la tazaCuándo llegar, cuánto tiempo sujetar
PinturaZona a pintarVelocidad de movimiento del pulverizador

Orden de planificación:

  1. Primero define el recorrido (forma)

  2. Luego define la trayectoria (cuándo estar en cada lugar)

Un ejemplo concreto

El brazo mueve una taza desde el punto A al punto B.

Recorrido (solo forma):

Elevar -> extender hacia delante -> bajar

(una curva espacial)

Trayectoria (con tiempo):

Elevar 1 s -> pausa 0,5 s -> extender 2 s -> bajar 1 s

(ángulos articulares en cada instante)

El recorrido puede ser correcto mientras que la trayectoria es incorrecta (por ejemplo, demasiado agresiva, la taza sale volando); para que la trayectoria sea correcta, primero el recorrido debe ser correcto (un recorrido erróneo hace inútil una trayectoria precisa).

Por qué se tratan por separado

EtapaSe ocupa de
Planificación del recorridoEvitar obstáculos, encontrar una forma factible
Planificación de la trayectoriaHacer el movimiento suave, sin sacudidas ni exceso de velocidad

El recorrido es un problema geométrico; la trayectoria es un problema de temporización.

La trayectoria del brazo debe ser "suave"

No solo "de A a B", sino también:

  • Velocidad continua (sin saltos bruscos hacia/desde 0)
  • Aceleración continua (sin tirones repentinos)
  • Dentro de los límites de velocidad del motor
  • Dentro de los límites de par

Todo esto pertenece a la planificación de la trayectoria.

25.3 Trayectorias en Espacio Articular y en Espacio Cartesiano​

Trayectoria a partir de condiciones de contorno
DimensiónTrayectoria en espacio articularTrayectoria en espacio cartesiano
Objeto interpoladoÁngulos articularesPose del efector final
Función de interpolaciónPolinomioLínea / arco / geodésica
Propiedad de velocidadVelocidad articular constanteVelocidad constante del efector final

Así que "articular vs. cartesiano" se discute en ambos niveles, pero lo que más se pregunta suele ser a nivel de recorrido — porque eso es la clave para que el brazo "haga cosas diferentes".

Por qué el recorrido recibe más atención

TareaQué recorrido elegirMotivo
SoldaduraCartesiano (línea recta)El cordón de soldadura es una línea recta
PinturaCartesiano (curva específica)La superficie a pintar debe cubrirse
PaletizadoCualquiera, espacio articularEl recorrido final no importa
Transporte libreEspacio articularNo hace falta preocuparse por el recorrido final
Colocar después de recogerEspacio articularNo hay requisito de línea recta
aviso

Una trayectoria en espacio cartesiano es la forma natural de describir una tarea, pero es la forma costosa de ejecutarla: cada pose muestreada necesita una solución de IK. Planifica en espacio cartesiano y luego comprueba que la trayectoria articular resultante respeta los límites articulares y se mantiene alejada de las singularidades — o genera el recorrido en espacio cartesiano y la temporización en espacio articular.

25.4 Interpolación Lineal​

Por qué la interpolación lineal provoca sacudidas

Trayectoria en espacio articular:

θ(t)=θstart+(θend−θstart) t\theta(t) = \theta_{start} + (\theta_{end} - \theta_{start})\,t

La articulación pasa suavemente de 0° a 90°, tomando un valor cada 10% del recorrido.

Trayectoria en espacio de posición:

p(t)=pstart+(pend−pstart) t\mathbf{p}(t) = \mathbf{p}_{start} + (\mathbf{p}_{end} - \mathbf{p}_{start})\,t

El extremo se mueve en línea recta de (0,0,0)(0, 0, 0) a (1,0,0)(1, 0, 0); una posición intermedia es pstart+s (pend−pstart)\mathbf{p}_{start} + s\,(\mathbf{p}_{end} - \mathbf{p}_{start}), donde la razón ss va de 0 a 1.

Pros y contras

El problema es el perfil de velocidad: la articulación se mueve a una velocidad constante distinta de cero y luego se detiene instantáneamente.

θ˙(t)=θend−θstartT≠0,θ¨(t)=0\dot{\theta}(t) = \frac{\theta_{end} - \theta_{start}}{T} \ne 0, \qquad \ddot{\theta}(t) = 0

Ventajas:

  • Simple y fácil de calcular
  • Se hace en una sola línea de código
  • Alto rendimiento en tiempo real

Desventajas:

  • La velocidad salta al inicio y al final (no es cero ahí)
  • El brazo "da un tirón" al arrancar/parar
  • No es adecuada para tareas de alta precisión

El "tirón" de arranque/parada es el problema central — por eso las trayectorias más finas usan polinomios cúbicos/quínticos.

25.5 Interpolación Polinómica​

Por qué se necesitan polinomios

Polinomios lineales, cúbicos y quínticos

Diferencias clave

DimensiónLinealCúbicoQuíntico
Velocidad de arranque/paradaSalto00
Aceleración de arranque/paradaSaltoSalto0
SuavidadPobreMediaBuena
Carga de cálculoMínimaMediaMedia
Mejor paraMovimiento burdoUso generalAlta precisión

Aplicaciones en brazos robóticos

EscenarioCuál usar
Transporte burdo, paletizadoCúbico
Soldadura, ensamblajeQuíntico
Robots colaborativosQuíntico (deben ser estables alrededor de humanos)
Movimiento a alta velocidadCúbico (suficiente)
Investigación / demostraciónQuíntico (el más suave)
Linear:θ(t)=a0+a1tCubic:θ(t)=a0+a1t+a2t2+a3t3Quintic:θ(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5\begin{aligned} \text{Linear:}\quad \theta(t) &= a_0 + a_1 t \\ \text{Cubic:}\quad \theta(t) &= a_0 + a_1 t + a_2 t^2 + a_3 t^3 \\ \text{Quintic:}\quad \theta(t) &= a_0 + a_1 t + a_2 t^2 + a_3 t^3 + a_4 t^4 + a_5 t^5 \end{aligned}

Quíntico con condiciones de contorno de reposo a reposo — el brazo arranca en reposo y se detiene en reposo:

θ(0)=0,θ˙(0)=0,θ¨(0)=0θ(T)=90∘,θ˙(T)=0,θ¨(T)=0\begin{aligned} \theta(0) &= 0, & \dot{\theta}(0) &= 0, & \ddot{\theta}(0) &= 0 \\ \theta(T) &= 90^\circ, & \dot{\theta}(T) &= 0, & \ddot{\theta}(T) &= 0 \end{aligned}

Seis condiciones, seis incógnitas a0,a1,…,a5a_0, a_1, \ldots, a_5 — una solución única.

25.6 Feedforward, Feedback y Compensación de Gravedad​

Feedforward frente a feedback

El par enviado al motor es la suma de dos cosas:

τcmd=τfeedforward⏟calculado de antemano, incl. compensacioˊn de gravedad+τfeedback⏟corregido a partir del error, arregla lo que sale mal\tau_{cmd} = \underbrace{\tau_{feedforward}}_{\text{calculado de antemano, incl. compensación de gravedad}} + \underbrace{\tau_{feedback}}_{\text{corregido a partir del error, arregla lo que sale mal}}

Feedforward: enviar por adelantado basándose en el modelo

Dada la trayectoria y los parámetros del brazo, se puede calcular cuánto par se necesita en cada instante:

El modelo contienePropósito
Término de inerciaVencer la inercia al acelerar
Término de CoriolisContrarrestar el acoplamiento al girar
Término de gravedadPresente incluso cuando el brazo está quieto; cancela directamente la gravedad

El término de gravedad es especialmente importante — el brazo debe enviarlo incluso estando parado, de lo contrario la gravedad lo hace caer.

Analogía: sabiendo que hoy hay una subida de 5 km, aumentar el esfuerzo por adelantado.

Feedback: corregir cuando algo va mal

Por muy preciso que sea el modelo, hay errores y perturbaciones externas -> la posición real se desvía.

El feedback es comparación en tiempo real y corrección en tiempo real:

  • Cuánto se desvía -> añadir esa cantidad (feedback de posición)
  • A qué velocidad se desvía -> amortiguar esa cantidad (feedback de velocidad)

Analogía: sabiendo que hoy hay una subida, pero hay baches en la carretera — esquívalos cuando los veas.

Cómo trabajan juntos

FuentePapelProporción (típica)
FeedforwardLa mayor parte del par80~95%
FeedbackCompensar pequeños errores5~20%

El feedforward maneja la mayor parte, el feedback maneja el pequeño resto — juntos son rápidos y precisos.

Comparación

DimensiónFeedforwardFeedback
TiempoCalcular por adelantadoCorregir en tiempo real
Depende dePrecisión del modeloLecturas de los sensores
RespuestaInmediataSe retrasa un fotograma
Rechazo de perturbacionesPobreFuerte
IncluyeIncluye compensación de la gravedadNo lo hace

Cómo se ve realmente el controlador

τcmd=τfeedforward+τfeedback=[M(q) q¨+C(q,q˙) q˙+G(q)]⏟feedforward (incl. gravity)+[Kp e+Kd e˙]⏟feedback\begin{aligned} \tau_{cmd} &= \tau_{feedforward} + \tau_{feedback} \\ &= \underbrace{\big[ M(q)\,\ddot{q} + C(q, \dot{q})\,\dot{q} + G(q) \big]}_{\text{feedforward (incl. gravity)}} + \underbrace{\big[ K_p\,e + K_d\,\dot{e} \big]}_{\text{feedback}} \end{aligned}

La gravedad está dentro del feedforward — no hace falta calcularla por separado.

En una frase

Feedforward envía el par por adelantado basándose en el modelo (incluida la gravedad); el feedback compensa en tiempo real basándose en el error; no es necesario mencionar la gravedad por separado — es el sub-término en el feedforward que debe calcularse incluso cuando el brazo está quieto.

  • Ruta = geometría, trayectoria = temporización; primero planifica la ruta, luego la temporización.
  • La interpolación en el espacio articular es barata y libre de singularidades; la interpolación en el espacio cartesiano es lo que normalmente exige la tarea.
  • La interpolación lineal sacude; la cúbica elimina el salto de velocidad y la quíntica también elimina el salto de aceleración.
  • El par de mando es feedforward (modelo + gravedad) más feedback (corrección de error); la gravedad vive dentro del feedforward.
  • Próximo capítulo: ejecutar todo esto en el modelo real del reBot Arm con Pinocchio y MeshCat.
Loading Comments...