Alternativas de programación del NXT con Software Libre

Lego Mindstorm Robotics

Como ya sabemos, una de las principales razones para tener un NXT es su capacidad de procesamiento, y más aún, la posibilidad que tenemos de programarlo. Es este post haré un repaso por las diferentes alternativas que tenemos en el mundo del software libre, para programar nuestros robots.

José R Sosa https://josersosa.github.io/personalweb/
08-25-2013

Características de NXT

En otro post comenté sobre las características y capacidades del bloque NXT, ahora las repasaremos desde el punto de vista de sus potencialidades para programarlo. NuestroLego Mindstorm viene con un ambiente de programación privativo y un lenguaje gráfico, basado en bloques, llamado NXT-G (aquí algunos ejemplos de programas NXT-G). El NXT-G es bastante amigable y una herramienta ingeniosa para introducir a los niños en los conceptos de programación, sin embargo, como dije antes, es privativo. Aquí podrán descargar una guía rápida de programación NXT-G, o esta otra.

Para poder sacar el máximo de la capacidad de nuestros robots, aquellos que somos aficionados a la programación, seguramente preferirán lenguajes de programación con más capacidad que la que puede ofrecer un diagrama gráfico. Antes que nada repasemos las características del bloque NXT:

Fuente: http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT_2.0

Estas especificaciones plantean la posibilidad de resolver la autonomía en un gran número de tareas para nuestros robots desde el propio NXT, sin embargo, para cierto tipo de trabajos no, especialmente para aquellos en los que se requiere mayor capacidad de procesamiento, por ejemplo el procesamiento de imágenes de video o para ciertos tipos de cálculos en temas como Inteligencia Artificial. En estos casos seguirá siendo necesario recurrir a la capacidad de computadores de escritorio o servidores.

Programación del NXT

Cuando abordamos el tema de programar nuestro NXT tenemos que tomar varias cosas en cuenta antes de seleccionar el lenguaje y las herramientas de desarrollo, como las capacidades del NXT y la compatibilidad de este con el lenguaje que deseamos utilizar. Para ciertos lenguajes es necesario la actualización o el cambio del sistema operativo interno de la NXT (firmware). Por ejemplo, para usar Java es necesario sustituir el firmware original por el LejOS.

En el caso de que no queramos modificar el sistema interno, es importante destacar que las funciones del mismo son accesibles, tanto desde las aplicaciones internas como desde los puertos de entrada/salida, como el USB y el Bluetooth. Esta característica permite que, o bien los lenguajes de programación empleados, deben generar en sus compilaciones, programas compatibles con el NXT y por tanto puedan ser cargados y ejecutados en el mismo (*.rxe). O por otra parte, nuestros programas hagan uso de librerías adecuadas para comunicarse con el NXT y por tanto, puedan ejecutarse desde fuera del mismo. En el primer caso, obtendremos soluciones con mucho mayor autonomía pero limitadas a las capacidades de procesamiento de la NXT. En el segundo caso podremos aprovechar el uso computadores de mayor capacidad de procesamiento pero las limitaciones de movilidad y autonomía que estas conexiones (Bluetooth o USB) impliquen.

Opciones libres para la programación del NXT

Gracias al espíritu científico con el que fue conceptualizado y construido el Lego Mindstorm, sus creadores dispusieron suficiente información técnica como para la proliferación de herramientas libres para el desarrollo sobre esta plataforma, así como nuevos sensores y elementos electrónicos compatibles con ella. A continuación haré un breve repaso de las herramientas y lenguajes de desarrollo para la NXT:

Otros lenguajes privativos para el NXT

Conclusiones

Hay una amplia variedad de alternativas para programar los robots de Lego. Pienso que, a menos que sean amantes de Java (que no es mi caso), no hace falta sustituir el firmaware original para programar nuestros robots y sacarles el máximo provecho.

A mi juicio las grandes alternativas para la programación del Lego Minstorm NXT son Python y C/C++, ya sea para crear ejecutables nativos (*.rxe) para el bloque NXT con PyNXC o NQC, o para compilar aplicaciones que se ejecuten el PC y se comuniquen con el NXT (por USB o Bluetooth) con nxt-python o con LibNxt, en Python y C/C++ respectivamente.

En varios post anteriores muestro como controlar un carro robot con python, y desde una “canaimita” este es uno de los videos:

Algunos enlaces y fuentes relacionadas

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Citation

For attribution, please cite this work as

Sosa (2013, Aug. 25). Blog de José R Sosa: Alternativas de programación del NXT con Software Libre. Retrieved from https://josersosa.github.io/personalweb/posts/2021-06-13-alternativas-de-programacion-del-nxt-con-software-libre/

BibTeX citation

@misc{sosa2013alternativas,
  author = {Sosa, José R},
  title = {Blog de José R Sosa: Alternativas de programación del NXT con Software Libre},
  url = {https://josersosa.github.io/personalweb/posts/2021-06-13-alternativas-de-programacion-del-nxt-con-software-libre/},
  year = {2013}
}