OpenCV, как использовать класс KalmanFilter в качестве ExtendedKF

Как написано в документы, класс cv :: KalmanFilter можно использовать как расширенный фильтр Калмана (EKF). Может кто-нибудь объяснить мне, как?

Все матрицы задействованы объявлены как публичные так что я могу редактировать их все.
исходный код для нормального (линейного) фильтра Калмана.

Я думаю, что я должен отредактировать transitionMatrix с моей нелинейной системой, а именно G,
Эта матрица является моей нелинейной системой с входными переменными statePost и control; и ControlMatrix должно быть все 0. Верно?

Но где я должен положить якобиан G?

У меня те же сомнения по поводу процесса обновления, у меня есть нелинейная система H для измерения Matrix.

Может быть, я немного смущен, может кто-нибудь помочь мне, пожалуйста?

10

Решение

Итак, я думаю, что я понял, как использовать cv::KalmanFilter Класс как EKF.
Вот как я это сделал:

  1. сохранить во временной переменной kf.statePost: temp = kf.statePost

  2. положить в kf.transitionMatrix якобиан переходной функции

  3. сделать шаг предсказания KF

  4. изменить kf.statePre с правильным значением, используя функцию перехода: kf.statePre = f(temp, control)

  5. положить в kf.measurementMatrix Якобиан функции измерения (или коррекции)

  6. сделать шаг коррекции KF

  7. изменить kf.temp5 матрица с правильным значением: kf.temp5 = measurement - h(statePre) где h() является функцией измерения (или коррекции)

  8. изменить kf.statePost с правильным значением: kf.statePost = kf.statePre + kf.gain * kf.temp5

И, наконец, у вас есть расчетное состояние системы в kf.statePost!

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]