Cómo construir un robot micromouse que resuelve un laberinto

Autor: Oscar Gonzalez

Cómo construir un robot micromouse que resuelve un laberinto

Tiempo de lectura: 34 minutos

Aprende todo lo que necesitas para montar tu propio robot resuelve laberintos, seleccionar los componentes y algunos trucos más

Cómo construir un robot micromouse que resuelve un laberinto

  • 35

0 Intermedio

Sensores de distancia

Existen multitud de sensores de distancia y cada uno de ellos usa una tecnología diferente para detectar la distancia.

En esta página verás las diferentes tecnologías que usan los sensores de distancia con sus ventajas e incovenientes.

Eso lo podrás aplicar luego a tu robot para detectar las paredes y en este caso nos centraremos en 3 grandes categorías:

  • Sensores de distancia por ultrasonidos
  • Sensores de distancia por láser
  • Sensores de distancia por infrarrojos

Cada uno de ellos tiene sus ventajas e inconvenientes y deberás decidir cuál debes usar en función de las características que necesitas, así como lo que te quieras gastar en tu robot!

Sensores de distancia por ultrasonidos

Ahora te explicaré cómo funciona un sensor de distancia por ultrasonidos y verás que su funcionamiento es muy sencillo.

Como su nombre lo indica, los sensores que funcionan por ultrasonidos miden la distancia mediante el uso de ondas ultrasónicas. O lo que es lo mismo, emiten un sonido en una frecuencia ultrasónica y la recibe con un micrófono que funcione a la misma frecuencia.

El emisor emite una onda ultrasónica y con el micrófono recibe la onda reflejada que retorna desde el objeto (rebote). Los sensores ultrasónicos miden la distancia al objeto contando el tiempo entre la emisión y la recepción.

(Imagen: https://eloctavobit.com/arduino/sensor-ultrasonico-hc-sr04-y-arduino/)

(Imagen: https://eloctavobit.com/arduino/sensor-ultrasonico-hc-sr04-y-arduino/)

Como puedes imaginar, la velocidad del sonido es una constante fija y, por lo tanto, si cuentas el tiempo que tarda el sonido emitido en llegar de nuevo al receptor, puedes calcular la distancia al objeto.

Sabemos que la velocidad del sonido es de 343 m/s (metros por segundo), aunque también depende de la humedad del ambiente y la altitud, pero ponemos basarnos en esta constante igualmente.

Sabiendo esto, veamos ahora cómo averiguar cuanto tarda el sonido en recorrer 1 centímetro.

Podemos utilizar la fórmula de la velocidad, que es la distancia dividida por el tiempo, y reorganizarla para calcular el tiempo:

v = d / t

Donde:

  • v es la velocidad del sonido
  • d es la distancia que recorre el sonido
  • t es el tiempo que tarda el sonido en recorrer esa distancia

Reorganizando la fórmula para resolver el tiempo, obtenemos:

t = d / v

Sustituyendo los valores conocidos en la fórmula, tenemos:

t = 0.01 m / 343 m/s = 0.000029 s

Por lo tanto, el sonido tarda aproximadamente 0.000029 segundos (29 microsegundos), en recorrer 1 centímetro.

Recuerda que es importante tener en cuenta que este cálculo asume condiciones ideales y que la velocidad del sonido puede variar con factores como la temperatura, la presión y la humedad. No es lo mismo estár en Galicia en pleno invierno, que en Sevilla en pleno Agosto. 

Modelos de sensores de ultrasonidos

Uno de los más conocidos es el sensor SR-04, que está ampliamente documentado y se usa mucho con Arduino, pero también hay otros modelos.

Sensor de distancia por ultrasonidos HC-SR04

Sensor de distancia por ultrasonidos HC-SR04

Sensor de distancia por ultrasonidos HC-SR04, capaz de detectar objetos a una distancia de entre 2cm - 400cm. Compatible 100% con Arduino.

1,80€

Comprar


Sensor de proximidad por ultrasonidos LV-EZ3

Sensor de proximidad por ultrasonidos LV-EZ3

Éste sensor por ultrasonidos de la casa Maxbotix proporciona una forma muy cómoda y fácil de localizar obstáculos con una distancia de hasta 6,45 metros de distancia.

35,90€

Comprar


Sensor ultrasónico resistente al agua JSN-SR04T

Sensor ultrasónico resistente al agua JSN-SR04T

Sensor de ultrasonidos resistente al água con placa amplificadora

14,85€

Comprar


Ventajas y desventajas de los sensores de ultrasonidos

Los sensores de ultrasonidos son económicos y son muy fáciles de utilizar. Por ejemplo, el HC-SR04 devuelve un pulso con una duración equivalente a la distancia detectada. Eso es muy fácil de interpretar con Arduino, ya que puedes usar la función pulseIn() para medir el ancho del pulso.

Por otro lado, estos sensores son bastante aparatosos y son lentos debido a su propio funcionamiento. No es imposible detectar pareces de un laberinto con este tipo de sensores, pero no se suelen usar en este contexto.

Además, los sensores de ultrasonidos son propensos a errores debido a los rebotes del sonido y eso puede afectar la precisión.

Sensores de distancia por láser

Los sensores de distancia por láser, también llamado TOF (Time Of Flight) en lugar de utilizar sonido para calcular el tiempo de rebote, utilizan la luz.

El funcionamiento es el mismo que el sensor de ultrasonidos: se envía una luz láser, en cuanto golpea con un obstáculo el láser vuelve por rebote y el sensor lo captura. Como es obvio, la luz puede viajar mucho más rápido que el sonido y puedes detectar distancia mucho más rápido. 

Imagen: https://robots-argentina.com.ar/didactica/vl53l0x-sensor-de-distancia-que-mide-por-la-velocidad-de-la-luz-time-of-fly/

Imagen: https://robots-argentina.com.ar/didactica/vl53l0x-sensor-de-distancia-que-mide-por-la-velocidad-de-la-luz-time-of-fly/

También es cierto que estos sensores normalmente tienen una distancia de detección corta, que puede ser desde unos milímetros a unos pocos metros, dependiendo el modelo.

Te pongo algunos ejemplos de sensores láser:

Sensor de distancia láser VL53L0X

Sensor de distancia láser VL53L0X

Sensor de distancia láser muy preciso basado en el chip VL53L0X con bus I2C con un rango de 50 a 1200mm

21,95€

Comprar


LIDAR-Lite v3

LIDAR-Lite v3

Sensor láser LIDAR de Garmin que puede medir distancias de hasta 40 metros con una precisión de 2.5cm.

129,95€

Comprar


Sensor de distancia láser VL6180X

Sensor de distancia láser VL6180X

Sensor de distancia láser muy preciso basado en el chip VL6180X con bus I2C con un rango de 5 a 100mm

16,50€

Comprar


Sensor de distancia por pulsos (130cm)

Sensor de distancia por pulsos (130cm)

Sensor de distancia que funciona con pulsos similares a los de un servomotor. Puede medir una distancia de hasta 130cm

17,95€

Comprar


Como puedes ver, los sensores láser son más pequeños (algunos) y como hemos dicho, puede medir distancia de una forma muy rápida y precisa. Algunos de ellos, como el VL6180X, tienen una distancia mínima de detección de 5 milímetros.

Estos sensores son digitales y no tienen partes móviles. Eso es interesante porque tu robot va a recibir golpes, de eso puedes estar seguro.

Debes tener en cuenta que estos sensores tienen punto focal muy estrecho. Eso quiere decir que apuntan a un sitio muy concreto y en el caso de querer detectar pareces en un laberinto, necesitas montar varios de ellos para saber lo que hay de frente y en los laterales.

En el caso de los VL6180X y VL53L0X, funciona por I2C, pero tienen una dirección fija que no puedes cambiar (en realidad tienen un registro para eso, pero no está presente en la librería de Arduino).

¿Entonces no puedes usar varios sensores láser al mismo tiempo?

Bueno, digamos que no puedes hacerlo directamente, sino que tienes dos opciones. La primera es cambiar a cada sensor la dirección I2C por una diferente.  Según la documentación de ST, hay que hacerlo a cada vez que se alimenta el sensor, ya que el cambio no es permanente.

Y la segunda opción es usar un multiplexor de bus como el TCA9548A.

Otra cosa importante con este tipo de sensores de distancia es que el objeto donde rebota la luz debe permitir rebote de luz. Una pared negra, por ejemplo, será mucho más difícil de medir que una pared blanca. La buena noticia es que los laberintos tienen paredes blancas.

Sensores de distancia por infrarrojos

Te adelanto que, aunque no son los mejores ni los más precisos, los sensores infrarrojos son los que más se utilizan en las competiciones de robots resuelve laberintos.

Su funcionamiento es exactamente el mismo que he mencionado antes y miden el rebote de la luz infrarroja sobre un objeto. Una diferencia es que suelen ser sensores analógicos. Eso quiere decir que ofrece un valor proporcional a la distancia que puedes medir directamente con un pin analógico de Arduino.

Además, pueden ser tan sencillos como un simple diodo LED con un fototransistor.

Imagen: https://tutordelectronica.weebly.com/sensores-infrarrojos/sensores-infrarrojos

Imagen: https://tutordelectronica.weebly.com/sensores-infrarrojos/sensores-infrarrojos

En los robots que resuelven laberintos, los competidores suele montar directamente eso: Un LED con un fototransistor.

Eso tiene varias ventajas, como el ahorro de peso, simplicidad de montaje y poder colocar tantos como sean necesarios en poco espacio. Pero también puedes usar sensores ya hechos que te harán la vida más fácil.

Si solo quieres montar un circuito básico, este esquema de abajo es un buen comienzo:

Ejemplo de conexión de un sensor IR

Ejemplo de conexión de un sensor IR

Ten en cuenta que, como mínimo, necesitas detectar la distancia por delante y en los laterales. Y digo como mínimo, ya que muchos robots utilizan además dos parejas más de sensores orientados en un ángulo de 45 grados para poder detectar huecos y pareces que estén más adelante.

Este sería el esquema de posición de los sensores de un robot que use ese sistema:

Posición de los sensores de distancia de un robot micromouse

Posición de los sensores de distancia de un robot micromouse

Fíjate que como mínimo necesitas los sensores 1, 3 y 5. Opcionalmente los sensores 2 y 4.

¿Pero qué hacen esos sensores extra y por qué están ahí?

Te lo explicaré con un esquema sencillo donde tenemos nuestro micromouse dentro del laberinto con una pared a la izquierda, otra de frente y una probable apertura a la derecha.

Detección temprana de paredes de un robot micromouse (no está a escala)

Detección temprana de paredes de un robot micromouse (no está a escala)

Fíjate que mientras avanza el robot, el sensor 5 todavía no sabe que hay una pared abierta a la derecha porque solo detecta en horizontal. Sin embargo, el sensor 4 sí que puede saberlo incluso antes de que el robot llegue a su altura.

Eso puede ser una ventaja competitiva importante, ya que si ajustas la programación para anticiparte, podrías eventualmente hacer giros a 45 grados en lugar de 90 grados y recorrer más distancia en un menor tiempo.

Recuerda que en la competición de laberinto, gana no solo quien resuelva el laberinto, sino el que lo haga en el menor tiempo posible.

Ejemplo de giros en diagonal para ganar tiempo (Imagen: https://www.semanticscholar.org)

Ejemplo de giros en diagonal para ganar tiempo (Imagen: https://www.semanticscholar.org)

Sobre todo, si es tu primer robot, puedes perfectamente tener solo 3 sensores (de frente, y laterales) y funcionará bien. Pero si quieres competir, deberías pensar seriamente en implementarlos todos.

También debes tener en cuenta de que las dimensiones de tu robot deberán ser pequeñas, ya que debe poder pasar entre celdas en diagonal.

Claro que si pones todos estos sensores y tu robot no es capaz de hacer giros a 45 grados, tampoco valdrá de nada. Si montas todos los sensores (5 en total), deberás hacer tu programación para eso y será algo más complejo.

¿Qué sensores debo usar para un robot resuelve laberintos?

Bueno, ya hemos hablado de los tres grandes tipos de sensores de distancia y tienes que encontrar tu propio compromiso entre características y funcionalidades.

Uno de los sensores infrarrojos más populares y usados en robótica es el Sharp GP2Y0:

Sensor de proximidad Sharp GP2Y0A21YK

Sensor de proximidad Sharp GP2Y0A21YK

Sensor de proximidad por infrarrojos de Sharp.

16,20€

Comprar


Es un sensor muy sencillo de utilizar, económico y no demasiado aparatoso. Además, podrás usar varios en tu robot, ya que solo necesitas una entrada analógica libre por cada uno que montes.

También existen otros sensores de distancia similares, cada uno con sus pros y sus contras. Hasta existen algunos ya montados con varios sensores alrededor que te pueden ayudar mucho y facilitarte el montaje de tu robot.

Sensor de distancia Wide FOV 180º (OPT3101)

Sensor de distancia Wide FOV 180º (OPT3101)

Sensor de distancia infrarrojo I2C con sensores de gran ángulo de 180 grados ToF basado en el chip OPT3101 capaz de medir hasta 1 metro

37,50€

Comprar


Sensor de distancia 2-15cm - Sharp GP2Y0A51SK0F

Sensor de distancia 2-15cm - Sharp GP2Y0A51SK0F

Sensor de distancia Sharp con un rango de 2 a 15 centímetros con salida analógica

12,50€

Comprar