lunes, 26 de mayo de 2008

Comienzan a salir las cosas

Bien, después de muchas horas de desesperación creo estar cerca de poder usar el wiimote para conocer la distancia recorrida por el robot, o en otras palabras, tener un sistema de odometría fiable.

Primero unos repasos de la física del instituto. Si disponemos de un objeto que se desplaza a lo largo del espacio (s) y medimos el tiempo (t)que invierte en este desplazamiento, podemos obtener su velocidad (v), con algo tan simple como derivar el espacio respecto del tiempo

v = s / t

Donde s corresponde al incremento del espacio (s1 - s0) y t al incremento del tiempo (t1 - t0). Bien, si derivamos de nuevo la velocidad respecto al tiempo, podremos obtener la aceleración del objeto. Siendo esta aceleración un movimiento conocido por todos como "movimiento uniformemente acelerado".

Para recorrer el camino al contrario, simplemente tenemos que calcular las integrales de estos valores respecto del tiempo, es decir, conociendo la aceleración (a):

v = v0 + a(t - t0)

y el espacio:

s = s0 + v0(t - t0) + 1/2 (a (t - t0))

Ahora el experimento, en un movimiento acotado de 30 cm desplazamos el mando por la horizontal desde una v0 = 0 hasta una velocidad final también 0, los resultados obtenidos son los siguientes:

  • La aceleración tiene errores de lectura


  • La velocidad desciende por debajo de cero (como si el objeto invirtiese la dirección del movimiento)


  • Y el espacio retrocede a lo largo del tiempo aproximándose a cero


Bien, con esto no voy a ninguna parte, así que aplicando el filtro de kalman a la aceleración, los resultados obtenidos son los siguientes:

  • La aceleración se ha suavizado, ahora se ajusta mas a la realidad


  • La velocidad no ha tenido mejoras, seguimos cayendo por debajo de cero


  • Y como era de esperar, el espacio "retrocede"



Así que utilizamos de nuevo el filtro de kalman, pero esta vez aplicado primero a la aceleración y luego a la velocidad. Los resultados son los siguientes:

  • La aceleración filtrada, obtiene una gráfica mas real


  • La velocidad, esta vez si desciende de forma normalizada, sin llegar a 0, pero sin tomar valores negativos


  • Ahora si, el espacio aumenta, pero sobrepasa los 30cm del experimento hasta el doble



Y la última prueba, filtrando el espacio con los datos a su vez filtrados de velocidad y aceleración. Las gráficas correspondientes a estas dos últimas no varían

  • Pero retrocedemos en los resultados esperados para el espacio



Conclusiones: El filtro de kalman resulta tremendamente útil para obtener una información mas cercana a la realidad que la obtenida por medio de las mediciones, ya que nos permite eliminar el ruido. Sin embargo, sólo en una de las pruebas el resultado espacial ha estado cercano a los 30cm del experimento (con un error de 1cm). Así que algo he dejado en el aire, tal vez sean los ajustes del filtro.

¿alguna sugerencia?

3 comentarios:

wiilliam dijo...

Hola,

Hay demasiado ruido en las accelerationes (muy interessante este post con los graphicos). Ok, se requiere otros sensores (GPS, gyroscope...) para un bueno resultado con el filtro de kalman.
Pero, yo soy de acuerdo, es muy interessante tratar de usar el filtro con la wiimote, solamente.
Tiene usted uno ejemplo de filtro de Kalman con la wiimote ?

Manolo dijo...

Hola Wiilliam,

El principal problema que he tenido con el filtro de kalman ha sido la poca fiabilidad del acelerómetro del mando de Wii. De hecho, Nintendo ha prometido sacar un accesorio para el mando que aportará mas sensibilidad al mando. Al parecer los desarrolladores de videojuegos también tienen problemas para obtener lecturas fiables.

En este artículo tienes una descripción matemática del filtro y código de ejemplo en C++. Para aplicarlo al mando de Wii necesitas conectar el mando al Pc por medio de bluetooh. Para ello existen varias soluciones, en mi caso utilizo Cwiid

Espero que te resulte de ayuda.

Un saludo

wiilliam dijo...

Gracias,
Quizas es possible de utilizar el sensore infrarojo en el filtro con un cambio de los estados del observador pero no sera demasiado robusto, tambien. (...si el wiimote no se fue en frente del "sensor bar") .
Por fin, yo tambien, espero el accesorio "wii-motion plus" para obtener mejores resultados con el filtro de kalman.

Un saludo