PROGRAMACIÓN DE ROBOTS LEGO MINDSTORMS

Pablo Iván Romero De La Rosa
Leodegario G. Aguilera Hernández
Orlando Meza Zaleta

USANDO EL SENSOR FOTOSENSIBLE COMO INTERRUPTOR


En el cuadro desplegable Perfil de usuario, seleccione su perfil.
Seleccione Archivo >> Nuevo para crear un nuevo programa.
Coloque un bloque Sensor luz que se encuentra en la paleta sensor. Haga clic en el bloque Sensor luz. La ventana de configuración de la Figura 247 debe aparecer en la parte inferior de la interfaz del software NXT.
Usando el sensor de luz como interruptor.
Hay dos diferentes maneras en que el sensor de luz se puede utilizar para proporcionar información a un sistema de control de movimiento. Una forma es usar el sensor de luz como interruptor de conmutación digital. Esto se puede lograr mediante la comprobación si el valor del sensor de luz está por encima o por debajo de cierto umbral. A modo de ejemplo, cualquier valor del sensor que está por encima de 50 se considera como un estado "encendido" (superficie blanca), y cualquier valor por debajo de 50 se considera como un estado "off" (superficie de color negro.)
Una forma sencilla de seguir una línea con un sensor de luz es que el sensor sigue a lo largo de un camino.

Tenga en cuenta que el sensor no está viajando dentro de la línea, sino a lo largo del borde de la línea. La ejecución del sensor de luz a través del borde de la línea proporciona la información adecuada a un sistema de control de movimiento porque la transición se detecta. La transición de la luz a la oscuridad y de la oscuridad a la luz es la única manera para que el robot sepa si está siguiendo la línea. Si el robot se desplaza a lo largo del centro de la línea o en una hoja grande de papel negro, su lectura siempre será "apagado" durante todo el tiempo que se mueva. Esto daría lugar a opiniones de mala posición para el robot, y haría que  vagará sin rumbo.
Suponiendo que el robot sigue el borde superior de la línea en todo momento, se puede hacer ciertos supuestos:

Por lo tanto, él puede ordenarle al robot para que se encienda y en consecuencia permanezca a lo largo del borde de la línea para:
 • Girar a la izquierda hasta que una transición de "off" a "on" se detecta.
 • Girar a la derecha hasta que una transición de "on" en "off" se detecta

El diagrama de la Figura 249 muestra los comandos que deben ser ejecutados para girar a la izquierda o a la derecha conforme el sensor de luz toma lecturas.
Tenga en cuenta que estos comandos sólo son válidos si el robot está en el borde izquierdo (borde superior, en la Figura 249) de la línea. Si el robot sigue el borde derecho (borde inferior, en la Figura 249) de la línea no funcionará, a menos que la lógica para dar vuelta se invierta.
Para el desarrollo óptimo de este capítulo usted requiere del Lego NXT 8527/8547 Mindstorms Test Pad x1624, que es un circuito de prueba.
Con todo esto dicho, ¡construya un programa seguidor de líneas!
Cree un nuevo programa en el software NXT 2.1 Programming.
Guarde el programa como "Seguidor de líneas".
Una variable lógica se utiliza para alternar entre girar a la izquierda y a la derecha. Coloque un bloque Variable que se encuentra en la paleta Datos. Este bloque servirá para establecer el estado inicial de la lógica como “verdadero”. Configurar el bloque como se muestra en la Figura 251.
En la práctica de programación, siempre es una gran idea inicializar todas las variables en un estado conocido antes de que sean utilizadas para evitar que los datos basura que pueden estar presentes generen una confusión en el programa.
Coloque un bloque Bucle después del bloque Variable. Configúrelo como se muestra en la Figura 252.
Coloque un bloque Variable dentro del bloque Bucle. Configúrelo para leer el contenido de Lógica 1.
Inserte un bloque Bifurcación después del bloque Variable y configúrelo como se muestra en la Figura 253.
Cablee la salida del bloque Variable con  la entrada en el borde inferior izquierdo del bloque Bifurcación. Esto permite que la Variable pueda alternar entre los casos dentro del bloque Bifurcación.
Coloque un bloque Mover dentro del caso “verdadero” del bloque Bifurcación, y configúrelo como se muestra en la Figura 254.
Coloque otro bloque Mover dentro del caso “falso” del bloque Bifurcación, y configúrelo como se muestra en la Figura 255.
Tenga en cuenta que el bloque de la izquierda tiene más potencia que el bloque de la derecha. Esto fue intencional para que responda mejor a las curvas de la línea.
Tenga en cuenta que este programa de ejemplo está diseñado con las siguientes características:

Coloque un bloque Espera después del bloque Mover en el caso “verdadero” del bloque Bucle, y configúrelo como se muestra en la Figura 256.
Coloque otro bloque Espera después del bloque Mover en el caso “falso” del bloque Bifurcación, y configúrelo de la misma manera que el bloque Espera anterior, pero cambie el símbolo Menor que ( < ) por un Mayor que ( > ).
Coloque un bloque Variable después de cada uno de los bloques Espera en ambos casos del bloque Bifurcación. Ambos bloques Variable escriben un valor Lógica 1. El caso “verdadero” del bloque Bifurcación escribirá una lógica con valor Falso, y el caso falso del bloque Bifurcación escribirá una lógica con valor Verdadero.
Guarde su programa y descargarlo en el Tribot.
Coloque el Tribot en el Lego NXT 8527/8547 Mindstorms Test Pad x1624, a lo largo de un tramo recto.
Ejecute el programa, y vea cómo el robot intenta seguir el borde de la línea.
Usando el sensor de luz como sensor analógico.
Para utilizar la lectura analógica adecuada del sensor de luz, es importante entender cómo se decide cuál es el valor que va a utilizar. Para mantener este simple concepto, supongamos que el sensor de luz tiene la intensidad media de luz que se detecta en un área pequeña. Por lo tanto, como el sensor pasa por encima del borde de una línea negra, la línea cubrirá esta pequeña área en el tiempo. Esto efectivamente reduce el valor de la intensidad devuelto por el sensor. Lo mismo ocurrirá cuando se mueve de un área oscura a un área de luz.
Este comportamiento permite un control más preciso apuntando a un valor que esta entre blanco y negro. Supongamos que el rango de valores posibles de los sensores es representado como sombras de gris. La Figura 259 es una interpretación de la orilla de una línea hasta el sensor de luz.
Los números representan los valores de intensidad que sería devuelto si el sensor de luz se coloca sobre determinado matiz de gris. Escoger un valor medio de 50 como el límite objetivo sería conceder un mayor control del robot debido a que más información sobre la ubicación del sensor se devuelve al programa.
Para ofrecer un rendimiento más preciso, todo lo que hay que hacer es una resta entre la lectura actual del sensor y la lectura ajustada para el sensor. En este caso, la lectura del sensor se establece en 50.
A continuación se construirá un programa sencillo que muestra este concepto.
Cree un nuevo programa de NXT, y guardarlo como "Sensor de luz analógico"
Coloque un bloque Bucle, y deje su configuración predeterminada.
Coloque un bloque Sensor luz en el interior del bloque Bucle, y déjelo en su estado predeterminado.
Coloque un bloque Matemáticas después del bloque Sensor luz, y configúrelo para que realice una resta.
Conecte la salida de la intensidad del bloque Sensor luz a la entrada A del bloque Matemáticas.
Seleccione el bloque Matemáticas, y coloque "50" para la entrada de B. 50 será la lectura deseada del sensor, o punto de referencia, para el algoritmo de la siguiente línea.
 El resultado de este cálculo será la diferencia entre el lugar donde está el robot, y el lugar en el que debería estar. Esta información puede ser usada para controlar directamente la dirección y la potencia de las ruedas. Desde esta resta puede producir una respuesta negativa, la dirección de las ruedas también se puede activar y desactivar.
Coloque otro bloque Matemáticas después del bloque Matemáticas resta, y configúrelo para realizar una multiplicación.
Conecte la salida de Resultados del bloque Matemáticas resta a la entrada A del bloque Matemáticas multiplicación.
Seleccione el bloque Matemáticas multiplicación, y el coloque  B igual a “2”. Esto actuará como un amplificador de la fuerza con la que las ruedas deben girar para corregir su trayectoria.
Con el fin de estar seguros de que el robot se mueve siempre hacia adelante, coloque otro bloque Matemáticas después del bloque Matemáticas multiplicación, y configúrelo para que se agreguen “30” al resultado de multiplicar.
El último paso es determinar si las ruedas deben girar hacia adelante o hacia atrás. Coloque un bloque Comparación después del bloque Matemáticas agregar, y conecte el resultado del bloque agregar a la entrada A del bloque Comparación. Configure el bloque Comparación para que se compruebe si A es mayor que 0.
Coloque un bloque Motor después del bloque Comparación. Determine que la salida del motor corresponde con la rueda izquierda (por lo general su motor C) y configure el bloque Motor a la rueda de comandos.
Ampliar el gabinete del bloque Motor haciendo clic en el borde inferior izquierdo del bloque.
Conecte la salida de Resultados del bloque Comparación a la entrada de Dirección del bloque del motor.
Conecte la salida de Resultados del bloque Matemáticas agregar a la entrada de potencia del bloque Motor.
Coloque otro bloque Motor después del bloque Motor anterior, y configúrelo para el control de la otra rueda (por lo general el motor B) para ir siempre hacia adelante con una potencia de “30”.
Guarde el programa y descárguelo en el robot.
Coloque el robot en el terreno de prueba, en el borde izquierdo de la línea negra, y ejecute el programa.

Volver al índice

Enciclopedia Virtual
Tienda
Libros Recomendados


1647 - Investigaciones socioambientales, educativas y humanísticas para el medio rural
Por: Miguel Ángel Sámano Rentería y Ramón Rivera Espinosa. (Coordinadores)

Este libro es producto del trabajo desarrollado por un grupo interdisciplinario de investigadores integrantes del Instituto de Investigaciones Socioambientales, Educativas y Humanísticas para el Medio Rural (IISEHMER).
Libro gratis
Congresos

4 al 15 de diciembre
V Congreso Virtual Internacional sobre

Transformación e innovación en las organizaciones

11 al 22 de diciembre
I Congreso Virtual Internacional sobre

Economía Social y Desarrollo Local Sostenible

Enlaces Rápidos

Fundación Inca Garcilaso
Enciclopedia y Biblioteca virtual sobre economía
Universidad de Málaga
PROGRAMACIÓN DE ROBOTS LEGO MINDSTORMS Pablo Iván Romero De La Rosa Leodegario G. Aguilera Hernández Orlando Meza Zaleta Volver al índice Leer más libros Soy autor ¿Como puedo publicar mi libro? Página principal