Trayectoria

De la física al robot móvil · Tema 5.5

Restricción no holonómica

Tiempo estimado
25 min
Ruta: 0 de 27 temas
Seccionesver ▾ocultar ▴

01Gancho

¿Por qué tu robot no puede estacionarse de lado como un cangrejo, si sus dos ruedas pueden girar en cualquier sentido?

02Concepto

Las ruedas de tu robot solo ruedan hacia delante o hacia atrás. Empujarlas de lado exige arrastrarlas sobre el suelo, y sin deslizamiento eso no ocurre. Por eso la velocidad del centro del eje siempre apunta a lo largo del rumbo θ: ẋ = v·cosθ y ẏ = v·sinθ, con θ̇ = ω.

La componente de la velocidad perpendicular al rumbo es ẋ·sinθ − ẏ·cosθ, y vale cero en todo instante. Esa ecuación es una restricción sobre las velocidades, no sobre la posición. Cualquier velocidad que la cumpla es admisible: el robot la puede seguir. Si la ecuación da un valor distinto de cero, pides un movimiento lateral que las ruedas no pueden dar.

La restricción no se puede integrar a una ecuación entre x, y y θ. Esa es una restricción no holonómica: puede llegar a cualquier pose, pero no por cualquier camino.

Con dos ruedas manejas dos velocidades, v y ω, mientras la pose tiene tres coordenadas. No existe un comando que desplace el robot de lado. Para moverlo 0.2 m a su izquierda y dejarlo con el mismo rumbo, necesitas tres movimientos: gira 90° en el lugar, avanza 0.2 m y gira −90°.

Cada tramo cumple la restricción. En los giros, v = 0 y el centro no se mueve. En el avance, la velocidad va a lo largo del rumbo. Al final, el robot quedó 0.2 m a su izquierda sin haberse movido nunca de lado.

Un robot con ruedas omnidireccionales, que llevan rodillos pasivos en su borde, sí puede moverse de lado. Ese tipo de robot queda fuera de esta ruta.

03Fórmulas

  • ẋ, ẏ · derivada de x e y respecto al tiempo: componentes de la velocidad en {G} · m/s
  • θ · orientación (rumbo) del robot · rad
  • ẋ, ẏ · derivada de x e y respecto al tiempo · m/s
  • θ̇ · derivada de θ respecto al tiempo · rad/s
  • v · velocidad lineal del robot · m/s
  • ω · velocidad angular del robot · rad/s
  • θ · orientación (rumbo) del robot · rad

04Explora

Con el robot de referencia, el robot parte del origen con rumbo θ₀ = 0 y el comando v = 0.3 m/s, ω = 0 durante 6 s. El simulador dibuja los marcos {G} y {R} y la traza del centro del eje. La maniobra en tres movimientos gira 90°, avanza 0.2 m y deshace el giro, a 1 rad/s y 0.2 m/s: dura 4.142 s.

Cambiabusca en el panel un control que mueva el robot de ladoObservalos controles del panel

¿Por qué no hay ninguno?

Ver la respuesta

Solo hay v y ω: no existe un comando lateral. Con dos ruedas manejas dos velocidades, y ninguna combinación de ellas da una velocidad perpendicular al rumbo.

Cambiaactiva «Maniobra en tres movimientos», con giro de 90° y avance de 0.2 m, y reproduceObservala traza y la pose al terminar

¿Por qué acaba en (0, 0.2 m, 0°)?

Ver la respuesta

El robot quedó 0.2 m a su izquierda sin moverse nunca de lado. El primer giro lo orienta hacia +y, el avance lo lleva 0.2 m en esa dirección y el segundo giro le devuelve el rumbo 0°. Hicieron falta tres movimientos.

Cambiadesactiva la maniobra, pon θ₀ = 45°, v = 0.42 m/s y ω = 0, y reproduceObservala dirección de la traza

¿Por qué cumple la restricción?

Ver la respuesta

El robot sale a 45° con ẋ = ẏ = 0.42·cos45° ≈ 0.3 m/s. Entonces ẋ·sinθ − ẏ·cosθ = 0.3·0.707 − 0.3·0.707 = 0: la velocidad va a lo largo del rumbo y cumple la ecuación.

05Al robot

Tu robot tiene que estacionarse 0.2 m a su izquierda con la maniobra en tres movimientos: gira en el lugar a ω = 4 rad/s, avanza a v = 0.5 m/s y vuelve a girar. El tiempo no depende de tu perfil: dos giros de π/2 y un avance de D = 0.2 m.

Los comandos de rueda sí dependen de tu robot. En el giro en el lugar, v = 0 y las ruedas van a velocidades opuestas, con el radio r y la distancia entre ruedas L de tu perfil de «Mi robot»:

En el avance, ω = 0 y las dos ruedas giran igual:

La maniobra es realizable si los dos comandos quedan por debajo de la velocidad angular máxima de tus ruedas, ω_max, que sale de las rpm del motor y de la reducción:

Si tu perfil no es un robot móvil, los cálculos usan el robot de referencia.

Con el robot de referencia, el giro pide ±9.375 rad/s y el avance 15.63 rad/s, los dos por debajo de ω_max = 20.94 rad/s: la maniobra es realizable y dura 1.185 s. El avance es el comando más exigente: con ruedas más pequeñas, v/r crece y puede pasar de ω_max.

06Verifica

E1Tu robot tiene rumbo θ = 270.0° y le pides la velocidad (ẋ, ẏ) = (−0.2400, 0.09000) m/s. ¿Es admisible? Para decidirlo, da el valor de la restricción ẋ·sinθ − ẏ·cosθ, en m/s: si es 0, la velocidad es admisible.obligatorio

m/s

E2Tu robot tiene rumbo θ = 90.00° y le pides la velocidad (ẋ, ẏ) = (0.4200, 0.3500) m/s. ¿Cuánto vale la restricción ẋ·sinθ − ẏ·cosθ, en m/s? Si no es 0, esa velocidad no es admisible.obligatorio

m/s

E3Tu robot se desplaza D = 0.2400 m hacia su izquierda con una maniobra en tres movimientos: gira 90° en el lugar a ω = 5.700 rad/s, avanza D a v = 0.2500 m/s y gira −90° en el lugar a ω. ¿Cuánto dura la maniobra completa, en s?obligatorio

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".
  • Corke, P. Robotics, Vision and Control. Fundamental Algorithms in MATLAB, 2.ª ed. Springer, 2017 (Springer Tracts in Advanced Robotics, 118). ISBN 978-3-319-54412-0. Cap. 4, "Mobile Robot Vehicles".

¿Viste un error en este tema?Escríbenos por correo