viernes, 26 de abril de 2013

Cuarta practica - VFF

Esta practica pertenece a los algoritmos de navegación local.
El objetivo es llegar a un destino que generara en el robot una fuerza atrayente, mientras que los obstáculos generaran una fuerza repulsiva que alterara la trayectoria.  El robot  trazara un mini mapa  de su entorno, calculara las fuerzas repulsivas, calculara la fuerza atractiva, calculara la fuerza resultante, girara y avanzara un paso (distancia determinada) esto lo repite hasta  terminar en las proximidades del destino.

----------------------------------------------------------------------------------------------------------------------------------

Soluciones que han ido surgiendo

-La practica al principio la enfoqué partiendo desde la idea de unas coordenadas absolutas y  una pequeña corrección para la fuerza objetivo.
El mundo tendría unas coordenadas globales, el robot estaría referenciado frente a esas coordenadas globales y los obstáculos los iría calculando y pasándolos a las coordenadas globales.
Lo idee de esta forma porque mi  idea era ir fabricando un mapa  global.
Ventajas:
   Al tener los obstáculos en absolutas  podría en teoría corregir mi posición ya que la odometria mete una cierta incertidumbre.
   Construir un mapa global seria fácil. Iría almacenando en las celdillas las posiciones donde ha detectado un obstáculo.
Inconvenientes:
   Descubrí que el NXT usando Lejos no soporta la creación de ficheros  mediante las ordenes de java comunes.
   Se me complicaba un poco la navegación cuando las coordenadas estaban en negativo o el robot no giraba lo que debía.


-Primera idea,  Tipo de coordenadas de trabajo:

Cartesiana para todo.
Ventajas:
    Al tener todo en el mismo sistema de coordenadas  cartesianas y referencias desde el origen los cálculos son fáciles.
Inconvenientes:
    El sensor de ultrasonidos solo captaría obstáculos en linea recta. Usando tornillo sin fin y eje haría un barrido horizontal. No es fácil hacer el montaje con las piezas que tenia.

Cartesianas para origen, posición del robot y polares para obstáculos.
Ventajas:
    El sensor de ultrasonidos lo puedo acopar sobre un motor  y realizar  las medidas en un sistema natural.
Inconvenientes:
    Cambio de coordenadas obligatorio. Y el robot  siempre tiene que tener la misma orientación. Generando mas adelante movimientos  innecesarios de corrección.

Añadir angulo de orientación del  robot.
Ventajas:
    El robot ya tiene un apoyo  para controlar su orientación.
Inconvenientes:
    Deja de ser útil el sistema de coordenadas absolutas.


-Segunda idea, Olvidarme de mapa global y trabajar con coordenadas  relativas al robot:
Debido a problemas al intentar hacer un mapa  con la memoria desistí, consulte con mi profesor  como reorientar la practica. Me aconsejo que la enfocase  en trabajo en relativas. Esto supuso cambiar  el destino a coordenada relativas y usar los valores  de los obstáculos directamente.

----------------------------------------------------------------------------------------------------------------------------------

  Solución Final

- Particionado del problema en fases:

+Sonar:Se encargaría de generar un mapeado de los obstáculos.
Esto lo logra tomando 20 medidas en un arco de 180 grados, cada medida seria la media de 5 medidas en cada dirección.  Esto lo he hecho de esta forma para reducir los errores de medida que ofrecen los sensores y tener cubierto todo el campo bien.

+Calculo de Fuerza repulsiva: Una formula y trigonométria  permiten convertir  la posicion de los obstáculos en una fuerza |Fr|=Krepulsiva/distancia ør=øobstaculo+180
luego se  sumarían  todas para generar un único vector repulsivo.

+Calculo de Fuerza atractiva: Calcular la posición del objetivo  en coordenadas relativas   teniendo en cuenta la orientación del robot y la posición.|Fa|=Katractiva*distancia øa=øobjetivo-ørobot

+Calculo de la resultante: Suma de fuerzas  ya con sus limitaciones y conversiones, esto genera un vector que debe ser interpretado por  los motores.

+Conversión en magnitudes físicas y movimiento.

+Odometria para calcular la nueva posición y orientación.

-Pequeños parches:
Para evitar que obstáculos muy lejanos pero continuos como una pared tengan mucho peso he limitado la distancia a la que tiene en cuenta un obstáculo, cuando un obstáculo esta a mas de 60 cm lo ignora.

Para garantizar que no se haga el valiente golpeándose,  y no haya divisiones entre 0  cuando el obstáculo esta a una distancia menor del paso genera fuerza máxima. (Esto generaba el comportamiento que me tenia mosca, la superficie de la lata no le da una distancia correcta, se la daba un poco mayor por la forma redonda así que el podía avanzar hasta justo toparse pensando que  todavía tenia espacio).

Tiene un corrector para permitir usar las coordenadas desde el robot  de forma natural para el hombre x y, "y" adelante, "x" lados.
Los ángulos están en sentido anti horario para que el 0 estuviese en el mismo punto, y sea fácil la conversión entre el mundo real y el de fuerzas.
----------------------------------------------------------------------------------------------------------------------------------

 Vídeos de sus comportamientos

-coordenadas  y=160 x=-80  (Prueba de entrega)

-coordenadas y=-140 x=-80 (Prueba de robustez)
 
(use  140  en vez de 160  porque pensaba que consideraría el cuerpo)

No hay comentarios:

Publicar un comentario