contador de visitas

jueves, 10 de marzo de 2011

Programacion

La programación del Lego Mindstorms se realiza mediante el software que se adjunta en el empaque original, el cual trae el firmware del robot y un programa que emula un árbol de decisiones, para los cuales, el usuario debe programar las acciones a seguir por el robot. El software se encuentra dividido por cada tipo de robot que se puede construir, y que viene recomendado en el empaque.
Una de las principales características de este software de programación, es su entorno visual, el cual emula la construcción por bloques, dando la posibilidad a cualquier usuario aprendiz acostumbrarse rápidamente a la programación de bloque.
Este lenguaje permite las instrucciones secuenciales, instrucciones de ciclos e instrucciones de decisiones, éstas últimas, basadas en los datos reportados por los sensores que se puede añadir al robot.






Lenguajes alternativos de programación

El bloque del Lego Mindstorms como un producto de hardware y software integrado, puede ser programado con varias interfaces, pero todos logrando el mismo fin. Esto se puede realizar mediante la torre de comunicación y utilizando las herramientas correctas para poder acceder al firmware básico de Lego.
Algunas personas han podido ingresar por medio de interfaces rudimentarias a obtener el código básico de la memoria ROM que posee el Lego y así poder tener acceso a programación mediante assembler para poder controlar por ellos mismos el bloque.
Algunos de frameworks más conocidos con el BrickOS, LejOS y Not Quite C.
BrickOS (o LegOS)
BrickOS es una librería de instrucciones y programas que permiten al programador ingresar de forma directa a la BIOS del bloque y allí instalar un micro sistema operativo con su respectivo núcleo operativo y librerías necesarias para enlazar todos los recursos que dispone el bloque. Para ser instalado debe sobreescribir el área donde se encuentra el framework original, pero con este cambio, el bloque puede ser programado en C, C++ y assembler.
BrickOS está soportado en la mayoría de las distribuciones de Linux y en Windows (por CYGWIN), usando el compilador que trae integrado linux (gcc o gcc++), generando el mapa de bytecodes para controlar las acciones del bloque.
En un inicio, este conjunto de programas se llamaba LegOS, pero la empresa Lego solicitó un cambio de nombre debido a la semejanza que existía entre ambos nombres.
LejOS2
LejOS a diferencia de BrickOS, no instala un sistema operativo en reemplazo del firmware del bloque RCX, sino que instala una máquina virtual de Java, lo cual permite el bloque sea programable en el lenguaje Java, por lo cual no dependen de un compilador o un sistema operativo para ser reemplazado. Sin embargo, la transparencia de procesos para el programador es más baja debido a la programación orientada a objetos que restringe LejOS, haciendo que el programa de BrickOS se más utilizado por la transparencia de procesos tanto internos como externos. Esto último repercute en que el programador, utilizando BrickOS, pierde la conciencia de los movimientos que se realiza en forma interna en el bloque, por lo que hace imposible añadir mejores capacidades de programación. Aun así, este programa es muy utilizado con los estudiantes de primer año para programación de máquinas.
Not Quite C
Not Quite C es el único conjunto de programas que no reemplaza el framework original del bloque, pero eso representa una desventaja, por que debe coexistir junto al framework original, por lo tanto emular sus instrucciones, haciendo que el proceso sea más lento que por la metodología de reemplazar el framework.
Not Quite C esta disponible para Mac OS y Windows, y utiliza como lenguaje de programación una versión propia de C. Además, es compatible con la mayoría de la línea de Mindstorms, lo cual lo hace el más extenso de todos los lenguajes alternativos, debido a sus capacidades de migrar entre plataformas de los bloques de RCX.
Problemas de la adaptación
Un problema generado por el cambio del framework a otro lenguaje es el retardo que pueda existir entre las instrucciones, debido a la emulación de las instrucciones que el conjunto de programas le entrega al bloque. Este retardo fue registrado por Dick Swan y tras algunas pruebas de rendimiento y emulación en software permitió descubrir que el retardo medio para la ejecución de cualquier instrucción, con o sin motor encendido es de 1,75 mseg.
La prueba que realizó fue realizar muchas tareas en la misma cantidad de tiempo, notando la relación lineal de las instrucciones ejecutadas, por lo cual, a mayor cantidad de instrucciones, mayor el tiempo de espera para ejecutar la instrucción.


1 comentario: