Memorista de Ingeniería Civil Electrónica.

Bienvenidos

Simulador de algoritmos de navegación autónoma (versión 0.0.1)

Proyecto personal de la asignatura ELO330-Programación de sistemas - Diciembre 2008.

Desarrollador: Nicolas Navarro Guerrero

Profesor: Agustín González Valenzuela

Resumen

Este proyecto fue desarrollado con el fin de facilitar las tareas de verificación de algoritmos de navegación para robots móviles autónomos y consiste en una interfaz gráfica desarrollada en java que permite ejecutar programas que implementen planeación de rutas o trayectorias y luego gráficar las trayectorias obtenidas.

De esta forma el usuario de esta interfaz gráfica no se verá en la necesidad de intervenir un código ajeno para incorporar algoritmos de planeación de rutas o trayectorias o mapeadores, sino que simplemente deberá implementar este algoritmo en el lenguaje que desee y la comunicación entre ambos procesos se realizará a través de comandos por la salida estándar con un módelo similar al modelo cliente/servidor, en el cual el programa proveedor de algún servicio responde a la petición de él o los interesados.

En la versión final de este proyecto se dispondrá de tres procesos distintos, cuyas tareas ya se encuentran definidas. El primer proceso es una interfaz gráfica desarrollada en java que será usada para desplegar adecuadamente la información relevante a cada experimento ejecutado, el segundo proceso consiste en un algoritmo mapeador desarrollado en java, este programa permite ir construyendo un mapa de la habitación (virtual) en la que se realiza el experimento y finalmente el proceso que implementará el o los algoritmos de navegación inteligente.

Problema

Durante el desarrollo del proyecto de título, llamado Desarrollo e implementación de algoritmo evolutivo multi-objetivo para generar rutas on-line en un robot móvil autónomo, surgió la necesidad de ir comprobando el adecuado desarrollo del algoritmo planeador o generador de trayectorias sin disponer de un robot real que permitiera dicha tarea, es por esto que se decidió programar una interfaz gráfica que ayudara a evaluar las rutas generadas y la calidad del algoritmo planeador.

Este algoritmo planeador de rutas será implementado como un proceso en C++ y una vez comprobadas sus funcionalidades en el simulador, será montado como un módulo de inteligencia sobre un robot móvil del proyecto IRMA del Departamento de Electrónica de la Universidad Técnica Federico Santa María.

Objetivos

Desarrollar una interfaz gráfica que permitá observar trayectorias generadas por un proceso planeador de trayectorias y generar un mapa de los lugares recorridos por el robot con la ayuda de un tercer proceso.

Implementar la lógica de funcionamiento en el proceso con GUI que permita coordinar los tres procesos que componen el proyecto.

Modificar un algoritmo generador de mapas, para que se ejecute como un proceso independiente y sea capaz de iteracturar con la consola y la interfaz de usuario.

Desarrollar un algoritmo planeador de rutas.

Estrategía de solución y solución

Con la motivación de generar una solución general y de mayor modularidad, es que se diseño un esquema que permitiera cambiar de forma rápida y sencilla los algoritmos de planeación de rutas, mapeo, o la interfaz de usuario, ya sea con poca o nula intervención de códigos ajenos, además de entregar la libertad de reemplazar cualquier módulo (programa) con gran independencia del lenguaje que utilize el usuario final.

La solución cuenta con tres programas, y la interacción se hace sobre uno de ellos que corresponde al programa que implementa la interfaz de usuario. A continuación se entrega un diagrama que explica de mejor manera la interacción entre estos tres procesos, es este diagrama los procesos son bosquejados como rectangulos y los hilos o threads como flechas.

Interacción entre procesos

Como se aprecia en el esquema anterior, el proceso principal (GUI), debe crear dos hebras que serán las encargas de control a los procesos mapper y navigator respectivamente.

Se decidió implementar la interfaz gráfica en Java, ya que existe una gran cantidad de herramientas que facilitan el diseño, en este caso particular se hizo uso de Netbeans IDE 6.1 y su modo de diseño.

La implementación del programa que genera el mapa de ambiente, llamado mapper fue realizada también en java, y consistió básicamente en la modificación de códigos implementados en ese lenguaje en ocasiones previas.

El programa navigator aún no se encuentra completamente desarrollado. El navigator está siendo desarrollado en C++, ya que en este lenguaje se esta desarrollando el proyecto de investigación IRMA mencionado en secciones anteriores. Para verificar la modularidad descrita anteriormente se implementará un pequeño programa en C++ que entrege una ruta preestablecida y que en versiones posteriores del sistema será reemplazado por el programa navigator.

A continuación se presenta un esquema que describe el flujo de ejecución y la interacción entre los tres programas con anterioridad descritos:

Diagrama de flujo de la solución

Debido a que el conjunto de procesos debe seguir un determinado flujo de ejecución se hace obligatoria la sincronización de las hebras del proceso principal para asó obtener el resultado deseado.

Implementación

A continuación se presenta algunos screenshots de la primera versión de la interfaz gráfica desarrollada:

screenshot.simulations.tab screenshot.pathPlanner.tab screenshot.mapper.tab

Descarga

Los archivos fuentes de las aplicaciones descritas anteriormente pueden ser descargadas bajo:

Version 0.1 - Fuentes de la implementación de Fuzzy ART en java: FartShell.zip

El programa mapper se encuentra en una versión bastante avanzada y ya cuenta con todas las funcionalidades preestablecidas, sin embargo no se puede asegurar una ejecución libre de fallas, ya que no se han realizado pruebas exhaustivas.

Version 0.1 - Fuentes de la implementación de la Interfaz gráfica para algoritmo de mapeo y planeación de rutas: GUIlongRangeNav.zip

La interfaz de usuario se encuentra totalmente implementada en lo que respecta a la gráfica, sin embargo aún no han sido implementadas todas las rutinas de antención de eventos, y la lógica de control de flujo. Esta se encuentra actualmente disponible para su descarga.

Version 0.1 - Fuentes de la implementación del algoritmo planeador de trayectorias: longRangeNav.zip

<-->

El programa navigator aún no se encuentra en desarrollo, por esta razón aún no se encuentra disponible para su descarga.