PROGRAMACIÓN DE ROBOTS LEGO MINDSTORMS

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

COMANDOS DE SONIDO


Descripción del sensor de sonido.
En el cuadro desplegable Perfil de usuario, seleccione su perfil.
Seleccione Archivo >> Nuevo para crear un nuevo programa.
Coloque un bloque de Sensor de sonido que se localiza en la paleta Sensor.
Haga clic en el bloque del Sensor de sonido. La sección de configuración que se muestra en la Figura 212 debe aparecer en la parte inferior de la interfaz del software NXT 2.1 Programming.
 Truene los dedos varias veces muy cerca del Sensor de sonido, y observe los resultados en el indicador de Sensor de sonido, como se muestra en la Figura 212.
Escriba un programa sencillo que mueva el Tribot hacia adelante con una potencia igual a la intensidad del sonido que escucha.
Taller: Levante el Tribot para que las ruedas no toquen el suelo. Cree un programa simple que gire las ruedas a plena potencia durante 10 segundos. Monitore el Sensor de sonido, mientras las ruedas giran (un bloque de Sensor de sonido sigue siendo necesario para hacer esto).
Conteo de eventos de sonido.
 El Sensor de sonido no sólo tiene la capacidad de medir los niveles de volumen, sino que  también puede ser usado como un interruptor. En muchos casos, una estructura Bifuración puede ser configurado para alternar entre un caso verdadero y un caso falso, si el nivel de volumen de un sonido detectado cae encima o debajo de un determinado nivel o umbral. Sin embargo, a veces es necesario disponer de múltiples casos que el mismo sensor debe ser capaz de alternar. Este es un ejemplo donde puede ser utilizada una variable para almacenar el número de veces que el sensor ha detectado el sonido de audio dentro de un cierto período de tiempo. LEGO Mindstorms NXT tiene un bloque Variable que se encuentra en la paleta de datos que se puede utilizar para este propósito.
Para demostrar este concepto.
Los nodos del rectángulo azul en el diagrama de flujo indican las funciones o procesos. Los diamantes de color naranja son las preguntas o los interruptores. Las flechas representan el resultado de un cálculo o una respuesta a una pregunta. Por lo general, los valores de los resultados también están escritos junto a las flechas. Tenga en cuenta que hay también los nodos: iniciar y detener. Es importante tener estos nodos para mostrar los pasos que se ejecutan en primer lugar, y qué pasos pueden dar lugar a la terminación del programa.
Vamos a traducir el diagrama de flujo en el código, siga estos pasos:
Cree un nuevo programa  NXT, y guardelo como "Conteo de evento de sonidos.rbt"
Una variable llamada "i" debe ser definida. Vaya a Edición>> Definir las variables para abrir el cuadro de diálogo Editar Variables, como se muestra en la Figura 215. Cree una variable de Tipo de datos: Numéricos llamada i y cierre el diálogo.


Coloque un bloque Variable que se encuentra en la paleta de datos sobre el haz de secuencia. Seleccione la variable "i" de la lista, y configure el bloque Variable para escribir un valor de 0 para esta variable. Esto asegura que no hay datos de basura presentes en la variable antes de que se utilice en el programa. Es muy recomendable hacer esto cada vez que utilice la definición de las variables en los programas para garantizar un comportamiento esperado.
Coloque una estructura Bucle después del bloque Variable. Configure el Bucle para que se detenga cuando se pulse el botón ENTER del NXT, como se muestra en la Figura 217.
Coloque un bloque Bifurcación que se encuentra en la paleta de flujo dentro del Bucle. Configure el bloque Bifurcación.
Insertar otro bloque Variable dentro del caso “verdadero” del bloque Bifurcación. Configure este bloque Variable para leer el valor de "i".


Observe en el diagrama de flujo que "i" se incrementa cuando se detecta un  sonido. Use un bloque Matemáticas que se encuentra en la paleta de datos para incrementar el valor almacenado en "i". Ate el valor de salida del bloque Variable a la entrada A del bloque Matemáticas. Esto hará que el bloque Variable pase el valor de "i" cuando se lee en el bloque Matemáticas para que pueda ser incrementado. En la ventana de configuración del bloque Matemáticas, configure B es igual a 1 para que "i" sólo se incremente en 1. El resultado final de esta configuración debe tener el aspecto de la Figura 219.
Para almacenar el resultado de este cálculo, coloque otro bloque Variable después del bloque Matemáticas. Configure el bloque Variable para escribir en la variable "i". Conecte la salida del valor del bloque Matemáticas a la entrada de valor del bloque Variable, como se muestra en la Figura 220.
El siguiente paso en el diagrama de flujo para el nuevo número es que se muestre en la pantalla frontal del controlador NXT. Para mostrar este número en la pantalla, primero se debe convertir de un número a texto. Esto se debe a que la pantalla en el controlador NXT sólo acepta texto en la pantalla.
Convierta "i" en texto, coloque un  bloque Número a texto que aparece en la paleta avanzada después del bloque Variable recientemente colocado. Conecte la salida del valor del bloque Variable adyacente a la entrada del valor del bloque Número a texto.
Coloque un bloque Visualizar que se encuentra en la paleta de acción después del bloque Número a texto, y configurelo como se muestra en la Figura 222.
Para ver las entradas y salidas que están disponibles para el bloque de pantalla, mueva el cursor hasta el borde inferior izquierdo del bloque Visualizar hasta que el cursor se convierte en punto de arriba a abajo. Haga clic en el borde inferior izquierdo del bloque de la pantalla. Un gabinete de entradas y salidas deben abrirse por debajo de ella.
Conecte la salida de texto del bloque Número a texto a la entrada de texto del bloque de la pantalla. Esto hará que el valor de "i" se muestre en la pantalla del controlador NXT en lugar de "Mindstorms NXT".
Coloque un bloque de Sonido que se encuentra en la paleta de acción al principio del caso “verdadero” del bloque Bifurcación. Configure el bloque de Sonido.
Este bloque está destinado a reproducir un sonido cuando el caso “verdadero” del bloque Bifurcación se activa. Se trata de una técnica de depuración de gran ayuda, ya que se notifica al oyente un sonido cuando se ha detectado, sin tener que mirar la lectura del sensor en la pantalla. Esta es otra técnica de depuración de gran ayuda para escribir programas. Agregar marcas como esta ayudan a ilustrar lo que se está ejecutando actualmente en el programa.
Nota: El gabinete del conector para el bloque de la pantalla puede ser cerrado una vez que todas las conexiones se han realizado para ahorrar espacio. Las conexiones se mantienen intactas, mientras que el gabinete está cerrado.
Guarde el código, y descarguelo en el NXT. Ejecute el programa, y vea la pantalla mientras truena los dedos en las proximidades del sensor de sonido.
Hay un par de cosas que puede hacer para corregir los problemas en el código del programa. Una de ellas es, asegurarse de que el umbral de nivel de sonido que se establece para el estado del interruptor del sensor de sonido es lo suficientemente alto como para filtrar el ruido ambiental del entorno y de los motores, pero lo suficientemente bajo como para detectar un ruido a una distancia razonable (4 - 12 pulgadas de distancia.) Encuentre el umbral, que es único para todos los robots, y se encuentra generalmente a través de pruebas. Asegúrese de que el umbral que se muestra en la Figura 225 está muy bien adaptado a su Tribot.
Otra forma de mejorar el rendimiento de conteo es dejar de leer el sensor de sonido una vez que el sonido se ha detectado hasta que el volumen del sonido cae por debajo del umbral. Esto evita que el código registre un sonido largo y fuerte (como un silbido), como varios sonidos.
Para solucionar este problema, coloque un bloque Espera que se encuentra en la paleta de flujo después del bloque de la pantalla. Configure este bloque para que espere hasta que el nivel de ruido detectado por el sensor de sonido este debajo del umbral que se describe en el estado del interruptor del sensor de sonido. Esto hará que la condición de paso para ejecutar el caso “verdadero” ocurre cuando el sonido que es detectado esta por encima de un cierto nivel, y la estancia en el caso “verdadero” hasta que el sonido detectado es inferior a este umbral.
Una correcta implementación de este código (Figura 226) tendrá el registro de un silbido largo y fuerte como un solo sonido.

Taller: Control del Tribot utilizando comandos de sonido.
El objetivo de este taller es el control del Tribot usando sólo su sensor de sonido. Además, el Tribot automáticamente debe evitar los objetos que son detectados por el sensor ultrasónico. Usando el conocimiento del sensor de sonido, sensor ultrasónico, las variables, la evitación de objetos a partir del taller anterior, y diagramas de flujo, completa este taller mediante el cumplimiento de los siguientes requisitos:
El Tribot debe demostrar todos los elementos que se muestran en el diagrama de flujo de la Figura 227 en la secuencia correcta.
El robot debe avanzar continuamente hasta que se procesa un comando ya sea a la izquierda, derecha, o se detenga.
El Tribot debe mantener una cuenta exacta de los sonidos detectados en un intervalo de dos segundos antes de que la cuenta se transforme en un comando.  Si el Tribot detecta un objeto con el sensor ultrasónico, lo debe evitar.
El Tribot debe interpretar un sonido como una vuelta a la izquierda, dos sonidos como una vuelta a la derecha, y tres o más como una orden de parada dentro de un intervalo de muestreo de 2 segundos. De lo contrario, el Tribot debe moverse en la dirección de avance.


Consejos útiles:
Insertar un sonido "bandera" en el comienzo del caso “verdadero” del interruptor del sensor de sonido para asegurarse de que el sonido ha sido detectado. El uso correcto de este bloque hará que el Tribot haga un ruido cuando se escucha y cuenta con un sonido. Esto le ayudará a depurar el reconocimiento de sonidos.
Utilice un bloque Variable para almacenar "i".
Dos circuitos están involucrados en este programa. Uno está anidado dentro del otro.
Un bloque Bifurcación  multi-estado es necesario para procesar: a la izquierda, a la derecha, o detener. Usted puede agregar más condiciones a una estructura Bifurcación y las escribe en la barra.
El bloque Detener se encuentra en la paleta de flujo y detiene el programa cuando sea necesario.
Un pequeño retraso de tiempo de 0,2 segundos se necesita en el final de todo el código dentro del bucle principal como se muestra en el diagrama de flujo. Use un bloque Espera con el parámetro de control establecido en la hora y la demora ajustada a 0,2.
Un bloque Mover establecido con una duración ilimitada servirá para garantizar un buen funcionamiento en la dirección de avance.
No es necesario hacer algo, si no hay ningún objeto detectado por el sensor ultrasónico.
Configuración de los motores en la Siguiente acción: Flotación, en lugar de Freno puede ofrecer resultados más suaves.

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
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