Conducción libre

monkeyserna edited this page May 27, 2014 · 14 revisions

El modo Drive, o modo de conducción libre, es una de las dos modalidades de control del robot. Tiene las siguientes características:

  • Permite el control del desplazamiento mediante la posición física del dispositivo Android, haciendo uso del acelerómetro.
  • Reproduce la señal de la cámara del robot en tiempo real.
  • Controla la inclinación vertical de la cámara mediante una barra deslizante.

El modo drive, o modo de conducción libre, permite controlar el movimiento de los motores y del servo, además de recibir en tiempo real la señal de la cámara.

Para empezar a controlar el movimiento de los motores basta con tocar la pantalla. Un toast (mensaje emergente de Android) indica cuándo se ha establecido la conexión y sugiere tocar la pantalla para comenzar a dirigir el robot.

Cuando el usuario pulsa sobre la pantalla, el dispositivo Android comenzará a enviar los valores del acelerómetro para controlar el movimiento de los motores. La inclinación hacia adelante indicará la velocidad de avance. Al girar lateralmente el dispositivo Android, se controlará el giro del robot. Cuanto mayor sea la inclinación (tanto de avance como de giro), mayor será la velocidad con la que el robot realice la acción.

Mientras el robot está emitiendo comandos de movimiento de los motores, aparece un triángulo verde situado en la parte superior izquierda de la señal de la cámara, con la finalidad de indicar al usuario que se está realizando una transmisión. Para detener el envío de movimiento, basta con volver a tocar la pantalla. En ese momento se enviará un comando para detener los motores y se ocultará el triángulo verde.

Orientación de la cámara

A la izquierda de la pantalla hay una barra deslizante que permite controlar el ángulo vertical de la cámara por medio de un servomotor. El rango de grados de inclicación que abarca esta barra deslizante es [-35,100]. Algunos valores son los siguientes:

  • -35º Es el valor mínimo. El robot apunta hacia abajo. El desplazable de la barra se en encuentra el extremo inferior.
  • El robot apunta hacia el frente. El desplazable se encuentra ligeramente debajo del centro de su rango.
  • 90º El robot apunta hacia arriba. El desplazable se encuentra ligeramente por debajo de su extremo superior.
  • 100º El robot apunta hacia arriba y ligeramente hacia atrás. El desplazable se encuentra en su extremo superior.

Por defecto está situada en 0º sobre la horizontal. En otras palabras, mira al frente. Situando el deslizante en otra posición, se enviará un comando de 2 bytes indicando la nueva posición del servo, que moverá la plataforma que sostiene la cámara y el sonar (no empleado en este modo).

El rango de valores permitido del servo permite una inclinación de hasta 150º, aunque por motivos se usabilidad se ha limitado en el modo de conducción libre a 100º. Sin embargo, es posible orientar el servo hasta su máximo, 150º, en el modo de programación gráfica.

El servo puede seguir siendo utilizado aunque no se estén enviando comandos de movimiento de los motores.

Control de motores

El resto de la pantalla lo ocupa la señal de vídeo del robot.

Para comenzar a controlar el movimiento del robot, basta con tocar la pantalla, encima de la señal de vídeo. En ese momento, aparece un triángulo verde en la esquina superior derecha que indica que se están transmitiendo comandos de movimiento. Para detener el robot, basta con volver a tocar la pantalla.

El concepto subyacente detrás de este estilo de control del movimiento es el de unificar el movimiento empleado en la conducción de vehículos:

  • Para la aceleración se inclina el dispositivo hacia adelante, imitando el movimiento del pedal de un vehículo.
  • Para el giro se inclina el dispositivo hacia los lados, al igual que se giraría el volante de un coche.

Por tanto, el movimiento del robot se realiza mediante la inclinación del dispositivo móvil, con 2 variables.

La velocidad se controla con la inclinación hacia adelante y hacia atrás.

Posición velocidad mínima (detenido) y balance centrado (movimiento hacia adelante) Posición velocidad media y balance centrado (movimiento hacia adelante) Posición velocidad máxima y balance centrado (movimiento hacia adelante)

El giro se controla con la inclinación lateral del dispositivo.

Velocidad media y balance a la izquierda medio (avance a velocidad media hacia la izquierda) Velocidad media y balance a la derecha medio (avance a velocidad media hacia a derecha)

Es posible combinar ambos tipos de inclinación, para obtener cualquier tipo de movimiento.

Velocidad alta y balance a la izquierda medio (avance rápido hacia la izquierda) Velocidad alta y balance a la derecha medio (avance rápido hacia la derecha)

Esta forma de control resulta bastante intuitiva. Bastan unos minutos para aprender a controlar el robot con soltura.

Envío de comandos

Una vez se ha tocado la pantalla y aparece el triángulo verde en la parte superior derecha de la pantalla, se inicia el envío de comandos de movimiento.

Cada vez que el acelerómetro cambia su posición, se envía un mensaje de 3 bytes (CMD_MOVE_BALANCE <speed> <balance>) mediante WebSocket. Esto significa que existen 255 posibles valores de avance y balance.

Para el avance:

  • 0 indica velocidad mínima (detenido). El dispositivo Android está en posición vertical.
  • 255 indica velocidad máxima. El dispositivo Android está en posición horizontal.

La velocidad admite cualquier valor en el rango [0,255], que determinará la velocidad del robot.

Para el giro:

  • 0 indica balance máximo a la izquierda.
  • 123 indica avance hacia adelante
  • 255 indica balance máximo a la derecha.

Al igual que ocurre con la velocidad, cualquier valor intermedio dentro del rango [0,255] es válido y determina la intensidad del giro.

Mediante combinaciones de inclinaciones se pueden obtener distintas respuestas: desde giros de distintas velocidades sobre una rueda, hasta avances frontales, incluyendo movimientos en espiral, giros pequeños y de mayor ángulo.

Al pulsar de nuevo la pantalla se envía señal de frenado (freno por bloqueo) y se detiene el envío de movimiento. Consecuentemente, el triangulo que indica emisión dejará de estar visible.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.