Saltar al contenido

Semana 5

Hacer que los robots reaccionen

Combina sensores con ciclos y condiciones para que un robot reaccione al mundo por su cuenta.

  • 70 a 85 minutos
  • Misión: Programar un robot que reaccione por su cuenta: que repita en ciclo, revise un sensor y use si/si no para esquivar obstáculos o seguir una línea.

Esta es la gran semana de programación. Los estudiantes toman los sensores de la semana 4 y las secuencias de la semana 3 y los combinan con ciclos y condiciones para que un robot pueda reaccionar solo. Aprenden que un ciclo repite pasos, que un ciclo infinito se repite hasta que alguien lo detiene, y que un ciclo de repetir-hasta se ejecuta hasta que una condición se vuelve verdadera. Conocen las condiciones y las decisiones booleanas (verdadero o falso), y luego usan si y si/si no para elegir acciones. Programan la evasión de obstáculos (repetir en ciclo, leer el sensor de distancia y, si hay algo cerca, girar) y exploran el seguimiento de línea revisando un sensor de luz o de color para dirigirse y mantenerse sobre una línea.

Al terminar esta semana vas a poder

  • Explicar cómo repiten pasos un ciclo, un ciclo infinito y un ciclo de repetir-hasta
  • Describir una condición como una revisión que es verdadera o falsa (booleana)
  • Usar si para ejecutar pasos solo cuando una condición es verdadera, y si/si no para elegir entre dos acciones
  • Programar la evasión de obstáculos repitiendo en ciclo, leyendo un sensor de distancia y girando cuando algo está cerca
  • Explicar cómo el seguimiento de línea revisa una y otra vez un sensor de luz o de color para dirigirse y mantenerse sobre una línea

Aprende

Ciclos: repetir sin volver a escribir

En la semana 3 escribiste todos los pasos uno tras otro. Eso funciona, pero si quieres que el robot revise su sensor cien veces, no vas a querer escribir el mismo paso cien veces. Un ciclo es un bloque que repite los pasos por ti.

Un ciclo de repetición sencillo ejecuta sus pasos un número fijo de veces, como "repite 4 veces: avanza, gira a la derecha" para hacer un cuadrado. El ciclo lleva la cuenta, así que tu programa se mantiene corto.

Por ejemplo: Repetir 4 veces para recorrer un cuadrado; Repetir 3 veces para tocar una puerta; Repetir 10 veces para avanzar poquito a poquito y revisar

Ciclos infinitos y ciclos de repetir-hasta

Un ciclo infinito repite sus pasos una y otra vez y nunca se detiene solo: sigue hasta que detienes el programa. Los robots usan ciclos infinitos para no dejar de observar el mundo, como "por siempre: lee el sensor y reacciona".

Un ciclo de repetir-hasta es distinto: repite sus pasos hasta que una condición se vuelve verdadera, y entonces se detiene y sigue adelante. "Repite hasta que la pared esté cerca: avanza" significa seguir avanzando, pero en cuanto la pared esté cerca, dejar de repetir.

Por ejemplo: Por siempre: no dejar de revisar el sensor de distancia; Repite hasta encontrar la línea: avanza; Repite hasta que se apriete el botón: espera

Las condiciones son verdaderas o falsas (booleanas)

Una condición es una pregunta sobre el mundo que solo se puede responder con sí o no; en programación decimos verdadero o falso. A un valor que solo puede ser verdadero o falso se le llama booleano.

"¿La pared está a menos de 10 cm?" es una condición. Ahorita puede ser verdadera; un segundo después, cuando el robot se mueva, puede ser falsa. Las condiciones son la forma en que un robot convierte la lectura de un sensor en un sí o no bien claro sobre el que puede actuar.

Por ejemplo: ¿La pared está cerca? -> verdadero o falso; ¿El sensor está sobre la línea oscura? -> verdadero o falso; ¿El botón está apretado? -> verdadero o falso

Si y si/si no: elegir qué hacer

Un bloque si ejecuta sus pasos solo cuando su condición es verdadera. "Si la pared está cerca, gira a la derecha" significa que el robot gira únicamente cuando de verdad hay una pared cerca; si no, se salta el giro.

Un bloque si/si no elige entre dos acciones: ejecuta un conjunto de pasos cuando la condición es verdadera y otro distinto cuando es falsa. "Si la pared está cerca, gira a la derecha; si no, avanza" significa que el robot siempre hace una cosa o la otra, según lo que perciba.

Por ejemplo: Si se perdió la línea, gira para volver a encontrarla; Si/si no: pared cerca -> gira, si no -> avanza; Si el objeto es rojo, gira hacia el contenedor rojo

Evasión de obstáculos = ciclo + sensor + si/si no

Ahora junta todo. La evasión de obstáculos es un ciclo infinito que lee el sensor de distancia y usa si/si no para decidir: si hay algo cerca, apártate; si no, sigue avanzando. Como el ciclo se repite muchas veces por segundo, el robot reacciona en el instante en que aparece un obstáculo.

Este es el patrón que hay detrás de los carros que se estacionan solos y de las aspiradoras robot: percibir, decidir y actuar, una y otra vez, sin parar.

Por ejemplo: Por siempre: lee la distancia; si está cerca gira, si no avanza; Una aspiradora robot dando tumbos por un cuarto; Un vehículo explorador rodeando una roca

Seguimiento de línea: revisar sin parar y corregir el rumbo

El seguimiento de línea usa un sensor de luz o de color apuntando al piso. Una línea oscura refleja menos luz que un piso claro, así que el sensor puede distinguir "sobre la línea" de "fuera de la línea". El robot revisa una y otra vez, sin parar, y corrige el rumbo para mantenerse sobre la línea.

Una regla sencilla: si el sensor ve la línea, curva hacia un lado; si no, curva de regreso hacia el otro. El robot nunca avanza perfectamente derecho: va zigzagueando por la orilla de la línea, corrigiendo todo el tiempo. Ese revisar y corregir constante es el comportamiento reactivo.

Por ejemplo: Robots de almacén que siguen cintas pegadas en el piso; Un carrito de fábrica sobre una línea pintada; Repetir hasta la marca final: seguir la línea

Palabras que hay que saber

Ciclo:
Un bloque que repite uno o varios pasos en lugar de que los escribas una y otra vez.
Ciclo infinito:
Un ciclo que sigue repitiendo sus pasos una y otra vez hasta que detienes el programa.
Repetir-hasta:
Un ciclo que repite sus pasos hasta que una condición se vuelve verdadera, y entonces se detiene y sigue adelante.
Condición:
Una revisión sobre el mundo, como "¿está cerca la pared?", que siempre es verdadera o falsa.
If:
Un bloque que ejecuta sus pasos solo cuando su condición es verdadera, y los salta cuando es falsa.
Si/si no:
Un bloque que ejecuta un conjunto de pasos cuando la condición es verdadera y otro conjunto distinto cuando es falsa.
Booleano:
Un valor que solo puede ser una de dos cosas: verdadero o falso. Las condiciones dan una respuesta booleana.
Evasión de obstáculos:
Un comportamiento en el que el robot repite en ciclo, lee un sensor de distancia y se aparta cuando algo está cerca.
Seguimiento de línea:
Un comportamiento en el que el robot revisa constantemente un sensor de luz o de color y se dirige para mantenerse sobre una línea marcada.
Comportamiento reactivo:
Cuando un robot cambia lo que hace según lo que percibe, en tiempo real, en lugar de seguir una lista fija.

Cuídate

Lee esto antes de construir o poner a andar un robot esta semana.

  • Caution:Mantén los dedos, el cabello y la ropa suelta lejos de las ruedas en movimiento mientras un robot que reacciona avanza, porque cambia de dirección por su cuenta.
  • Caution:Pega bien planas las líneas de cinta y las piezas de la pista de obstáculos, y despeja el piso para que nadie se tropiece durante las corridas.
  • Note:Guarda tu programa de bloques con frecuencia para que al recargar el navegador no se pierda tu trabajo.

Manos a la obra

Elige tu ruta

Puedes hacer este curso con un kit de robótica, con el simulador del navegador, o sin dispositivos, con materiales de casa. Elige una: puedes cambiar cuando quieras sin perder tu trabajo.

Programa de evasión de obstáculos

Kit de robótica

Programar un robot para que repita en ciclo, lea un sensor de distancia y use si/si no para girar cuando algo está cerca y avanzar cuando el camino está libre.

  • El patrón siempre es el mismo: ciclo infinito, leer el sensor de distancia, y luego si/si no: si hay algo cerca, gira; si no, avanza.
  • Primero decide tu regla de cercanía (por ejemplo, "a menos de 10 cm cuenta como cerca"). Después arma el ciclo para que el robot siga reaccionando todo el tiempo que esté funcionando.

Esquiva obstáculos reales con un robot de kit

Necesitas: Un kit de robótica con sensor de distancia, Cajas o libros para una pista de obstáculos, Hoja de planeación del programa de bloques

Pasos

  1. 1Acomoda algunos obstáculos (cajas o libros) con huecos por los que el robot pueda pasar.
  2. 2Arma un ciclo infinito. Dentro de él, lee el sensor de distancia.
  3. 3Agrega un si/si no: si la distancia es menor que tu valor de cercanía, gira; si no, avanza un poco.
  4. 4Ejecútalo y observa al robot repetir el ciclo, percibir y esquivar los obstáculos por su cuenta.

Así se ve el éxito: El robot avanza por su cuenta y se aparta cada vez que un obstáculo se acerca, sin que nadie lo maneje.

Fíjate en:
  • El programa usa un ciclo infinito (o de repetición)
  • El programa lee el sensor de distancia dentro del ciclo
  • El programa usa si/si no para girar cuando hay algo cerca y avanzar cuando está libre
  • El robot esquiva al menos un obstáculo por sí solo

Seguridad: Mantén los dedos lejos de las ruedas mientras el robot avanza. Dale al robot un piso despejado, sin cables ni escalones.

Si no funciona

El robot se va derechito contra los obstáculos
- Revisa que el si de verdad esté leyendo el sensor, y que tu valor de cercanía sea mayor que la lectura cuando hay una pared justo enfrente.
El robot gira sobre su propio eje sin parar
- Puede que tu valor de cercanía sea tan grande que siempre crea que hay algo cerca; bájalo, o agrega un avance corto en el si no.

Ve más lejos: Agrega una segunda regla con si/si no para que el robot a veces gire a la izquierda y otras a la derecha, y así pueda salir de las esquinas.

Exploración del seguimiento de línea

Kit de robótica

Usar un sensor de luz o de color con repetir-hasta y si para que un robot se mantenga sobre una línea marcada.

  • El seguimiento de línea es un comportamiento de revisar sin parar: una y otra vez, lee el sensor de luz o de color y corrige el rumbo para quedarte sobre la línea.
  • Con una regla sencilla basta: si el sensor está sobre la línea, curva hacia un lado; si no, curva hacia el otro. Métela en un ciclo de repetir-hasta que termine cuando el robot llegue a la marca final.

Sigue una línea de cinta con un sensor de luz o de color

Necesitas: Un kit de robótica con sensor de luz o de color, Una línea de cinta oscura sobre un piso claro, Hoja de planeación del programa de bloques

Pasos

  1. 1Pega una línea de cinta oscura sobre un piso claro, con una marca clara de inicio y otra de final.
  2. 2Apunta el sensor de luz o de color hacia el piso y revisa su lectura sobre la línea y fuera de la línea.
  3. 3Arma un ciclo de repetir-hasta (hasta la marca final) con un si adentro: si el sensor está fuera de la línea, corrige el rumbo hacia ella; si no, sigue curvando por la orilla.
  4. 4Ejecútalo y observa al robot zigzaguear a lo largo de la línea y detenerse al final.

Así se ve el éxito: El robot sigue la línea de cinta, corrigiendo de lado a lado conforme avanza, y se detiene en la marca final.

Fíjate en:
  • El programa lee el sensor de luz o de color dentro de un ciclo
  • El programa usa un si (o un si/si no) para corregir el rumbo según la lectura
  • El robot se mantiene más o menos sobre la línea en la mayor parte de su recorrido
  • El robot se detiene en la marca final

Seguridad: Mantén los dedos lejos de las ruedas durante las corridas. Pega la línea bien plana para que nadie se tropiece.

Si no funciona

El robot pierde la línea de inmediato
- Vuelve a revisar tus lecturas sobre la línea y fuera de ella y pon el umbral entre las dos; tienen que ser claramente distintas.
El robot da vueltas en círculos
- Haz que los giros de corrección sean pequeños; los giros grandes se pasan de la línea cada vez.

Ve más lejos: Agrégale una curva o una bifurcación a la línea y ajusta la regla de dirección para que el robot la siga siguiendo.

Programa el robot

Build a program from blocks, then run it on the simulator. On the kit path, use the same steps in your robot's app; unplugged, act the blocks out on a floor grid. Your program saves on this device.

Programa de evasión de obstáculos

Un ciclo infinito que lee el sensor de distancia y usa si/si no para girar cuando hay algo cerca y avanzar cuando el camino está libre.

Listo

Agregar un bloque

Eventos y ejecución

Movimiento

Control

Salida

Variables y contadores

Ninguna todavía.

Tu programa

  • Avanzar
Columna 1, fila 1Columna 2, fila 1: muroColumna 3, fila 1Columna 1, fila 2Columna 2, fila 2Columna 3, fila 2Goal zone at column 3, row 1Robot at column 1, row 1
  • Robot (la flecha apunta hacia donde mira)
  • Zona de meta (contorno punteado)
  • Muro (gris, con una X)

Mapa: Una cuadrícula de 3 por 2. El robot arranca en la columna 1, fila 1, mirando hacia la derecha. La zona de meta está en la columna 3, fila 1. Hay 1 muro.

Listo.

Listo para ejecutar. · 0 steps

Estado del robot

Columna
1
Fila
1
Mirando hacia
la derecha
Distancia al frente
0 casillas
Contacto
presionado
Sobre una línea
no
Luz
80
En la zona de meta
no
Choques
0
Pasos
0

Robot en la columna 1, fila 1, mirando hacia la derecha. Distancia al frente: 0 casillas. Contacto: presionado. Sobre una línea: no. Luz: 80. Fuera de la zona de meta.

Salida del registro

Todavía no hay nada registrado.

  • Heads up: This program has no safe stop behavior. Add a safe stop so the robot stops when it is done or blocked.

Programa de seguimiento de línea

Un ciclo de repetir-hasta que lee el sensor de luz o de color en cada paso y usa un si para volver a colocarse sobre la línea, deteniéndose en la marca final.

Listo

Agregar un bloque

Eventos y ejecución

Movimiento

Control

Salida

Variables y contadores

Ninguna todavía.

Tu programa

  • Avanzar
Columna 1, fila 1: líneaColumna 2, fila 1: líneaColumna 3, fila 1: líneaColumna 4, fila 1: líneaColumna 5, fila 1: líneaGoal zone at column 5, row 1Robot at column 1, row 1
  • Robot (la flecha apunta hacia donde mira)
  • Zona de meta (contorno punteado)
  • Línea (franja punteada)

Mapa: Una cuadrícula de 5 por 1. El robot arranca en la columna 1, fila 1, mirando hacia la derecha. La zona de meta está en la columna 5, fila 1. Una línea recorre 5 casillas.

Listo.

Listo para ejecutar. · 0 steps

Estado del robot

Columna
1
Fila
1
Mirando hacia
la derecha
Distancia al frente
4 casillas
Contacto
libre
Sobre una línea
Luz
20
En la zona de meta
no
Choques
0
Pasos
0

Robot en la columna 1, fila 1, mirando hacia la derecha. Distancia al frente: 4 casillas. Contacto: libre. Sobre una línea: sí. Luz: 20. Fuera de la zona de meta.

Salida del registro

Todavía no hay nada registrado.

  • Heads up: This program has no safe stop behavior. Add a safe stop so the robot stops when it is done or blocked.

Predice

Commit to a guess before you test - then see how close you were. Your predictions save automatically.

Cómo comprobarlo: Ejecuta el programa frente a una pared tres veces y compara lo que el robot hace en realidad con tu predicción.

Cómo comprobarlo: Saca la lectura del sensor del ciclo, ejecútalo y observa si el robot todavía reacciona a los obstáculos que aparecen.

Prueba y mejora

Prueba de confiabilidad de la evasión de obstáculos

Coloca el robot frente a un obstáculo y ejecuta el programa. Anota si se apartó a tiempo. Repítelo tres veces desde el mismo punto de partida.

Qué medir: En cuántos de los tres intentos el robot logró esquivar el obstáculo

Try¿Esquivó el obstáculo? (S/N)Qué fue lo que hizo

Comprobación de conocimientos

Responde estas preguntas para comprobar que entiendes los ciclos, las condiciones y cómo reaccionan los robots.

  1. 1. Decide si esta afirmación es verdadera o falsa.

    Un ciclo infinito se detiene solo después de unos segundos.

  2. 2. ¿Qué hace un ciclo en un programa?

  3. 3. ¿Cuál es la diferencia entre un ciclo infinito y un ciclo de repetir-hasta?

  4. 4. Una condición como "¿está cerca la pared?" solo puede ser:

  5. 5. ¿Qué hace un bloque si/si no?

  6. 6. ¿Cómo funciona la evasión de obstáculos?

0 de 6 respondidas

Reflexiona

Tus reflexiones se guardan solas.

Lo que viene la próxima semana

La próxima semana tu robot que reacciona no siempre se va a portar bien, así que vamos a aprender a depurar y a lograr que funcione de manera confiable todas las veces.

  • Guarda tus programas de evasión de obstáculos y de seguimiento de línea; la próxima semana vamos a romper y arreglar versiones de ellos.
  • Fíjate en alguna vez que tu robot reaccionó mal hoy: ese es un error que puedes llevarte a la semana 6.
  • Carga tu kit o guarda el simulador en tus marcadores.

Termina la semana 5

Completa esto para dar la semana por terminada y desbloquear la siguiente:

  • Armar un programa de evasión de obstáculos con un ciclo, una lectura de sensor y un si/si no (not done yet)
  • Explorar el seguimiento de línea con un sensor de luz o color y un ciclo (not done yet)
  • Hacer tres intentos de reacción y registrar los resultados (not done yet)
  • Obtener al menos 4 de 5 en la comprobación de conocimientos (not done yet)
  • Escribir tu reflexión (not done yet)