Después de haber tenido nuestra primera experiencia con el lenguaje de las órdenes, programando a un compañero para que llegase desde un punto a otro de la clase, y tras haber identificado los errores frecuentes que se suelen cometer a la hora de generar código, es el momento de abordar nuestro primer reto de programación:

simular en la pantalla del Scratch el comportamiento de los robots de limpieza

Estos robots tienen como objetivo barrer toda la superficie del suelo evitando colisionar con obstáculos, tales  como paredes, muebles, patas de sillas, mesas…

En el mercado hay dos tipos de robots que difieren en la complejidad del algoritmo de programación de su movimiento:

  • Los más inteligentes, y también de los de precio más elevado, a parte de ir evitando obstáculos y cambiando de dirección en caso de chocarse con alguno, van creando un mapa de la habitación en la que se hallan: ubican obstáculos y los localizan en su mapa para saber en todo momento qué hay y dónde está.
  • Los más simples cuando se encuentran en su camino algún objeto que obstaculice su movimiento cambian su dirección.

Nosotros vamos a imitar el comportamiento de estos últimos, que a pesar de tener menos inteligencia, pueden realizar su objetivo de barrerlo todo con la misma efectividad que los primeros.

Para empezar fijemos el objetivo del robot: “Barrer toda la superficie del suelo de una habitación”

Y traduzcámoslo a nuestra simulación: “Recorrer y cubrir toda la pantalla del Scratch”

El cómo conseguir nuestro objetivo es el algoritmo propiamente dicho. Según la RAE un algoritmo es: “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.”

Hay que hacer hincapié en que hay una gran variedad de soluciones a un mismo problema. Luego habrá más de un algoritmo válido que consiga el objetivo planteado.

En definitiva, queremos que el robot recorra toda la pantalla, por tanto, lo primero que vamos a hacer es elegir una figura u objeto que represente a nuestro robot y le vamos a dar movimiento indefinido con un bucle infinito.

objeto

Para visualizar las zonas por donde va pasando nuestro robot de limpieza vamos a usar la opción sellar del Scratch.

mover

Por ahora nuestro robot avanza hasta que llega a un borde (que simula el límite de la habitación en la que se encuentra) donde se queda parado.

También queremos que cuando toque un borde rebote. Si elegimos Rebotar cuando toque un borde tan sólo vamos a “limpiar” una franja de la pantalla…luego esta no es la solución correcta. En la imagen se muestra le ejecución del código 

mover y rebotar

Una posible solución válida es que, una vez que el robot haya detectado que se ha chocado con un borde de la pantalla, rebotar en una dirección al azar. De esta manera, conseguimos que no siempre realice la misma ruta, como ocurría en el caso anterior.

mover y rebotarazar

La ejecución de estas implementaciones dependen de la posición y orientación inicial que tiene el objeto en la pantalla, lo que se denominan las condiciones iniciales. Si bien es cierto que en nuestra simulación podemos elegir ambas antes de poner en funcionamiento el algoritmo, en una situación real el robot de limpieza se coloca de manera aleatoria en el suelo de la habitación, la cual puede tener formas variadas y además, seguramente, habrá muebles que dificulten la tarea de cubrir todo el área disponible a ser limpiada.

A modo de reto:

  • Dibuja en el escenario objetos, del mismo color, que simulen obstáculos (Mesas, sillas, sofás…).
  • Pon en marcha tu algoritmo.

¿Qué deberías cambiar en el código anterior para que el robot no colisionase con los objetos? 

Este sitio web usa cookies. Más información. ACEPTAR

Pin It on Pinterest

Share This