robots autonomos - sumo roomba y odometria

17
ROOMBA Sumo y Odometría con Roomba Robots Autonomos Universidad de Salamanca Arturo San Feliciano Martín

Upload: arturo-san-feliciano-martin

Post on 21-May-2015

532 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Robots Autonomos - Sumo roomba y odometria

ROOMBASumo y Odometría con Roomba

Robots AutonomosUniversidad de Salamanca

Arturo San Feliciano Martín

Page 2: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-Borrosa 2

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Page 3: Robots Autonomos - Sumo roomba y odometria

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

Page 4: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-Borrosa 4

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Page 5: Robots Autonomos - Sumo roomba y odometria

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.

Page 6: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-Borrosa 6

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Page 7: Robots Autonomos - Sumo roomba y odometria

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

Page 8: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-borrosa 8

Roomba: Odometría II• Principal:

Page 9: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-borrosa 9

Roomba: Odometría III• Consola:

Page 10: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-borrosa 10

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

Page 11: Robots Autonomos - Sumo roomba y odometria

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.

Page 12: Robots Autonomos - Sumo roomba y odometria

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)

Page 13: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-borrosa 13

Roomba: Odometría VI

Page 14: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-borrosa 14

Page 15: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-Borrosa 15

Índice

1• Introducción

2• RoombaSumo

3• Odometría

4• Conclusiones

Page 16: Robots Autonomos - Sumo roomba y odometria

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

Page 17: Robots Autonomos - Sumo roomba y odometria

Computación Neuro-borrosa 17

Robots autónomosMaster en Sistemas Inteligentes Universidad de Salamanca

Arturo San Feliciano Martí[email protected]

¿Dudas?