Как / должен ли я реализовать фильтр Калмана для получения точных данных акселерометра?

Я хочу получить как можно более точные данные от встроенного акселерометра в телефоне Android. Я хочу отслеживать двумерное движение по оси x и y, и даже небольшие движения должны быть зарегистрированы.

когда я смотрю на данные акселерометра / линейного ускорения, когда телефон лежит на столе, он сильно меняется, когда я должен быть равен нулю.

Я посмотрел на фильтры Калмана, это кажется хорошим подходом, но у меня возникли проблемы с настройкой модель.

1. Является ли фильтр Калмана способом получить как можно более точные данные с акселерометра?

2. Будет Калмана фильтр? Может быть, я неправильно понял, но кажется, что ускорение или скорость должна быть постоянной?

3. Как настроить модель для использования фильтра Калмана? У меня возникли проблемы с пониманием (среди прочего), что процесс шума?

2 ответов


фильтр Калмана применяется, когда все измерения (в данном случае ускорения) равны истинному значению плюс ошибка измерения. Погрешность измерения-это шум процесса. Ибо для применения оригинального фильтра Калмана шум должен быть нормально распределен, т. е. иногда ошибка будет положительной, иногда отрицательной и в среднем равна нулю.

Если вы быстро дергаете свой Android-телефон взад и вперед, будут большие ускорения. Я предлагаю запись показания акселерометра при таком действии и просмотр на глаз, чтобы увидеть, похоже ли, что показания действительно подвержены какому-то нормально распределенному процессу шума. Я предполагаю, что ответ будет "нет", т. е. я ожидаю, что показания при построении графика будут гладкими. Но если они не гладкие, фильтр Калмана может быть полезным.

Если вы пытаетесь использовать показания акселерометра для определения местоположения, я думаю, что ваш проект обречен на провал. Ускорение-это вторая производная от положения по времени, и я никогда не слышал, чтобы кто-то мог интегрировать показания с достаточной точностью, чтобы быть полезным.

Я успешно применил фильтр Калмана к показаниям GPS на телефоне Android, чтобы улучшить оценку местоположения. См.гладкие данные GPS для кода, который реализует фильтр Калмана для этого. Впоследствии я задался вопросом, Можно ли использовать данные о скорости и, возможно, ускорении для улучшения оценка местоположения. Хотя я никогда не следовал этой идее, понимаете https://dsp.stackexchange.com/questions/8860/more-on-kalman-filter-for-position-and-velocity для математики, которую я рассматривал.

оптимальный способ использования всех входов датчиков (GPS, акселерометр, гироскоп и т. д.) Для получения хорошей оценки местоположения-очень сложная (и интересная) проблема. Чтобы узнать больше, ключевая фраза для поиска "датчиков". На эту тему есть старое видео youtube в http://www.youtube.com/watch?v=C7JQ7Rpwn2k .


вы можете найти этот поток полезным. Я столкнулся с теми же проблемами

мы думаем, что дисперсия при лежании может быть проблемой с карданным замком, запутывающей вычисления, но это всего лишь теория прямо сейчас. Мы также заметили, что ковариация на каждой оси изменяется в зависимости от ориентации устройства, что также может быть помехой карданного замка, но опять же просто теория

реализовать фильтр Калмана для сглаживания данных из deviceOrientation В API