lunes, 4 de noviembre de 2013



LEGO MINDSTORMS (Continuación)


Cuando se escribio el articulo de Julio 20 del 2013  aun no se había lanzado la nueva versión de LEGO MINDSTRORMS,  denominada EV3. 

El nombre es este nuevo modelo,   EV3, proviene de la abreviación de "EVolution" y el tres se refiere a la tercera versión de  la linea MINDSTROMS. 








Esta nueva linea de LEGO Mindstorms  se lanzo al mercado el pasado  mes de septiembre, y puede encontrarse en varias versiones, a saber:

  • Lego Mindstorms  EV3  31313  (Home  Edition.  601 Piezas)
  • Lego Mindstorms  EV3 45544 (Educational Version.  541 Piezas)

Al igual que para el NXT tambien se consigue  el  Lego Mindstorms  45560 Expansion set, el cual provee 853 piezas adicionales.


En el siguiente articulo, escrito por Laurens Valk, se explican en detalle todo el tema de diferencias y compatibilidades de ambas versiones, NXT y EV3.



Y en este video, del mismo autor, se pueden observar algunos aspectos básicos de la compatibilidad de hardware entre ambas versiones.





miércoles, 11 de septiembre de 2013

LEGO OPEN SOURCE

Algo que llama la atención  es que Lego Mindstorms  es una plataforma open source.

En la pagina de lego es posible descargar toda la información relación con el hardware y software del NXT.  Por ejemplo descargando el archivo que se encuentra en la seccion "Hardware developed Kit" tendrá accesos a todos los planos y diagramas electrónicos del NXT y sus sensores. 

Los links de acceso  a estas paginas son:

http://mindstorms.lego.com/en-gb/support/files/Firmware.aspx
http://mindstorms.lego.com/en-gb/support/files/Firmware.aspx#Advanced

Adicionalmente, y previendo que seguramente  con la salida del EV3, el soporte técnico y  las paginas que proveen estas informaciones será descontinuada  en un futuro cercano (no se exactamente cuanto tiempo continuara LEGO soportando la plataforma NXT), descargue todos los archivos suministrados por LEGO y los deje en mi gdrive en la siguiente dirección:

https://drive.google.com/folderview?id=0B7gfmEc7iOZHS1ktOS1IV1NEZkk&usp=sharing

domingo, 8 de septiembre de 2013

LENGUAJES DE PROGRAMACION

El lenguaje de programación con el que viene el Lego Mindstorms es el  NXT-G, y la versión actual es la 2.0. Este programa esta basado en LabViews de Nationals Instruments. Para mayor información ver:

Cuando por primera vez se empieza a programar el NXT, encontramos este lenguaje muy cómodo y fácil de aprender, debido al ambiente gráfico en el que esta desarrollado.  No obstante, a medida que el usuario avanza y va cogiendo experiencia en este campo,  empezará a encontrar ciertas limitantes. Mas aun, si la persona ha tenido experiencia  previas en el campo de la programación de computadores, estas limitantes se tornan mas evidentes.

Una de las limitantes mas relevantes que encontramos al usar el NXT-G v 2.0  es el hecho de que en programas de mediana o alta complejidad,  con un numero importante de conexiones cableadas entre los bloques de programación, el programa se desconfigura en su ambiente gráfico  y se hace difícil realizar ajustes y correcciones. Incluso, cuando esto ocurre en ocasiones se daña la integridad del programa, con la consecuente  perdida de tiempo y trabajo para el usuario.

Otra limitante importante  es la ausencia de un  debbugger"  o  herramientas de depuración que ayuden a poner los programas a punto.

Todo lo anterior, me llevo a buscar otras opciones de programación para el NXT.  En esta búsqueda encontré que existen muchos desarrollos de terceros que soportan la programación del NXT.  Esto gracias al hecho que el  Mindstorms NXT es una plataforma completamente abierta.

A continuación se presentan algunas de las plataformas de programación desarrolladas por terceros mas comunes o importantes encontradas en la web:


ROBOT C

Es una plataforma de programación de diferentes aplicaciones para la enseñanza de Robotica basada en en lenguaje de programación C.  RobotC soporta no solo  programación para Lego Mindstorms NXT, sino también para otras aplicaciones de robotica como Arduino,  VEX,  y Tetrix, entre otras.

Funciona en ambiente Windows,  y  ofrece un editor de texto y/o interface visual para el usuario bastante cómoda   con un conjunto de herramientas para depuración de programas  en tiempo real. Adicionalmente, ofrece una amplia documentación y completos tutoriales en linea para aprender a configurar programas. Adicionalmente trae un listado bastante completo de ejemplos de programas los cuales cubren prácticamente todos los tópicos básicos de programación  e incluso tópicos mas avanzados como comunicación bluetooth, datalogging, y uso de joysticks.

Esta opción no es gratuita. Tiene un costo que va de 50 a 100 USD por licencia, dependiendo del tipo de licencia que se tome (Un año, perpetua, o  perpetua en  CD Rom)

También ofrece una versión de prueba  completamente funcional de 30 días.

Un punto importante a tener en cuenta es que este software trae su propio firmware, por lo tanto lo primero que hay que hacer para poder usarla es actualizar el firmware del NXT, reemplazando el firmware original de Lego.  Esto es algo bastante simple,  y no hay que preocuparse por esto. En la pagina de RobotC esta las instrucciones clara para realizar esta operación.

Un punto en contra  es que el uso de tareas simultáneas o "multitasking" requiere especial atención  y precisión en la manera de hacerlo, de lo contrario puede tener resultados inesperados.

En el siguiente link se encuentra la pagina oficial de RobotC:  http://www.robotc.net



NXC

El nombre de este lenguaje proviene de  "Not eXactly C".  Es un lenguaje también de alto nivel, parecido al C.  Es una variante de otro lenguaje denominado  NQC (Not Quit C) pero adaptado para programar el Lego Mindstorms NXT.  Los programas escritos en  NXC usan el compilador de NBC  (Net Byte Codes), el cual es otro lenguaje simple con sintaxis de assembleer o lenguaje ensamblador que también puede ser usado para programar el NXT.

Guía de referencia del NXC
Guía del compilador  NBC Guide
Ayuda adicional para esta plataforma se encuentra en  HTML help  y  API help

El NXC funciona con el firmware original de Lego Mindstroms. Sin embargo para aplicaciones mas avanzadas  se puede descargar un firmware mejorado acá: NBC/NXC firmware

Este lenguaje esta disponible para usuarios  Windows y para Linux.

Hay mas información para  NXC en este link.


El NXC también ofrece un "debugger" o depurador  en tiempo de ejecución el cual facilita el control de errores de forma sencilla.
También es posible encontrar muy buenos ejemplos disponibles en la red,  pues es un lenguaje de muy buena aceptación, especialmente en usuarios mas avanzados y que vienen de experiencias de programación en C. 

Algunas limitantes encontradas para este software son: 
- No permite la comunicación bluetooth con otros dispositivos que no sean NXT o PC.
- Solo permite operaciones con enteros


LEJOS :

Implementación en java para NXJ. Basado en el estándar java con una librería de clases mas pequeña. Los programas se compilan en el pc y se cargan en el robot. Dispone de múltiples librerías para el desarrollo de comportamientos, así como funciones de localización y navegación.

Es una plataforma de programación orientada a objetos.  Permite la ejecución de operaciones en coma flotante.   Esta bien documentada y existen múltiples ejemplos.

Para usar esta plataforma es necesario cambiar el firmware original. 


ROBOLAB : 

Entorno diseñado por la Tufts university para RCX ( la primera generación de ‘bricks’ de lego) y preparado para soportar NXT. No es tan intuitivo como NXT-G. Escrito usando LABview de NI. Permite mayor complejidad desarrollando aplicaciones

Hay muchas otras plataformas de programación adicionales en las cuales no se mencionan aquí en detalle,  algunas son:

En  este link se encuentra una completa tabla comparativa de las diferentes opciones disponibles para programación del NXT


CONCLUSION 

La elección del lenguaje a utilizar  depende de varios aspectos entre los que se encuentran  básicamente la experiencia previa en programación, la disponibilidad de recursos y  hasta temas económicos, pues algunas plataformas son licenciadas y otras son abiertas.

En este ultimo punto  es incluso importante hacer notar  que en la misma plataforma original de Lego encontramos el NXT-G  versión retail, que hoy se puede descargar de la pagina de Lego y  la NXT-G versión educativa, que trae bloques de programación adicionales  y un potente modulo para datalogging, pero tiene un costo de 80 USD.

El software original NXT-G es muy adecuado para adquirir los conocimientos iniciales en programación, manejo de sensores, motores, programación de comportamientos específicos del robot tales como moverse adelante, girar, devolverse, detectar estados de los sensores, etc.  No obstante a medida que se avanza, la búsqueda de una opción adicional de programación se hace evidente.

RobotC puede tener mejor desempeño de procesamiento y ser mas completo en herramientas para depuración que NXC, no obstante a diferencia de NXC, que es libre,  RobotC es una aplicación licenciada.

En mi caso particular,  que no soy un usuario muy experimentado,  yo opte por ensayar el trial de 30 días de RobotC, y encontré muy buenas razones  para pagar los 80 USD de la licencia perpetua:
- Ambiente de desarrollo muy cómodo
- Potente depurador de errores.
- Larga lista de ejemplos de muestra.
- Tutorial muy completo, en ingles, pero muy fácil de entender y didactico.
- Buen respaldo.








sábado, 20 de julio de 2013

LEGO MINDSTORMS.

Desde que se lanzo LEGO MINDSTORM  en 1998  hasta hoy  han salido dos versiones de este producto, y esta próxima a salir la tercera versión.  Estas son:

  • 1998: LEGO MINDSTORMS (RCX)
  • 2006: LEGO MINDSTORMS NXT
  • 2013: LEGO MINDSTORMS EV3




MINDSTORMS NXT 

MINDSTORM NXT es la plataforma robotica  de LEGO que ha estado vigente desde el 2006 hasta hoy.  Para este producto también encontramos tres versiones o tres ediciones: 

  • LEGO MINDSTORMS NXT ( Referencia 8527, descontinuada. 577 piezas)
  • LEGO MINDSTORMS NXT 2.0 (Referencia 8547. 619 piezas)
  • LEGO MINDSTORMS NXT Education Base Set (Referencia 9797. 431 piezas)

Además, hay dos versiones de "Elements resources sets"  o  conjuntos de recursos   que contienen piezas de construcción de plástico, pero no traen los componentes electrónicos.    Estos son: 
  • LEGO MINDSTORMS NXT Education Resource Set “old” (Referencia 9648, descontinuado)
  • LEGO MINDSTORMS NXT Education Resource Set “new” (Referencia 9695 )

Los elementos comunes a las tres referencias de Lego Mindstorms son basicamente:
  • EL NXT "Brick" es el mismo en todas las versiones.
  • Los Motores NXT son los mismos en todas las versiones. Cada version viene con tres motores. 
  • El sensor ultrasonico  es el mismo en todas las versiones. 
  • Todos los conjuntos contienen al menos un sensor de toque. 

En el siguiente link se puede ver la historia completa de Lego Robotics systems:
http://www.lego.com/es-ar/mindstorms/gettingstarted/historypage/


LEGO MINDSTORM 8527

La referencia 8527 también fue conocida como MINDSTORMS NXT 1.0.   se lanzo en al año 2006 y se descontinuo en el año 2009. La sigla NXT proviene de "next", haciendo referencia a que era la "próxima" generación de la plataforma robotica de Lego que inicio en el año 1998.  Este modelo venia solamente con un solo sensor de toque, pero a diferencia del 8547, se incluía un  sensor de sonido. Adicionalmente, el sensor de luz que se incluía en este juego solo media intensidad de luz reflejada, pero no reconocía colores. 



Detalles completos de esta referencia en: http://peeron.com/inv/sets/8527-1)


LEGO MINDSTORM 8527

La referencia 8547 se lanzo en el 2009 y reemplazo la 8527. Es la referencia vigente hasta el dia de hoy.  Esta referencia ya no trae sensor de sonido, en vez de este se incorpora un segundo sensor de toque.  Adicionalmente el sensor de intensidad de luz se reemplaza por un sensor de color (que también se puede usar en modo "light sensor", igual al sensor de luz de la referencia anterior)





Detalles completos en  http://peeron.com/inv/sets/8547-1 )



LEGO MINDSTORM 9797

La referencia 9797, denominada MINDSTORMS NXT Education Base Set, esta dedicada solo para el uso en colegios.  No se vende al publico en los almacenes de cadenas o en las tiendas de LEGO. Esta referencia contiene mas componentes electrónicos que las anteriores. El software para esta referencia se vende por separado. 


MINDSTORMS NXT Education Base Set




Un punto importante a tener en cuenta es que aunque el numero de piezas que trae la referencia 8547 es mayor,  hay piezas diferentes a las de las versiones anteriores y viceversa.  Esto implica que todos los modelos que se pueden armar con una version no necesariamente se pueden armar con las otras versiones.  


Color Sensor Vs  Light Sensor

El sensor de luz LEGO  que viene con las referencias 8527 y 9797 es un sensor que mide solo intensidad de luz unicamente.  Este sensor devuelve una lectura entre 0 (negro) y 100 (blanco). Posee un led que se puede encender o apagar. Cuando esta apagado el sensor mide luz ambiente.  Cuando esta encendido el sensor mide luz reflejada o intensidad de luz reflejada, de esta forma se puede distinguir entre superficies oscuras y superficies claras, para aplicaciones como por ejemplo, deteccion de lineas negras sobre una superficie blanca. Aunque la intensidad de luz reflejada por diferentes colores no es la misma, este sensor no es apto, ni preciso para distinguir colores. 

El sensor de color que viene con el 8547 puede detectar con precision 6 colores: Negro, Blanco, amarillo, azul, rojo y verde. El sensor de color devuelve un numero de 1 a 6 segun el color  o puede incluso detectar variaciones de un color a otro. Este sensor puede trabajar en modo "Light sensor" y funciona exactamente igual al anterior.  Otra caracteristicas de este sensor que puede funcionar como lampara de color, es decir, se pueden encender los led  produciendo un rayo de color  rojo, verde o azul. 

El precio del sensor de luz es la mitad del precio del sensor de color cuando se compran separadamente. 

         
Sensor de luz                                     Sensor de color



jueves, 25 de abril de 2013

QUE ENCONTRARA AQUI?

Se ha organizado este blog con varias paginas así:

PAGINA PRINCIPAL:  Esta pagina donde quedara la historia de Blog con las publicaciones diversas que vayan surgiendo.

RECURSOS WEB: Aquí entrara un listado de paginas webs de utilidades diversas sobre el tema, algunas tienen tips de programación, otras proyectos, otras trucos,  libros, etc. Corresponde a una selección de paginas que a mi juicio son  de utilidad en el tema de programación y configuración de proyectos con Lego Mindstorms.

PROYECTOS: En esta pagina,  se publicaran mis proyectos particulares.  Como todavía estoy en "entrenamiento y capacitación", se presentan proyectos simples, o tomados de algun sitio especifico.

VIDEOS DE INTERES: Aqui se listan algunos  links de  videos disponibles en You Tube u otros sitios similares, que me han llamado la atención.

MIS LEGOS:  Algunas fotos o vídeos de nuestra colección  particular de LEGO.

LIBROS y ARTÍCULOS  Se presenta un listado de los libros y artículos mas representativos que he encontrado sobre el tema. La gran mayoría están en Ingles.

DOWNLOADS:  Se listan los links  a mi  Gdrive de uso publico, desde donde se pueden descargar instrucciones de construcción,  programas,  y mas información de utilidad, presentada en partes diversas de este blog.


TODO EL SITIO SE ENCUENTRA ACTUALMENTE EN CONSTRUCCIÓN....  IDEAS  SON BIENVENIDAS..

sábado, 20 de abril de 2013

BIENVENIDO



Por que este Blog?

Después de un negocio bastante  interesante que hizo mi hijo de 9 años con sus dos tíos,  en el cual mi hijo invitaba a sus tíos y a su papa a comprar el Lego Mindstorms "en compañía" , adquirimos este fabuloso "juguete".  Al comprarlo no me imagine el mundo de tecnología e información que había detrás del Lego Mindstorms,  y me encontré algo que combina perfectamente  la Ingeniería Mecánica, la Ingeniería Electrónica (las carreras que yo estudie) y el entretenimiento.

Cuando empezamos a investigar y a jugar encontré que era conveniente tomar notas de algunos temas que iba explorando. Me matricule en algunos cursos virtuales de programación del NXT - G, el lenguaje de programación asociado con el Mindstorms, y encontré mucha información  organizada de muchas formas diversas, en idiomas diferentes,  que considere de interés organizar a mi gusto.

Decidí escribir este blog con varios objetivos:

- Organizar mis notas sobre el tema en un sitio fácilmente accesible dejando registro de las actividades y practicas mas relevantes realizadas hasta la fecha.
- Ampliar la base de datos de información en español sobre el tema, la cual en principio  encontré  limitada en la web, aclarando que no me da pereza leer en ingles.
- Curiosear e incursionar en el mundo de los blogs. Tema sobre el cual había tenido curiosidad, pero no había encontrado un tema sobre el cual escribir.

...  y seguramente algunos otros propósitos que se me estarán pasando en este momento..

Todos los comentarios, aportes y sugerencias serán bienvenidos.

Mauro