lunes, 15 de mayo de 2017

PROGRAMACIÓN EN ARDUINO PARA ROBOT ESQUIVA OBSTÁCULOS BÁSICO

El objetivo de este reto será que nuestro robot sea capaz de avanzar por un espacio esquivando los obstáculos que encuentre en su camino. Para la medida de las distancias a los obstáculos se utilizará el sensor de ultrasonidos.


Las condiciones que se han de cumplir para realizar nuestro reto serán las siguientes:
  • El sensor de ultrasonidos irá anclado al miniservo  (ángulo de giro entre 0º y 180º).
  • El robot avanzará mientras los obstáculos frontales se encuentren a más de 30 cm. Cuando los detecte a esa distancia, se detendrá y emitirá algún aviso (con el zumbador y los leds).
  • El robot deberá mirar a ambos lados (izquierda y derecha), y tomará las medidas necesarias para elegir cuál será la trayectoria más adecuada para continuar la marcha. 
El sensor de ultrasonidos está formado por un emisor (trigger) y un receptor (echo). El emisor lanza un ultrasonido (o pulso) de una duración de al menos10 microsegundos y espera a que dicha señal rebote y sea captada por el receptor. Si medimos el tiempo transcurrido desde que se envió la señal y se recibió en el receptor, y conociendo la velocidad del sonido (343 m/s), la distancia al objeto la podemos calcular con la fórmula:
Distancia = (Velocidad * Tiempo)/2

Es importante tener en cuenta que el tiempo medido por el sensor es lo que ha tardado la señal en ir y volver, y por eso aparece en la fórmula anterior la división por 2.

Para profundizar sobre el funcionamiento del sensor de ultrasonidos se puede acudir a:

http://diwo.bq.com/programando-el-sensor-ultrasonido-en-bitbloq/

Para la realización de este reto como hardware se utilizará el kit ZUM de BQ, y como software el IDE de arduino. El algoritmo de programación se puede ver en el siguiente diagrama de flujo:


Nosotros vamos a programar, como siempre, las funciones para los movimientos de nuestro robot (avanzar, girar derecha, girar izquierda, retroceder y parar),  y también las funciones para poder explorar el entorno con el sensor de ultrasonidos y para emitir una señal de aviso, en el caso de que se encuentre un obstáculo frontalmente a la distancia límite establecida (30 cm). Así, en nuestro caso tenemos que programar en arduino las siguientes funciones:




Todo el proceso de construcción y programación en arduino se puede ver en el siguiente VÍDEO TUTORIAL (en elaboración).