Entendiendo la bases detrás de las plataformas
¿Qué necesitamos para llevar un robot de un punto $A$ a un punto $B$?
display(IFrame("https://www.youtube.com/embed/Ro7T3q14uDY",width="100%",height="400px"))
Como no es natural pensar en velocidades de las ruedas entonces vamos a ir directamente a la velocidad traslacional y rotacional.
Usar Encoders genera un gran problema
Los robots necesitan saber a cerca de su mundo alrededor.
Los sesores más utilizados con una "falda" sobre el robot:
Otros sensores externos incluyen
En vez de preocuparnos por la resolución de los sensores, asumiremos que conocemos la distancia y dirección de todos los obtaculos al rededor de nosotros (que estén lo suficientemente cerca).
Si conocemos nuestra propia pose (posición y orientación), entonces
$$\cases{ x_1 = x + d_1 \cos(\phi_1+\phi) \\ y_1 = y + d_1 \sin(\phi_1+\phi) }$$Robótica basada en comportamientos
El mundo cambia constantemente y es desconocido, por lo que no tiene sentido sobre-planear. La idea clave: Desarrollar un a biblioteca de controladores utiles (comportamientos). Cambiar entre los controladores en respuesta a los cambios ambientales.
Asumamos que tenemos un robot diferencial que se mueve a una velocidad translacional constante.
$$\cases{ \dot{x} = v_0 \cos(\phi)\cr \dot{y} = v_0 \sin(\phi)\cr \dot{\phi} = w } $$y queremos orientar el robot a una dirección deseada, ¿cuál debe ser el valor de $w = ?$ ?
Tenemos una referencia, un modelo, una señal de control y un seguimiento del error:
$$r=\phi_d \qquad e = \phi_d - \phi \qquad \dot{\phi}=w$$Por que no usar un PID?
$$ w = K_P \, e + K_I \int ed\tau + K_D \dot{e}$$Normalmente esto no funciona ya que estamos lidiando con angulos y entonces:
$$\phi_d =0 \quad \phi = 100\pi \qquad \to \qquad e = -100\pi$$La solución es asegurarnos que $e \in [-\pi,\pi]$
Podemos usar el truco con atan2:
$$e' = \text{atan2}(\sin(e),\cos(e)) \in [-\pi,\pi]$$El problema de la navegación es ir al objetivo sin chocar con obstaculos.
Como mínimo necesitamos dos comportamientos:
¿Cómo llevar el robot al objetivo?
$$\cases{ \dot{x} = v_0 \cos(\phi)\cr \dot{y} = v_0 \sin(\phi)\cr \dot{\phi} = w } \qquad e = \phi_d - \phi \qquad w = PID(e) $$ $$\phi_d = \arctan\left(\frac{y_m-y}{x_m-x}\right)$$¡Error en el cálculo de los angulos!
¡Una ganancia del controlador muy bajita!
¿Cómo evadir ir directamente a los obstaculos.
Podemos usar la mismaidea para definir ir a la meta?
La dirección depende de la dirección al objetivo, no puede ser puro sino combinado.
$$\phi_4 = F(\phi_{obst},\phi_{meta})$$Este ejemplo ilustra 2 mecanismos de decisión diferentes:
Las dos situaciones tienen merito en diferentes situaciones:
Veremos con diseñar comportamientos sistematicos y mecanismos de decisión