trackingUKF

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

Описание

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

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

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

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

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

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

Создание

Описание

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

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

пример

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

Свойства

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

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

Если вы хотите фильтр с переменными с плавающей точкой с одинарной точностью, задаете State как векторная переменная с одинарной точностью. Например,

filter = trackingUKF('State',single([1;2;3;4]))

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

Типы данных: single | 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 функция. 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, шум процесса добавляется к вектору состояния. В противном случае шум включен в функцию изменения состояния.

Модель Measurement функционирует в виде указателя на функцию. Эта функция может быть нелинейной функцией что измерения моделей от предсказанного состояния. Входом к функции является M - вектор состояния элемента. Выходом является 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

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

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

Распространение точки сигмы вокруг состояния в виде положительной скалярной величины, больше, чем 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;] и что измерение положения находится в Декартовых координатах, [x; y; z. Установите свойство распространения точки сигмы на 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] Кальман, R. E. “Новый Подход к Линейным проблемам Фильтрации и Предсказания”. Транзакции Журнала ASME Базового проектирования. Издание 82, Серия D, март 1960, стр 35–45.

[3] Бледный, Эрик А. и Р. ван дер Мерв. “Сигма-точечный фильтр Калмана для Нелинейной Оценки”. Адаптивные системы для Обработки сигналов, Коммуникаций и Управления. КОГДА-SPCC, IEEE, 2000, pp.153–158.

[4] Бледный, Мерл. “Сигма-точечный фильтр Калмана”. В Кальмане, фильтрующем и нейронных сетях. Отредактированный Саймоном Хейкином. John Wiley & Sons, Inc., 2001.

[5] Саркка С. “Рекурсивный байесов вывод на стохастических дифференциальных уравнениях”. Докторская диссертация. Хельсинкский политехнический университет, Финляндия. 2006.

[6] Блэкмен, Сэмюэль. Несколько - целевое отслеживание с радарными приложениями. Дом Artech, 1986.

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

Введенный в R2021a