фильтр Калмана с избыточными измерениями состояния

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

До сих пор я реализовал фильтр для данных датчика и обнаружения горизонта отдельно на основе этого руководства: http://blog.tkjelectronics.dk/2012/09/a-practical-approach-to-kalman-filter-и-как-реализовать-это/

Какую часть фильтра Калмана мне нужно изменить, чтобы алгоритм выбрал наилучшее показание между прогнозируемым состоянием, показаниями акселерометра и показаниями, обнаруженными на горизонте? Любая помощь, ссылки на документы или сайты будут оценены заранее спасибо за вашу помощь


person ganninu93    schedule 23.03.2014    source источник


Ответы (1)


KF состоит из двух параллельных компонентов: 1. оцениваемого состояния И 2. неопределенности в этой оценке (в частности, ковариационной матрицы компонентов состояния).

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

Поэтому, если вы еще не отслеживаете ковариации для ваших двух оценок, вам нужно будет это сделать.

Для скалярного состояния X с двумя оценками X' и X", у вас будет дисперсия для каждой оценки: V' и V", с инверсиями C' = 1/V' и C" = 1/V". («Определенности» C использовать проще, чем дисперсии V.)

Тогда оценка MMSE (это то, что KF пытается оптимизировать) состояния определяется как: Xmmse = (X'/V' + X"/V") / (1/V' + 1/V"). [ На данный момент также имеется соответствующее обновление для V, основанное на V' и V".]

Для векторных состояний V будет заменено ковариационной матрицей, а деления станут обратными матрицами. В этом случае может быть проще отслеживать инверсии C напрямую: Xmmse = (C' + C") \ (C' * X' + C" * X") [и соответствующее обновление до C], где "\" обозначает предварительное умножение на значение, обратное первому множителю, С'+С".

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

[Я извиняюсь за плохое форматирование здесь. Stack Overflow сделал вывод, что алгебраические выражения являются кодом, и потребовал отформатировать их как код, прежде чем он позволит мне ответить. Это не так, поэтому я не мог.]

person J. MacAuslan    schedule 30.08.2014