En 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:
*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.
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:
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: