robots autonomos - sumo roomba y odometria

Post on 21-May-2015

533 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentación trabajo de Robots Autónomos. Máster Sistemas Inteligentes 2011-2012

TRANSCRIPT

ROOMBASumo y Odometría con Roomba

Robots AutonomosUniversidad de Salamanca

Arturo San Feliciano Martín

Computación Neuro-Borrosa 2

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

3

Introducción• Proyecto Java en Eclipse

• es.usal.ra.sumo Contiene las clases necesarias para la implementación de la practica de RoombaSumo

• es.usal.ra.odometria Contiene las clases que implementan la practica de odometría.

Robots Autonomos

Computación Neuro-Borrosa 4

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Computación Neuro-borrosa 5

RoombaSumo• Algoritmo sencillo

while( true ) {

Si detectamos colisión en el bumper izquierdo

Girar a la izquierda

Continuar hacia adelante

Fin si

Si detectamos colisión en el bumper derecho

Girar a la derecha

Continuar hacia adelante

Fin si

Si encontramos una pared virtual

giramos

continuamos hacia adelante

Fin si

Continuamos hacia adelante

Actualizamos la información de los sensores

}

• Adicionalmente se ha incorporado una funcionalidad que permite conocer cuando se ha encontrado una pared virtual mediante el cambio de color en el indicador de status.

• Principal problema encontrado el sensor de bumper se quedaba pulsado.

Computación Neuro-Borrosa 6

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Computación Neuro-borrosa 7

Roomba: Odometría• En este caso se ha desarrollado una interfaz para controlar el

robot roomba y visualizar los resultados de la odometría.

• Las clases utilizadas son las siguientes:

• IRoomba: Interfaz con las operaciones que se pueden hacer con el robot

• Roomba: Clase mapea al Roomba

• RoombaSim: Clase que simula un Roomba

• DatosDebugRoomba: Frame que muestra una consola con los datos que genera el uso del robot

• VisualizarRuta: Frame que dibuja gráficamente la ruta que ha seguido el robot

• Principal: Frame principal

Computación Neuro-borrosa 8

Roomba: Odometría II• Principal:

Computación Neuro-borrosa 9

Roomba: Odometría III• Consola:

Computación Neuro-borrosa 10

Roomba: Odometría IV• Visualización del camino:

Computación Neuro-borrosa 11

Roomba: Odometría IV• El algoritmo es mas complejo que RoombaSumo

1. Mientras este accionado un mando se ejecuta la operación

2. Cuando se levanta la pulsación se realizan los cálculos de la nueva posición a partir de la posición anterior, la distancia y el ángulo.

3. Se almacenan los datos del nuevo punto y se genera las coordenadas para pintarlas en la grafica.

• El punto importante es el punto 2.

Computación Neuro-borrosa 12

Roomba: Odometría V• Para el calculo de posiciones se tienen en cuenta las siguientes premisas

No se puede realizar dos operaciones al mismo tiempo (e.j. girar y andar)

Si la distancia recorrida es prácticamente nula, se considera que la operación realizada es un giro.

Solo se calcula el nuevo punto si hay distancia recorrida, si giramos únicamente estamos cambiando el ángulo.

Se han redondeado a números enteros las distancias para su representación grafica.

Para el calculo de la nueva posición se realizan las siguientes operaciones:

• dya = (float) (distance * Math.sin(Math.toRadians(anguloTotalGirado)));• dxa = (float) (distance * Math.cos(Math.toRadians(anguloTotalGirado)));

• x = ultimoPunto.x + (int) dxa;• y = ultimoPunto.y - (int) dya;

El punto (x,y) indica donde se va a colocar en la gráficamente, para el calculo de la posición solo hay que multiplicar por -1 el valor de y.

Nueva posición de Roomba: (x, -y)

Computación Neuro-borrosa 13

Roomba: Odometría VI

Computación Neuro-borrosa 14

Computación Neuro-Borrosa 15

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Computación Neuro-borrosa 16

Conclusiones• Trabajar con rumba es complicado:

• Los sensores no son muy fiables• Los bumpers se quedaban pulsados• Gran retardo al iniciar la comunicación con Roomba.

• El calculo odométrico no es bueno.• Realizamos una prueba donde se realiza un spin(360) y se median los

ángulos y no coincidían Creación de un parámetro ajusteAngulo para multiplicar a las medidas de los ángulos dados.

• Como mejoras y posibles desarrollos:• Estudiar los motivos de que el ángulo no sea el esperado.• Mejoras en la interfaz.• Añadir nuevas características (Velocidad, luces, otros sensores…)• “Vuelve a casa por navidad” Crear el camino inverso al recorrido

Computación Neuro-borrosa 17

Robots autónomosMaster en Sistemas Inteligentes Universidad de Salamanca

Arturo San Feliciano Martínasanfeliciano@usal.es

¿Dudas?

top related