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 является размером состояния фильтра.

Пример: [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 функция. 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. Этот параметр помогает задать генерацию точек сигмы.

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

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.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте