exponenta event banner

trackingEKF

Расширенный фильтр Калмана для отслеживания объектов

Описание

A trackingEKF объект - дискретно-временной расширенный фильтр Калмана, используемый для отслеживания положений и скоростей целей и объектов.

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

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

  • Добавьте шум как к процессу, так и к измерениям. В этом случае размеры технологического шума и измерительного шума должны соответствовать размерам вектора состояния и измерительного вектора соответственно.

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

Создание

Описание

filter = trackingEKF создает расширенный объект фильтра Калмана для дискретно-временной системы, используя значения по умолчанию для StateTransitionFcn, MeasurementFcn, и State свойства. Предполагается, что шумы процесса и измерения являются аддитивными.

filter = trackingEKF(transitionfcn,measurementfcn,state) определяет функцию перехода состояния, transitionfcn, функция измерения, measurementfcnи начальное состояние системы, state.

пример

filter = trackingEKF(___,Name,Value) настраивает свойства расширенного объекта фильтра Калмана с помощью одного или нескольких Name,Value пары аргументов и любого из предыдущих синтаксисов. Все неопределенные свойства имеют значения по умолчанию.

Свойства

развернуть все

Состояние фильтра Калмана, указанное как вектор M-элемента с действительным значением, где M - размер состояния фильтра.

Пример: [200; 0.2]

Типы данных: double

Ковариация ошибок состояния, заданная как положительно-определенная вещественно-значная матрица M-by-M, где M - размер состояния фильтра. Ковариационная матрица представляет неопределенность в состоянии фильтра.

Пример: [20 0.1; 0.1 1]

Функция перехода состояния, заданная как дескриптор функции. Эта функция вычисляет вектор состояния на шаге времени k из вектора состояния на шаге времени k – 1. Функция может принимать дополнительные входные параметры, такие как управляющие входные данные или размер временного шага. Функция также может включать значения шума.

Допустимые синтаксисы для функции перехода состояния зависят от того, имеет ли фильтр аддитивный шум процесса. В таблице показаны допустимые синтаксисы на основе значения HasAdditiveProcessNoise собственность.

Допустимые синтаксисы (HasAdditiveProcessNoise = true)Допустимые синтаксисы (HasAdditiveProcessNoise = false)
x(k) = statetransitionfcn(x(k-1))
x(k) = statetransitionfcn(x(k-1),parameters)
  • x(k) - состояние в момент времени k.

  • parameters обозначает все дополнительные аргументы, требуемые функцией перехода состояния.

x(k) = statetransitionfcn(x(k-1),w(k-1))
x(k) = statetransitionfcn(x(k-1),w(k-1),dt)
x(k) = statetransitionfcn(__,parameters)
  • x(k) - состояние в момент времени k.

  • w(k) является значением для технологического шума в момент времени k.

  • dt - временной шаг trackingEKF фильтр, filter, указанный в последнем вызове predict функция. dt применяется при использовании фильтра в трекере и вызове predict функция с фильтром для прогнозирования состояния трекера на следующем шаге времени. Для случая неаддитивного шума процесса трекер предполагает, что вы явно указываете временной шаг, используя следующий синтаксис: predict(filter,dt).

  • parameters обозначает все дополнительные аргументы, требуемые функцией перехода состояния.

Пример: @constacc

Типы данных: function_handle

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

Допустимые синтаксисы для якобиана функции перехода состояния зависят от того, имеет ли фильтр аддитивный технологический шум. В таблице показаны допустимые синтаксисы на основе значения HasAdditiveProcessNoise собственность.

Допустимые синтаксисы (HasAdditiveProcessNoise = true)Допустимые синтаксисы (HasAdditiveProcessNoise = false)
Jx(k) = statejacobianfcn(x(k))
Jx(k) = statejacobianfcn(x(k),parameters)
  • x(k) - состояние в момент времени k.

  • Jx(k) обозначает якобиан предсказанного состояния по отношению к предыдущему состоянию. Этот якобиан является матрицей M-by-M в момент времени k. Функция Якобиана может принимать дополнительные входные параметры, такие как управляющие входные данные или размер временного шага.

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

[Jx(k),Jw(k)] = statejacobianfcn(x(k),w(k))
[Jx(k),Jw(k)] = statejacobianfcn(x(k),w(k),dt)
[Jx(k),Jw(k)] = statejacobianfcn(__,parameters)
  • x(k) - состояние в момент времени k

  • w(k) является выборочным Q-элементным вектором шума процесса в момент времени k. Q - размер ковариации шума процесса. Вектор шума процесса в не дополняющем случае не должен иметь те же размеры, что и вектор состояния.

  • Jx(k) обозначает якобиан предсказанного состояния по отношению к предыдущему состоянию. Этот якобиан является матрицей M-by-M в момент k. Функция Якобиана может принимать дополнительные входные параметры, такие как управляющие входные данные или размер временного шага.

  • Jw(k) обозначает M-на-Q якобиана прогнозируемого состояния относительно элементов технологического шума.

  • dt - временной шаг trackingEKF фильтр, filter, указанный в последнем вызове predict функция. dt применяется при использовании фильтра в трекере и вызове predict функция с фильтром для прогнозирования состояния трекера на следующем шаге времени. Для случая неаддитивного шума процесса трекер предполагает, что вы явно указываете временной шаг, используя следующий синтаксис: predict(filter,dt).

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

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

Пример: @constaccjac

Типы данных: function_handle

Ковариация шума процесса, заданная как скаляр или матрица.

  • Когда HasAdditiveProcessNoise является true, указать ковариацию шума процесса как положительный вещественный скаляр или положительно-определенную действительную матрицу M-by-M. M - размерность вектора состояния. При задании в качестве скаляра матрица кратна единичной матрице M-by-M.

  • Когда HasAdditiveProcessNoise является false, укажите ковариацию шума процесса как матрицу Q-by-Q. Q - размер вектора шума процесса.

    Необходимо указать ProcessNoise перед любым вызовом predict функция. В более поздних вызовах predict, можно дополнительно указать шум процесса как скаляр. В этом случае матрица шума процесса является кратной единичной матрице Q-на-Q.

Пример: [1.0 0.05; 0.05 2]

Опция моделирования технологического шума в качестве добавки, указанная как true или false. Когда это свойство true, к вектору состояния добавляется шум процесса. В противном случае шум включается в функцию перехода состояния.

Функция модели измерения, заданная как дескриптор функции. Эта функция может быть нелинейной функцией, моделирующей измерения из предсказанного состояния. На входе в функцию находится вектор состояния М-элемента. Выходной сигнал представляет собой вектор измерения N-элементов. Функция может принимать дополнительные входные аргументы, такие как положение датчика и ориентация.

  • Если HasAdditiveMeasurementNoise является true, укажите функцию, используя один из следующих синтаксисов:

    z(k) = measurementfcn(x(k))
    
    z(k) = measurementfcn(x(k),parameters)
    x(k) - состояние в момент времени k и z(k) - прогнозируемое измерение в момент времени k. parameters аргумент обозначает все дополнительные аргументы, требуемые функцией измерения.

  • Если HasAdditiveMeasurementNoise является false, укажите функцию, используя один из следующих синтаксисов:

    z(k) = measurementfcn(x(k),v(k))
    
    z(k) = measurementfcn(x(k),v(k),parameters)
    x(k) - состояние в момент времени k и v(k) - шум измерения в момент времени k. parameters аргумент обозначает все дополнительные аргументы, требуемые функцией измерения.

Пример: @cameas

Типы данных: function_handle

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

  • Если HasAdditiveMeasurmentNoise является true, укажите якобинскую функцию, используя один из следующих синтаксисов:

    Jmx(k) = measjacobianfcn(x(k))
    
    Jmx(k) = measjacobianfcn(x(k),parameters)
    x(k) - состояние в момент времени k. Jx(k) обозначает N-на-М якобиан функции измерения относительно состояния. parameters аргумент обозначает все аргументы, требуемые функцией измерения.

  • Если HasAdditiveMeasurmentNoise является false, укажите якобинскую функцию, используя один из следующих синтаксисов:

    [Jmx(k),Jmv(k)] = measjacobianfcn(x(k),v(k))
    
    [Jmx(k),Jmv(k)] = measjacobianfcn(x(k),v(k),parameters)
    x(k) - состояние в момент времени k и v(k) - R-мерный вектор шума выборки. Jmx(k) обозначает N-на-М якобиан функции измерения относительно состояния. Jmv(k) обозначает якобиан функции измерения N-на-R относительно шума измерения. parameters аргумент обозначает все аргументы, требуемые функцией измерения.

Если не указано, якобинцы измерения вычисляются с использованием численных разностей при каждом вызове correct функция. Это вычисление может увеличить время обработки и числовую неточность.

Пример: @cameasjac

Типы данных: function_handle

Ковариация шума измерения, заданная как положительная скалярная или положительно-определенная вещественно-значимая матрица.

  • Когда HasAdditiveMeasurementNoise является true, укажите ковариацию шума измерения как скаляр или матрицу N-на-N. N - размер вектора измерения. При задании в качестве скаляра матрица кратна единичной матрице N-на-N.

  • Когда HasAdditiveMeasurementNoise является false, укажите ковариацию шума измерения в виде матрицы R-by-R. R - размер вектора шума измерения.

    Необходимо указать MeasurementNoise перед любым вызовом correct функция. После первого звонка на correct, можно дополнительно указать шум измерения как скаляр. В этом случае матрица измеренного шума кратна матрице R-на-R-тождественности.

Пример: 0.2

Опция включения шума измерения присадки, указанная как true или false. Когда это свойство true, к измерению добавляется шум. В противном случае шум включается в функцию измерения.

Включить сглаживание состояния, указанное как false или true. Установка для этого свойства значения true требуется лицензия Sensor Fusion and Tracking Toolbox™. Если указано как true, вы можете:

  • Используйте smooth Функция (Sensor Fusion and Tracking Toolbox), представленная в Sensor Fusion and Tracking Toolbox, позволяет сглаживать оценки состояния на предыдущих шагах. Внутри фильтра сохраняются результаты предыдущих шагов для обеспечения возможности обратного сглаживания.

  • Укажите максимальное количество шагов сглаживания с помощью MaxNumSmoothingSteps свойства фильтра отслеживания.

Максимальное количество шагов обратного сглаживания, указанное как положительное целое число.

Зависимости

Чтобы включить это свойство, установите значение EnableSmoothing свойство для true.

Функции объекта

predictКовариация состояния и ошибки оценки состояния фильтра слежения
correctКорректная ковариация ошибок оценки состояния и состояния с помощью фильтра слежения
correctjpdaПравильная ковариация ошибок оценки состояния и состояния с использованием фильтра отслеживания и JPDA
distanceРасстояния между текущими и прогнозируемыми измерениями фильтра слежения
likelihoodВероятность измерения от фильтра слежения
cloneСоздать повторяющийся фильтр отслеживания
residualИзмерение остаточного и остаточного шума от фильтра слежения
initializeИнициализация состояния и ковариации фильтра слежения

Примеры

свернуть все

Создание двумерного trackingEKF и использовать пары «имя-значение» для определения StateTransitionJacobianFcn и MeasurementJacobianFcn свойства. Используйте предварительно определенные модели движения и измерения с постоянной скоростью и их якобианы.

EKF = trackingEKF(@constvel,@cvmeas,[0;0;0;0], ...
    'StateTransitionJacobianFcn',@constveljac, ...
    'MeasurementJacobianFcn',@cvmeasjac);

Запустите фильтр. Используйте predict и correct для распространения состояния. Вы можете позвонить predict и correct в любом порядке и столько раз, сколько вы хотите. Задайте измерение в декартовых координатах.

measurement = [1;1;0];
[xpred, Ppred] = predict(EKF);
[xcorr, Pcorr] = correct(EKF,measurement);
[xpred, Ppred] = predict(EKF);
[xpred, Ppred] = predict(EKF)
xpred = 4×1

    1.2500
    0.2500
    1.2500
    0.2500

Ppred = 4×4

   11.7500    4.7500         0         0
    4.7500    3.7500         0         0
         0         0   11.7500    4.7500
         0         0    4.7500    3.7500

Подробнее

развернуть все

Алгоритмы

Расширенный фильтр Калмана оценивает состояние процесса, управляемого этим нелинейным стохастическим уравнением:

xk + 1 = f (xk, uk, wk, t)

xk - состояние на этапе k. f () - функция перехода состояния. Случайные шумовые возмущения, wk, могут влиять на движение объекта. Фильтр также поддерживает упрощенную форму .

xk + 1 = f (xk, uk, t) + wk

Для использования упрощенной формы установите HasAdditiveProcessNoise кому true.

В расширенном фильтре Кальмана измерения также являются общими функциями состояния:

zk = h (xk, vk, t)

h (xk, vk, t) - функция измерения, которая определяет измерения как функции состояния. Типичными измерениями являются положение и скорость или некоторая функция положения и скорости. Измерения могут также включать шум, представленный vk. Опять же, фильтр предлагает более простую композицию.

zk = h (xk, t) + vk

Для использования упрощенной формы установите HasAdditiveMeasurmentNoise кому true.

Эти уравнения представляют фактическое движение и фактические измерения объекта. Однако вклад шума на каждом этапе неизвестен и не может быть смоделирован детерминированно. Известны только статистические свойства шума.

Ссылки

[1] Браун, Р.Г. и P.Y.C. Ван. Введение в анализ случайных сигналов и прикладную фильтрацию Калмана. 3-е издание. Нью-Йорк: John Wiley & Sons, 1997.

[2] Калман, Р. Э. «Новый подход к проблемам линейной фильтрации и прогнозирования». Транзакции ASME-журнала базового инжиниринга. том 82, серия D, март 1960, стр. 35-45.

[3] Блэкман, Сэмюэл и Р. Пополи. Проектирование и анализ современных систем слежения. Артех House.1999.

[4] Блэкман, Сэмюэл. Слежение за несколькими целями с помощью радиолокационных приложений. Артех Хаус. 1986.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2021a