Saltar al contenido
Nivel avanzado

Esquivar obstáculos con el sensor ultrasónico

Optimizar el robot para esquivar objetos

Para este nivel construimos otro modelo de robot, mejor preparado para maniobrar y esquivar. Las instrucciones para armarlo se descargan en línea (por ejemplo, en static.robobloq.cn/wiki/03.pdf).

Segundo modelo del robot armado con el kit: chasis con orugas y ruedas, la controladora en el centro y, montado al frente y abajo, un sensor ultrasónico con sus dos cilindros característicos (emisor y receptor).
El robot reconfigurado del nivel avanzado (figura original): un segundo modelo con el sensor ultrasónico montado al frente para detectar obstáculos.

Conectar el sensor ultrasónico al puerto 6

Para que el robot pueda esquivar obstáculos, le conectamos el sensor ultrasónico al puerto número 6 de la placa.

El sensor ultrasónico mide distancias: emite un pulso de sonido de alta frecuencia y mide el tiempo que tarda en volver tras rebotar en un obstáculo. Ese tiempo es proporcional a la distancia al objeto, así que el robot puede “saber” qué tan cerca tiene algo adelante.

También vamos a usar el zumbador, que ya viene integrado a la placa y sonará cuando el sensor detecte un obstáculo. Como todo en este kit, ninguno de los dos requiere cablear: el sensor se enchufa a su puerto y el zumbador ya está en la controladora.

Detectar la distancia y frenar ante un obstáculo

El robot debe esquivar los objetos cuando estén a una distancia que definimos nosotros. El bloque que entrega la distancia medida está en la categoría Sensor, y para comparar usamos el bloque «mayor que» de la categoría Operadores.

La regla es: avanzar solo si la distancia medida es mayor a 40 cm; en caso contrario, frenar. Como ahora el robot tiene que reaccionar a lo que mide, conviene una velocidad moderada: usamos 50 (no la máxima), para que le dé tiempo a detectar y maniobrar.

Avanzar si hay más de 40 cm libres; si no, frenar
  1. Por siempre
  2. Si «distancia del sensor (puerto 6) > 40 cm» entonces
  3. Avanzar a velocidad 50
  4. Si no
  5. Detener el movimiento del motor a bordo

Elegir una dirección al azar

Cuando el robot detecta un objeto, lo hacemos girar aleatoriamente a la izquierda o a la derecha, para que no quede trabado y busque una salida distinta cada vez. Usamos el bloque «Número aleatorio entre» (categoría Operadores).

Como el bloque elige entre números y no entre direcciones, le asignamos un valor a cada una: el 1 hará que gire a la izquierda y el 2, a la derecha. Después de cada giro, agregamos una espera breve (por ejemplo, 0,3 segundos) para darle tiempo a completar el giro antes de seguir.

Al frenar, girar hacia un lado elegido al azar
  1. Si no (hay obstáculo): detener el movimiento
  2. Guardar en una variable un número aleatorio entre 1 y 2
  3. Si el número es 1 → girar a la izquierda
  4. Si el número es 2 → girar a la derecha
  5. Esperar 0,3 segundos (dar tiempo al giro)

Simulación del comportamiento

Una máquina de estados en TypeScript reproduce el comportamiento que programás por bloques en el kit. No ejecuta el software del kit: es una representación fiel de lo que hará el dispositivo real.

Simulación lista. Presioná «Iniciar» para arrancar la secuencia.

Programar el zumbador de aviso

Por último, hacemos que el robot avise con un sonido cada vez que detecta un obstáculo. Para que suene el zumbador usamos el bloque «Jugar Tono», que permite elegir la nota musical MIDI y su duración.

Las duraciones posibles se expresan en fracciones de “tiro” (equivalente a un segundo): la mitad (0,5 s), un cuarto (0,25 s), un octavo (0,125 s), un tiro entero (1 s) o doble tiro (2 s). El sonido se ejecuta luego de que el robot frena, junto con la maniobra de esquive.

Programa completo del nivel avanzado
  1. Por siempre
  2. Si «distancia (puerto 6) > 40 cm»: avanzar a velocidad 50
  3. Si no: detener el movimiento del motor a bordo
  4. Jugar Tono: reproducir una nota MIDI de aviso
  5. Número aleatorio entre 1 y 2 → girar a la izquierda o a la derecha
  6. Esperar 0,3 segundos (dar tiempo al giro)

Cierre del proyecto

Con este nivel completaste el recorrido del proyecto: armaste el robot, lo programaste para seguir un camino pautado, le enseñaste a llevar y mostrar un mensaje y, finalmente, lo hiciste autónomo, capaz de detectar y esquivar obstáculos por sí solo con el sensor ultrasónico y el zumbador. En el camino trabajaste nociones de mecánica (el ensamble), de movimiento (la relación entre velocidad y tiempo) y de programación por bloques (secuencias, condiciones, bucles, azar y lectura de sensores). Si querés seguir, podés sumarle un sensor seguidor de líneas, programarle melodías o controlarlo por Bluetooth desde la app de Robobloq.

Evidencia de cierre

Al terminar este nivel, esto tiene que estar funcionando:

  • El robot está reconfigurado según el segundo modelo del kit y tiene el sensor ultrasónico conectado al puerto 6.
  • El robot avanza a velocidad moderada (50) mientras el sensor mide más de 40 cm de distancia libre, y frena cuando detecta un obstáculo más cerca.
  • Al detectar un obstáculo, el robot elige al azar girar a la izquierda o a la derecha (con el bloque de número aleatorio) y espera un instante para completar el giro antes de seguir.
  • El zumbador integrado emite un tono de aviso cada vez que el robot detecta un obstáculo y frena.