Inicio » Aula » Vehículo Omnidireccional

Vehículo Omnidireccional

En esta entrada podéis observar los componentes necesarios para el montaje de un robot Mecanum y también el código necesario para implementar ciertas funciones con este. Este tipo de robot, conocido por sus ruedas omnidireccionales, ofrece una gran maniobrabilidad, permitiendo movimientos en cualquier dirección.

        

Componentes:

  • Arduino UNO R3 ATMEGA328P
  • Shield Control de Motores para Arduino
  • 4 motores DC
  • 1 portabaterias 2*18650 de litio con interruptor
  • 2 baterias 2*18650 de litio
  • 2 pares de ruedas mecanum
  • Sensor de ultrasonidos HC-SR04
  • Modulo para conexión bluetooth HC-06
  • Base del robot en el que fijar nuestros componentes

 

Montaje:

Comenzamos fijando los motores a la parte inferior de nuestra base con tornillos y luego colocamos las ruedas en estos. Una vez fijados los motores, procedemos a instalar el portabaterías también en la parte inferior.

Después de terminar con la parte inferior, conectamos el Arduino UNO R3 ATMEGA328P y el Shield Control de Motores, fijándolos a la parte superior de la base. Colocamos el sensor de ultrasonidos HC-SR04 en la parte frontal y el módulo para conexión Bluetooth HC-06 en la parte posterior.

Realizamos las conexiones necesarias entre los sensores, los motores y la fuente de alimentación con el Arduino UNO R3 ATMEGA328P y el Shield Control, asegurándonos de evitar cualquier cortocircuito en todo momento.

Código implementado:

Aparte del código necesario para controlar el robot mediante bluetooth con una aplicación que previamente se ha desarrollado en la pagina de App Inventor 2 también se han añadido varias funciones. Estas funciones son

  • Movimiento y esquivado de objetos autónomo
  • «Modo Drift»
  • Seguimiento de objetos.

Movimiento y esquivado de objetos autónomo.

En esta función, se mide si hay algún obstáculo frente a nuestro robot dentro de un cierto margen. Si no hay obstáculo, el robot avanza hacia adelante hasta que detecta uno a una distancia inferior a la mínima establecida. En ese momento, se detiene y gira hacia la izquierda o la derecha, según lo programado, hasta que deja de detectar el obstáculo o este se encuentra a una distancia superior a la mínima. Entonces, el robot vuelve a avanzar.

A continuación podemos observar el código de la función:

Modo Drift.

Esta función lo único que hace es activar únicamente las ruedas traseras, para de esta manera hacer «Drift».

El código se mostrará más tarde ya que es parte del loop.

Seguimiento de obstáculos.

Esta función hace que el robot avance hasta que detecte un objeto dentro de un margen establecido. Una vez detecta dicho margen si este se mueve hacia delante o hacia atrás el robot hará lo mismo para mantenerse siempre dentro de dicho intervalo. Esta función solo es capaz de realizar el seguimiento en un solo eje, es decir, hacia delante y hacia atrás ya que solo dispone de un sensor de ultrasonidos. Si se le implementaran mas sensores a los lados se podría conseguir que el robot siguiera al objeto en cualquier dirección.

El código de esta función es el siguiente:

 

Para el correcto funcionamiento de las funciones anteriormente descritas es necesario implementar otras como son por ejemplo la de medir distancia con el sensor de ultrasonidos (checkdistance), configurar los motores (Motor) y la propia función del «loop»,

Motor.

Esta función controla la dirección y la velocidad de los motores de un robot.

El código es el siguiente:

Checkdistance.

Esta función, mide el tiempo en microsegundos que tarda el pulso en viajar hasta el objeto y regresar al sensor. Este tiempo se divide entre 58.00 para convertir el tiempo en una distancia en centímetros, la cual devuelve.

Loop.

La función loop() controla el comportamiento de un robot en función de los comandos recibidos a través de una conexión serial.

Si se recibe un valor por el puerto serial esta función lo lee y lo almacena en la variable «valor».

En función del valor de dicha variable y gracias a una serie de » if » nuestro robot realizará un movimiento u otro, o iniciará alguna de las funciones anteriormente descritas.

El código completo del loop es el siguiente:

La aplicación que controla el robot ha sido desarrollada con «App Inventor 2».

La interfaz de la aplicación vista desde un teléfono es la siguiente:

 

Al pulsar sobre el botón de «Modo Drift» aparecerán dos botones adicionales en la parte inferior los cuales están encargados del movimiento de «drift».

Si presionamos en la parte superior izquierda, donde pone «Lista de dispositivos» accederemos a la lista donde aparecen los dispositivos bluetooth cercanos a los cuales te puedes conectar.

En nuestro caso sería el HC-06, presionamos sobre el y una vez conectados se actualizará el estado a «Conectado»

Los bloques necesarios para controlar dicha aplicación de manera adecuada son los siguientes: