1. Objetivo

¿Quieres que tu robot aprenda a recordar una ruta y recorrerla otra vez por sí mismo? Tal vez hayas jugado a seguir huellas para volver al punto de partida. Parece sencillo, pero pone a prueba la memoria del robot. En esta actividad, programarás el robot CoCube para recordar cada posición visitada y repetir después toda la ruta.

2. Materiales

cocube computer comap

3. Software

MicroBlocks-CoCube

microblocks cocube

4. Conceptos básicos

Bloques Que Vas a Usar

  1. Bloque de lista: En la categoría Datos, hay un bloque llamado lista. Cuando lo arrastras por primera vez, puede contener el elemento predeterminado cat. Haz clic en el pequeño triángulo gris de la izquierda para convertirlo en una lista vacía, como una tabla limpia lista para recibir datos.

list

empty list

  1. Guardar datos en una lista: Cuando tenemos una lista que funciona como almacén, podemos guardar datos ordenadamente y leerlos después.

Pero un almacén no basta. También necesitamos un bloque que coloque cosas dentro. Este bloque añade el nuevo elemento al final de la lista, como una persona que se pone al final de una fila.

Tiene dos entradas:

  • La primera entrada: el elemento que quieres guardar, por ejemplo un número o una letra.

  • La segunda entrada: la lista en la que quieres guardarlo.

append to list

PS: Prueba a colocar un bloque lista dentro de este bloque. ¿Aparece el resultado que esperabas?

  • Leer una lista: Después de guardar datos en el almacén, la siguiente pregunta importante es cómo recuperar un elemento desde una posición concreta.

Es como poner un libro en una estantería y luego encontrarlo por el número de su lugar.

Para eso usamos el bloque elemento de lista. Puede usar un número de posición, o índice, para leer exactamente el dato que necesitas.

read list

  • Inicializar variables: ¿Quieres que el robot recuerde un número o un nombre para usarlo más tarde? Dale una cajita. En programación, esa cajita se llama variable.

¿Cómo encuentras esa cajita?

  • Busca la categoría naranja Variables.

  • En la esquina superior izquierda de esa categoría, haz clic en Crea una variable.

  • Crea la variable.

variable category

create variable

Antes de usar una variable, normalmente le damos un valor inicial claro. Más adelante, cuando el valor cambia, lo actualizamos.

local variable init

Inicialización de una variable local

set variable

Asignar un valor a una variable

PS: Una variable local solo funciona dentro del bloque o script donde se crea.

  • Nombrar un almacén: Si usamos listas normales como almacenes, aparece un problema: no tienen etiqueta. Si hay dos almacenes de lista iguales, ¿cómo sabemos qué datos contiene cada uno? Podemos usar variables para nombrar los almacenes. En la imagen de abajo, el almacén de destino se llama list_x.

named list

5. Dar Memoria al Robot

  1. Crear variables y almacenes: ¿Cómo podemos darle memoria al robot?

Primero necesitamos un lugar donde guardar esa memoria. Creamos almacenes con nombre, es decir, listas, para guardar los datos de coordenadas del robot. También añadimos una variable de índice como contador, para saber siempre cuántas posiciones se han guardado.

create lists

  • Guardar posiciones: Ahora guardamos las huellas del robot, es decir, las coordenadas X e Y del mapa, en dos listas correspondientes. Hay una regla muy importante:

La 1.ª coordenada X debe guardarse con la 1.ª coordenada Y, la 2.ª con la 2.ª, y así sucesivamente. Los datos de la misma posición en las dos listas deben mantenerse emparejados. Si no, los valores X e Y pueden mezclarse al leerlos después.

save position

Las dos coordenadas de un mismo punto aparecen juntas, así que las agrupamos en la memoria. Esto hace que la memoria del robot sea más fácil de manejar.

paired coordinates

También podemos ir un paso más allá: unir las coordenadas X e Y como un solo punto y guardar ese punto completo en una única lista. Así, una sola lista puede guardar todos los puntos, de forma más sencilla.

6. Moverse por la Ruta Recordada

  1. Repetición de ruta: Recuerda lo que aprendiste antes: si le das a CoCube una coordenada de destino, puede moverse hasta allí con rapidez y precisión.

Para repetir una ruta, leemos las coordenadas guardadas en el almacén una por una y usamos el bloque CoCube move to para guiar al robot por ellas en orden.

read route

Aquí leemos la 1.ª coordenada de cada almacén. Esto coincide con la idea de pares de coordenadas: el 1.er valor X y el 1.er valor Y van juntos.

¿Por qué el 1.er elemento?

Porque guardamos las coordenadas en orden. El primer lugar que el robot recordó está al principio de la lista.

  • ¿Cómo podríamos repetir más coordenadas?

Si ya conoces el bloque for con una variable de índice, puede que pienses en obtener la longitud del almacén y leer cada par de coordenadas en orden. Eso funciona.

for index

Hoy usaremos un método nuevo llamado "leer y borrar". Después de leer la 1.ª coordenada, ese elemento ya se usó y no hace falta conservarlo, así que lo borramos.

Después de borrarlo, el antiguo 2.º elemento avanza y se convierte en el nuevo 1.º. Así solo necesitamos leer el elemento 1 cada vez. Con este método, nuestra lista se comporta como una cola: lo que se guardó primero se usa y se elimina primero.

delete first item

Si dejamos "leer y borrar" ejecutándose sin parar, el bucle exterior por siempre nunca terminará. Necesitamos salir en el momento correcto. Usa el bloque sal del bucle. Para encontrarlo, activa primero modo avanzado y luego busca al final de la categoría Control.

exit loop

También podemos usar el bloque repite hasta que para sustituir la combinación de si más por siempre:

repeat until empty

7. Instrucciones

  1. Crear un menú: Para que los controles sean claros, podemos usar la pantalla TFT de CoCube para mostrar un menú sencillo. El bloque personalizado start dibuja este menú. Después usamos los botones físicos A y B del robot CoCube:
  • Pulsa A: empieza Record, para que el robot registre sus posiciones.

  • Pulsa B: empieza Start, para que el robot repita la ruta guardada.

  • Pulsa A + B al mismo tiempo: Restart, que borra todas las coordenadas guardadas y empieza de nuevo.

start menu

  • Restart: Si usaste el método "leer y borrar", Restart puede ser muy sencillo: detener todas las tareas y volver al menú.

ab restart

Si usas el bloque for con una variable de índice, puedes colocar aquí el borrado de memoria:

ab restart delete memory

Usa los bloques explicados para guardar y repetir las posiciones del robot. Añade visualización en TFT y música para que la actividad sea más interesante.

Código de referencia: MicroBlocks CoCube Repetición de ruta

CC-BY-SA

© por CoCube 2024-2026.
Many thanks to Professor José Manuel Ruiz Gutiérrez for helping with the translation!
Este trabajo tiene una licencia CC-BY-SA 4.0.