Documentos de Académico
Documentos de Profesional
Documentos de Cultura
12 Manipulación Uso del brazo magnético de Ruby para interactuar con los
magnética objetos de la escena y reorganizarlos.
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.
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
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.
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.
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.
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.
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
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.
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.
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.
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:
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
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.