Uso de los Servicios de Lego NXT en VPL
Los servicios del nuevo Lego Mindstorms NXT han sido diseñados expresamente para ser usados con VPL.
 Figura 12: Ejemplo con sensor de ultrasonidos.
Los servicios del Lego Mindstorms NXT son fáciles de configurar y proveen una arquitectura extensible al uso de sensores de terceros en cualquier momento. Los servicios provistos en esta plataforma incluyen motores y sensores para la versión estándar del NXT, así como algunos ejemplos de sensores disponibles de [4] HiTechnic y [3] MindSensors.
Servicio de configuración del brick o módulo de control
Comenzaremos arrastrando un brick (Lego NXT Brick (V2) service) sobre el diagrama, seguidamente seleccionamos “Set initial configuration” y se cambiará el puerto serie por el apropiado de la conexión [5] Bluetooth.
 Figura 13: Configuración del servicio del Brick.
Este paquete actualmente sólo soporta conexión [5] Bluetooth para el brick y con el valor cero en baudrate se conectará a la velocidad adecuada, la cuál será habitualmente de 115200 bps.
Seleccionando “ShowInBrowser” el interfaz de usuario para el servicio del Lego NXT abrirá un navegador web cada vez que el servicio se inicie. Esto es útil para visualizar la configuración y el estado de ejecución del dispositivo al que está conectado el brick.
Servicios de dispositivos
El kit del Lego Mindstorms NXT viene con tres motores y cuatro sensores. Todos estos dispositivos se conectan al brick y comparten ciertos valores de configuración.
Partners Cuando se usa más de un brick, este parámetro identifica el brick al que este dispositivo está conectado.
 Figura 14: Ejemplo de configuración del parámetro Partner común a algunos servicios
Name Si se conectan dos dispositivos iguales al brick, se deben nombrar de forma distinta para poder identificarlos de forma única.
Puertos de motores y sensores Los tres motores (MotorA, MotorB y MotorC) y los cuatro sensores (sensor 1-4) que vienen en el kit inicial del NXT, pueden ser conectados a los distintos puertos de los que dispone el brick. La mayoría de estos dispositivos necesitan que se identifique el puerto al que se han conectado.
 Figura 15: Configuración de motores y sensores.
Frecuencia de muestreo (Polling) La mayoría de los sensores tienen la capacidad de enviar notificaciones o actualizaciones sobre el valor de los cambios de medida que realizan. Esto se lleva a cabo contactando repetidamente con el brick e interrogando al sensor. La frecuencia de muestreo permite configurar cada cuanto tiempo se interroga al sensor. En la mayoría de los casos es posible dejar este valor a cero, indicando que se tome el valor por defecto. Sólo se cambiará este valor en los casos en los que se necesite una periodicidad menor de los valores de un sensor. Este valor viene especificado en milisegundos (1/1000 segundos).
Para los encoders de los motores, sensor de contacto y sensor de luz tarda unos 65 ms. en las lecturas. El sensor Ultrasonico y algunos otros sensores I2C como el sensor de aceleración de [4] HiTechnic o el sensor de compás de [3] MindSensors, tardarán 200ms. Si se ajusta un valor más bajo del que se tarda en disponer de una nueva lectura no dañará el hardware, pero si se ajustan todos los sensores con valores demasiado bajos, el brick podría saturarse de peticiones y experimentar un comportamiento lento.
Para optimizar la frecuencia de muestreo de un sensor se recomienda bajar hasta 50ms. Esto es debido a que valores por debajo de los 50 ms. son interpretados por el sistema como si lo que se buscase fuese priorizar dicho sensor e incluso se podrían ralentizar otros sensores para acometer dicha priorización. Una buena práctica consiste en deshabilitar el muestreo de aquellos sensores que no se estén utilizando mediante el valor “-1” o por encima de 500ms, de esta forma se liberan recursos del brick que puede dedicar a muestrear mejor los sensores que verdaderamente se consideran importantes en ese instante.
 Figura 16: Configuración de la frecuencia de muestreo.
Servicios de Motor
Los motores pueden ser controlados individualmente o como un par en un drive. Los encoders están en cada uno de los motores y en los dispositivos drive, permitiendo la identificación del número de grados que un motor ha girado (360º = 1 vuelta completa).
 Figura 17: Configuración del servicio de motor.
La configuración inicial se realiza tal y como se describe en el apartado anterior Servicios de dispositivos.
Polaridad inversa (ReversePolarity) Indica la dirección (polaridad) del motor. Activando esta opción con el valor “true” se invierte la dirección del motor.
Puerto del motor (MotorPort) Identifica el puerto (A, B o C) al que el motor ha sido conectado. Si se configura con “AnyMotorPort”, el servicio del motor utilizará el primer puerto de motor disponible. Esto es útil cuando se arranca el motor desde el servicio del panel de control.
PollingFrequencyMs Esta propiedad especifica la frecuencia de muestreo en milisegundos con la que se interrogará al encoder:
- 0: Valor por defecto. - -1: Deshabilitado el muestreo. - >0: La frecuencia de muestreo solicitada.
Servicio de drive (dirección)
Para que este servicio funcione adecuadamente, es necesario configurarlo para que cumpla las especificaciones del robot que se haya construido:
 Figura 18: Configuración del servicio de drive.
Longitud del eje (DistanceBetweenWheels) y Diámetro de las ruedas (WheelDiameter) Es necesario medir el diámetro (altura) de las ruedas y la distancia entre ambas. Esto permitirá saber a este servicio cómo girar o como avanzar una determinada distancia.
 Figura 19: Longitud del eje y diámetro de las ruedas
Las medidas en Microsoft Robotics Studio son tomadas siempre en metros. Por tanto, para el NXT será necesario realizar la conversión de milímetros moviendo el punto decimal tres lugares a la izquierda. Por ejemplo, las ruedas que vienen en el kit del NXT miden 55 milímetros de altura, por lo que se introducirá “0.055” metros.
Puertos de los motores de las ruedas izquierda y derecha Se debe configurar el drive para que identifique el puerto al que está conectado el motor de cada rueda (izquierda y derecha).
Polaridad inversa (ReversePolarity) Dependiendo de cómo se haya montado el motor, es posible que avanzar hacia delante implique que sea necesario aplicar la polaridad inversa para que se alimente el motor con corriente negativa.
PollingFrequencyMs Dependiendo de la distancia avanzada y de los grados de rotación, el motor avanzará hasta haber recorrido cierta distancia. Con este comando se utiliza el encoder interno para saber cuando parar. Si se decide no utilizar este encoder, es recomendable desconectar el muestreo introduciendo el valor -1.
Servicio de sensor de luz
Además de las propiedades descritas en el apartado anterior Servicio de drive (dirección), el sensor de luz del NXT posee la propiedad “IsON”. El sensor de luz tiene un led que puede ser controlado por este servicio encendiéndolo o apagándolo según convenga.
 Figura 20: Configuración del servicio del sensor de luz.
Add as favourites (170) | Quote this article on your site | Views: 4089
Only registered users can write comments. Please login or register.
Related Items:
- Jobs: Two Chair positions for new Centre for Computational Neuroscience and Co
- Birmingham Fellows in Robotics and Cognitive Systems
- Finding papers about consciousness and robotics
- Paladyn. Journal of Behavioral Robotics
- International Journal of Social Robotics
- Cognitive Robotics and Machine Consciousness
- Cognitive Robotics
- Polymorphic Robotics
- Urbi goes Open Source
- The Tower of Hanoi for Robotics
|