Friday, April 19, 2013

Practica 1: Menos de 3 minutos logrados!

Definitivamente una imagen vale mas que mil palabras. El objetivo basico esta practicamente logrado ya que consigo dar una vuelta en menos de 3 minutos.



ToDo:
  • Modulo que cuando pierda la linea la busque, sabiendo por que lado la ha perdido para evitar que cambie de dirección.
  • Intentar mejorar la velocidad en rectas y curvas.


Saturday, April 13, 2013

Practica 1: Primeros pasos

Como ya se había avanzado el planteamiento principal va a ser encontrar donde esta la linea como primer objetivo. Para ello tiramos 9 lineas en bloques de 3 como se muestra en la imagen.


Con dichas lineas buscaremos donde se cortan con los bordes de la linea "roja" y de ahí obtendremos el centro la linea que es lo que buscamos.

Como novedades es interesante que debido a que OpenCV utiliza BGR en lugar de RGB la linea y el cielo son rojos y no azules como creia en un primer momento. Realmente es algo que da un poco igual pero es curioso.


Una vez tenemos las lineas encontramos el centro de la linea roja. Como se puede ver hay ciertos problemas cuando la linea se sale de la imagen. Esto puede hacer que tenga que replantar mi estrategia o que busque una solución.

Sunday, April 7, 2013

Practica 1: Retos y Planteamiento

Una vez tenemos ya el entorno completamente preparado para el desarrollo solo nos falta empezar a programar. Pero antes es importante analizar el objetivo de la practica, que retos podemos encontrarnos y que soluciones proponemos.

El objetivo principal de la practica es conseguir que el robot pioner con el uso de una única cámara sea capaz de dar una vuelta completa al mapa "jaramaSigueLinea.world" siguiendo la linea azul que hay pintada en el suelo. El objetivo "secundario" es que dicha vuelta la de lo mas rápido posible.

Los problemas que nos podemos encontrar son de diversos tipos y con mayor o menor importancia y los listare a continuación.
  • Problemas del entorno:
    • Linea azul del mismo color que el cielo.
    • Cámaras con ruido.
    • Linea azul interrumpida por lineas de otros colores.
    • Inercia.
    • Curvas .
  • Problemas de desarrollo:
    • Como detectar la linea.
    • Decisión de la velocidad/dirección.
    • Perdida de la linea por parte del robot.
    • Tiempo de ejecución (FPS).
Hay que plantearse las diversas soluciones e ideas para estos problemas y los que surgirán en el futuro.
  • Soluciones a problemas del entorno:
    • Afortunadamente el cielo esta arriba y la linea abajo, solo analizaremos lo que nos interesa.
    • Con el ruido poco se puede hacer excepto un PID que sea robusto.
    • Se tratara de rellenar los huecos o ver el tamaño de esas lineas y coger varios puntos.
    • Para la inercia y las curvas hará falta bajar la velocidad a su llegada.
  •  Soluciones a problemas de desarrollo:
    • Tomaremos puntos en tres zonas diferentes de la mitad inferior de la imagen. En cada zona tomaremos 3 puntos separados por 2px o 3px para asegurarnos no caer en una linea negra. Con ello sabremos donde esta la recta y en que dirección apunta.
    • Se tratara de ir mas rápidos en las rectas y frenar a tiempo para las curvas.
    • Se implementara un modulo que en el caso de perder la linea sea capaz de encontrarla de nuevo.
    • Se tratara de ser todo lo eficiente posible, por ejemplo no utilizando toda la imagen y solo procesando "x" puntos.
En la próxima entrada hablaremos de el primer intento y  pondremos algunas imagenes del proceso de desarrollo.

El entorno de desarrollo

Tras una odisea para conseguir instalar el nuevo entorno de desarrollo y por diversos motivos (imposibilidad de instalar Debian Wheezy o Ubuntu 12.04) he optado por instalar el entorno de desarrollo en Linux Mint Debian Edition (LMDE), que en principio es 100% compatible con Debian Wheezy. El tiempo lo dirá.

Escritorio del sistema operativo.

El proceso de instalacion se ha llevado analogo a lo que seria una instalación sobre Wheezy y de momento parece que el funcionamiento es correcto y la conexión entre Gazebo e Introrob se lleva a cabo sin problemas.

No me voy a extender mucho en el proceso de instalación ya que ha sido exactamente como se indicaba en los tutoriales que podemos encontrar:


Teniendo en cuenta que para instalar gazebo me basé en ambos tutoriales ya que ambos tienen cosas que no tiene el otro.

Gazebo tras la instalacion de los mundos.

 En el proximo post comentare un poco la primera practica. Que desafios plantea y que aproximación planteo para resolverlo.