Filtro Kalman para iOS

Estoy tratando de get un valor rssi suave de las balizas Bluetooth de baja energía desplegadas en el techo de mi laboratorio. Utilicé el filter promedio ponderado y el filter promedio mobile pero no pude get un buen resultado. A través de varios periódicos he llegado a saber que el filter Kalman se puede usar para este propósito. Pero no pude get una ecuación matemática adecuada para codificar con objective-c. ¿Alguien puede dar alguna pista sobre la ecuación matemática o la implementación del filter de Kalman? Muchas gracias.

    Un caso unidimensional como este significa que todas las matrices son en realidad valores escalares. Necesitas saber dos cosas:

    1. R , la varianza de la medida. Puede medir esto directamente mediante la grabación de una serie de valores RSSI (en una location fija) exactamente cómo lo haría normalmente y luego midiendo su varianza. Puede hacer esto fácilmente con Excel, o python, o incluso escribir su propio código desde cero.
    2. Q , la variación del process. Esto es lo que espera que RSSI cambie realmente en la misma cantidad de time (entre mediciones). También puedes medir esto o puedes razonarlo.

    Si observa las ecuaciones del filter de Kalman, notará que P no depende de sus mediciones reales, solo los dos valores anteriores. Como resultado, dado que son constantes, P convergerá a un valor fijo. Y dado que K (la ganancia de Kalman) solo se basa en esos valores, también convergerá. Para una aplicación como la suya, generalmente es suficiente encontrar el estado estacionario K y usarlo todo el time.

    Esto ahora es solo un modo complicado (pero óptimo en un sentido de mínimos cuadrados) de crear un filter de promedio mobile simple.

    Si está buscando una implementación rápida de Kalman Filter, vale la pena mirar este marco . Es una implementación genérica del algorithm de filter convencional y también proporciona una estructura Matrix y todas las operaciones necesarias en Matrices que se usan en el filter Kalman