Para un problema similar, pero también puede funcionar en este caso, he usado AHRS (Sistema de referencia de actitud y encabezado ) utilizando un filtro de Kalman.
Básicamente lo que necesitas es:
- Un sistema de posicionamiento absoluto, como la intensidad de la señal de algunos puntos inalámbricos o similares; esto no tiene que ser muy preciso, pero proporciona la referencia para el resto del sistema;
- Una forma precisa de medir movimientos, como una IMU (Unidad de medición inercial), con acelerómetros, giroscopios e magnetómetros; esto le dará una buena estimación del movimiento, y al menos los acelerómetros son proporcionados por la mayoría de los teléfonos inteligentes.
Con el filtro de Kalman, puede usar el primer bloque para hacer una predicción de la posición, y luego el segundo para aplicar el movimiento a esa predicción. Esto le permite relacionar más mediciones de la posición absoluta y tener la convergencia de la solución con un resultado muy preciso.
Tenga en cuenta que si tiene un buen punto de partida (por ejemplo, un punto de control con, digamos, una etiqueta NFC), la precisión se puede mejorar mucho.
También puedes probar con filtros de partículas , donde el movimiento se usa en combinación con mediciones de una manera similar, para obtener la convergencia de la posición a un lugar único.