SigueLínea con Gazebo

En este caso vamos a intentar programar el robot pioneer para que sea capaz de seguir una línea roja del suelo. Para ello tendremos que interpretar los datos recibidos a través de una cámara.

Lo primero, por tanto, será aprender a interpretar los datos recibidos de la cámara del robot y estudiar cómo tratarlos para conseguir nuestro objetivo.

En el manual de programación con jde encontramos la siguiente referencia:

La imagen obtenida por una cámara se almacena y refresca en el array colorA[3*320*240] . Dentro del array, con el índice creciente se va recorriendo la imagen de arriba a abajo y de derecha a izquierda. Se dedican 3 bytes por cada pixel, uno para la componente roja R, otro para la verde G, y otro para la azul B.

Perfecto, pero… cómo accedemos a ese array desde navegacion.c? En el fichero introrob.h comprobamos que el array se declara así:

extern char imagenRGB[SIFNTSC_COLUMNS*SIFNTSC_ROWS*3];

Con esta información podemos ver los valores que se almacenan en el array imagenRGB para cada byte de cada pixel, descubriendo cómo indentificar rojo y blanco. Modificamos nevegacion.c para que, con el robot quieto, se impriman por pantalla los valores de la primera línea de píxeles que ve el robot (que en el array sería de la posición 3*240*319 hasta el final), obteniendo los siguientes valores:

(Comenzando por la parte derecha de la imagen)

Del pixel 0 al pixel 58: r=255, g=255, b=255 -> Blanco
Del pixel 58 al pixel 88: r=252, g=73, b=73 -> Rojo claro
Del pixel 89 al pixel 115: r=251, g=7, b=7 -> Rojo oscuro
Del pixel 116 al pixel 142: r=251, g=49, b=49 -> Rojo claro
Del pixel 143 al pixel 239: r=255, g=255, b=255 -> Blanco

camara

A continuación tendremos que ver cómo tratar dichos valores para que nuestro robot no se pierda 😉

Aquí podéis comprobar nuestra solución. Además os  pongo otro vídeo con el resultado:

Esta es la primera versión, que tendremos que afinar…

Anuncios

Un pensamiento en “SigueLínea con Gazebo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s