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

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

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

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

Но куда мне поместить якобиан группы G?

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

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


person Michele mpp Marostica    schedule 03.02.2014    source источник
comment
Мне нужно заменить G и H их якобианами, вычисленными в statePost, верно?   -  person Michele mpp Marostica    schedule 05.02.2014


Ответы (1)


Итак, я думаю, что понял, как использовать класс 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. сделать шаг коррекции КФ

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

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

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

person Michele mpp Marostica    schedule 06.02.2014
comment
Этот человек (только для пользователей с более чем 10 тысячами) спрашивает, должен ли ваш 8-й шаг быть kf.statePost = kf.statePre + kf.gain * kf.temp5? - person ; 16.07.2014
comment
@Мишель - я пытаюсь сделать то же самое. Не могли бы вы дать мне небольшой совет, пожалуйста (я не знаю, как начать чат здесь, кроме как продолжать добавлять комментарии! - person ManInMoon; 23.11.2015
comment
Я не думаю, что есть чат, вы можете объяснить свои сомнения? - person Michele mpp Marostica; 23.11.2015
comment
@Michele Я не уверен, что такое функции f + h. Также откуда берется temp5? Я отправил вам письмо с частью моего кода на ваш адрес gmail - person ManInMoon; 24.11.2015
comment
вы можете найти матрицу temp5, глядя на исходный код фильтра Калмана в библиотеке OpenCV, две другие функции зависят от системы, которую вы оцениваете. Поскольку ваш вопрос о f и h носит довольно общий характер (о фильтре Калмана), я предлагаю вам задать новый вопрос об этом. PS: Я не буду делать работу за вас бесплатно. - person Michele mpp Marostica; 24.11.2015