trackingUKF

Сигма-точечный фильтр Калмана для отслеживания объектов

Описание

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

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

Используйте сигма-точечный фильтр Калмана, когда применяется одно из обоих следующих условий:

  • Текущее состояние является нелинейной функцией предыдущего состояния.

  • Измерения являются нелинейными функциями состояния.

Сигма-точечный фильтр Калмана оценивает неопределенность о состоянии и его распространении через нелинейное состояние и уравнения измерения с помощью фиксированного числа точек сигмы. Точки Sigma выбираются при помощи неароматического преобразования, параметризованного Alpha, Beta, и Kappa свойства.

Создание

Описание

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

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

пример

filter = trackingUKF(___,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 - временной шаг trackingUKF фильтр, filter, указанный в последнем вызове predict функция. The dt аргумент применяется, когда вы используете фильтр в трекере и вызываете predict функция с фильтром для предсказания состояния трекера на следующем временном шаге. Для случая неаддитивного шума процесса трекер принимает, что вы явным образом задаете временной шаг при помощи этого синтаксиса: predict(filter,dt).

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

Пример: @constacc

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

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

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

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

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

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

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

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

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

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

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

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

Пример: @cameas

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

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

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

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

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

Пример: 0.2

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

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

Распределение сигма- точки, заданное как неотрицательный скаляр. Этот параметр включает в себя знание распределения шума состояний для генерации сигма- точки. Для Гауссовых распределений, установка Beta до 2 оптимально.

Вторичный коэффициент масштабирования для генерации сигма- точки, заданный как скаляр от 0 до 3. Этот параметр помогают задать генерацию точки.

Включите сглаживание состояния, заданное как 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Инициализируйте состояние и ковариацию отслеживающего фильтра

Примеры

свернуть все

Создайте trackingUKF объект с использованием предопределенной модели движения с постоянной скоростью, constvelи связанная с ней модель измерения, cvmeas. Эти модели предполагают, что вектор состояний имеет вид [x; vx; y; vy] и что измерение положения находится в Декартовых координатах [x; y; z]. Установите свойство sigma point spread на 1e-2.

filter = trackingUKF(@constvel,@cvmeas,[0;0;0;0],'Alpha',1e-2);

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

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

    1.2500
    0.2500
    1.2500
    0.2500

Ppred = 4×4

   11.7500    4.7500   -0.0000    0.0000
    4.7500    3.7500    0.0000   -0.0000
   -0.0000    0.0000   11.7500    4.7500
    0.0000   -0.0000    4.7500    3.7500

Подробнее о

расширить все

Алгоритмы

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

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

где xk - состояние на шаге k. f() является функцией перехода состояния, uk являются элементами управления процесса. Движение может быть затронуто случайными шумовыми возмущениями, 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] Коричневый, R.G. и P.Y.C. Ван. Введение в анализ случайных сигналов и прикладную фильтрацию Калмана. 3-е издание. Нью-Йорк: John Wiley & Sons, 1997.

[2] Калман, Р. Е. «Новый подход к линейным задачам фильтрации и предсказания». Транзакции ASME-Journal of Basic Engineering. Том 82, серия D, март 1960, стр. 35-45.

[3] Ван, Эрик А. и Р. ван дер Мерве. Неароматизированный сигма-точечный фильтр Калмана для нелинейной оценки. Адаптивные системы для обработки сигналов, связи и управления. AS-SPCC, IEEE, 2000, стр. 153-158.

[4] Ван, Мерл. «Нескромный сигма-точечный фильтр Калмана». В фильтрации Калмана и нейронных сетях. Под редакцией Симона Хайкина. John Wiley & Sons, Inc., 2001.

[5] Sarka S. «Рекурсивный байесовский вывод по стохастическим дифференциальным уравнениям». Докторская диссертация. Хельсинкский технологический университет, Финляндия. 2006.

[6] Блэкман, Сэмюэль. Отслеживание нескольких целей с помощью радаров. Дом Артеха, 1986.

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

.
Введенный в R2021a