Фильтрация Калмана для движения в длинных координатах широты

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

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

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

Кажется, что обратное преобразование из xy в wgs84 не так уж тривиально и потенциально требует больших вычислительных ресурсов. Кто-нибудь может пролить свет на это?


person computador7    schedule 21.09.2014    source источник
comment
Откуда берутся эти позиции? Если от gps ресивера то скорее всего они уже довольно сильно фильтруются так что понятно что ваш фильтр добавит.   -  person dmuir    schedule 24.09.2014
comment
Позиции каким-то образом вычисляются на основе алгоритма отслеживания позиции, который в принципе работает хорошо, но некоторые координаты результата довольно случайны, поэтому я хотел бы как-то сгладить их на основе направления движения, в этом случае кажется, что применение фильтра Калмана вполне разумный подход, не так ли?   -  person computador7    schedule 24.09.2014


Ответы (1)


Похоже, ваша переменная состояния будет вектором [широта, долгота], а ваша переменная измерения будет [широта, длина , подшипник]. Вам нужно будет определить соответствующие функции f и h на основе этих векторов для моделей процессов и измерений соответственно. Поскольку это нелинейная задача, вам, вероятно, потребуется использовать нелинейный фильтр, такой как EKF, UKF или CKF (кубатурный фильтр Калмана).

При использовании фильтра типа Калмана для работы с модульными значениями, такими как углы, широты или долготы, возникает большая проблема, когда ваше состояние или ваши измерения находятся вблизи прерывистой модульной границы. Например, если ваш азимут представляет собой угол от 0 до 360 градусов, фильтр будет иметь проблемы, если вы измеряете 1 градус или 359 градусов. Кроме того, у вас могут возникнуть проблемы, если ваша долгота составляет около плюс-минус 180 градусов долготы или ваша широта находится на одном из полюсов (что может быть отдаленными возможностями, которые вы могли бы игнорировать).

Один из примеров того, как иметь дело с углами в переменных состояния или измерения, представлен в книге Дэвида Фредерика Крауса, Cubature/Unscented/Sigma Point Kalman Filtering with Angular Measurement Models, 18th Int'l Conf. on Information Fusion (Вашингтон, округ Колумбия, 6–9 июля 2015 г.), https://ieeexplore.ieee.org/document/7266741. Основываясь на подходе Кроуза, чтобы использовать пеленг в качестве измеряемой переменной, вам нужно добавить функцию обертывания в пару мест в стандартных уравнениях неароматизированного или кубатурного фильтра. Если вы хотите иметь дело с разрывами в широте и долготе (что может и не быть), вам нужно будет преобразовать координаты в евклидово пространство и из него при вычислении ковариационных матриц.

person Chris Ogden    schedule 26.10.2020