miércoles, 19 de enero de 2011

Comunicaciones PC-NXT

Uno de los grandes aciertos de LEGO en el desarrollo del NXT MINDSTORMS es la implementación nativa de la capa de comunicaciones Serial Blutetooth.



Esto significa que disponemos de un interfaz de comunicaciones serie inalámbrico que nos permite desarrollar programas que interactúen con nuestros robots y realizar control remoto o telemetría en tiempo real.

La comunicación entre dispositivos NXT está documentada en el Apéndice 1 del BtDeveloperKit, pero la comunicación PC-NXT requeire de una técnica no documentada, tanto de configuración para el dispositivo host, como para el control de flujo de datos.

Si trabajas en c, mi recomendación es la de crear una librería de comunicaciones NXT que permita agregar como fichero TXRX.h en cualquier programa que realicemos posteriormente y así disponer del concepto de "capa de comunicaciones" que nos permita abstraernos y centrarnos en el objeto de la programación.
Desde el lado del host (PC en nuestro caso), también tenemos que desarrollar un pequeño código que nos permitirá abstraer dicho proceso.

Así como adelanto, resolver de una forma eficiente el proceso de comunicaciones consiste en desarrollar un interfaz de comunicaciones que nos aporte ciertos servicios de comunicación.

Para nuestro desarrollo de ejemplo se han desarrollado dos tipos de servicio:
Servicio 1º Envío de información
Servicio 2º Consulta de información

Ambos servicios son simétricos y se encuentran en cada extremo del interfaz. El objeto de estos servicios es disponer de un mecanismo asíncrono que nos permita enviar órdenes (control remoto)  y requerir información (telemetría). En la definición del servicio deberemos establecer el formato de la información, su longitud máxima etc. Ya adelanto que nos puede interesar disponer de un dato breve o de una gran cantidad de datos, y por ello deberemos establecer mecanismos que permitan fragmentar la información y reconstruirla en el otro extremo.

NXT BT SDK
En la web de LEGO, podemos descargar el SDK Bluetooth donde nos describe las características del formato de paquete que utiliza, junto con los servicios de comunicación que esta capa implementa.
Aunque disponemos una gran cantidad de servicios de 'alto nivel' como acceso a ficheros, variables internas, etc, el que nos interesa, es el de coumunicaciones genéricas sobre MailBox (0-9), que nos permite enviar un paquete de 64bytes (6 bytes payload) sobre una 'conexión' que permitirá encolar hasta 5 paquetes (mensajes) en el otro extremo y automáticamente gestionará el desbordamiento devolviendo error en el lado host para hacernos saber que no podemos seguir transmitiendo.

Este servicio de comunicaciones será el que utilizaremos para construir nuestra interfaz de aplicación, ya que nos permite disponer de hasta 10 Mailboxes (0-9) (colas de comunicación o flujos diferenciados de datos) para nuestro proceso de comunicación. Para nuestro caso únicamente utilizaremos un único flujo de información.

No hay comentarios:

Publicar un comentario