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)

viernes, 5 de abril de 2013

Tercera practica - Victimas

En esta practica contamos con un escenario. Se debe seguir la linea negra, hay 2 tipos de victimas: verdes y plateadas y tramos sin linea.


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

Soluciones que han ido surgiendo

- Esta practica tiene un trazado  complicado por lo que  la mejor idea es  afrontarlo con un algoritmo robusto aunque  lento basado en  la localización y búsqueda de la linea frente a la velocidad.

- Al principio enfoqué la practica  por umbrales, tome una medida de cada elemento; negro, verde,blanco,brillante y use un decisor ML ente cada medida.
Ventajas:
     Había un rango para cada  posible detección.
Inconvenientes:
     El nivel de verde debido a la naturaleza del sensor de infrarrojos se podía conseguir cuando detectaba negro y un poco de blanco.

-Ignorar victimas verdes, debido a que la probabilidad de falsa alarma detectando verdes es muy alta. Hay pocos verdes  y la detección de verdes le dificulta el seguir la linea, acabe optando por ignorar a las victimas verdes.
Ventajas:
    Los rangos están mejor definidos, ya no hay solapamiento. 
    Los nuevos rangos son negro, blanco y brillante.
Inconvenientes:
    Las victimas verdes ya no tienen comportamiento.

-Para enfrentarse  a los tramos  blancos, decidí realizar una búsqueda de incremental de lado a lado hasta  llegar al cuarto de giro.Si no encuentra la linea recupera su orientación original y avanza una pequeña cantidad y vuelve a buscar.
Ventajas:
    Aumenta en gran medida la recuperación frente a perdidas y salidas de linea.
Inconvenientes:
    En la rampa  el peso del culo le hacia salirse.

-Ademas de las adaptaciones del robot, hice unos pequeños retoques a la pista a ver si conseguía mejoras; Reduje la pendiente de la pista, y para aumentar el rozamiento y reducir el derrape le pegue cinta de carrocero a ambos lados de la rampa. En mi caso no soluciono el problema del derrape por el peso del culo. Pero si que ayudo en las practicas de mis compañeros.

 -Por ultimo añadir que la detección de los hombrecillos plateados esta hecha mediante unas pequeñas etapas de paro pitido avance y búsqueda de linea negra.
foto de falso positivo de verde

----------------------------------------------------------------------------------------------------------------------------------
vídeo del robot haciendo el circuito
-Esta acelerado a 4 veces la velocidad aproximadamente tardaba un poco mas de 7 min y solo pitaba en los plateado.