Máquina del Tiempo: Compilar YAKS

Hacia fines del 2006 escribía en una de mis páginas web instrucciones detalladas sobre cómo compilar YAKS, un simulador Open Source de Robots Khepera, desarrollado en C++.

Hoy en día, dicho sitio web se encuentra abandonado, por lo cual, este tutorial quedó perdido en el tiempo. Con este post lo estoy trayendo nuevamente a la vida con el objetivo de que quede disponible para quienes tengan que trabajar con este simulador y se encuentren con los mismos problemas con los que yo me encontré cuando tuve que trabajar con él.

Este tutorial fue escrito para la versión de YAKS 1.0-rc3-opengl-alpha, compilando con GCC 3.3.5 y Microsoft Visual C++ 7.1 y puede que no funcione con versiones más recientes del Software. De todos modos, estuve revisando las estadísticas del proyecto en FreshMeat y parece que el último commit al CVS fue realizado el 20 de Enero de 2005, por lo cual es posible que este tutorial resulte de utilidad.

Sin más, dejo a continuación el tutorial.

Introducción

Esta sección se encuentra dedicada al simulador del robot Khepera: YAKS. YAKS es un proyecto de Software Libre desarrollado en Suecia. Su objetivo es brindar un ambiente en el cual se puede programar uno o más robots Khepera simulados, principalmente con fines académicos.

En esta página se describen técnicas para compilarlo bajo ambientes Linux y Windows.

Todas las pruebas realizadas fueron implementadas sobre la versión de YAKS 1.0-rc3-opengl-alpha. A la fecha, la versión más reciente de YAKS puede descargarse FreshMeat aquí.

En su momento, existió un archivo denominado linwin.zip que incluía versiones modificadas de los archivos sim.cpp, environ.h y world.h, preparadas para compilar el simulador bajo Linux y (si bien no lo he probado) también debería funcionar bajo Windows.

Las modificaciones realizadas correspondían a todas las mencionadas en las siguientes secciones, por lo cual en un principio, si se reemplazaban los archivos por los de esta versión, no deberá de ser necesario realizar las modificaciones manualmente.

De todos modos, debido a la posiblididad de que hayan surgido cambios durante estos últimos 4 años, es mejor seguir las ideas de las secciones siguientes para resolver problemas en el proceso de compilación.

Compilación bajo GCC 3.3.5 o superior

Para compilar, dirigirse al directorio yaks/, dentro de donde se descomprimió el archivo y ejecutar make. Dado que el código originalmente fue desarrollado para compilar bajo el compilador de Visual C++ 6.0, es común encontrarse con problemas al intentar compilarlo usando GCC, en particular he notado que falta incluir el cabezal <string.h> en los archivos environ.h y gui/world.h.

Si tras realizar estas modificaciones, la compilación continúa fallando, se deberá revisar que se dispone de todas las bibliotecas necesarias por el sistema. En particular: gtk.1.2-devel y glib.1.2-devel son obligatorias. Antes de recompilar se recomienda ejecutar make clean

Una vez compilado, se generan los archivos bin/sim y bin/gsim

Compilación bajo Microsoft Visual C++ 7.1

La prueba la realicé haciendo uso del kit de desarrollo MS Visual Studio .NET 2003.

Basta con Abrir el proyecto de Visual C++ dentro de la carpeta win32\ y Ejecutar Build All. Es posible encontrarse con los mismos problemas de cabezales faltantes, en dicho caso modificar como se mencionó en la sección anterior.

Una vez compilado genera un archivo de nombre yaks.exe.

Compilación bajo Microsoft Visual C++ 6.0

Si bien no lo he probado, hasta donde tengo entendido, la versión original del código compila sin problemas bajo Visual C++ 6.0, basta con abrir el proyecto y seleccionar build all.

Ejecución

Dependiendo de la plataforma ejecutar gsim, sim o yaks.exe pasandole como argumento un archivo .opt.

Empezando a Programar sobre el Simulador en Ambientes Linux o Unix

Debemos reemplazar el archivo sim.cpp por csim.cpp, para ello, simplemente renombramos:

mv csim.cpp sim.cpp

Ahora, antes de comenzar a programar, debemos hacer una pequeña modificación adicional al código para que compile: debemos eliminar la línea que dice world->drawLayout(). Esta función por algún motivo no se encuentra definida y consecuentemente, el intento de llamarla causa que el código no compile. Una vez eliminada, todo debería compilar normalmente.

Ahora podemos trabajar directamente en la función main() de sim.cpp, donde se encuentra el bucle principal del programa en un for infinito de la forma for(;;).

Empezando a Programas sobre el Simulador en Ambientes Windows

Se deberá utilizar el archivo sim.cpp incluido con el fuente.

This entry was posted in C++, Máquina del Tiempo, Programacion, Tutoriales. Bookmark the permalink.

One Response to Máquina del Tiempo: Compilar YAKS

  1. Alberto says:

    Muchas gracias

Comments are closed.