Programación
La programación es la parte más importante del proceso de desarrollo, aunque no es la única. Antes de ponerse a programar, hay que tener un robot construido, lo cual también es muy divertido y puede llegar a ser un reto tan complicado o más que la programación.
Hasta el momento solo he probado dos maneras de programar el robot. La primera es con el propio software que viene incluido en la caja del robot, NXT-G, desarrollado por Lab-View. Es un entorno de desarrollo integrado y gráfico, es decir, todo el desarrollo se realiza a golpe de ratón, de una manera muy intuitiva y rápida, es decir, que se programa arrastrando iconos que representan acciones a realizar por el robot. Además tiene herramientas de diagnostico y gestión del robot muy útiles. Esta herramienta es muy cómoda para empezar y familiarizarse con el robot y su método de funcionamiento, pero en seguida se queda corta, sobre todo si estas acostumbrado a programar, como es mi caso. Solución, NXC (Not eXactly C)
NXC es la segunda manera de programar que he utilizado, y probablemente será la que más use, pues aunque no cuente con un entorno de desarrollo, ni herramientas de control y gestión del robot, puedo programar el robot con un leguaje de programación casi exacto a C, cosa que me resulta muy comodo pués manejo bien este lenguaje.
Este entorno de desarrollo tiene únicamente dos herramientas de linea de ordenes (Shell), un compilador (nbc) y una herramienta que permite descargar los archivos compilados al robot (nxtcom), ambas disponibles aquí.
Con esto es suficiente, pués para programar solo se necesita un editor de textos, y desde Mac OS dispongo también de una Shell, así que ya tenemos todo. Además, con un pequeño Makefile, se hace muy cómodo el compilar y mandar el programa al robot.
También contamos con un API, es decir, una serie de funciones para controlar el robot, que van desde control de tareas, hasta control de los sensores, pasando por control de sonidos y de escritura en pantalla. Esta interfaz que tenemos contra en hardware es muy poderosa, por esto es porque merece la pena programar “a pelo”. La única pega que he encontrado hasta ahora es que no se pueden matar hilos desde otro…
La forma de programar es sencilla:procedimental y basada en tareas concurrentes, de manera que podemos tener varias tareas ejecutándose al mismo tiempo. La primera tarea a crear es “main” que será la que se ejecute al arrancar el programa (¡Como en C!). Después podemos definir otras tareas y ejecutarlas cuando sea necesario. También tenemos soporte para crear y usar funciones… vamos como en C.
task main()
{
OnFwd(OUT_A, 75);
OnFwd(OUT_C, 75);
Wait(4000);
OnRev(OUT_AC, 75);
Wait(4000);
Off(OUT_AC);
}
Aquí tenemos el código de un pequeño programa que mueve los motores en los puertos A y C.
Esto es todo…
1 Comment »
RSS feed for comments on this post. TrackBack URL

[...] ahora, ya abandono el IDE gráfico de Lego, para centrarme en el entorno de desarrollo de NXC. Como ya hablé, NXC es un entorno de desarrollo modo texto, programación a pelo, sin IDE, con toda la aspereza [...]