Está en la página 1de 59

Robótica 102

Guía para el docente


Versión 3
1. Acerca del curso
Descripción del curso
El curso Robótica 102 es la continuación al curso acelerado (también llamado Robótica
101) para el aprendizaje de temas de STEM y programación, utilizando un entorno basado
en la física y la gamificación. El curso se desarrolla en el entorno de aprendizaje de
robótica en línea de CoderZ, que proporciona un editor de código visual en línea,
simulación física, contenido incorporado y gestión de clases.
CoderZ brinda un ambiente de aprendizaje informal y efectivo, que ayuda a los alumnos a
practicar situaciones y desafíos de la vida real en un entorno seguro. Esto provee una
experiencia de aprendizaje más participativa, facilitando una mejor retención del
conocimiento: al completar las misiones, los estudiantes aprenderán el contenido del curso
de manera efectiva, a la vez que se divierten.
El plan de estudios de Robótica 102 incluye:
Física:
Cinemática: velocidad, aceleración
Dinámica: Fuerzas, impulso, palancas
Física y sensores
Sistemas de control:
Motores
Control de velocidad
Detectar y evitar obstáculos
Control de circuito cerrado/abierto
Máquinas de estado
Software:
Tipos de datos y variables
Operadores matemáticos y lógicos
Condiciones y bucles
Matemática:
Representación gráfica
Geometría y estereometría: distancia, ángulos, coordenadas.
Cognición espacial
Optimización
El curso consta de 15 sesiones, que se ajustan a lecciones de 1 hora cada una. La
duración del plan de estudios puede variar según la experiencia previa del alumno, el
tiempo invertido en la clase y en el hogar, y el tiempo que el maestro dedica a explicar
temas teóricos en clase. Desde su cuenta de maestro, el docente puede controlar el
progreso de sus estudiantes al establecer la disponibilidad de segmentos del programa
para ellos.
El curso Robótica 102 incluye:
● 14 unidades de lecciones, actividades y tareas.
● Recursos para docentes, incluyendo guías, presentaciones y soluciones.
● Soporte en línea y base de conocimientos con artículos detallados.
2. Descripción general del curso

Sesión Tema Descripción

1 Planicies y Introducción al control de robots en un entorno que imita la física


pendientes I real.
Dinámica: distancia, velocidad y aceleración.

2 Planicies y Fuerzas y su influencia en el robot: motor y gravitación.


pendientes II Ley de Newton 2: aceleración, masa y fuerzas
Representación gráfica

3 Control de Comprender el control de velocidad y la retroalimentación:


velocidad de control de circuito cerrado
crucero Declaración condicional Si/Sino (If/else)

4 Curvas Giro de pivote y autogiro utilizando dos motores


peligrosas I Sensor giroscópico

5 Curvas Giro suave


peligrosas II Comprender las ventajas y desventajas de los distintos giros

6 Garabatos con Aplicar lo aprendido y completar desafíos creativos


distancia

7 Detectar o evitar Reconocer y evitar objetos


objetos Bucles repetir
Sensor táctil y ultrasónico

8 Variedad de Variables con datos de tipo entero o doble


obstáculos por Operadores matemáticos: +, -, *, resto (módulo)
delante
Realización de misiones en un entorno no determinista.

9 Misiones de Articulaciones robóticas


radar Control de la ubicación de las articulaciones de sensores para
escanear el entorno
10 Código de El sensor de color
colores Variables booleanas
Operadores lógicos: no, y, o (not, and, or)

11 Repetir Bucles anidados y sus usos


nuevamente Aplicar lo aprendido en misiones de desafío

12 Manipulación Uso del brazo magnético de Ruby para interactuar con los
magnética objetos de la escena y reorganizarlos.

13 Lógica de Seguir una línea en forma precisa


seguimiento de Control On-Off
líneas
Control proporcional

14 Bloques precisos El codificador y su utilidad para medir distancias


Giroscopio de eje X
Alinear una línea usando dos sensores de colores y control
proporcional
Formato de las sesiones
Objetivos de aprendizaje
Cada sesión abarca diferentes temas y objetivos de aprendizaje, basándose en
experiencias previas y lecciones aprendidas.
En realidad, el juego entero se basa en ellas. Los objetivos de aprendizaje se indican al
comienzo de cada sesión.

Recursos
Hemos desarrollado diferentes recursos para cada sesión, para ser utilizados en clase, que
incluyen presentaciones, tutoriales de video y juegos, para garantizar la comprensión del
material estudiado.

Guía para el docente


La guía para el docente describe el curso, incluyendo información general:
descripción, pautas generales y recursos, presentando una descripción de
cada sesión, con objetivos de aprendizaje, temas principales, énfasis en
los principios utilizados y notas para el profesor, como acompañamiento de
las presentaciones.
Busque el enlace de la Guía para el docente, en la tarjeta de Robótica 102.

Presentación
Cada sesión está guiada por una presentación que abarca la sesión completa (teoría y
práctica), incluyendo:
● Marco teórico
● Ejemplos y muestras de código
● Guías de discusión
● Actividades “¡Manos a la obra!”
● Notas para el profesor
La presentación es parte del entorno y se divide en varias secciones, ofreciendo una guía y
una introducción para las misiones siguientes. Las notas para el profesor (en el apéndice
de esta guía) acompañan las presentaciones y aportan énfasis, ideas para actividades
extra en clase, información avanzada, etc.
¡Manos a la obra!
Durante cada sesión, se requerirá que los estudiantes completen misiones en CoderZ y
experimenten la resolución práctica de los problemas por medio de código.
También se menciona cuánto tiempo debería llevar, en función de nuestra experiencia. Sin
embargo, como esto puede variar, puede extender el tiempo destinado a las actividades
“¡Manos a la obra!”, para asegurarse de que los estudiantes las aprovechen al máximo.
Si por alguna razón los estudiantes no completan todas las misiones en el tiempo
asignado, no se preocupe; solo pídales que las completen después de la clase. Puede
utilizar el informe gráfico de la clase para realizar un seguimiento de su progreso.
En cambio, si los estudiantes completan las misiones antes de que se acabe el tiempo
destinado y ya ha cubierto todo el material de la sesión, puede revisar algunas soluciones
con la clase o comenzar la próxima sesión.

Reflexión
Asignamos unos momentos para reflexionar sobre la lección anterior al comienzo de cada
sesión. Anime a la clase a participar en una discusión y a aquellos estudiantes que hayan
resuelto misiones avanzadas a que presenten sus soluciones al resto de la clase.
Nuestra experiencia indica que este tiempo de reflexión ayuda a los estudiantes a
profundizar su comprensión, destacando a la vez los objetivos clave de aprendizaje.
A continuación, recomendamos algunos pasos para prepararse mejor para la parte de
reflexión de cada lección:
1. Abra el Informe gráfico de la clase y observe el desempeño de los estudiantes en las
misiones
2. Identifique aquellas misiones en las que los estudiantes tienen más dificultad,
representadas por columnas con demasiados cuadrados amarillo o rojos
3. Identifique a aquellos estudiantes que hayan superado el puntaje promedio de la clase
en esas misiones, representadas por cuadrados verdes.
4. Pida a dichos estudiantes que presenten su solución.
O
Resuelva las misiones con toda la clase. Puede usar la opción "abrir solución" si lo
desea (desde el menú de la misión).
5. Pídales a los estudiantes que expliquen lo que han aprendido al ver la solución; esto le
indicará qué dificultades están teniendo los estudiantes.
Para más información, consulte los siguientes artículos:
- Informe de progreso del estudiante
- Informe gráfico de la clase
Estructura de la misión y recursos de enseñanza
★ Cada misión incluye una solución, que se encuentra disponible únicamente para el
docente.
★ Cada misión incluye pistas y sugerencias.
Incentive a los estudiantes a revisarlas antes de
pedirle ayuda a usted.
★ Cada misión incluye una visita guiada, que se
inicia automáticamente la primera vez que se
abre la misión, y que se puede reiniciar desde el
menú de la misión.

★ Puede suceder que no todos los estudiantes completen las misiones durante el período
de tiempo sugerido. Anímelos a completar las misiones antes de la próxima lección, lo
cual pueden hacer fácilmente después de la clase, desde cualquier computadora.
★ Si sus estudiantes completan las misiones antes de que termine la clase, puede pedirles
que presenten sus soluciones al resto de sus compañeros y debatir la eficiencia y
compatibilidad de la solución, o que ayuden a sus pares a completar las misiones. Otra
alternativa es continuar con la lección siguiente.
★ Asegúrese que sus estudiantes estén familiarizados con:
○ Controles de la simulación
○ Control manual
★ Le recomendamos que vea los recursos de la sesión, las misiones y las soluciones
antes de cada lección.
★ Antes de llevar a cabo la primera sesión, debe crear su clase e invitar a sus estudiantes.
★ Verifique que su laboratorio de computación cumple con los Requisitos mínimos y que
ha seguido nuestros lineamientos de configuración de clases.

Pautas de ritmo
Se han divido las presentaciones siguiendo las misiones, para ayudarle a saber cómo se
divide lógicamente la lección. Recuerde que el tiempo varía de una clase a otra, así que
tenga en cuenta que estas son sólo pautas, no instrucciones específicas a seguir. Si su
clase necesita más tiempo, permítalo. Si progresan más rápido de lo esperado, reflexione
sobre su progreso (ver más abajo).
3. Planificación de las sesiones

Sesión 1: Planicies y pendientes I


Objetivos de aprendizaje:
● Conocer el nuevo entorno físico
● Familiarizarse con el nuevo robot de Robótica102
● Familiarizarse con distintos tipos de motores
● Entender el nuevo bloque de potencia de motor
● Incorporar los conceptos de velocidad, aceleración, desaceleración
● Entender y aplicar la segunda Ley de Newton: a mayor potencia, mayor aceleración
● Incorporar los conceptos de impulso y distancia de frenado
● Ingresar a CoderZ y completar las misiones de navegación básica

Descripción:
El simulador del curso Robótica 102 produce un entorno físico "real", por lo que el primer
objetivo de la lección 1 es comprender este entorno. Un entorno físico quiere decir un
entorno que simula la realidad. Por ejemplo, si le ordenamos a nuestro robot que viaje,
comenzará desde la velocidad cero y acelerará; o viceversa, si le ordenamos a nuestro
robot que se detenga, tomará un tiempo detenerse, desacelerando gradualmente. Otro
ejemplo es cuando queremos que el robot suba y baje: desacelerará o acelerará en
consecuencia, por influencia de la fuerza de gravedad.

El nuevo entorno físico brinda una gran oportunidad para aprender los desafíos que
enfrenta la ingeniería al diseñar robots como autos autónomos: se encuentran con reglas
de la física. Por lo tanto, el curso Robótica 102 enseña temas de STEM, a la vez que
permite a los estudiantes desarrollar la intuición, sentir que lo que estudian es relevante y
disfrutar de completar misiones para una mejor internalización del plan de estudios.

En esta lección se presenta a Ruby, el robot. Los estudiantes programarán a Ruby para
viajar hacia adelante y hacia atrás en superficies planas, y aprenderán a usar los bloques
de potencia y de frenado, así como el significado de velocidad y aceleración. Los
estudiantes comprenderán que la potencia conduce a la aceleración y a mayor potencia,
mayor aceleración. Esto sigue la segunda ley de Newton, que implica que la aceleración de
un objeto es directamente proporcional a la fuerza aplicada a dicho objeto. La segunda ley
de Newton es una de las leyes fundamentales de la física (dinámica). Estudiaremos esto
en la sesión siguiente.
Al final de la lección, los estudiantes deberán hacer que Ruby viaje cuesta arriba,
encontrando probablemente una dificultad: Ruby no podrá lograrlo a menos que adquiera
impulso. Los estudiantes entenderán eso de una manera intuitiva y por ensayo y error. En
la próxima lección veremos cuáles son las razones físicas para que esto suceda.
Sesión 2: Planicies y pendientes II
Objetivos de aprendizaje:
● Familiarizarse con la segunda ley de Newton: a mayor potencia, mayor aceleración; y
también: a mayor masa, menor aceleración
● Familiarizarse con la fuerza de gravedad
● Comprender el impacto de la fuerza de gravedad cuando el robot viaja cuesta arriba
Descripción:
El objetivo de la lección 2 es familiarizarse con el concepto de fuerzas y cómo éstas
influyen en el robot.
En la lección 1, los estudiantes vieron que cuanta más potencia le proporcionan a Ruby,
más acelerará, y viceversa. Cuando intentaron conducir cuesta arriba, se encontraron con
que era necesario programar a Ruby para que primero viaje en una superficie plana y gane
impulso. Eso sucede porque ahora la fuerza de gravedad influye sobre Ruby.

La fuerza de gravedad, una de las fuerzas fundamentales de la naturaleza, es la fuerza de


atracción entre dos objetos. Los objetos más pesados siempre ejercen esta fuerza sobre
los objetos más livianos (en realidad, ambos objetos se atraen entre sí con la misma
fuerza, pero los objetos más livianos se ven más afectados por esta atracción). Por
ejemplo, si arrojamos una piedra hacia arriba, ésta cae al suelo debido a la fuerza de
gravedad de la Tierra. De manera similar, la luna gira alrededor de la Tierra debido a la
fuerza de gravedad de la Tierra y los planetas giran alrededor del Sol debido a la fuerza de
gravedad del Sol. La fuerza de gravedad fue descubierta por Sir Isaac Newton en 1687.
Debido a la fuerza de gravedad, a Ruby le resulta difícil viajar cuesta arriba. La fuerza de
gravedad atrae al robot hacia el suelo, haciendo que desacelere. Para poder llegar a la
cima, Ruby debe comenzar el viaje cuesta arriba teniendo ya cierta velocidad inicial. Por lo
tanto, necesita acelerar antes de comenzar a conducir cuesta arriba.
En las últimas dos misiones, Ruby necesita llevar una masa considerable. Los estudiantes
notarán que al aumentar la masa se reduce la aceleración. Esto sigue la segunda ley de
Newton, que indica que la aceleración de un objeto es inversamente proporcional a la
masa del objeto. Mencionaremos la segunda ley de Newton en la próxima sesión.
Sesión 3: Control de velocidad de crucero
Objetivos de aprendizaje:
● Comprender la necesidad de los límites de velocidad
● Familiarizarse con el sistema de control de velocidad de crucero
● Identificar los sistemas de control de circuito abierto y de circuito cerrado
● Utilizar la programación condicional: el bloque Si/Sino
● Utilizar el bloque “Repetir por siempre”
● Conocer el nuevo bloque de movimiento “establecer velocidad de rueda”
Descripción:
El objetivo de la Lección 3 es presentar a los estudiantes los métodos de control de
sistemas, experimentando la planificación de un sistema de control de velocidad de crucero
simple. El estudiante notará que no es fácil dar y perder potencia repetidamente para
controlar la velocidad del robot, y la respuesta a un entorno cambiante.

Un sistema de control de velocidad de crucero es una característica común en los


automóviles modernos. Es un sistema que controla automáticamente la velocidad de un
vehículo de motor, tomando como punto de referencia una velocidad establecida por el
conductor y automáticamente acelerando o disminuyendo la velocidad para mantener el
ritmo. Si la velocidad del vehículo es menor que la velocidad establecida, el sistema
acelerará hasta alcanzar esa velocidad y si es mayor que la establecida, el sistema
desacelerará. Hoy en día, los automóviles nuevos están equipados con control de crucero
adaptativo (ACC), que permite que un automóvil siga al automóvil que se encuentra
delante, ajustando continuamente la velocidad para mantener una distancia segura. El
control de crucero adaptativo (ACC) cuenta con tecnología avanzada de radar y cámara.

El control del sistema se refiere a administrar o regular la operación del sistema para
lograr el funcionamiento deseado. En las misiones anteriores, controlábamos el robot
programándolo para conducir con una potencia predefinida durante un tiempo predefinido.
Por lo tanto, hemos tenido que escribir un programa específico para cada misión. Controlar
un sistema sin monitorear o medir su rendimiento se denomina control de circuito
abierto.
A veces, principalmente en un sistema automatizado, debemos responder al entorno para
poder operar de manera segura y eficiente. Un control del sistema que toma en cuenta la
información del entorno y opera de acuerdo con ella se denomina control de circuito
cerrado. Al comprender el control de circuito cerrado y la experiencia de la programación
al mismo tiempo, los estudiantes estarán listos para utilizar el bloque de movimiento
“Establecer velocidad de rueda”, que permite controlar la velocidad del motor utilizando un
sofisticado sistema de control de crucero interno.
Sesión 4: Curvas peligrosas 1

Objetivos de aprendizaje:
● Recordar el sensor giroscópico
● Conocer los distintos tipos de giros que puede hacer el robot y cómo ejecutarlos.
● Incorporar el concepto de precisión, para una navegación exacta.
● Usar el bloque de movimiento “Viajar distancia”
● Usar el modo de exploración para medir distancias y ángulos
● Medir ángulos y practicar calcularlos

Descripción:
El objetivo de la lección 4 es comprender distintos tipos de giros y cómo realizarlos. Los
estudiantes recordarán el sensor giroscópico y lo usarán para realizar diferentes giros.

El sensor giroscópico mide en grados cuánto ha girado el robot desde su punto de inicio.
Nuestro robot innovador tiene 3 sensores giroscópicos (para los 3 ejes), pero en esta
lección el estudiante usará solo el eje Y (rotación).

Podemos ejecutar varios tipos diferentes de giros: Autogiros, giros de pivote y giros
suaves. En la lección 4, los estudiantes verán los dos primeros tipos. Estos dos tipos de
giros requieren el uso del bloque "frenar hasta parar" para realizar un giro preciso (para
esto, primero debemos detener el robot ya que la velocidad reduce la precisión).
Al realizar varios giros consecutivos, los estudiantes recordarán la necesidad del bloque
"restablecer giroscopio". Restablecer el sensor giroscópico antes o después de usarlo
nuevamente facilita hacer un seguimiento de los grados.
Para realizar una navegación precisa, los estudiantes utilizarán el modo de exploración
para medir distancias y ángulos. Luego de medir la distancia, los estudiantes pueden
conducir con precisión utilizando el bloque "Viajar distancia". El bloque de movimiento
"Viajar distancia" permite controlar la distancia de conducción de Ruby mediante un
algoritmo interno que mide la distancia de conducción y controla la velocidad. El algoritmo
utiliza el codificador de Ruby. Los estudiantes aprenderán sobre codificadores en las
lecciones más avanzadas.
Sesión 5: Curvas peligrosas 2

Objetivos de aprendizaje:
● Practicar giros suaves
● Usar el bloque de movimiento “Girar a”
● Practicar distintos tipos de giros
Descripción:
La lección 5 comienza viendo qué es un giro suave y cómo realizarlo. El giro suave es un
giro gradual, en el que las ruedas del robot giran en la misma dirección, pero a diferentes
velocidades: la rueda exterior gira más rápido que la rueda interior. El giro se realiza en la
dirección de la rueda más lenta. Para hacer un giro suave no es necesario detenerse, y
Ruby puede realizarlo sin la necesidad de usar el bloque "frenar hasta parar". Por lo tanto,
es el giro más rápido. Sus principales desventajas son que requiere un amplio espacio y no
es fácil realizar un giro preciso. Para aumentar la precisión, es necesario reducir la
velocidad.
Al hacer un giro suave, los estudiantes realizan un control de circuito abierto: la velocidad
de la rueda está preprogramada por adelantado y no hay aportes del entorno para
monitorear el rendimiento. En las lecciones avanzadas aprenderemos y practicaremos
métodos para realizar giros suaves más precisos, utilizando información del entorno.

La Lección 5 introduce un nuevo bloque de movimiento: el bloque "Girar a", con el cual
Ruby puede girar en un ángulo definido. El bloque "Girar a" realiza un autogiro usando el
sensor giroscópico y un algoritmo de control de circuito cerrado, resultando en un giro
preciso. ¡Recuerde las dificultades que encontramos en la lección 4 para realizar un giro
preciso debido al impulso del robot!
Al final de la lección, los estudiantes practicarán diferentes misiones en varios tipos de
escenarios: planicies, pendientes, líneas rectas y curvas.
Sesión 6: Garabatos con distancia

Objetivos de aprendizaje:
● Aplicar lo aprendido hasta el momento y completar desafíos creativos
● Usar las tres salidas de rastro

Descripción:
El objetivo de la lección 6 es practicar lo aprendido en las primeras 5 sesiones, a la vez que
se crean formas interesantes. Ruby trazará y dibujará utilizando las salidas de rastro.

Los estudiantes practicarán:


● Viajar hacia adelante y hacia atrás
● Giros y curvas
● Usando el sensor giroscópico y las salidas de rastro (izquierda, derecha, inferior)
● Uso del modo de exploración para medir distancias y ángulos

Las tres salidas de rastro permiten a los estudiantes ser creativos y disfrutar generando
patrones y dibujos interesantes.
Sesión 7: Repetir tocar o evitar obstáculos

Objetivos de aprendizaje:
● Reconocer y evitar objetos
● Identificar los usos del sensor táctil
● Identificar los usos del sensor ultrasónico
● Usar los sensores del robot
● Usar bucles repetir
● Identificar datos de tipo entero y de tipo booleano

Descripción:
El objetivo de la lección 7 es recordar el uso de los sensores táctil y ultrasónico, así como
la programación del bucle repetir. Después de comprender los sistemas de control de
circuito cerrado, el alumno comprenderá la función de los sensores en el control de robots:
los sensores suministran la retroalimentación en el sistema de control del robot de circuito
cerrado.

El sensor táctil ayuda a Ruby a cumplir con las misiones y también a orientarse. Conduce
hasta que se presione el sensor táctil y luego gira. El sensor táctil devuelve un tipo
booleano de datos: solo puede tener dos valores posibles, verdadero (cuando está
presionado) o falso (cuando no está presionado).

El sensor ultrasónico ayuda a Ruby a evitar obstáculos. Al medir el tiempo que tarda un
sonido ultrasónico en alcanzar un obstáculo y regresar, y conociendo la velocidad del
sonido, puede calcular la distancia que hay entre Ruby y el obstáculo. El sensor ultrasónico
devuelve la distancia desde el obstáculo que se encuentra adelante, en centímetros. Al leer
la distancia, Ruby decide cómo navegar.

A medida que el software se vuelve más y más complejo, es más importante escribir un
código claro y legible. Los bucles de repetición nos ayudan a lograrlo: siempre que haya
una instrucción que Ruby deba repetir varias veces, podemos usar el bucle Repetir en
lugar de escribir la instrucción en el programa para cada ocurrencia.
Sesión 8: Variedad de obstáculos por delante

Objetivos de aprendizaje:
● Variables con datos de tipo entero o doble
● Operadores matemáticos: +, - , x , resto de (“módulo”)
● Realizar misiones en un entorno no determinista (aleatorio)
● Cognición espacial: identificar el inicio / fin de los obstáculos
● Tomar decisiones en un entorno no determinista

Descripción:
La lección 8 enseña sobre variables de tipo entero y tipo doble, y cómo usarlas para
escanear el entorno y tomar decisiones en consecuencia. La aplicación de operaciones
matemáticas en variables nos permite usar variables para diferentes misiones como el
conteo de obstáculos, diferenciar entre objetos, navegación avanzada, etc.

Las variables se usan para almacenar información que necesitamos usar más tarde o
varias veces en nuestro programa. Existen diferentes tipos de variables, que definen su
representación lógica y su tamaño. En esta lección aprenderemos sobre los tipos de datos
entero y doble.

La variable de datos de tipo “entero” (o “int”), almacena un número positivo o un número sin
parte decimal. Los enteros se pueden sumar, restar y multiplicar. Se debe tener cuidado
cuando se dividen, ya que la división de dos enteros no es necesariamente otro entero.

La variable de datos de tipo “doble” almacena un número positivo o negativo con parte
decimal. Por lo tanto, utiliza más memoria de computadora para eso, y de ahí su nombre.
El sensor ultrasónico mide la distancia y devuelve un número decimal. Por lo tanto, la
distancia debe almacenarse en una variable de datos de tipo "doble". El sensor giroscópico
mide ángulos con precisión, por lo que devuelve valores de ángulos también en datos de
tipo doble. El bloque “Girar a” puede girar en números decimales o negativos, y por ende
acepta tanto datos de tipo entero como de tipo doble.

Ruby utilizará variables para programar la distancia de viaje más fácilmente y diferenciar
entre objetos en su entorno utilizando sus sensores ultrasónicos frontales o laterales.
Además, Ruby tomará decisiones dependiendo de la ubicación y el número de objetos.

La división y las fracciones se utilizan en la LECCIÓN 8 como un medio para identificar el


número o las posiciones de los obstáculos (como es nuestro caso). La operación “módulo”
devuelve el resto que queda al dividir. Si un número es un múltiplo de su divisor, el resto de
la operación devuelve 0: el resto de 4 dividido por 2 es igual a 0 (4 ÷ 2 = 2, sin resto).
Otro ejemplo: el resto de 8 dividido por 3 es 2, porque 3 puede caber en 8 dos veces (6)
con un resto de 2.

5 dividido por 4 devuelve 1 con un resto de 1, por lo tanto, el resto del bloque devolverá un
valor de 1.

El resto de la operación tiene muchos usos, como distinguir entre números pares e
impares: si el resto del número dividido por 2 devuelve 0, es un número par; Si el resto de
un número dividido por 2 devuelve 1, es un número impar. Usaremos este método para
diferenciar si los obstáculos son pares o impares.

En la lección 8, la ubicación del objeto no siempre es la misma; los objetos aparecerán a


veces en ubicaciones aleatorias (como sucede en la vida real). Los sistemas autónomos
necesitan interpretar con precisión su entorno para tomar decisiones bien informadas sobre
los objetos que cambian constantemente. Utilizando un entorno no-determinista animará a
los estudiantes a usar los sensores de Ruby y programación avanzada.
Sesión 9: Misiones de radar

Objetivos de aprendizaje:
● Conocer los puertos de los sensores de Ruby
● Ajustar las articulaciones de los puertos para un desempeño eficaz
● Usar el sensor ultrasónico superior
● Escanear el entorno mientras se sigue avanzando

La lección 9 presenta el sensor ultrasónico superior de Ruby El sensor ultrasónico superior


se puede girar para que Ruby pueda escanear sus alrededores mientras usa su sensor
ultrasónico superior.

En la lección 8, Ruby escaneó sus alrededores usando su sensor ultrasónico frontal que
apuntaba hacia adelante, por lo que escanear el entorno la obliga a dejar de avanzar o
girar en el lugar. La Lección 9 muestra la opción de configuración de la ubicación del
sensor para que Ruby pueda usar su sensor ultrasónico superior como si fuera un radar,
para explorar su entorno mientras se sigue moviendo.

Usar el sensor ultrasónico superior y programar su ubicación nos permitirá identificar giros,
incluso si están en una ubicación o en una dirección aleatoria. Ruby viajará hacia adelante
mientras escanea a los costados para identificar el giro y la ubicación correcta para girar.
En la lección 9 siempre habrá un giro posible, pero su dirección puede ser aleatoria.
Sesión 10: Código de colores

Objetivos de aprendizaje:
● El sensor de sensor
● Datos de tipo cadena
● Operadores lógicos: not, and, or
● Ajuste de errores

Descripción:
El objetivo de la lección 10 es usar el sensor de color para enseñar los operadores lógicos
NOT, AND, OR.

El sensor de color de Ruby tiene dos funciones:


1. Detectar colores
2. Medir la luz reflejada

En la lección 10 usaremos el modo Detección de color. La detección de color funciona al


iluminar una luz blanca (en realidad 3 haces de luz - rojo, verde, azul - RGB) en un objeto y
luego decodificar el color reflejado. Podemos comparar el resultado con un color deseado y
tomar decisiones según el resultado.

Algunas misiones requieren verificar si dos condiciones ocurren simultáneamente. Para eso
usaremos el operador AND que devuelve VERDADERO solo si se cumplen ambas
condiciones. Algunas otras misiones requieren verificar dos condiciones y actuar si se
cumple al menos una de ellas. Para eso usaremos el operador OR que devuelve
VERDADERO si se cumple al menos una condición. Y cuando necesitemos que no se
cumpla una condición, utilizaremos el operador NOT.

A continuación, encontrará las tablas de operadores lógicos AND, OR, NOT:

El operador NOT se puede usar para cambiar el valor de la variable booleana: not(verdadero)
= falso, not(falso) = verdadero. También lo usaremos para diferenciar entre filas pares o
impares: not(impar) = par.
La Lección 10 también enseña la corrección/ajuste de errores. En sesiones anteriores
hemos aprendido que Ruby no puede detenerse inmediatamente y que hay una distancia
de frenado ("deriva") que depende de la velocidad de conducción. Por lo tanto, cuando
debemos ser precisos y detenernos exactamente al final de una línea dibujada en el piso,
necesitamos hacer algunos ajustes y conducir hacia atrás. El requisito de ajuste es crítico a
medida que aumenta la velocidad de conducción.
Sesión 11: Repetir nuevamente

Objetivos de aprendizaje:
● Bucles Repetir anidados
● Eje X del sensor giroscópico
● Aplicar lo aprendido hasta ahora en desafíos y misiones

Descripción:
La Lección 11 enseña a los estudiantes a usar bucles anidados. Estos bucles, como los
"bucles simples" nos ayudan a escribir código claro y conciso.

Los bucles anidados se usan cuando hay un escenario que implica realizar una acción
varias veces seguidas, y cada acción contiene varias acciones internas repetidas.

Podemos entender el uso del bucle anidado mirando el calendario: el bucle externo puede
considerarse como el comienzo de un mes y el bucle interno puede considerarse como los
días de ese mes. Cuando comienza un mes, el recuento del día se reinicia y continúa hasta
contar todos los días del mes. Cuando termina el conteo del día, volvemos al bucle externo
y cambiamos el mes.

Para completar las misiones, Ruby deberá conducir cuesta arriba o cuesta abajo y realizar
misiones en diferentes superficies. Ruby puede identificar si viajar cuesta arriba o cuesta
abajo usando datos del eje x del sensor giroscópico: el sensor giroscópico devolverá
valores positivos al conducir cuesta arriba y valores negativos al conducir cuesta abajo.
Ruby puede encender sus sensores usando el comando Obtener rotación del sensor
para que pueda identificar obstáculos por delante, por ejemplo.

A medida que las misiones se vuelven más complicadas y el conocimiento de los estudiantes
aumenta, hay muchas formas de resolver un problema o completar misiones, igual que en la
vida real. Para completar las misiones, los estudiantes podrán usar lo que deseen: sensores,
signos u objetos en el entorno, etc. La solución del profesor es una opción de muchas, no
necesariamente la única opción.
Sesión 12: Manipulación magnética

Objetivos de aprendizaje:
● Conocer el brazo magnético de Ruby
● Aplicar lo aprendido y completar desafíos y misiones

Descripción:
La Lección 12 presenta el brazo magnético de Ruby. Ruby puede levantar y bajar el brazo,
sostener objetos magnéticos y liberarlos. El brazo incluso tiene un sensor que detecta si un
artículo está magnetizado.

En esta sesión, Ruby usará su brazo magnético para reorganizar los objetos en su entorno:
mover la carga fuera del camino, usar la carga para llenar los hoyos en el camino o incluso
presionar o soltar los botones que activan los puentes ascendentes.
Sesión 13: Lógica de seguimiento de líneas

Objetivos de aprendizaje:
● Lógica de seguimiento de líneas
● Control On-Off
● Control proporcional
● El sensor de color: modo reflexión

Descripción:
El objetivo de la lección 13 es enseñar el control On-Off y el control proporcional, métodos
se utilizan para el seguimiento de línea.

Las líneas marcadas en el suelo ayudan a Ruby a orientarse. Ya hemos usado líneas de
colores para la orientación en lecciones anteriores, que Ruby usaba para saber cuándo
girar o detenerse. En la lección 13, Ruby usará marcas de línea para conducir con
precisión a lo largo de rutas que consisten en líneas rectas, curvas suaves y curvas
cerradas. Ruby viajará por el borde de la línea de color para que pueda diferenciar entre
la línea y los colores de fondo (el piso) o el reflejo de la luz.

Al principio, Ruby seguirá la línea usando el control de 2 estados: conducirá ligeramente


hacia la izquierda y hacia la derecha, usando su sensor de color y haciendo ajustes
continuamente. Este método hará que Ruby conduzca lentamente y de una manera divertida
(zigzag) pero precisa.

El uso del sensor de color en el modo reflexión permitirá a Ruby definir más estados, ya
que este modo devuelve valores numéricos con valores en un rango de 0-100. Este rango
permite que Ruby reaccione de manera diferente a diferentes valores. Ruby calculará los
valores de error, es decir, la distancia desde un valor deseado (umbral) y reaccionará en
consecuencia.

El umbral se calcula como la media de los valores de reflexión de línea y de fondo. El error
es el valor de reflexión menos el valor umbral. Si usamos el sensor de color del lado
izquierdo y conducimos a lo largo del borde izquierdo de una línea blanca, los valores de
error negativos indicarán que Ruby condujo demasiado hacia la izquierda (en el piso) y los
valores de error positivos indicarán que Ruby condujo demasiado hacia la derecha (en la
línea blanca). El ajuste será proporcional al error: el ajuste será mayor a medida que
aumenta el error y viceversa.

El control proporcional mejorará la forma en que Ruby conduce a lo largo de la línea: será
mucho más suave. Aun así, Ruby no puede conducir rápido en diferentes formas de
carreteras. Para que la conducción sea eficiente, Ruby utilizará como ayuda marcas de
colores, que indicarán si el camino es derecho o tiene curvas cerradas adelante.
Sesión 14: Bloques precisos

Objetivos de aprendizaje:

● Codificadores y su uso en la medición de distancias


● El eje Y del sensor giroscópico
● Alineación con una línea usando dos sensores de color y control proporcional

Descripción:
La Lección 14 presenta los codificadores y enseña cómo usarlos para medir la distancia.
Un codificador es un dispositivo electromecánico que convierte la posición angular del eje
del motor en una señal eléctrica que se utiliza para controlar la velocidad y/o la posición.
Ruby usará un codificador para recordar posiciones en su entorno: restablecer el
codificador marca una posición como punto de referencia. Si Ruby viaja hacia adelante y
quiere regresar a este punto de referencia, deberá conducir hasta que el codificador
muestre cero.

En la lección 14, Ruby necesita viajar por caminos estrechos y llenos de lomas. Esto se
puede completar sólo si Ruby se mantiene alineada en línea recta. El uso del eje Y del
sensor giroscópico y el control proporcional permitirán que Ruby permanezca alineada:
usando el eje Y del sensor giroscópico Y Ruby medirá la desviación de conducir en línea
recta (desviación de Y = 0), y usando el control proporcional en el código enderezará la
trayectoria de viaje de Ruby. El ajuste será proporcional al error (desviación).

El último tema que presenta la lección 14 es alinearse a una línea recta usando 2 sensores
de color en modo de reflexión. Como vimos en lecciones anteriores, las marcas en el terreno
pueden ayudarnos a navegar. Esta vez, las líneas rectas nos ayudarán a girar con precisión.
Ruby conducirá hasta que detecte una línea en uno de sus sensores de color laterales
(izquierda o derecha). Cuando se detecta la línea, Ruby usará un control proporcional para
alinearse con ella: girará lentamente hacia la dirección del sensor que detectó la línea hasta
que el valor de reflexión de la luz de ambos sensores sea igual. Eso significa que la
alineación se ha completado. Es importante que los estudiantes comprendan que el punto
no es necesariamente que ambos sensores de color estén alineados con la línea blanca; el
punto es que ambos sensores detectan el mismo valor. Probablemente será el borde de la
línea, por lo tanto, una media de los valores de reflexión de línea y fondo. En lugar de verificar
si ambos sensores detectan un valor numérico específico (como 67), verificaremos si los
valores de ambos sensores son iguales entre sí.
Apéndice: Notas para el docente

Sesión 1: Planicies y pendientes I

Parte Nro. de Notas


diapositiva

1 15 Pregunte a los estudiantes: ¿qué tipos de motores conocen?

16 Motor de vapor: utiliza vapor para empujar un pistón hacia


adelante y hacia atrás dentro de un cilindro.
Motor de combustión interna: utiliza combustible como gasolina o
Diesel.
Motor eléctrico: utiliza electricidad como combustible.
Motores a reacción: un tipo de motor de combustión interna que
utiliza chorros de aire en rápido movimiento.
Pregunte a los estudiantes: qué tipo de motor creen que tienen
los automóviles y buses modernos.

18 Pregunte a los estudiantes qué tipo de máquinas conocen que


usan motores.
Ejemplos:
Automóviles, lavadora, aspiradora, refrigerador, automóviles de
juguete, aviones, barcos, automóviles, motocicletas, bicicletas
eléctricas, etc.
Explique que no todos los motores tienen la misma forma o
tamaño. Algunos motores pueden ser muy pequeños, por
ejemplo, los que se utilizan para impulsar automóviles de juguete
u otros juguetes; mientras que el motor de una nave espacial
puede ser tan grande como una casa y pesar varias toneladas.

19 Pregunte a los estudiantes qué tipo de máquinas conocen que


usan movimiento.
Ejemplos:
Una lavadora necesita hacer girar un tambor para lavar nuestra
ropa.
Una aspiradora necesita proporcional potencia a una bomba de
aire para poder aspirar. Y las aspiradoras automáticas, como las
aspiradoras robot, necesitan viajar para limpiar la casa.
Los barcos necesitan moverse por el océano.
Las motocicletas, las bicicletas, los automóviles y los camiones
necesitan que las ruedas giren para avanzar.

20 En este punto (al principio, por supuesto), el robot aún no tendrá


su brazo / carretilla elevadora. Se agregará (y utilizará) más
adelante en el curso.

21 Explique que las primeras misiones se resolverán entre todos, en


conjunto.
Cuanto más avancemos en el curso, los estudiantes tendrán algo
de tiempo para probar las misiones ellos mismos antes de recibir
la solución.

23 Movimiento> bloque "Establecer potencia del motor"> arrastrar y


conectar al bloque "Comienzo del programa”

27 Haga que los estudiantes jueguen un poco (5 minutos) con los


diferentes valores de potencia en una escena vacía.
Pregúnteles si han usado el mismo valor (mismo número, mismo
signo) para los motores izquierdo y derecho
Y de no ser así, ¿qué sucedió?
¡El robot no viajó en línea recta! Tal vez tomó una curva, o
incluso giró en su sitio.
Recuérdeles que para que el robot conduzca en línea recta (ya
sea hacia adelante o hacia atrás), ambos motores deben girar
en la misma dirección (valor positivo / negativo en el bloque de
datos izquierdo y derecho) y con la misma potencia (mismo
valor en bloque de datos izquierdo y derecho)

2 1 Explique a los estudiantes acerca de la aceleración:


Proporcionarle al robot una potencia constante no significa
necesariamente que continuará conduciendo a la misma
velocidad. Cuanto más tiempo conduce el robot, más impulso
adquiere y más rápido viaja.
Por supuesto, no puede exceder su velocidad máxima, 100% de
potencia. Pero incluso si comienza con una potencia del 50%, el
robot eventualmente acelerará a una velocidad del 100%.

2 Mencione que en el HUD podemos ver la velocidad del robot


subiendo y bajando

3 Explique que tocar el contenedor nos costará 5 baterías, por lo


que debemos asegurarnos de detenernos antes de tocarlo.

4 La explicación sobre el bloque "Esperar" se encuentra en la


siguiente diapositiva.

5 Flujo de control> bloque "esperar"> arrastrar y conectar al bloque


"Establecer potencia"
Explique: si el comando anterior en el programa era viajar hacia
adelante (bloque “Establecer potencia”)
entonces el robot continuará ejecutando la última instrucción
(avanzando con potencia XX)
y espere 2500 milisegundos (2,5 segundos) antes de pasar a la
siguiente instrucción.
¿Cuál es el resultado final? El robot viajará hacia adelante
durante 2500 milisegundos.
Explique que 2500 milisegundos es solo una suposición en este
momento, podría ser demasiado. Tendremos que probar y ver si
tal vez necesitamos menos o más tiempo.
Ejecute la simulación
El robot sobrepasará el objetivo y tocará el obstáculo. Pruebe
dando un valor diferente (más pequeño) al bloque "Esperar" y
vea si eso funciona.

6 Explique a los estudiantes que tocar el rayo resultará en la


pérdida de baterías.

7 Movimiento > Bloque “Frenar hasta detenerse” > arrastrar y


conectar al bloque “Esperar”
Explique que esta es la misma forma en que los autos frenan: si
presionamos el freno significa que hemos quitado el pie del
acelerador (que detiene la potencia de los motores) y también
que el freno del automóvil se activa y aplica potencia las ruedas o
el eje de estas para evitar que giren.

8 Explique a los estudiantes que la energía tarda en disiparse, por


lo tanto, el robot continuará desplazándose hacia adelante
incluso luego de que los motores dejen de accionar las ruedas.
Pídales que observen la pantalla HUD en la animación: explique
que lleva tiempo que la velocidad baje a 0.
Explique que cuanto más rápido viaje el robot (mayor velocidad),
más tardará en detenerse por completo.
Ejercicio: pídale a un alumno que corra unos metros en la clase
hacia usted, y que pase cerca suyo. Cuando esté justo delante
de usted, dígale que se detenga. Por supuesto que no podrá
detenerse justo a tiempo, le tomará un momento detenerse. La
distancia desde el momento en que comienza a detenerse hasta
que se detiene completamente ilustra la influencia del impulso.

9 ¡Explique que el proceso de ensayo y error, haciendo pequeños


cambios y probando una y otra vez, es parte del proceso de
ingeniería y de STEM!

10 Haga que los estudiantes jueguen un poco (5 minutos) con los


diferentes valores de potencia en una escena vacía.
Pregúnteles si han usado el mismo valor (mismo número, mismo
signo) para los motores izquierdo y derecho
Y de no ser así, ¿qué sucedió?
¡El robot no viajó en línea recta! Tal vez tomó una curva, o
incluso giró en su sitio.
Recuérdeles que para que el robot conduzca en línea recta (ya
sea hacia adelante o hacia atrás), ambos motores deben girar
en la misma dirección (valor positivo / negativo en el bloque de
datos izquierdo y derecho) y con la misma potencia (mismo
valor en bloque de datos izquierdo y derecho)

3 1 Pregúnteles a los estudiantes qué piensan. Si uno de ellos


sugiere conducir primero hacia atrás y luego hacia adelante,
felicítelos y permítales completar la misión.
En caso contrario, explique la solución.
Esta es exactamente la razón por la que hemos aprendido a
conducir en ambas direcciones, hacia adelante y hacia atrás.
En esta misión, tendremos que usar ambas direcciones: cada
vez utilizaremos una combinación de bloque de potencia y
bloque “Esperar”, con un bloque “Frenar hasta detenerse" entre
la parte el viaje hacia adelante y el viaje hacia atrás.
Explique que la misión se completará cuando hayamos
recolectado todas las baterías, por lo que para la parte "viajar
hacia adelante" ni siquiera necesitaremos un bloque "Esperar" o
un bloque "Frenar".

2 Haga que los estudiantes jueguen un poco (5 minutos) con los


diferentes valores de potencia en una escena vacía.
Pregúnteles si han usado el mismo valor (mismo número, mismo
signo) para los motores izquierdo y derecho
Y de no ser así, ¿qué sucedió?
¡El robot no viajó en línea recta! Tal vez tomó una curva, o
incluso giró en su sitio.
Recuérdeles que para que el robot conduzca en línea recta (ya
sea hacia adelante o hacia atrás), ambos motores deben girar
en la misma dirección (valor positivo / negativo en el bloque de
datos izquierdo y derecho) y con la misma potencia (mismo
valor en bloque de datos izquierdo y derecho)

3 ¡En las próximas misiones tendremos que viajar cuesta arriba!

4 Indique a los estudiantes que completen las siguientes misiones


del paquete: Planicies y pendientes I
Misión 3. Cuesta arriba
Misión 4. ¡Arriba!
NOTA: No explique cómo resolver las misiones La idea es
dejar que los estudiantes experimenten llevar al robot cuesta
arriba y vean si tiene la suficiente potencia para lograrlo, sin
conducir hacia atrás para ganar impulso.
Explique que en la próxima lección aprenderemos sobre
gravedad, masa y peso, y entenderemos cómo resolver estas
misiones usando conceptos físicos.
Sesión 2: Planicies y pendientes II

Parte Nro. de Notas


diapositiva

1 2 Recuerde a los estudiantes lo que se vio en la lección anterior:


Aprendimos sobre motores y movimiento.
Aprendimos sobre los motores de nuestro robot y cómo usar el
bloque de "potencia" para llevar al robot hacia adelante y hacia
atrás
Completamos dos misiones.

3 Pregunte a los estudiantes si tuvieron alguna dificultad o tienen


alguna duda antes de proseguir con la lección del día.

9 Muestre el video: explicación sobre fuerzas y movimiento.

10 Si necesitan más explicaciones:


La fuerza de la gravedad se ve afectada por la masa de los
cuerpos y su distancia entre sí, y se siente más cuando los
cuerpos son grandes (como tratándose de planetas, en vez de
manzanas. Por eso parece que sólo la tierra está atrayendo a la
manzana, cuando de hecho la manzana también está atrayendo
a la tierra, sólo que con una fuerza mucho menor).
La fuerza de la gravedad fue formulada por Isaac Newton, quien
determinó que dos cuerpos con masa son atraídos el uno al
otro en forma directamente proporcional a sus masas, e
inversamente proporcional al cuadrado de la distancia entre
ellos.

11 Pregunte a los estudiantes: ¿todos los objetos caen al suelo?


La respuesta es "SÍ". Cada objeto en la Tierra será atraído
hacia el suelo por la fuerza de gravedad, a menos que alguna
otra fuerza lo sostenga.
Las manzanas, por ejemplo, están conectadas por sus tallos a
las ramas del árbol, que las sostienen.
Incluso entonces, la fuerza de gravedad atrae a las manzanas
hacia el suelo, pero no lo suficientemente como que caigan.
Pero esta es la razón por la que cuelgan del árbol, en lugar de
flotar en dirección al cielo. Una vez que se rompa el tallo o la
rama, la manzana caerá.

15 Al igual que en la misión "Cuesta arriba", el robot necesita estar


lejos de la pendiente para viajar el suficiente tiempo hacia
adelante y ganar velocidad, lo que le permitirá subir la
pendiente.

16 Indique a los estudiantes que completen las siguientes misiones


(10-15 minutos)
Paquete: Planicies y pendientes I
Misión 3. Cuesta arriba
Misión 4. ¡Arriba!

2 2 1. En una superficie plana, el suelo impide que la fuerza de


gravedad siga atrayendo al robot. El robot no necesita
ejercer mucha potencia para avanzar.
2. En una pendiente moderada, la fuerza de la gravedad
sobre el robot es más fuerte, pero la potencia del motor
todavía es suficiente para subir.
3. En una pendiente pronunciada, la fuerza de la gravedad
es aún mayor: la potencia del motor no será suficiente.
¡Necesitaremos compensar la potencia con velocidad!
4. En una superficie completamente vertical, incluso
teniendo mucha velocidad no podremos subir por más de
unos pocos segundos. Sin potencia alternativa (¡como un
cohete!) no podremos subir la cuesta en absoluto.

3 Deje que los estudiantes intenten completar las misiones por sí


solos.
Pregúnteles, ¿qué sucede cuando el robot empuja un peso
pesado? ¿Cambia esto la velocidad del robot? ¿Cambia la
forma en que el robot debe actuar?

4 Misión 4. Objetos pesados


Misión 5. Sumando peso
Misión 6. Levantar peso
Sesión 3: Control de velocidad de crucero

Parte Nro. de Notas


diapositiva

1 4 Explique que cuanto más conduzcamos y cuanto más


aceleremos, más difícil será frenar y más tiempo
necesitaremos para detenernos por completo.

6 Detalles y demostración en la página siguiente

7 Pregunte a los estudiantes si recuerdan lugares específicos


con límites de velocidad.
Ejemplos: la calle en la que viven probablemente tendrá un
límite de velocidad estricto, como 40 o 50 km / h.
Las áreas densamente pobladas, como las cercanías de
centros comerciales, paseos peatonales y escuelas pueden
tener límites de velocidad aún más estrictos.
Las rutas y autopistas tienen un límite de velocidad más alto,
como 90 km / h. ¡La autopista en Alemania Autobahn tiene
un límite de velocidad de 130 km / h!

9 Pregunte a los alumnos: si los contenedores peligrosos se


mueven y nos encontramos entre ellos, ¿cómo podemos
avanzar sin tocar el que tenemos delante o sin que nos
alcance el que tenemos detrás?

10 Abra la misión "Límite de velocidad" y active el Control


manual.
Abra la pantalla HUD y el valor de VELOCIDAD (SPEED)
Conduzca el robot hacia adelante e intente mantener una
velocidad constante.
Pida a los estudiantes que observen cuál es la mejor
velocidad en la pantalla HUD.
Explique que usar las teclas de flecha arriba / abajo con
control manual es como usar un bloque de "potencia": el
robot acelera y es difícil mantener una velocidad constante.

11 Indique a los estudiantes que completen las siguientes


misiones (máx. 3 minutos)
Paquete: Control de velocidad de crucero
1. Límite de velocidad usando el control manual.

2 1 Explique que muchos automóviles hoy en día tienen una


opción de control de crucero automático, lo que facilita a los
conductores mantener velocidades constantes.
El conductor debe acelerar el vehículo manualmente y usar
un botón para ajustar el control de crucero a esa velocidad.
El sistema se apaga automáticamente si el conductor
presiona el freno.
Esta opción es muy útil para usar en trechos largos de
carreteras.

5 Explique los ejemplos:


● Luces de la calle: la ciudad establece una hora
específica del día para que las luces de la calle se
enciendan y apaguen. Incluso si el día es
especialmente oscuro y nublado, las luces de la calle
no se encenderán hasta la hora programada.
● Sistemas de irrigación: similarmente, la ciudad
establece una hora específica del día para que el
sistema de riego de los parques se active o desactive.
Incluso si el día es muy caluroso y seco, el sistema
funciona automáticamente y riega el parque durante
un período de tiempo determinado, aunque no sea
suficiente para las flores y los árboles. En el caso
contrario, incluso si llueve a cántaros y no es
necesario regar el jardín, el sistema de riego aún se
activará. Han sido programados para funcionar
durante un período de tiempo específico, activándose
a una hora específica del día.
● Una tostadora eléctrica: una vez configurado el nivel
de tostado que se desea, la tostadora tostará el pan
durante un período de tiempo específico, y sólo una
vez transcurrido ese tiempo, saltará la tostada. Aún si
la tostada se quema, la tostadora no dejará de
funcionar antes del tiempo establecido.
Explique que estos sistemas suelen ser simples y su diseño
y mantenimiento son menos costosos.

6 Pídales a los estudiantes que hagan una lluvia de ideas


sobre cómo convertir cada uno de los sistemas de circuito
abierto de las diapositivas anteriores al sistema de circuito
cerrado. La mayoría de las soluciones requerirán algún tipo
de sensor:
● Luces de la calle: en lugar de establecer una hora
específica del día para que las luces de la calle se
enciendan y apaguen, instalar un sensor de luz para
que sea un sistema de circuito cerrado: cada vez que
oscurece, las luces de la calle se encenderán. Esto
podría suceder a las 19:00, a las 18:00 e incluso a las
14:00 si las condiciones así lo requieren.
● Sistemas de riego: en lugar de establecer una hora
específica del día para que los rociadores de agua del
parque se enciendan y apaguen, se podría instalar un
sensor de humedad para determinar cuándo el suelo
está seco y así hacer un sistema más sofisticado. El
sistema detectará cuando el suelo esté seco y abrirá
la salida de agua, hasta que el sensor reconozca que
el suelo está húmedo hasta el grado configurado, y
sólo entonces el sistema cerrará la salida de agua. Si,
por ejemplo, ha llovido hoy, el sensor de humedad
reconocerá que el suelo ya está húmedo, por lo que
no será necesario encender el sistema de riego.
● La tostadora eléctrica: ¿alguna idea? Muestre el
video para ver una explicación.

7 Pregunte a los estudiantes qué tipo de bucle necesitamos


construir en CoderZ para poder avanzar y evitar tocar los
contenedores peligrosos que se encuentran delante y detrás
del robot: ¿uno abierto o uno cerrado?

8 La respuesta es: un circuito cerrado, porque necesitamos


que el robot verifique su velocidad y actúe según ella,
cambiando su comportamiento de acuerdo con esos datos.

9 Explique que el pseudocódigo es una forma fácil de


planificar nuestro código, utilizando palabras comunes en
lugar de bloques. Más tarde traduciremos nuestras
declaraciones a bloques de código en CoderZ.
Escriba estos pasos en el pizarrón, para que los estudiantes
puedan verlos después de pasar de esta diapositiva.
O
Pídale a uno de los estudiantes que copie estos pasos en su
cuaderno y luego los lea en la clase más tarde. Explique que
nos referiremos a estos pasos mientras construimos nuestro
circuito cerrado.

10 La explicación sobre el bloque "SI / SINO" se encuentra en la


siguiente diapositiva

13 Explique que necesitamos un bucle SI / SINO para verificar


continuamente la velocidad del robot, compararlo con un
cierto valor (el límite de velocidad) y actuar en consecuencia:
Si la respuesta a la condición (en esta diapositiva, es una
comparación) es SÍ, el robot debe actuar de cierta manera
(esta es la parte "hacer" del bucle);
De lo contrario (si la respuesta a la comparación es NO), el
robot debe actuar de manera diferente (indicada en la parte
"SINO")

14 Explique que ya existe un bloque de comparación que será


nuestra condición para el bloque SI / SINO
Queremos comparar el valor de la velocidad del robot (datos
de un sensor que puede estar cambiando todo el tiempo) a
un valor específico (el límite de velocidad, que es un valor
constante que no cambia)
Pero no queremos comparar esos valores como iguales,
queremos ver si uno de ellos es más bajo (menos) que el
otro.
Por lo tanto, necesitamos cambiar el signo igual a un signo
≤ (menor que).
Y luego podemos colocar los dos bloques a cada lado del
signo.

16 Explique que es mejor no conducir a toda velocidad (100%)


sino comenzar a velocidad media (50%)

17 Explique que, si estuviéramos conduciendo un automóvil,


quitaríamos el pie del acelerador y, por lo tanto, cortaríamos
la potencia del motor.
(potencia de 0% para ambos motores)
También podríamos frenar, pero por ahora 0% de potencia
es suficiente.

19 Indique a los estudiantes que completen las siguientes


misiones (máx. 3 minutos)
Paquete: Control de velocidad de crucero
2. Control de velocidad de crucero
NOTA: el código aún no está completo Le falta un bloque
“repetir por siempre”.
En su estado actual, el código hace que el robot avance
indefinidamente, porque no vuelve a la condición después de
la primera ejecución.
La idea es que los estudiantes descubran por sí mismos que
el elemento bucle no se encuentra. Es el paso 4 en el
pseudocódigo.
Si uno de los estudiantes se da cuenta de esto y dice
"¡espere, nos olvidamos del paso 4!", felicítelo y dígale que
nos ocuparemos de eso ahora. En caso contrario, pase a la
diapositiva siguiente.

20 Pregunte a los estudiantes: ¿de qué paso nos olvidamos?


La respuesta es: Paso 4. Repetir el procedimiento hasta
alcanzar el objetivo
Explique que sin un bucle para que el código se repita, el
robot sólo realizará la comparación en la condición una vez, y
actuará de acuerdo con sus datos una vez. Eso es lo que
hizo que el robot avanzara y acelerara más allá del límite de
velocidad.

23 Indique a los estudiantes que completen las siguientes


misiones (máx. 3 minutos)
Paquete: Control de velocidad de crucero
2. Control de velocidad de crucero
NOTA: el código aún no está completo Le falta un bloque
“repetir por siempre”.
En su estado actual, el código hace que el robot avance
indefinidamente, porque no vuelve a la condición después de
la primera ejecución.
La idea es que los estudiantes descubran por sí mismos que
el elemento bucle no se encuentra. Es el paso 4 en el
pseudocódigo.
Si uno de los estudiantes se da cuenta de esto y dice
"¡espere, nos olvidamos del paso 4!", felicítelo y dígale que
se ocuparán de eso ahora. En caso contrario, pase a la
diapositiva siguiente.

3 2 Explique que ahora no tenemos que construir un bloque


complicado con un bucle y varias condiciones. Cualquiera
sea la velocidad a la que ajustemos los motores del robot,
mantendrá esa velocidad, incluso viajando cuesta arriba o
cuesta abajo.
¡Inténtelo para verlo!

3 Indique a los estudiantes que completen las siguientes


misiones (10-15 minutos)
Paquete: Control de velocidad de crucero
Misión 5. Rápido al bloque
Misión 6. Banda de frenado
Nota: estas misiones son las mismas que las misiones 3 y 4
pero ahora los estudiantes pueden completarlas mucho más
fácilmente gracias al bloque de "Establecer velocidad".
Sesión 4: Curvas peligrosas I
Parte Nro. de Notas
diapositiva

1 2 Recuerde a los estudiantes lo que se vio en la lección anterior:


Pregunte a los estudiantes si tuvieron alguna dificultad o
tienen alguna duda antes de proseguir con la lección del día

6 Pregunte a los estudiantes: ¿quién de ustedes vive en una


calle recta? (Levantar las manos)
Una vez que lleguen a su casa, es probable que tengan que
girar para quedar de frente a la casa, o para entrar al garaje,
¿verdad?
¿Y quién vive en una calle que tiene curvas? (Levantar las
manos)
En la vida real tampoco se va siempre en línea recta. A veces
hay que ser flexible, girar hacia aquí o hacia allá.
Este será el tema de la lección de hoy.

10 Pida a los estudiantes que recuerden cuál dirección es sentido


horario y cuál, antihorario. Si hay un reloj analógico en la
clase, úselo para demostrar.
Sentido horario = hacia la derecha
Sentido antihorario = hacia la izquierda

13 Un autogiro puede ser útil para hacer giros muy cerrados y


precisos. Durante un autogiro, el robot permanece en su lugar
y no se mueve ni hacia adelante o ni hacia atrás ni hacia los
costados.
Si la rueda derecha gira hacia atrás y la izquierda hacia
adelante (como en este ejemplo), el robot girará hacia la
derecha - en sentido horario.
Si la rueda izquierda gira hacia atrás y la derecha hacia
adelante (como en este ejemplo), el robot girará hacia la
izquierda - en sentido antihorario.
En otras palabras: el robot girará en la dirección de la rueda
que gira hacia atrás.

14 Menú de movimiento> bloque "establecer velocidad"> conectar


al bloque "Comienzo del programa"> cambiar el motor
izquierdo a 50 y el motor derecho a -50.
Esto dará como resultado un autogiro hacia la derecha.

16 Para girar siempre necesitaremos una velocidad baja, de


modo que el giro sea lento.
Pregunte a los estudiantes: ¿cómo sabemos cuándo parar?
La respuesta es: utilizamos el sensor giroscópico

17 Detalles y demostración en la página siguiente

19 Explique cómo se construye el bloque de instrucción:


Paso 1: agregar un bloque “Esperar hasta”
Paso 2: ¿esperar hasta qué? Hasta que alguna comparación
sea verdadera
Paso 3: ¿cuál es esa comparación? El primer elemento, el que
compararemos, es el valor del sensor giroscópico del robot.
Paso 4: ¿con qué comparamos el valor del sensor
giroscópico?
Explique que después de este bloque de giro que creamos,
necesitamos frenar nuevamente, de lo contrario el robot
continuará girando.

20-21 Aquí viene la parte más difícil En sí, queremos que el robot
se detenga a los 90 grados. Pero tenemos que usar un signo ≥
(mayor que e igual a) para que el robot reconozca el ángulo y
se detenga allí. Entonces, en realidad, este bloque indica
esperar hasta que el sensor giroscópico reconozca un ángulo
mayor o igual a 90 grados para realizar un giro a la derecha.
Si giramos a la izquierda, los valores del sensor giroscópico
disminuyen bajo 0, a los números negativos. Por lo tanto,
necesitamos que el sensor giroscópico reconozca un ángulo
menor que -90, como -91, -95, -100, etc.
* Asegúrese de que los alumnos entiendan los valores
negativos: -100 es menor que -90.

22 Pida 5 voluntarios. Haga que 1 estudiante se pare en el medio,


rodeado por los otros 4 ubicados en ángulos de 90 grados
(como los puntos de una brújula)
Pida al alumno que se encuentra en el medio que gire en su
lugar (la dirección no importa) durante varios segundos, por lo
menos 3-4 giros.
Pídale al alumno que intente dejar de girar, pero que no quede
frente a uno de sus compañeros directamente.
Lo más probable es que el estudiante no lo logre y "derrape"
un poco. Explique que, debido a su giro e impulso, tardó un
tiempo en detenerse por completo.

26 Porque depender del tiempo es complicado. Por ejemplo, si


viajáramos durante 3 segundos a máxima velocidad,
llegaríamos más lejos que si viajáramos durante 3 segundos a
una velocidad del 20%.
Como el tiempo x velocidad = distancia recorrida, cualquier
cambio en velocidad resulta en un cambio en la distancia que
Ruby viajará.
Pero al usar la distancia para indicarle a Ruby exactamente
hasta dónde llegar, será mucho más simple y, lo que es más
importante, consistente.

28 Si la animación no es clara para los alumnos, dibuje la figura


en el pizarrón y explique cada ángulo (primero 180, luego a =
interno, luego b = externo)
Explique que 180 = línea recta, conduciendo hacia adelante, y
que la suma de los dos ángulos (a = interno + b = externo)
equivale a 180 grados.

29 Abra la misión Curva V y el modo exploración. Muestre cómo


usar la herramienta para descubrir ángulos. Si es necesario,
primero mueva el robot por la escena utilizando el control
manual.

31 Indique a los estudiantes que completen las siguientes


misiones (10-15 minutos)
Paquete: Curvas peligrosas 1
Misión Giro en L
Misión Giro en V

2 1 Explique que los valores del sensor giroscópico son continuos


y relativos al punto de partida original del robot.
2 Explique que con el modo Exploración podemos descubrir que
los ángulos internos en ambos puntos de la N son de 45
grados, por lo que debemos girar 135 grados dos veces
Este es el mismo cálculo utilizado para la letra V: 180 – 45 =
135.
Si la animación no es clara para los alumnos, dibuje la figura
en el pizarrón y explique cada ángulo y cada giro.
Pregunte a la clase: ¿qué mostrará nuestro sensor
giroscópico luego del segundo turno?
La respuesta es: Mostrará 0 grados, porque giramos la
misma cantidad que hicimos el primer giro, pero en la
dirección opuesta. Básicamente, el segundo giro "canceló" el
primero, volvió al robot su orientación inicial (mirando hacia
adelante)
Si hubiéramos girado en la misma dirección, el sensor
giroscópico habría mostrado la suma de los dos ángulos (135
+ 135 = 270)

3 Indique a los estudiantes que completen las siguientes


misiones (10-15 minutos)
Paquete: Curvas peligrosas
Misión 3. Curva en N
Misión 4. Curva en M

3 1 Explique que usar un bloque de "restablecer giroscopio" antes


o después de cada giro significa que sólo tendremos que
calcular el ángulo del giro en sí, comenzando desde 0 grados
antes de cada giro.
No tenemos que hacer esto. De no utilizar el bloque
"restablecer giroscopio", deberemos recordar que todos los
grados de giro se suman y calcular en consecuencia.

2 Explique que todavía puede haber algún movimiento de la


rueda estacionaria, porque no está bloqueada en su sitio. Sin
embargo, sólo se está "moviendo" por el hecho de que el robot
se está moviendo: el motor que controla esta rueda no recibe
potencia.

4 Explique que encontrar el ángulo correcto es una cuestión de


ensayo y error, y depende de la velocidad del robot.
Un 20% de velocidad y un ángulo de 55 pueden ser
suficientes para un giro de 90 grados al final, o puede que no
sea suficiente, o puede que sea demasiado.
Si el robot conduce más rápido, al 50%, probablemente
necesitará poner un valor menor en el bloque giroscópico. Se
equilibra.

6 Indique a los estudiantes que completen las siguientes


misiones (10-15 minutos)
Paquete: Curvas peligrosas
Misión 5. Curva I
Misión 6. Curva J
Sesión 5: Curvas peligrosas II
Parte Nro. de Notas
diapositiva

1 2 Recuerde a los estudiantes lo que se vio en la lección anterior:


Aprendimos sobre dos tipos de giros: el autogiro y el giro de
pivote.
Completamos varias misiones usando estos dos tipos de giros.
Aprendimos sobre el sensor giroscópico y cómo podemos
restablecerlo a 0 después de un giro, y que, si no lo hacemos,
entonces se van sumando todos los ángulos girados.

6 Explique que este bloque usa su propio sistema de control detrás


de escena: verifica la lectura actual del sensor giroscópico del
robot, la compara con el ángulo al que queremos que gire,
descifra si necesita girar en sentido horario o antihorario, y luego
gira en ese ángulo con mucho cuidado y precisión.
Esto quiere decir que no debemos tener en cuenta el impulso del
robot, y no tendremos que ensayar con " queremos girar a 135
grados, pero el impulso del robot lo llevará más lejos, así que
intentemos 110 grados y veamos si eso funciona ...”
Si le indicamos que gire a 135 grados, ¡girará exactamente a 135
grados, ni uno más!

8 Según la diferencia de velocidades de las dos ruedas (motores)


determinaremos la trayectoria que tomará el robot: el radio de
giro.
Cuanto mayor sea esta diferencia, más cerrado será el giro.
Por ejemplo, si la rueda izquierda gira a una velocidad del 20% y
la derecha al 80%, significa que la rueda izquierda se mueve muy
lentamente y el lado izquierdo del robot recorrerá una distancia
muy corta. La rueda derecha viaja muy rápido, lo que significa
que el lado derecho del robot recorrerá más distancia, haciendo
que el robot realice un giro muy cerrado a la izquierda.
Si dejamos que el robot continúe su giro suave indefinidamente,
básicamente viajará en círculo.

9 Menú de movimiento> bloque "establecer velocidad"> conectar al


bloque "Comienzo del programa"> cambiar el motor izquierdo a
20 y el motor derecho a 80.
Esto resultará en un giro suave hacia la izquierda

2 2 Después de que se complete la animación de giro en U del robot


Preguntar a los estudiantes: ¿Cuál es el ángulo de un giro en
U?
La respuesta correcta es: 180 grados. El robot debe estar
orientado en la dirección opuesta, por lo que el sensor
giroscópico debe alcanzar +180 grados durante todo el giro.

3 Preguntar a los estudiantes: ¿Cuál es el ángulo de un giro en U?


La respuesta correcta es: 180 grados. El robot debe estar
orientado en la dirección opuesta, por lo que el sensor
giroscópico debe alcanzar +180 grados durante todo el giro.
Explique que ahora que sabemos cuántos grados debe girar el
robot y cómo se realiza un giro suave, deberíamos poder
completar esta misión de giro en U con facilidad.

6 Explique que usar un bloque de "restablecer giroscopio" antes o


después de cada giro significa que sólo tendremos que calcular
el ángulo del giro en sí, comenzando desde 0 grados antes de
cada giro.
No tenemos que hacer esto. De no utilizar el bloque "restablecer
giroscopio", deberemos recordar que todos los grados de giro se
suman y calcular en consecuencia.
Por ejemplo, en el giro en S, estamos girando primero 180
grados a la derecha y luego 180 grados a la izquierda.
Si no usamos el bloque “restablecer giroscopio”, deberemos
calcular el segundo giro nuevamente a 0 grados, ya que
estamos calculando 180 - 180 = 0.
Si usamos el bloque “restablecer giroscopio”, entonces
necesitamos calcular el segundo giro a -180 grados, ya que
estamos calculando 0-180 = -180 (giros a la izquierda desde 0
pasan a valores negativos)

7 Indique a los estudiantes que completen las siguientes misiones


(10-15 minutos)
Paquete: Curvas peligrosas 2
Misión 3. Giro en U
Misión 4. Giro en S
3 4 Usa un bucle para dibujar la estrella, será más fácil.
Toma en cuenta que, debido a su ubicación de rastro, Ruby
dibuja un pequeño garabato al girar o rotar. Entonces, tal vez
quieras detener el rastro mientras Ruby gira, y luego comenzarlo
nuevamente cuando Ruby comience a viajar nuevamente hacia
adelante.

5 Indique a los estudiantes que completen las siguientes misiones


(10-15 minutos)
Paquete: Curvas peligrosas
Misión 5. Arte libre
Misión 6. Rastro en forma de estrella
Sesión 6: Garabatos con distancia
Este paquete es una gran oportunidad para usar bucles Repetir (especialmente para
dibujar patrones). Técnicamente, esta materia aún no se ha enseñado en profundidad en
Robótica 102, pero cualquier estudiante que recuerde los bucles Repetir y desee usarlos,
puede hacerlo.

Sesión 7: Repetir tocar o evitar obstáculos

Parte Nro. de Notas


diapositiva

1 9 Para las primeras misiones del paquete, el sensor táctil de


Ruby está ubicado en su brazo delantero izquierdo. ¡Puede
estar localizado en otra posición en las misiones futuras!

10 Explique que este tipo de sensor, que proporciona un valor de


verdadero o falso, se denomina sensor booleano. Es como el
código binario: los valores posibles son 1 o 0, donde 1 es
verdadero (o encendido) y 0 es falso (o apagado)

11 Generalmente, el sensor táctil leerá Falso, porque Ruby no


estará tocando nada.
En esta animación, Ruby está frente a la pared, por lo que
ambos sensores se presionan al mismo tiempo. Si Ruby
estuviera tocando la pared en ángulo, utilizando sólo el sensor
táctil izquierdo o el derecho para tocarla, se vería en la
pantalla HUD sólo la lectura del sensor izquierdo o del
derecho, mostrando el valor VERDADERO.

13 Explique que cuando decimos "hasta que toquemos el


contenedor o el árbol" en realidad significa "hasta que el
sensor táctil indique un valor VERDADERO”

14 Los sensores de Ruby que se hayan configurado para una


misión particular serán los sensores que aparecerán en la
categoría Sensores. Por lo general, están numerados o tienen
nombres significativos, para que podamos entender fácilmente
con qué sensor estamos tratando.
21 No importa si Ruby toca un contenedor, un árbol o una valla;
sólo se necesita verificar si el sensor táctil indica
VERDADERO.
Para que "90 grados en sentido antihorario" funcione siempre,
debemos usar un bloque "restablecer giroscopio" después de
cada giro, dentro del bucle, de modo que Ruby siempre gire
90 grados en sentido antihorario en relación con el lugar en el
que se encuentra en ese momento.

22 Deje que los estudiantes escriban el pseudocódigo por su


cuenta, si quieren.

23 Indique a los estudiantes que completen las siguientes


misiones (10-15 minutos)
Paquete: Recogiendo manzanas
1. Árboles de manzanas rojas
2. Árboles a la izquierda
Nota: el segundo bucle técnicamente sólo necesita 2
repeticiones y luego un bloque para avanzar hacia el objetivo.
Explique que al agregar otra repetición al bucle (3 en lugar de
2) podemos utilizar el bloque "viajar hacia adelante" en el
bucle para avanzar.
3. Repetir la acción

2 4 Explique que este tipo de sensor, que proporciona un valor


numérico, es un sensor entero: devuelve valores en números
enteros.
También explique que, si el sensor se coloca en la parte
delantera de Ruby, entonces está "dentro" del alcance de sus
brazos, y no sobresale tanto como los otros sensores. Esto
significa que cuando el robot golpea una pared, el sensor
ultrasónico todavía está a unos centímetros de la pared y su
lectura mostrará un valor de unos pocos centímetros.

5 Explique que, en esta misión, los contenedores peligrosos


están ubicados más cerca de nosotros. Queremos seguir
viajando hacia adelante hasta que lleguemos a un punto
donde el sensor reconozca algo colocado a más de 80 cm de
nosotros: el contenedor que queremos tocar.

6 Pregúnteles a los estudiantes, ¿cuál de los trucos que


aprendimos en las últimas misiones también deberíamos usar
aquí?
La respuesta es: ¡el bucle repetir!
Ruby necesita pasar el contenedor peligroso que está más
cerca de ella (podemos usar el control manual y el modo
exploración para determinar la distancia exacta) y reconocer
un contenedor que está más lejos de ella (un buen
contenedor). Luego debe girar a 90 grados, viajar hacia
adelante hasta tocar el contenedor bueno, viajar hacia atrás
hasta que esté fuera del alcance de los contenedores
peligrosos, detenerse, y luego girar hacia adelante (0 grados).
¡Ruby necesita repetir este proceso 5 veces antes de que
pueda viajar hacia el objetivo!

7 Esta misión es bastante similar a la anterior (Árboles a la


derecha), pero ahora Ruby tiene que ir a la izquierda y a la
derecha.
Pero ¿realmente tiene que ir en ambas direcciones?
Sugerencia: una vez que haya girado hacia la derecha, puede
viajar hacia adelante hacia el contenedor de la derecha, ¡y
luego viajar hacia atrás al contenedor de la izquierda!

Sesión 8: Obstáculos adelante y al azar

Parte Nro. de Notas


diapositiva

1 5 Es útil pensar en las variables como contenedores que


contienen información.

7 Pregunte a los alumnos: ¿hemos aprendido alguna de


estas variables antes?
La respuesta es: Hemos aprendido sobre las variables
booleanas: el sensor táctil nos da un valor VERDADERO /
FALSO.

10 Los programadores de software generalmente dan a las


variables un nombre descriptivo, que sugiere el valor
almacenado en la variable. (Así la variable puede ser
entendida más claramente por nosotros mismos y por
cualquier otra persona que vea nuestro código).

16 Explique que cuando se usan los bloques "Esperar ___


milisegundos", en realidad podría traducirse a diferentes
distancias dependiendo de la velocidad de la rueda o la
potencia del motor.
Si Ruby conduce hacia adelante al 100% de velocidad /
potencia durante 2000 milisegundos, viajará más lejos que
si conduce al 25% de velocidad / potencia durante 2000
milisegundos. Esto hace que los bloques de "Esperar”
basados en tiempo sean menos precisos. Cuando
queremos ser muy precisos, mediremos la distancia
usando el modo exploración y usaremos bloques de "Viajar
distancia".

2 5 Dado que la primera instrucción dentro de nuestro bucle es


conducir hacia adelante al 100% de velocidad, las dos
instrucciones Esperar hasta pueden venir directamente una
tras otra y no interferir. Todo este tiempo, Ruby sigue
conduciendo hacia adelante, y esperará hasta que el
sensor ultrasónico registre las distancias que necesitamos
antes de pasar a la siguiente parte de nuestro código.

8 Si hemos colocado el bloque "imprimir" dentro de un bucle,


el valor de la variable "contenedores pasados" se imprimirá
en la consola cada vez que el código llegue al bloque en el
bucle.

9 Explique que un bucle "repetir mientras" hará que Ruby


repita el código dentro de él hasta que se cumpla la
condición.
Entonces, nuestra condición es "mientras que el valor de la
variable contenedor pasado es menor que 3"

3 5 Dado que la primera instrucción dentro de nuestro bucle es


conducir hacia adelante al 100% de velocidad, las dos
instrucciones Esperar hasta pueden venir directamente una
tras otra y no interferir. Todo este tiempo, Ruby sigue
conduciendo hacia adelante, y esperará hasta que el
sensor ultrasónico registre las distancias que necesitamos
antes de pasar a la siguiente parte de nuestro código
Sesión 9: Misiones de radar
Parte Nro. de Notas
diapositiva

1 9 Dado que la primera instrucción en nuestro código es


conducir hacia adelante a una velocidad del 25%, las dos
instrucciones Esperar hasta puedan venir directamente una
después de otra y no interferir. Todo este tiempo, Ruby
sigue conduciendo hacia adelante, y esperará hasta que el
sensor ultrasónico registre las distancias que necesitamos
antes de pasar a la siguiente parte de nuestro código.

12 0 es el primer número en programación (en vez de 1).


Por ende, la primera articulación será la articulación 0.

2 6 Técnicamente, una variable de tipo doble también podría


funcionar. Sin embargo, los dobles ocupan más espacio de
cómputo, y dado que estamos trabajando con números
enteros (sin decimales), no hay necesidad de una variable
de tipo doble; un número entero funcionaría bien.

Sesión 10: Código de colores


Parte Nro. de Notas
diapositiva

1 11 Explique que ambos “uno” y “1” son valores de cadena


(string) que se escriben entre comillas, y que no es lo
mismo que un valor de tipo entero (integer) de 1.
Si usamos valores de cadena en una ecuación, dará un
resultado completamente distinto de si usamos valores
enteros o dobles (doubles)
Ejemplos:
[ “1” ] + [ “1” ] = 11 (Pero no equivale al número once. Es
un texto 1 y al lado otro texto 1)
[ “1” ] + [ “5” ] = 15 (Pero no es 6, ni tampoco quince. Es
un texto 1 y al lado un texto 5)

13 El sensor de color de Ruby tiene dos funciones:


- Detección de color
- Medida de la luz reflejada
En esta lección usaremos solo el modo de detección de
color.
Sesión 11: Repetir otra vez

Parte Nro. de Notas


diapositiva

1 6 Piense en las muñecas rusas que se guardan una dentro


de otra (Matrioshka/Babushka) donde las muñecas más
pequeñas se guardan dentro de las más grandes. El
concepto es el mismo

8 Podríamos profundizar aún más y decir que dentro de cada


mes hay cuatro semanas, y dentro de cada semana hay 7
días.

Sesión 12: Manipulación magnética

Parte Nro. de Notas


diapositiva

1 9 Es importante colocar un bloque Esperar hasta obtener


posición de brazo magnético = [“up” / “down”]
directamente luego del bloque rosado Posición de brazo
magnético, antes de la próxima instrucción.
Al hacer esto, nos aseguramos de que Ruby no avance a
la siguiente instrucción (viajar hacia adelante o hacia atrás,
frenar, girar, etc.) hasta que el brazo magnético haya
terminado de subir o bajar. ¡Esto podría completar o
arruinar una misión!

12 Como hay 3 cajas magnéticas y Ruby debe realizar las


mismas acciones para cada una, aconseje a los
estudiantes que usen un bucle Repetir.
Se puede usar Repetir 3 veces, pero esto requerirá un
bloque adicional para avanzar después del bucle.
La mejor opción es usar un bucle Repetir por siempre,
que nos ahorrará ese bloque adicional, y la misión
simplemente terminará al principio de la cuarta iteración
cuando Ruby alcance el objetivo.
2 5-6 Este también es un buen lugar para usar un bucle Repetir,
dado que Ruby tiene que tomar dos cajas magnéticas y
soltarlas en los lugares correctos para llenar los huecos en
el puente.
Tenga en cuenta que las líneas amarillas son sólo para
decoración y que el código no necesita incluir ninguna
referencia a ellas.

3 4 Si los estudiantes no recuerdan operadores lógicos, puede


mostrarles la Lección 10, Parte 2

7 Dado que la escena es simétrica, no importa si Ruby va


primero por las cajas magnéticas a la derecha y luego a la
izquierda, o primero a la izquierda y luego a la derecha,
siempre que mantengan los grados como corresponde y no
mezclen 90 y -90.

8 Para mantener nuestras instrucciones correctas,


utilizaremos una variable para la dirección y usaremos
esta variable como el valor para un bloque Girar a. De esta
manera, será fácil alternar entre la derecha y la izquierda al
final del bucle, estableciendo la dirección en x (-1), y
cambiando así de 90 a -90 [ 90 x (-1) = -90 ], o de -90 a 90
[ (-90) x (-1) = 90 ].
Este código puede funcionar de la misma manera si el
estudiante usa 90 o -90 para el valor inicial de la variable.
Si queda tiempo en la lección, demuestre esto cambiando
el valor inicial.

Sesión 13: Lógica de seguimiento de líneas


Parte Nro. de Notas
diapositiva

1 13 Al principio, Ruby se centra exactamente en el medio de la


línea, de manera que sus dos sensores detectan el mismo
color: “Green” (verde). Una vez que decidimos que
queremos seguir el borde izquierdo de la línea, debemos
comenzar a trabajar con el sensor de color izquierdo y
enfocarnos en sus lecturas.
Por esta razón, la primera instrucción dentro del bucle Si/
Sino (Hacer) será conducir ligeramente hacia la izquierda.
Para eso, tenemos que darle a la rueda derecha de Ruby
más velocidad que a la rueda izquierda.

14 Dado que la primera declaración lleva a Ruby hacia la


izquierda, la segunda declaración (de lo contrario) tiene
que llevarla ligeramente hacia la derecha.
Para esto, tenemos que darle a la rueda izquierda de Ruby
más velocidad que a la rueda derecha.

15 Dado que el bucle Si / Sino está dentro de un bucle


Repetir por siempre, estas dos afirmaciones (viajar
ligeramente hacia la izquierda si ve verde, o de lo contrario,
viajar ligeramente hacia la derecha) llevarán a Ruby
gradualmente hacia adelante en forma de zigzag.

19 Cuando una línea se curva hacia la izquierda, el borde


derecho (el borde “exterior”) de la línea será un poco más
largo / ancho que el borde izquierdo ("interior"). Estamos
utilizando altas velocidades en esta misión debido al límite
de tiempo, por lo que necesitamos tanta ventaja como
podamos encontrar, para que Ruby no conduzca
demasiado lejos y pierda la ventaja.
Al usar el sensor de color correcto y seguir el borde
derecho, Ruby seguirá estando "en" la línea porque sólo su
sensor derecho, en el paragolpes delantero derecho, está
en el borde derecho.
Si la línea se curvara hacia la derecha, trabajaríamos con
el borde "exterior" izquierdo y usaríamos el sensor de color
izquierdo.

20 Al hacer clic en el icono de la mano, se mostrará una


revisión del operador lógico OR.
Si los estudiantes no recuerdan operadores lógicos, puede
mostrarles la Lección 10, Parte 2

2 4-5 Si los estudiantes tienen dificultades para comprender la necesidad de


un término medio o la fórmula media (35 + 100): 2 ≈ 70, realice un
experimento con ellos:
Pida 2 voluntarios.
Marque 2 líneas en el piso con cinta aislante / marcador
borrable, a varios metros de distancia, una marcada con 35
y la otra marcada con 100.
Haga que un estudiante se pare en cada marca, uno frente
al otro. Luego, haga que ambos estudiantes den un paso
(pequeño) hacia adelante, uno hacia el otro. Luego otro
paso. Luego otro, hasta que los dos estudiantes se
encuentren en el medio.
Explique que ahora han alcanzado el punto medio entre los
dos valores, 35 y 100. Este punto, este punto medio, está a
la misma distancia de 35 que de 100. Está exactamente en
el medio. Este es el "promedio".
Técnicamente, el valor es 65, pero está bien usar algo
cercano, como 70.

7 Una forma diferente de escribir los comentarios en la


imagen podría ser:

Hacer (comentario: valor de reflexión 71 o superior -


demasiado cerca de la línea blanca)

Sino (comentario: valor de reflexión 69 o inferior,


demasiado cerca del piso marrón)

3 4-5 Al colocar el bloque "establecer la variable a valor de


reflexión" dentro del bucle Repetir por siempre, nos
aseguramos de que la variable "reflexión" siempre muestre
el valor actual que detecta el sensor, que podría cambiar
de segundo a segundo. Esto hará que los ajustes (luego
determinados por la variable "ajuste" - diapositiva 5) sean
más precisos, ya que el bucle siempre verifica el valor de
reflexión y actúa según el mismo.

4 3 Si nuestra desviación del valor deseado es pequeña,


también estableceremos nuestro ajuste en un valor
pequeño, lo que dará como resultado un ajuste pequeña y
suave.
Si nuestra desviación del valor deseado es GRANDE,
estableceremos nuestro ajuste en un valor alto, lo que hará
que nuestros ajustes sean más rápidos.
Tenga en cuenta que las dos líneas en el gráfico están
alineadas; esto se debe a que la razón o proporción es la
misma para todos los valores de desviación. Este es el
punto de proportion.

5 Tenga en cuenta que, para una desviación grande, como


de 50 puntos (un valor de reflexión de 100), el ajuste de
Ruby sería bastante grande; mientras que para una
desviación menor como 10 puntos (un valor de reflexión de
60 o 40) necesitaría un ajuste mucho menor y más suave.
Un valor de reflexión de 50, exactamente nuestro valor
deseado, el punto medio entre 0 y 100, no requeriría
ningún ajuste, lo que significa que Ruby podría seguir
viajando en línea recta.
5 Nota general Estas misiones son bastante complejas. Si los estudiantes
no pueden completarlas, muéstreles soluciones o deles
algunas pistas.

Sesión 14: Bloques precisos


Parte Nro. de Notas
diapositiva

1 5 Un codificador es un dispositivo electromecánico que


convierte la posición angular del eje del motor en una señal
eléctrica que se utiliza para controlar la velocidad y/o la
posición. Cada motor tiene su propio codificador
independiente, al igual que cada rueda tiene su propio
motor.

6 Los valores de los codificadores están en grados, ya que


están conectados a la rotación de los ejes de las ruedas.
Una rotación completa de una rueda cuando se conduce
hacia adelante mostrará 360 grados en el codificador de
esa rueda, dos rotaciones mostrarán 720 grados, etc.
Una rotación completa conduciendo hacia atrás mostrará
-360.
Si Ruby viaja en línea recta (hacia adelante o hacia atrás),
ambas ruedas/ejes giran la misma cantidad/los mismos
grados, por lo que ambos codificadores mostrarán el
mismo número.

7 Si Ruby gira en un punto (giro del tornillo), los dos


codificadores mostrarán los mismos valores, sólo que uno
positivo y uno negativo, ya que una rueda gira hacia
adelante y la otra hacia atrás.
Si realiza un giro suave, un codificador mostrará un valor
más alto y el otro un valor más bajo, ya que una rueda gira
a una velocidad más alta que la otra.

11 Si los estudiantes necesitan más ayuda para recordar las


articulaciones y los bloques de rotación del sensor, vuelva
a la lección 9, parte 1

2 3 Esta técnica de ajuste llevando a Ruby en suaves zigzags


(donde una rueda gira más rápido que la otra) es la misma
técnica que utilizamos para seguir la línea en la lección 13.

13 Note que en esta misión usaremos el error / deviación de


(Y=0) como está, usando el bloque Obtener eje Y de
sensor giroscópico. En misiones más avanzadas,
utilizaremos una variable para representar este error, ya
que podríamos querer manipularlo (multiplicarlo o dividirlo)
para ayudar a nuestro código.

3 2 Explique la estrategia para alinearse con las líneas


blancas:
Al principio, los dos sensores de color de Ruby ven el piso
marrón (un valor de reflexión de 35).
Una vez que Ruby comience a viajar hacia adelante, su
sensor de color izquierdo será el primero de los dos
sensores en detectar un valor de reflexión más alto (el
valor de la línea blanca es 100) debido al ángulo en el que
se dibuja la línea.
Es por eso por lo que utilizaremos el sensor de color
izquierdo durante esta misión para determinar si Ruby ha
alcanzado el borde de la línea blanca.

3 Pero dado que usaremos un bucle Repetir por siempre,


debemos tener en cuenta la segunda, tercera y cuarta
iteración, donde Ruby no está parada con ambos sensores
sobre el piso marrón.
Después de alcanzar la primera línea blanca y alinearse
con ella, los dos sensores de Ruby verán la línea blanca.
Esta es la razón por la cual nuestro primer comando dentro
del bucle Repetir debe ser viajar hacia adelante hasta que
los sensores de Ruby ya no vean la línea blanca, sino el
piso marrón.
Como el valor de reflexión del piso marrón es 35,
usaremos ≤ 50 (menor o igual a 50) para esto.
El siguiente comando es exactamente lo contrario: esperar
hasta que veamos un valor de reflexión mayor que 50, que
está justo más allá del borde de la línea blanca.

4 Trabajar con valores de reflexión será mucho más fácil y


más preciso para esta misión, porque no queremos
limitarnos a los valores de Nombre de color, ya que
dependen casi completamente del blanco para funcionar.
Queremos usar una variedad más amplia de valores para
esta misión, por eso usaremos valores de reflexión. El
motivo verdadero se mostrará en la diapositiva 5.
10 En la misión Ajustando hacia la izquierda, las líneas se
dibujaron en un semicírculo alrededor del automóvil del
medio, mirando hacia "adentro", lo que significaba que
siempre sería el sensor de color izquierdo ("interno") de
Ruby el que detectaría primero el borde de la línea blanca.
En la misión ¡Corrige la reflexión!, las líneas blancas se
dibujan en el piso en ángulos opuestos, lo que significa que
cada vez que Ruby salga de una línea y se coloque en
otra, será un sensor de color diferente que llegará primero
al borde de la línea.

Explicación alternativa de fracciones recíprocas:


https://www.mathsisfun.com/reciprocal-fraction.html

También podría gustarte