Manejo simultaneo de varios NXT en LabVIEW

MiniNXTEn el artículo de hoy vamos a ver cómo conectarnos y realizar el manejo simultaneo de varios NXT en LabVIEW. Es un proceso algo complicado, y debido a las limitaciones propias del Bluetooth, poco fiable. Por tanto la mejor manera de que todo funcione bien es que el PC sea quién realice las conexiones y los cálculos, por lo que trabajaremos en LabVIEW orientado a PC y no a NXT (revisad el artículo LabVIEW orientado a PC o NXT. SubVIs). También explicaré al final cómo renombrar los NXT y descargar el firmware con LabVIEW.

Multicontrol:

Para poder manejar varios NXT con LabVIEW necesitamos hacer uso del módulo Specify NXT. Necesitamos este módulo porque es el que nos va a permitir seleccionar a cuál de los NXT con los que estamos trabajando queremos que los siguientes comandos hagan referencia. Dicho módulo podéis encontrarlo haciendo click derecho en el Block Diagram y accediendo a: NXT Robotics → NXT I/O → Advanced → Specify NXT. El bloque Specify NXT tiene el siguiente aspecto:

Specify NXT
En NXT Name elegiremos el nombre de nuestro NXT, y en Connection el tipo de conexión (Bluetooth en este caso, puesto que queremos trabajar con varios simultáneamente). Es muy importante que tengáis los NXT en la lista de dispositivos Bluetooth de vuestro PC, ya que sino LabVIEW no podrá conectarse a ellos. Por supuesto el nombre de NXT que debéis utilizar es el que aparece en Mis sitios de Bluetooth (el administrador de bluetooth de Windows). Os recuerdo que debéis de tener actualizado el firmware del NXT en todos los NXT que vayáis a utilizar, y tener ya descargada la Shell de LabVIEW en el NXT*. Por último, la salida de este bloque es el flujo del programa que queréis que ejecute el NXT, así que lo tenéis que conectar a la parte del programa que queréis que ejecute este NXT.

*Para descargar la Shell de LabVIEW en el NXT en un NXT no tenéis mas que haber usado otro programa orientado a PC con este NXT. Si el de multicontrol es el primer programa orientado a PC que usáis con los NXT, LabVIEW tardará muchísimo en descargar la Shell en todos ellos y muy probablemente dará error de conexión.

Una vez tengáis terminado el programa y le deis a ejecutar tardará bastante en realizar las conexiones, y además que irá uno por uno. Por esto es recomendable tener un botón de control en el Front Panel de LabVIEW que impida que los NXT ejecuten nada de código hasta que lo aprietes. Así podrás esperar tranquilamente a que todos los NXT se conecten, y una vez conectados iniciar el programa apretando dicho botón. Si no ponéis este botón cada NXT empezará a ejecutar el programa según se conecte, con lo que empezarán totalmente a destiempo.

Programa de multicontrol: control simultaneo de seis NXT:

¿Por qué manejar dos o tres NXT si podemos manejar muchos más?… Para probar el experimento hemos hecho un multicontrol con nada menos que seis NXT. Debido a las limitaciones del Bluetooth no actúan de manera completamente simultanea como sí pasaría con un menor número de NXT, pero sin embargo el resultado es más impresionante.

MultiNXT
El programa consiste en un pequeño control remoto de los NXT desde el ordenador. Podemos ordenar a los NXT que se muevan marcha adelante o marcha atrás, giren hacia uno u otro lado, o frenen. El programa tarda varios minutos en realizar las seis conexiones, pero como el movimiento está controlado por botones no pulsaremos ninguno hasta que no estén todos conectados, cosa que podemos comprobar si en el displays de los NXT ya aparece el mensaje de la Shell. Hemos usado estructuras Case y un bucle cuya condición de salida es apretar otro botón creado por nosotros llamado Stop. El Block Diagram ha quedado de la siguiente manera:

Block Diagram

Como veis sigue una estructura lineal, es básicamente un Case que comprueba en cada iteración que botón esta presionado. La condiciones se podrían comprobar de manera simultánea en distintos bucles, lo cuál incrementaría la velocidad del programa, aunque esto no tendría un efecto visible en los NXT ya que el mayor retardo lo produce el Bluetooth.

El Panel Frontal tiene este aspecto:

Front Panel
Y finalmente el vídeo de demostración. El modelo de tribot es en este caso un modelo ultraligero con muy pocas piezas inventado por mí. En algún momento subiré las instrucciones de montaje al igual que el modelo que podéis ver en otros vídeos (el tribot modular en el que puedes colocar los sensores rectos y a la distancia que quieras):

Como veis no están completamente coordinados, y tampoco se mueven del todo igual. Esto es debido a varios factores: los retardos del Bluetooth sobre todo estando conectados a tantos NXT, que los robots no son exactamente iguales y con que tengan las ruedas algo separadas ya recorren distancias diferentes, y que no están perfectamente alineados al principio, lo que crea un error de navegación acumulativo. Resolver estos problemas no son el principal objetivo de nuestro experimento, sino el ser capaces de manejar varios NXT radio controlados mediante LabVIEW.

Tenemos planteado manejar decenas de NXT mediante este sistema en algún momento (la tienda entera en movimiento), así que estad atentos al blog. Si tenéis alguna duda no tengáis reparos en preguntar en el foro que para eso está.

Apéndice: Uso de la terminal de NXTs de LabVIEW:

Existe una utilidad en LabVIEW para poder conectaros a cualquier NXT disponible, cambiarle el nombre, ver el estado de la batería, actualizar el firmware… Para acceder a esta utilidad tenéis que ir a: Tools → NXT Tools → NXT Terminal…. Os saldrá el siguiente panel:

NXT Panel
Como veis podéis realizar todas las operaciones que tenéis en el NXT-G, como renombrar el NXT, o manejar los ficheros que hay dentro del NXT. Este panel es bastante útil para actualizar el firmware, ya que normalmente tendrá una versión más actualizada que nuestro NXT-G.

Comments are closed.