viernes, 28 de noviembre de 2008

Adaptador Bluetooth

Me ha dado por utilizar la rwth toolbox para programar el nxt, y como ya he comentado tiene dos modos de funcionamiento: con un cable usb conectado siempre al equipo donde corra matlab o mediante bluetooth. Como tener el cable usb quita mucha libertdad de movimiento, me he decidio a comprar un adaptador bluetooth.

La cosa parece bastante sencilla; vamos a la tienda, cogemos el más bonito, enchufamos y listo. Pero en la realidad esto es un poco distinto. Empecemos con un poquito de documentación.

Bluetooth es un especificación de comunicación en redes inalámbricas de área personal. Estas con redes muy pequeñas, y para un uso específico: pasar una canción entre móviles o conectar el gps en el coche. Al ser una especificación, los fabricantes lo implementan luego como quieren apareciendo sutiles diferencias entre las distintas implementaciones. Cuando los dispositivos se construyen para una máxima conectividad o son dispositivos de uso general: móviles, pdas, equipos con windows, gps ... no se aprecian problemas en el uso de las distintas implementaciones. Pero cuando el dispositivo a conectar es algo especial, en mi caso nxt sobre matlab, la cosa cambia, ya que el protocolo debe tener en cuenta más cosas. La conclusión es, que no todos los dispositivos bluetooth nos servirán para controlar remotamente el nxt.

Un buen punto de partida es la documentación oficial de lego al respecto. Allí podemos ver una matriz de compatibilidad con cabezas lego que no todos los pares dispositivos/adaptador son soportados. No están todos los modelos del mercado ni mucho menos.

Como punto de partida está bien, pero necesito algo más, experiencia real, así que habrá que investigar por los foros. Desde aquí recomiendo los foros de nxtasy, que tienen un montón de cosas interesantes, además de experiencias de otros usuarios de nxt.

Tras mucha búsqueda y mucho leer, en este hilo se resumen mucho el tema del adaptador. A modo de resumen diré que los modelos recomendados son aquellos adaptadores cuyos drivers bluetooth sean de Widdcom, o que usen la implementación de Microsoft Windows XP SP2.

Ahora viene cuando la matan, porque a parte de querer un adaptador compatible con el nxt, necesito uno compatible con la toolbox. Asi que, mirando su matriz de compatibilidad y algún comentario que deja Linus, uno de los programadores de la toolbox en los foros de nxtasy, lo que funciona con uno ... no tiene que poder funcionar con el otro.

Desesperado porque era practicamente imposible concicilar un dispositivo que apareciera en las dos listas, que usara controladores Widdcom y que se vendiera en tiendas ... al final me decidí por el conceptronic cbt200u2a, animado por comentarios en un hilo del foro.

Que funcionara con el nxt-g fue muy sencillo, enchufar y listo (bendito plug & play), independientemente de los controladores que instalara. Otra cosa fue la toolbox.

Con los controladores de Microsoft y Widdcom, me fue imposible hacerlo funcionar. Creo que es porque estos dos controladores crean dos puertos serie para la comunicación, uno de entrada y otro de salida, y la toolbox requiere uno bidireccional. En uno de estos intentos desesperados actualicé el firmware del bloque a la última versión, la 1.05. Fué rápido e indoloro. Seguramente haga una entrada para contar como fué.

Al final ya un poco asqueado probé a instalar los controladores toshiba que venían con el adaptador. Según los foros ... esto no iba a funcionar ni de coña, pero ver que sólo creaba un puerto COM ... la esperanza volvió. Hice una prueba rápida y fuí capaz de mover un motor a distancia.

Me gustaría probarlo sobre gnu/linux, pero ahora mismo no tengo ninguna distribución instalada. Me imagino que no haya ningún problema porque la pila bluetooth la proporciona el propio kernel y si alguien ha conseguido hacerlo funcionar en una distribución, funcionará en todas al compartir el núcleo. Pero es sólo una suposición.

Conclusión: lo de los bluetooth es una lotería, hay que recorrerse muchos foros y ver opiniones de usuarios con el mismo dispositivo que quieras adquirir, y recorrer muchas tiendas hasta encontrar en la que vendan tu modelo. Y luego para ver como funcionan exactamente con lo que dice la gente que no va a funcionar. Lo bueno, que son baratos, me costó once euros y un céntimo.

Como era muy tarde, no hice más pruebas, aunque espero este fin de semana probarlo bien, ya que tengo en mente volver a hacer un seguidor de líneas. Ya sé que tengo uno hecho, pero ahora le intentaré hacer desde cero y con matlab, y por bluetooh !!!

lunes, 24 de noviembre de 2008

Lego Digital Designer (LDD)

Lego Digital Desisgner es una herramienta de diseño gráfico para inmortalizar nuestras creaciones lego.

Existen muchas otros programas. Leyendo un poco las dos opciones más importantes que he encontrado por internet son LDraw y la que os presento hoy, LDD. Me he decantado por esta última porque he encontrado pequeñas dificultades a la hora de hacer funcionar LDraw. Espero que este pequeño problema mio, no os desanime a probarlo.

Tras modelar la pieza del separador de bolas, puedo decir que su instalación y uso es bastante sencillo.

Podemos descargar el instalador de la página de descargas. El programa está mantenido por el propio Lego y a día de hoy la versión es la 2.0. No he encontrado ningún histórico de instalaciones, aunque no descarto que exista. La aplicación se conecta a internet al arrancar para descargarse nuevos modelos de piezas.

Una vez abierto, recomiendo el visionado del get Started. El programa es muy sencillo y fácil de manejar. Se coge el ritmo bastante rápido.

He de decir que sin tener una máquina especialmente potente (Intel Pentium IV a 2Ghz y 1 GB de memoria), el programa va bastante fluido. Esto para mi es un punto muy a tener en cuenta. Yo he usado la versión que funciona sobre windows.

Una cosa que me ha llamado bastante la atención es que una vez hecha la pieza, el programa genera secuencias de instrucciones para la construcción de la misma, lo cual está bastante bien. Eso sí, las instrucciones que genera por lo menos para mi. no tienen mucho sentido.

Enumero a continuación, a modo de resumen los pros y los contras que más me han llamado la atención.

Ventajas
  • Es freeware, su uso no conlleva gasto alguno.
  • No consume muchos recursos.
  • Curva rápida de aprendizaje.
  • Genera automáticamente instrucciones de montaje.
  • Es un producto oficial de Lego, por lo que se nos da acceso a otros servicios de Lego, como puede ser la Lego Factory, o saber que siempre tendremos soporte para todas nuestras piezas.

Desventajas
  • No se puede ejecutar sobre plataformas Linux.
  • Lego Factory no da soporte para modelos que utilicen piezas technics. No es una desventaja del programa, pero es un efecto colateral.
  • La gente "experta" en el modelado considera que es un buen punto para empezar pero que no es muy potente.
Yo de momento voy a usarlo algún tiempo, luego ... ya veremos. Con este artículo sólo pretendo dar una pequeña introducción al mundo del modelado a través del LDD.

viernes, 21 de noviembre de 2008

Separador de Bolas

Hola,

Este blog seguramente no tiene ningún seguidor, pero aún así pediré perdón por llevar tanto tiempo sin escribir. Después de vacaciones, mudanzas y un sin fin de historias raras ... al fin he vuelto a cacharrear.

Quiero presentar en esta entrada varios temas que yo considero muy interesantes. mi tiempo de inactividad en el blog no ha sido un tiempo de inactividad con mindstorms.

Lo primero de todo ... http://www.mindstorms.rwth-aachen.de/ como podreis ver es una toolbox de matlab para programar el nxt. Hay muchas formas diferentes de programarlo, pero os voy a explicar las razones que me han llevado a elegir esta.

  • no es necesario cambiar el firmware del bloque, lo cual para los temerosos de los briqueos (jugador de psp y wii) como yo, es un riesgo eliminado.
  • control mediante bluetooth o usb. con esto podemos hacer que nuestro robot se vaya de paseo por el pasillo mientras lo controlamos a distancia. y el usb, pues para gente que todavía no tiene bluetooth, como soy yo
  • es matlab. así que tengo toda la potencia y versatibilidad de un lenguaje de programación de alto nivel (para mi es más fácil hacer un bucle for que un dibujito con el nxg) con la potencia de matlab. puedo tomar 200 mediciones del sensor de luz y luego hacer una media con una simple llamada a la función mean, o representar gráficamente un barrido circular del sensor de ultrasonidos para ver un mapa de la habitación a la altura del lego.
  • se aprenden bastantes cosas de como funciona el bloque por dentro, los mensajes que se mandan de control, funcionamiento intero del motor ...

como desventajas

  • no se pueden "bajar" programas al lego por bluetooth ni por el usb, los comandos se ejecutan desde la consola de matlab teniendo el bloque encendido. siempre se depende de un matlab corriendo.
  • el matlab necesrio es la versión 7.4, que es bastante pesada

dicho todo esto, os animo a que lo probeis, la verdad es que a mi me ha sorprendido bastante y ha pasado a ser mi forma estándar de programar con el bloque. 

Ahora pasemos a harina. en este video podeis ver la vida que he creado.






si no os habeis arrancado los ojos debido a la pésima calidad del mismo os doy mi más sincera enhorabuena. mi webcam no da para más, estoy pensándome mucho el comprar una cámara digital para inmortalizar estos momentos lego y también, claro está, del resto de mi vida. ( Se aceptan donativos :D)

como podeis ver es un separador de piezas, en este caso bolas del sobrevive de mb, que tenía rondando por casa así que antes de donarlo a algún primo pequeño, pues a jugar con las bolas.



para reconocer las bolas he utilizado el sensor de luz. he realizado 500 mediciones de la intensidad, y luego calculado la media. (bucle y mean, fácil en matlab). para cada color se tenían unos valores más o menos diferenciados, así que eso he usado para separarles. la medición dependía de la intenesidad de luz de la habitación así que con la lámpara pues he intentado que fuera constante. como podeis ver en el juego hay bolas de cuatro colores, pero el sensor de luz no me daba valores muy separados para cada uno de ellos, así que me era imposible separarlos. con el negro y el azul, obtenía medias muy distantes, así que esa es la razón de que les haya usado.

una vez que se reconocía la bola, había que mover la pala hasta el recipiente.

para esto la verdad es que me he buscado bien las castañas, he construido una base, que soporta el motor y con la doble rueda he conseguido hacer una plataforma móvil. si veis los dibujos estará mejor explicado.

para la pala me he inspirado en algunos modelos de brick sorteres que he visto por internet.

el principal problema que he encontrado aquí es la inercia que se gastan los motores. me explico, tu le dices que se mueva 90 grados y cuando el motor lleva 90 grados movido, deja de suministrar energía pero el motor sigue girando por que conserva su momento angular

esto tiene una solución y es la de regular la velocidad de moviemiento del motor. si el motor se pasa, el mismo se recupera marcha atrás. una vez concluido el moviemiento, el motor no se queda en el modo COAST (libertad de movimiento) sino que se queda en modo BRAKE. se le está suministrando energía para que no se mueva y es imposible de mover a dedo. hay que añadir que este modo requiere mucha energía. 

a este pequeño inconveniente hay que añadir que he leido que usando la regulación de velocidad y pequeños movimientos del motor, se acaba perdiendo precisión del mismo. sigo investigando esto, porque no me ha quedado muy claro.

podeis ver como cuando vuelve a la posición inicial no queda en el mismo lugar. así que también hay que jugar un poco de por donde poner los recipientes.

creo que eso es todo. espero haberme explicado bien. y que me hayas entendido.

Aquí podeis descargar el modelo usando el LDD, lo he divido en tres ficheros para que se vea mejor. de momento no hay nada incluido de instrucciones, vistas y demás, que aunque veaís que no se puede incluir desde la propia aplicación, el formato si lo soporta.


y el código fuente en matlab. es una guarrada de código ... os aviso, así que por esta vez ... haced con él lo que os dé la gana, más adelante lo publicaré bajo alguna licencia.


el proyecto que tengo ahora en mente es un robot que sea capaz de explorar su entorno y moverse lo más alejado de su punto de origen. para ello usaré las capacidades bluetooth, así que ahora mismo estoy mirando modelos de dispositivos bluetooth, habrá una entrada sobre ellos y características recomendables, no os preocupeis. es un tema un poco más peligudo de lo que parece.

un saludo y no hagais nada de lo que os podais arrepentir