TRUCOS BREVES

CON NXT-G

Trucos breves con LEGO Mindstorms NXT


down-amarillo-flecha

En esta sección recopilaré una pequeña colección de trucos para NXT-G que he ido descubriendo, bien por experimentación propia, bien por aportaciones de otras personas o páginas web. Allá van.


  • No veo el panel de configuración.
  • Eliminar un solo "wire" del programa.
  • Intercalar iconos en el programa.
  • Evitar que los números se solapen.
  • Conseguir un movimiento indefinido del motor.
  • Depurar programas en construcción.
  • Uso del bloque "distnto de".
  • ¿Qué hace este programa?.
  • Acciones simultaneas.
  • Cambiar la dirección de un ultrasonido.
  • Las salidas del sensor de sonido. Nuevo
  • Optimizar programas.
  • NO VEO EL PANEL DE CONFIGURACION DE LOS ICONOS EN MI PANTALLA


    Habitualmente uso para programar un pequeño notebook, con una pantalla de escasas 10" y resolución 1024x600. Y con esto, no aparece en pantalla la parte inferior de la ventana en la que están los paneles de configuración de los iconos. Hay 2 opciones.


    La primera es acudir al panel de control/apariencia/resolución de pantalla o bien, sobre el escritorio pulsas el botón derecho/resolución de pantalla. Una vez hayas accedido, selecciona 1024x768. Ahora acude al software NXT-G y maximiza la pantalla.


    En una ocasión, después de realizar todo esto, seguía sin ver el panel. Manteniendo la resolución a 1024x768, reinicié el software de LEGO y arreglado.


    La opción B es acudir a la página de Teamhassenplug. Allí encontrarás una buena colección de trucos, iconos, programas, etc. Y entre ellos, prácticamente al final, (concretamente el que hace 5 por abajo) está el "Config Popup". Yo no lo he probado, así que si alguien prueba, que nos comente en el foro.


    Válido para pantallas con resoluciones de (nnnn x 600), este programa coloca en una ventana flotante el panel de configuración. Cuando selecciones un icono en el programa, aparecerá el panel de configuración, según se subraya en la propia página.


    Si no he entendido mal la página, hay que instalar el programa en [LEGO MINDSTORMS directory]\engine\project\. De esta forma (dicen) aparecerá como una herramienta en el menú del NXT-G.


    ELIMINAR UN SOLO "WIRE" DEL PROGRAMA


    Un "wire" es el cablecito amarillo de la imagen y que usamos para programar. Recuerda que las pestañas de conectores bajo los iconos se despliegan pulsando donde señala la flecha roja.


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    En ocasiones, introducimos un único valor en varios iconos y, después de un rato, nos damos cuenta de que el wire conectado al bloque central sobra. Bueno, simplemente pincha en el conector señalado con un círculo verde y ese wire (y solo ese) se eliminará.


    Esto es especialmente útil cuando estas conexiones múltiples abarcan de punta a punta del programa. Si no lo hacemos así, se borrarán TODAS las conexiones (buenas y malas) y habrá que reacerlas de nuevo una a una.


    Si por el contrario quieres eliminar todas las conexiones, señala con el ratón (click izquierdo) sobre un wire cualquiera y le das al botón "suprimir".


    INTERCALAR ICONOS EN UN PROGRAMA


    Habrás comprobado que intercalar iconos en mitad de un programa no siempre es fácil. Para colocar cualquier icono en medio de iconos ya depositados en el programa, es imprescindible que esperes a que el programa se haga sitio de forma automática.


    Hay una forma manual de hacerse sitio en un programa: coloca el cursor entre 2 iconos que quieras separar, haz click con el botón izquierdo del ratón y lo mantines pulsado, y ahora arrastras el ratón hacia la derecha para hacerte sitio. También lo puedes usar a la inversa, para recortar esos trozos de línea de programa que a veces se quedan en pantalla.


    EVITAR QUE LOS NUMEROS SE SOLAPEN


    Una desagradable cuestión a evitar cuando visualizamos valores en el display del NXT es que puedan producirse solapamientos de los números presentados. Con letras se entiende mejor. Si pones en un display "programar" y a continuación otro que ponga "NXT", el resultado final en pantalla será "NXTgramar".


    Imagina lo peligroso que puede ser esto cuando visualizamos valores. Podríamos ver 320 en pantalla en lugar del valor correcto de 32 porque el 0 no se ha borrado del "fondo" del display.


    Para un caso tan sencillo, basta activar la pestaña "Clear" en la programación, pero si estamos visualizando varios valors y en todos activamos el "Clear", tendremos parpadeos en el display.


    Una forma de solucionar esto es la sigiente:


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    Este icono "suma" en una sola línea lo que procede de A+B+C. En este caso, en la A llega el valor que quermos ver. Y en B hemos escrito 5 espacios. Ahora el resultado final será "NXT", con lo que lo veremos correctamente.


    CONSEGUIR UN MOVIMIENTO INDEFINIDO DEL MOTOR


    Esta falso error ya está descrito en muchas partes, pero lo recopilaremos por si lo desconoces. Si pones un icono "Motor" y lo configuras en "Unlimited" y lo ejecutas en el NXT, resulta que se para. No es un error. Simplemente el programa envía la orden y continua. Como dspués ya no hay nada, el programa se para.


    Para solucionarlo, basta poner a continuación un bloque "Wait" o encerrar el motor en un bucle infitito.


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    DEPURAR PROGRAMAS EN CONSTRUCCION


    Durante la programacion, nos toca hacer pruebas. Rara vez sale algo a la primera. Existen algunos trucos para encontrar los fallos. El que sin duda uso más, es el de intercalar un bloque "Sound", configurado con un breve pitido, en distintas partes del programa. Especialmente entre bucles.


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    De esta forma, podemos comprobar si se ejecutan distintas partes del programa y si lo hacen en el momento que toca. De las misma forma, en lugar de un bloque "Sound" se puede poner un "Display" o incluso una acción sobre un motor. Una vez depurado el programa, estos iconos se borran.


    Otra opción disponible es usar "Download and Run Selected". Con esto, descargmos al NXT solo partes del programa para su prueba:


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    USO DEL BLOQUE "DISTINTO DE"


    Lo tienes explicado en detalle en el bloque "distinto de", también en esta misma sección de ayudas.



    ¿QUE HACE ESTE PROGRAMA?


    Si pulsas en el cuadradito del inicio del programa:


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    Te aparecerá una ventanita de texto en la que podrás escribir qué hace el programa, las modificaciones que has hecho desde la última versión, etc. Es una buena costumbre.


    ACCIONES SIMULTANEAS


    En ocasiones es necesario que el NXT realice tareas de forma totalmente simultánea. Este programa no tiene utilidad, pero sirve para verlo.


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    Para conseguir esto, simplemente coloca el cursor en la zona señalada, pulsa la tecla SHIFT y arrastras con el botón izquierdo del ratón. Verás que cuando haces esto, el cursor cambia de forma.


    No es recomendable usarlo a menos que sea estrictamente necesario y es mejor escribirlo sin ramificaciones. Rara vez es necesario recurrir a esto, a menos que la velocidad sea una cuestión crítica. Por ejemplo, el siguiente programa es muy útil para desplazamientos de vehículos, pruébalo.


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    Pero es posible hacer exactamente lo mismo sobre una sola línea, sin necesidad de recurrir a ramificaciones:


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    Existen casos en los que puede ser útil ramificar, como por ejemplo, esperar la recepción de un mensaje BT de un segundo NXT o por ejemplo en este programa del sensor siguelíneas de Stefans-robots.


    CAMBIAR LA DIRECCION DE UN ULTRASONIDO


    Aquí un breve truco que he ideado jugando con las características del (ultra)sonido. Un ultrasonido no es más que un sonido, lo único es que no lo podemos oir. Su frecuencia escapa a la detectada por el oído humano. Y por tanto se comporta como cualquier otro sonido: puede rebotar. Ese rebote se llama "eco" y es el mismo que podemos oir en una montaña.


    Podemos usar esa propiedad física del sonido para "hacerlo girar" 90º (u otro ángulo). Para ello, nos serviremos de una pantalla lo más plana posible situada justo delante del sensor y exactamente a 45º respecto al haz del ultrasonidos. Sería así:


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    De esta forma, podemos saber la distancia a la que se encuentra un objeto en la vertical del panel, es decir, a 45º respecto al haz del sonido. O sea, hemos conseguido hacer girar la dirección de la detección del sensor:


    Otros trucos de programacion para LEGO Mindstorms NXT-G

    Al rebotar, el sonido recorre justo el camino inverso hasta llegar de nuevo al sensor, en el que se produce la detección. El ultrasonido simplemente mide el tiempo que pasa entre que envía en sonido (ultrasonido) y lo detecta. Cuanto más tiempo pasa, más lejos está el objeto.


    Es por esto que todos los ultrasonidos tienen una "zona ciega" justo delante del sensor: es necesario un cierto espacio para que al sensor le de tiempo a enviar el sonido, rebotar, llegar de nuevo y poder calcular internamente el tiempo transcurrido.


    En ese sentido, un ultrasonido se comporta de forma diferente a un sensor de luz. El sonido se mueve muuuucho más despacio que la luz. Normalmente, cuanto más cerca pongamos un sensor de luz (o color) del objeto a detectar, mejor funcionará. El ultrasonido, por el contrario, habrá que separarlo un poco del objeto a detectar.


    A cotinuación, un vídeo de demo de lo que hemos explicado:





    Con este "truco", podríamos esconder el sensor debajo de un vehículo para que detectara por rebote paredes o personas y realizara una acción, sorprendiendo a la persona, ya que no conocería el motivo. Yo no he visto ninguna aplicación que use este efecto.


    LAS SALIDAS DEL SENSOR DE SONIDO


    Las salidas del micrófono (sensor de sonido) son un tanto liadas, ya que una va de más a menos y la otra al revés. Hablo del "Sound Level" y del "Raw Value". El "Sound Level" es un valor escalado entre 0 y 100. Cuanto más ruido, más valor del "Sound Level". Un programa sencillo para presentar este valor en pantalla sería el que sigue. Por cierto, la configuración del Display está más abajo:


    Optimizar programas para NXT-G

    El "Raw Value" es un valor sin escalar, y varía entre 1024 y 0. Al contrario que el anterior, a mayor ruido, menor "Valor Raw", ojo con esto que puede ser lioso. El programa equivalente al anterior sería el que sigue. Verás que aquí hay un icono más justo antes del Display: es para "invertir" el resultado. De esta forma tienes mayor valor con mayor ruido.


    Optimizar programas para NXT-G

    OPTIMIZAR PROGRAMAS


    Más de una vez te habrás encontrado con programas que crecen y crecen. O bien con programas cortos que ocupan demasiada memoria. Aquí algunos consejos para optimizarlos.



    1. Usa "My Bloks" siempre que sea posible.


    Vamos a hacer el siguiente programa:


    Optimizar programas para NXT-G

    Si guardamos este programa, vemos que ocupa 424 Kb. Ahora creamos un My Block y volvemos a guardar el programa. Ha quedado reducido a... 60 Kb! ¡7 veces menos! Recuerda que tienes un tutorial para crear My Block.


    En general, el My Block (MBl) comprime y tiene la ventaja de poder volver a utilizarlo dentro del mismo (u otro) programa sin usar más memoria. A modo de prueba, he hecho un MBl con un programa completo de 814 Kb y lo ha dejado en 60 Kb. Por lo que parece, funciona como una especie de compresor .zip


    Si una misma tarea se repite dentro de un programa, no dudes en usarlo. Por ejemplo, presentar un valor en el display. El ahorro de espacio haciendo un MBl en el programa es considerable.



    2. "Enlazar" programas distintos.


    Una opción para "enlazar" programas distintos realizados con un mismo robot podría ser el uso de MBl. Para ello, se programa cada uno de ellos por separado. Digamos que tenemos al final 2 programas para ser realizados por el mismo robot. Ahora, creamos un MBl de cada uno de los programas. Tendremos por tanto 2 MBl distintos.


    Para enlazarlos, simplemente creamos un switch con 2 pestañas e introducimos en cada una un MB. Se ejecutará uno u otro según la tecla del NXT pulsada. Lo mismo valdría para más programas, con las modificaciones de software oportunas.


    Optimizar programas para NXT-G

    3. Evita el uso de bloques "Sound", "Record/Play" y "Display"


    Evita el uso de estos bloques en la medida de lo posible, ocupan mucho. Tanto el icono display como el icono sound disponen de una buena colección de programas incorporados. Todos ellos suelen ocupar bastante espacio.


    4. Mantén lo más limpia posible la memoria del NXT


    Al final, acaba pasando que tenemos una colección de programas en memoria del NXT que no sabemos ni para que son. Limpia periódicamente el NXT. Para ello, comunicaca con el NXT y pulsa sobre la pestaña de "Memory". A la izquierda, encontrarás una barra que indica la utilización de la memoria y cómo están distribuidos: graphics, programs, others, ect. En este último apartado, se almacenan los archivos del data logger.


    5. Uso alternativo de miniblocks


    Existen unos "minibloques" con funciones básicas para motores y otros. Ocupan bastante menos memoria. Los puedes descargar gratuitamente de la página oficial de LEGO: Mini Block Library. En esta misma dirección, puedes encontrar también los iconos de antiguas versiones del NXT.



    .