Varrojo's Atrium :: yaks

Software::Yet Another Khepera Simulator 

Introducción

Esta sección se encuentra dedicada al simulador del robot Khepera: Yaks. Yaks es básicamente 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 se espera presentar en el futuro una versión que permita ser interfazeada con otros lenguajes de programación.

Adicionalmente se ha agregado una sección relacionada con la API YaksServer, la cual brinda capabilidades de networking al simulador Yaks de forma de permitirle interoperar con agentes desarrollados en varios lenguajes de programación distintos. Pueden accederla desde aquí [Inglés]. 

Archivos

Fuente Original 

Todas las pruebas realizadas fueron implementadas sobre la versión yaks-1.0-rc3-opengl-alpha.zip, la cual, a la fecha, puede descargarse desde el link a Fuente Original.

Linux Windows

El archivo linwin.zip, referenciado en el link Linux Windows incluye 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 corresponden a todas las mencionadas en las siguientes secciones, por lo cual en un principio, si se reemplazan los archivos por los de esta versión, no deberá ser necesario realizar las modificaciones manualmente. 

De cualquier forma, las siguientes secciones serán mantenidas debido a la posiblididad de que surjan problemas en el proceso de edición y compilación.

Para instalar, descargar yaks-1.0-rc3-opengl-alpha.zip y extraer en el directorio yaks/ los contenidos de linwin.zip.

Documentación 

La documentación constituye una especie de Javadoc generada automáticamente a partir del código fuente, utilizando Doxygen.

Compilación

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 

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.  

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.

Empezar a Programar

Ambientes Linux o Unix

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

csim.cpp -> sim.cpp

Antes de comenzar a programar, debemos hacer una pequeña modificación 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(;;).

Ambientes Windows 

Se deberá utilizar el archivo sim.cpp incluido con el fuente. Adicionalmente se puede descargar el archivo linwin.zip y utilizar el sim.cpp modificado, el cual es más sencillo, sin embargo no se ha probado su compilación bajo Windows.

Descargas

  • Fuente Original - Código fuente original sin modificaciones.
  • Linux Windows - Incluye 3 archivos modificados con los arreglos necesarios para compilar bajo Linux y MS Windows
  • Documentación - Contiene documentación generada automáticamente a partir del código fuente.

Vínculos 

  • YaksServer - Brinda capabilidades de Networking al simulador Yaks para poder crear interfaces con otros lenguajes.