A continuacion explicaremos como hemos calculado cada una de estas fuerzas:
Fuerza de Atraccion (Fa)
Fa_X=Katraccion * (Xo - Xf)
Fa_Y=Katraccion * (Yf - Yo)
Si Xo,Yo=0
Fa_X=Katraccion * (Xf)
Fa_Y=Katraccion * (Yf)
Fuerza de Repulsion (Fr)
Detectamos una fuerza de repulsión cuando el láser detecta una barrera a una distancia de 1000 o menos, si el obstáculo está más lejos, éste no generará ninguna fuerza de repulsión.
Además si nos encontramos muy muy cerca del objetivo la fuerza de repulsión será nula para evitar que si el objetivo está muy cerca de una barrera el robot se mueva alrededor del objetivo sin llegar a él
El cálculo de la fuerza de repulsión lo hemos realizado a traves de la siguiente formula:
Fr=sum(Fr(i))K/dist_obstaculo
La constante K ha sido elegida a través de las prueba realizadas con el entorno, el valor de K es 35000
Fuerza Total (Ft)
Ft=Katraccion*Fa + Krepulsion*Fr
( Katraccion= 1-Krepulsion rango de la K es [0-1] )

Algoritmo del movimiento
El algoritmo de movimiento lo hemos calculado basándonos en la diferencia entre el ángulo formado por la fuerza total y el que formal a posición del robot.
Si la resta de esta ángulo está entre [0 - 180) (en valor absoluto) comprobamos si la resta es positiva o negativa,para girar en un sentido u otro. Además comprobamos si estamos más cerca o lejos del ángulo objetivo, para girar más rápido o más lento.
Si la resta de esta ángulo está entre [180 - 360] (en valor absoluto) comprobamos si la resta es positiva o negativa,para girar en un sentido u otro. Además comprobamos si estamos más cerca o lejos del ángulo objetivo, para girar más rápido o más lento.
Se puede observar el comportamiento del robot en el siguiente video
También podeis ver el siguiente video:

