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 / tDonde
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?