PROGRAMACIÓN DE ROBOTS LEGO MINDSTORMS

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

¡CUIDADO!


Esta lección aprenderá cómo utilizar las estructuras de caso. La estructura de casos en LabVIEW ™ es ​​muy similar a la declaración if / else que encuentra en muchos otros lenguajes de programación. Una estructura de casos le permite hacer una cosa en una situación, y algo diferente en otra situación. Un ejemplo de esto es que si el robot se encuentra cerca de una pared, entonces se detenga. Si el robot no está cerca de una pared, entonces que siga adelante.
Al igual que en el ciclo While, la estructura del caso se encuentra en las estructuras. Otra similitud con el ciclo While es que se utiliza para contener el código. Lo que está dentro de la estructura de casos estará a cargo de uno u otro caso.

Las características principales de la estructura de casos son la etiqueta del selector en la parte superior, que muestra en que caso se encuentra, y el selector de caso sobre la izquierda, que es un signo de interrogación en él.
Las flechas de la etiqueta del selector se pueden utilizar para alternar entre los diferentes casos o se puede utilizar la flecha desplegable junto al nombre del caso.
Por defecto, en una estructura de casos se espera una entrada booleana. Por lo tanto, existen dos casos: un caso real y un caso falso. También puede notar que el selector de caso es de color verde, lo que significa que se espera un valor booleano. Sin embargo, las estructuras de caso pueden ser utilizadas para tomar valores numéricos o de tipo cadena. Por ahora, se limitara a tratar con valores booleanos de entrada a la estructura de caso.
Si ponemos algo de código dentro de nuestro caso falso, como un sensor, que sólo existe en el caso falso y luego alternamos con el caso real, veremos que no está allí.
           
La razón por la que no ve las mismas cosas en el caso verdadero y el caso falso es porque solo ha colocado objetos en uno de los dos casos.
Para ayudarle a entender la forma en que trabajan las estructuras de caso, va a crear un programa que, en un caso, suma dos números, y en el otro caso, los resta. Este programa se crea en la instancia principal de la aplicación, por lo que es importante cambiar a esa instancia antes de ejecutar el programa. Sin embargo, puede crear el programa mientras esta en la instancia NXT, porque se  ha acostumbrado a la ubicación de todas las funciones de las paletas.
Va a comenzar por la colocación de una estructura de caso en el diagrama de bloques. Tiene un caso real y un caso falso, y puede decidir sumar los dos números en el caso real, y restarlos en el caso falso. Necesita una manera de indicar si está en el modo de sumar o en el modo de restar. Para ello, se dirige al panel frontal y crea un conmutador. De clic con el  botón derecho del ratón en el panel frontal, seleccione la paleta Express >> Buttons & Switches, y haga clic en Vertical Toggle Switch.
Puede cambiar el tamaño de este interruptor por lo que es más fácil de usar. También de clic derecho sobre el interruptor, seleccione Visible Items y seleccione Label. Haga clic en el texto Boolean. Esto crea una etiqueta que diga si el interruptor de palanca es la salida de un valor verdadero o un valor falso. Cuando está en la posición hacia abajo, la etiqueta dice "Restar", lo que significa que el interruptor de salida es un valor falso. Cuando se pulsa el interruptor cuando el cursor se convierte en un puntero, y el interruptor se destina a la posición con la etiqueta que diga "Sumar". Esta es la posición en la que el interruptor de salida arroja un valor verdadero.
Si cambiamos el diagrama de bloques, verá que el interruptor ha aparecido. Va a cablear el interruptor a la selección de casos de la estructura de caso. Nuestro código debe ser similar a la Figura 86.
Dado que quiere sumar en el caso real, se colocará una función Sumar dentro del caso Verdadero. Estará restando en el caso falso, por lo que va a colocar una función Restar dentro del caso Falso. Las funciones de  Restar y Sumar se encuentran en la sub-paleta numérica que se encuentra dando clic derecho sobre el diagrama de bloques en Programming >> Numeric.
Tiene que volver al panel frontal y crear dos controles numéricos para que pueda introducir los dos valores que se van a sumar / restar. También tiene un indicador numérico para mostrar el resultado. Estos controles numéricos e indicadores se pueden acceder desde la sub-paleta numérica en la paleta de controles. El panel frontal debe ser similar al de la Figura 88.
Si vuelve al diagrama de bloques, tiene que poner los dos controles y el indicador en el lugar correcto.
Ahora tiene que conectar los dos controles a las entradas de la función Sumar, y tiene que conectar la salida de la función Sumar al indicador.
Ahora tiene que  cablear el caso falso; los dos controles de las entradas  a  la función Restar, y el cable de salida de la función Restar al indicador. El código debe ser similar a la Figura 91.
Si se dirige al panel frontal, puede introducir dos valores en los controles. Va a usar 7 y 2 y poner el interruptor en el modo Sumar. Ahora bien, si hace clic en el botón Ejecutar, el indicador mostrará el resultado de 9.
Ahora va a utilizar este programa para restar. Pulse el interruptor y póngalo en el modo de Restar. Puede realizar ejecutar el programa y ver que se calcula 7 - 2, y muestra el resultado.
Ha creado con éxito un programa que funciona de manera diferente, dependiendo del valor booleano ingresado a la etiqueta del selector de la estructura de caso.
Hay muchos diferentes sensores que se pueden utilizar con el LEGO ® MINDSTORMS ® robot y el controlador NXT. Esta el sensor de contacto, el sensor de sonido, el sensor de temperatura, el sensor de ultrasonidos, y muchos más. Va a explorar el sensor ultrasónico con mayor detalle en esta lección.
.
El sensor de contacto que previamente aprendió proporciona un valor booleano a la salida, pero el sensor ultrasónico genera un valor numérico. La salida del sensor ultrasónico es  la distancia hasta un objeto. Si está muy cerca de un objeto, la distancia puede ser cero o un número pequeño. Si está muy lejos de un objeto, el número será grande, de hasta un máximo de 255. Es importante señalar que los datos procedentes del sensor es un valor entero de la distancia. Es por eso que hay un cable azul que sale de la terminal de salida.
Como todas las otras funciones de NXT, hay dos terminales NXT y debemos especificar a qué puerto está conectado en el controlador NXT.
Puede acceder al sensor ultrasónico haciendo clic derecho sobre el diagrama de bloques, seleccionando NXT I / O y haciendo clic en el sensor. Con ello se abre la función del sensor.
Debe hacer clic en la flecha desplegable para acceder a la selección de polimórficos y haga clic en Leer ultrasónico.
Como siempre, debe hacer clic derecho en la terminal del puerto para crear una constante y seleccionar el puerto correcto.
Es muy poco probable que quiera hacer que el robot haga algo cuando haya una distancia exacta hasta un objeto. En su lugar, va a querer que el robot haga algo si es menor o mayor que  una cierta distancia hasta ese objeto. Por ejemplo, querrá que el robot deje de moverse cuando se detecta un objeto a menos de 20 centímetros de distancia, pero sigue conduciendo cuando no hay nada delante de él.
Dado que el sensor ultrasónico devuelve un número único, que es la distancia de un objeto delante de él, tiene que determinar un umbral. Un umbral es básicamente un valor numérico con el que va a comparar la salida del sensor ultrasónico. Querrá que el robot haga algo si el valor del sensor ultrasónico tiene una salida que está por debajo de ese valor umbral, y hacer algo más si es igual o superior a ese valor umbral. Una función de comparación, como el menor que o el mayor que,  puede hacer eso. Esta función ayuda a convertir la salida numérica del sensor ultrasónico en un valor booleano que puede conectar a una estructura de caso.
Es importante señalar que las funciones de comparación toman dos valores numéricos: o enteros de doble precisión, enteros, etc, y booleanos. Esto permite formular la pregunta como "¿Estoy cerca de la pared?" Y obtener una respuesta afirmativa o no.
La ubicación de las funciones de comparación se puede encontrar haciendo clic derecho en el diagrama de bloques, y seleccionando de la sub-paleta de comparación. En este caso seleccionará la función Menor que.
Ahora puede colocar la función Menor que, cerca del sensor ultrasónico y cablear la terminal de salida del sensor a la terminal de entrada de la función.
En la otra entrada de la función Menor que, puede crear una constante para determinar la gama.
El valor que asigna a la constante depende de la situación. Revisando el ejemplo cuando el robot se acerca a una pared, este número determinará qué hacer cuando el robot está a una distancia inferior a 50 cm y qué hacer cuando el robot está a una distancia superior a 50 cm.
Ahora puede conectar la salida de la función Menor que en la selección de la estructura de caso.
Ahora, el código del caso "verdadero" se ejecutará si el valor de comparación devuelve un “true”. Si el valor de comparación devuelve un “false”, el caso "falso" se ejecutará.
Taller: Hacer que el robot se mueva hacia adelante hasta que el sensor ultrasónico detecte un objeto enfrente del robot a una distancia de 20 cm., y entonces se detenga. Si el objeto es eliminado, el robot sigue avanzando. Al pulsar el sensor de contacto se detiene 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

15 al 28 de febrero
III Congreso Virtual Internacional sobre

Desafíos de las empresas del siglo XXI

15 al 29 de marzo
III Congreso Virtual Internacional sobre

La Educación en el siglo XXI

Enlaces Rápidos

Fundación Inca Garcilaso
Enciclopedia y Biblioteca virtual sobre economía
Universidad de Málaga