01Gancho
Quieres que tu robot avance a 0.4 m/s girando a 1.5 rad/s. ¿Qué velocidad angular mandas a cada rueda?
02Concepto
En la cinemática directa partías de las ruedas: v = (v_R + v_L)/2 y ω = (v_R − v_L)/L. La cinemática inversa recorre el camino contrario: das la v y la ω que quieres para el robot y obtienes lo que debe hacer cada rueda.
Son dos ecuaciones con dos incógnitas. Sumarlas y restarlas da v_R = v + ω·L/2 y v_L = v − ω·L/2. Cada rueda va a la velocidad del centro del eje más o menos una corrección ω·L/2, que crece con el giro y con la distancia entre ruedas. Sin deslizamiento, cada rueda gira a ω_R = v_R/r y ω_L = v_L/r.
Con ω positiva, antihoraria, el robot gira a la izquierda y la rueda derecha queda por fuera de la curva. La rueda exterior siempre va más rápido que la interior: recorre un arco de radio mayor en el mismo tiempo. Si ω cambia de signo, las ruedas intercambian los papeles.
Con los datos del gancho y el robot de referencia, ω·L/2 = 1.5·0.15/2 = 0.1125 m/s. Entonces v_R = 0.5125 m/s y v_L = 0.2875 m/s, y con r = 0.032 m, ω_R = 16.02 rad/s y ω_L = 8.98 rad/s.
Una rueda no gira más rápido que su ω_max. Si alguna necesita más, el comando no es realizable: el motor satura y la rueda va más lenta de lo pedido. Hay que reducir v, ω o ambas hasta que max(|ω_L|, |ω_R|) ≤ ω_max.
Si pides v = ω·L/2, la rueda interior se detiene: v_L = 0. El robot hace un pivote sobre esa rueda, y el centro del eje describe un círculo de radio R = L/2.
Esto es lo que hace al final el controlador de un seguidor de línea: calcula una corrección de giro y la convierte en dos comandos de rueda con estas mismas ecuaciones.
03Fórmulas
v_R,v_L· velocidad lineal de rueda derecha e izquierda · m/sv· velocidad lineal del robot · m/sω· velocidad angular del robot · rad/sL· distancia entre ruedas · m
ω_R,ω_L· velocidad angular de rueda derecha e izquierda · rad/sv_R,v_L· velocidad lineal de rueda derecha e izquierda · m/sr· radio de rueda · m
ω_L,ω_R· velocidad angular de rueda izquierda y derecha · rad/sω_max· velocidad angular máxima de la rueda · rad/s
04Explora
Con el robot de referencia, el robot recibe el comando del gancho, v = 0.4 m/s y ω = 1.5 rad/s, durante 6 s. El simulador calcula la velocidad de cada rueda, las muestra junto al robot y dibuja el CIR y el radio de giro.
Cambiaω de 1.5 a 3 rad/s, con v = 0.4 m/s fijaObservalas velocidades de las dos ruedas
¿Por qué se separan lo mismo hacia arriba y hacia abajo?
Ver la respuesta
Cada rueda se aparta de v en ω·L/2, la derecha hacia arriba y la izquierda hacia abajo. Con ω = 3 rad/s la corrección es 3·0.15/2 = 0.225 m/s: v_R = 0.625 m/s y v_L = 0.175 m/s. Su media sigue siendo v = 0.4 m/s.
Cambiav hacia arriba desde 0.4 m/s, con ω = 1.5 rad/sObservala rueda derecha, hasta que su velocidad aparece marcada como error
¿Por qué ocurre con v por encima de unos 0.56 m/s?
Ver la respuesta
La rueda derecha necesita v_R = v + 0.1125 m/s, y con ω_max = 20.94 rad/s y r = 0.032 m no pasa de ω_max·r = 0.670 m/s. Con v por encima de 0.558 m/s el comando supera ω_max y deja de ser realizable. El simulador satura la rueda en ω_max.
Cambiaω a 2 rad/s y v a 0.15 m/sObservala velocidad de la rueda izquierda y la posición del CIR
¿Por qué se detiene la rueda interior?
Ver la respuesta
Con v = ω·L/2 = 2·0.15/2 = 0.15 m/s, la rueda izquierda queda en v_L = 0.15 − 0.15 = 0 y ω_L = 0. El robot pivota sobre ella: el CIR cae en esa rueda, a R = L/2 = 0.075 m del centro del eje.
05Al robot
Para el comando del gancho, v = 0.4 m/s y ω = 1.5 rad/s, las ruedas de tu robot necesitan:
Antes de mandar el comando, compáralo con la velocidad angular máxima de tus ruedas, ω_max, que sale de las rpm del motor y de la reducción de tu perfil:
Si tu perfil de «Mi robot» no es un robot móvil, los cálculos usan el robot de referencia.
Con el robot de referencia, ω_R = 16.02 rad/s y ω_L = 8.98 rad/s, las dos por debajo de ω_max = 20.94 rad/s: el comando es realizable.
Pide ahora algo más rápido: v = 0.6 m/s y ω = 2 rad/s. La rueda exterior necesita v_R = 0.6 + 2·0.15/2 = 0.75 m/s, y ninguna rueda pasa de v_max = ω_max·r:
Con el robot de referencia, 0.75 m/s supera v_max = 0.670 m/s: el comando no es realizable. Para girar a 2 rad/s, v tiene que bajar hasta que v_R ≤ 0.670 m/s, es decir, v ≤ 0.520 m/s. La otra salida es mantener v y reducir ω.
06Verifica
E1Tu robot tiene ruedas de r = 0.032 m separadas L = 0.15 m. Quieres que avance a v = 0.5700 m/s girando a ω = 0.7000 rad/s. ¿Qué velocidad angular necesita cada rueda, ω_L y ω_R, en rad/s?obligatorio
E2Tu robot tiene las ruedas separadas L = 0.15 m. Quieres que recorra un círculo de radio R = 0.8800 m a v = 0.5800 m/s, girando a la izquierda. ¿Qué velocidad lineal necesita cada rueda, v_L y v_R, en m/s?obligatorio
E3Tu robot tiene las ruedas separadas L = 0.15 m. Detienes la rueda izquierda (v_L = 0) y la derecha va a v_R = 0.5800 m/s: el robot pivota sobre la rueda izquierda. ¿Cuál es su velocidad angular ω, en rad/s, y su radio de giro R, en m?obligatorio
E4Tu robot tiene ruedas de r = 0.032 m separadas L = 0.15 m, con ω_max = 20.94 rad/s. ¿Es realizable el comando v = 0.6 m/s, ω = 2 rad/s? Para decidirlo, da la velocidad lineal v_R que necesita la rueda derecha, en m/s.
07Profundiza
- Siegwart, R., Nourbakhsh, I. R. y Scaramuzza, D. Introduction to Autonomous Mobile Robots, 2.ª ed. The MIT Press, 2011. ISBN 978-0-262-01535-6. Cap. 3, "Mobile Robot Kinematics".