Я пытаюсь реализовать фильтр Калмана, чтобы оценить положение моей руки, движущейся в сагиттальной плоскости (2d). Для этого у меня есть IMU, который, как обычно, я использую гироскоп в качестве входных данных для моей модели состояния и акселерометр в качестве наблюдения.
Что касается смещения, я использовал 0,001 для дисперсии моей ковариационной матрицы уравнения оценки состояния и 0,03 для дисперсии акселерометра (измерения).
Этот фильтр работает очень хорошо, если я медленно перемещаю руку от 0 до 90º. Но если я выполняю резкие движения, акселерометр заставляет мою оценку двигаться вниз, и это не очень точно (я отклонился примерно на 15 градусов), когда я двигаюсь медленно, он снова работает хорошо. Но реакция при большом ускорении / резком движении не очень хорошая.
По этой причине я подумал о переключателе дисперсии, который отслеживает дисперсию последних 10-20 значений моих угловых измерений акселерометра, и если дисперсия выше определенного уровня, я бы увеличил дисперсию акселерометра в ковариационной матрице.
Будет ли это правильным подходом в системе с очень высокими ускорениями? Что было бы более правильным способом оценки угла при резких движениях? Как я уже упоминал, результат, который я получаю, когда акселерометр имеет низкую дисперсию, очень хорош, но не при "быстром встряхивании". к гауссовскому распределению, но я бы не знал, как смоделировать такое поведение.