Подтвердить что ты не робот

Слияние датчиков с фильтром Калмана

Мне интересно, как моделируется двойной вход в настройке слияния датчиков в калмановском фильтре?

Скажите, например, что у вас есть акселерометр и гироскоп и вы хотите представить "уровень горизонта", как в самолете, хорошую демонстрацию чего-то подобного здесь.

Как вы на самом деле собираете два положительных свойства датчиков и минимизируете отрицательный результат?

Является ли это моделью в матрице модели наблюдения (обычно обозначенной столицей H)?


Примечание. Этот вопрос также был задан без ответов на math.stackexchange.com

4b9b3361

Ответ 1

Обычно проблема слияния датчиков происходит из теоремы байеса. Фактически у вас есть, что ваша оценка (в данном случае уровень горизонта) будет взвешенной суммой ваших датчиков, которая характеризуется моделью датчика. Для двойных датчиков у вас есть два общих варианта: моделируйте систему с двумя датчиками и получайте коэффициент калмана для каждого датчика (используя модель системы в качестве предиктора) или выполните два этапа коррекции с использованием разных моделей наблюдения. Вы должны взглянуть на байесовских предсказателей (немного более общих, чем фильтр Калмана), который точно получен из минимизации дисперсии оценки, учитывая два разных источника информации. Если у вас есть взвешенная сумма и свести к минимуму дисперсию суммы, для двух датчиков, то вы получите прибыль Кальмана.

Свойства датчика можно "увидеть" в двух частях фильтра. Во-первых, у вас есть матрица ошибок для ваших наблюдений. Это матрица, представляющая шум в наблюдении датчиков (предполагается, что это нулевой средний гауссовский шум, что не является слишком большим предположением, учитывая, что во время калибровки вы можете достичь нулевого среднего шума).

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

О "сборе хороших характеристик", что вы должны делать, - это хорошая калибровка и характеристика шума (что написано хорошо?) датчиков. Лучший способ получить фильтр Калмана для схождения - иметь хорошую шумовую модель для ваших датчиков, и это на 100% экспериментально. Попробуйте определить дисперсию для вашей системы (не всегда доверяйте таблицам данных).

Надеюсь, что это поможет.

Ответ 2

Гироскоп измеряет скорость изменения угла (например, в радианах в секунду), а из показаний акселерометра вы можете рассчитать сам угол. Вот простой способ объединения этих измерений:

При каждом полученном считывании гироскопа:

angle_radians+=gyro_reading_radians_per_sec * seconds_since_last_gyro_reading

При каждом полученном показании акселерометра:

angle_radians+=0.02 * (angle_radians_from_accelerometer - angle_radians)

Константа 0.02 предназначена для настройки - она ​​выбирает компромисс между подавлением шума и реагированием (вы не можете иметь оба одновременно). Это также зависит от точности обоих датчиков и интервалов времени, в которые принимаются новые показания.

Эти две строки кода реализуют простой одномерный (скалярный) фильтр Калмана. Предполагается, что

  • гироскоп имеет очень низкий уровень шума по сравнению с акселерометром (это верно для большинства датчиков потребительского класса). Поэтому мы вообще не моделируем шум гироскопа, а вместо этого используем гироскоп в модели перехода состояния (обычно обозначаемый F). Показания акселерометра
  • принимаются при обычно регулярных временных интервалах, а уровень шума акселерометра (обычно R) постоянный
  • angle_radians был инициализирован с начальной оценкой (f.ex путем усреднения angle_radians_from_accelerometer в течение некоторого времени)
  • поэтому также оценка ковариации (P) и оптимального коэффициента усиления Калмана (K) постоянны, что означает, что нам вообще не нужно ковариантность оценки в переменной.

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

Ответ 3

Горизонтальная линия G '* (u, v, f) = 0, где G - вектор силы тяжести, u и v центрированные координаты изображения и f фокусное расстояние. Теперь плюсы и минусы датчиков: гироскоп очень быстрый и точный, но дрейфует, акселерометр менее точен, но (если он откалиброван) имеет нулевое смещение и не дрейфует (без ускорения, кроме гравитации). Они измеряют разные вещи - акселерометр измеряет ускорение и, следовательно, ориентацию относительно вектора силы тяжести, в то время как гироскоп измеряет скорость вращения и, следовательно, изменение ориентации. Чтобы преобразовать его в ориентацию, нужно интегрировать его значения (к счастью, его можно отбирать с высоким значением fps, как 100-200). поэтому фильтр Калмана, который должен быть линейным, неприменим к гироскопу. на данный момент мы можем просто упростить слияние датчиков как взвешенную сумму показаний и прогнозов.

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