exponenta event banner

trackingKF

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

Описание

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

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

Этот объект можно использовать следующими способами:

  • Явно задайте модель движения. Задайте свойство модели движения, MotionModelКому Custom, а затем используйте StateTransitionModel для установки матрицы перехода состояния.

  • Установите MotionModel для предопределенной модели перехода к состоянию:

    Модель движения
    '1D Constant Velocity'
    '1D Constant Acceleration'
    '2D Constant Velocity'
    '2D Constant Acceleration'
    '3D Constant Velocity'
    '3D Constant Acceleration'

Создание

Описание

filter = trackingKF создает линейный объект фильтра Калмана для дискретного, 2-D, движущегося объекта с постоянной скоростью. Фильтр Калмана использует значения по умолчанию для StateTransitionModel, MeasurementModel, и ControlModel свойства. Функция также устанавливает MotionModel свойство для '2D Constant Velocity'.

filter = trackingKF(F,H) определяет модель перехода состояния, Fи модель измерения, H. С помощью этого синтаксиса функция также устанавливает MotionModel свойство для 'Custom'.

filter = trackingKF(F,H,G) также определяет модель управления, G. С помощью этого синтаксиса функция также устанавливает MotionModel свойство для 'Custom'.

filter = trackingKF('MotionModel',model) задает свойство модели движения, MotionModelКому model.

пример

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

Свойства

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

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

В следующих случаях можно установить состояние скаляра:

  • Когда MotionModel свойство имеет значение 'Custom'M определяется размером модели перехода состояния.

  • Когда MotionModel свойство имеет значение '2D Constant Velocity', '3D Constant Velocity', '2D Constant Acceleration', или '3D Constant Acceleration', сначала необходимо указать состояние как вектор М-элемента. Для всех последующих спецификаций вектора состояния можно использовать скаляр.

Пример: [200;0.2;-40;-0.01]

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

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

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

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

Модель движения фильтра Калмана, указанная как 'Custom' или одну из этих предопределенных моделей. В этом случае вектор состояния и матрица перехода состояния принимают форму, указанную в таблице.

Модель движенияФорма вектора состоянияМодель перехода к форме состояния
'1D Constant Velocity'

[x;vx]

[1 dt; 0 1]

'2D Constant Velocity'

[x;vx;y;vy]

Блок-диагональная матрица с [1 dt; 0 1] блок, повторяющийся для пространственных размеров x и y

'3D Constant Velocity'

[x;vx;y;vy;z;vz]

Блок-диагональная матрица с [1 dt; 0 1] блок, повторяющийся для пространственных размеров x, y и z.

'1D Constant Acceleration'

[x;vx;ax]

[1 dt 0.5*dt^2; 0 1 dt; 0 0 1]

'2D Constant Acceleration'

[x;vx;ax;y;vy;ay]

Блок-диагональная матрица с [1 dt 0.5*dt^2; 0 1 dt; 0 0 1] блоки, повторяющиеся для пространственных размеров x и y

'3D Constant Acceleration'

[x;vx,ax;y;vy;ay;z;vz;az]

Блок-диагональная матрица с [1 dt 0.5*dt^2; 0 1 dt; 0 0 1] блок, повторяющийся для пространственных размеров x, y и z

Когда ControlModel определяется свойство, каждый ненулевой элемент модели перехода состояния заменяется на dt.

Когда MotionModel является 'Custom', необходимо указать матрицу модели перехода состояния, матрицу модели измерения и, при необходимости, матрицу модели управления в качестве входных аргументов для фильтра Калмана.

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

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

Пример: [1 0; 1 2]

Зависимости

Чтобы включить это свойство, установите MotionModel кому 'Custom'.

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

Модель управления, заданная как матрица M-by-L. M - размерность вектора состояния, а L - количество элементов управления или сил. Модель управления добавляет влияние элементов управления на эволюцию состояния.

Пример: [.01 0.2]

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

Ковариация шума процесса, заданная как положительный скаляр или матрица M-by-M, где M - размерность состояния. Если это свойство задано как скаляр, фильтр использует значение в качестве множителя единичной матрицы M-на-М. Технологический шум выражает неопределенность в динамической модели и считается нулевым средним гауссовым белым шумом.

Совет

При указании MotionModel в качестве любой из предопределенных моделей движения, то соответствующий технологический шум автоматически генерируется во время построения и обновляется во время распространения. В этом случае нет необходимости указывать ProcessNoise собственность. На самом деле, фильтр игнорирует ввод технологического шума во время построения объекта. Если требуется указать шум процесса, отличный от значений по умолчанию, используйте trackingEKF объект.

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

Модель измерения из вектора состояния, заданная как действительная матрица N-на-М, где N - размер вектора измерения, а M - размер вектора состояния. Модель измерения представляет собой линейную матрицу, которая определяет прогнозируемые измерения из прогнозируемого состояния.

Пример: [1 0.5 0.01; 1.0 1 0]

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

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

Пример: 0.2

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

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

Примеры

свернуть все

Создание линейного фильтра Калмана, использующего 2D Constant Velocity модель движения. Предположим, что измерение состоит из местоположения объекта x-y.

Укажите начальную оценку состояния, чтобы иметь нулевую скорость.

x = 5.3;
y = 3.6;
initialState = [x;0;y;0];
KF = trackingKF('MotionModel','2D Constant Velocity','State',initialState);

Создайте измеренные положения из траектории постоянной скорости.

vx = 0.2;
vy = 0.1;
T  = 0.5;
pos = [0:vx*T:2;5:vy*T:6]';

Спрогнозировать и исправить состояние объекта.

for k = 1:size(pos,1)
    pstates(k,:) = predict(KF,T);
    cstates(k,:) = correct(KF,pos(k,:));
end

Постройте графики.

plot(pos(:,1),pos(:,2),'k.', pstates(:,1),pstates(:,3),'+', ...
    cstates(:,1),cstates(:,3),'o')
xlabel('x [m]')
ylabel('y [m]')
grid
xt  = [x-2 pos(1,1)+0.1 pos(end,1)+0.1];
yt = [y pos(1,2) pos(end,2)];
text(xt,yt,{'First measurement','First position','Last position'})
legend('Object position', 'Predicted position', 'Corrected position')

Figure contains an axes. The axes contains 6 objects of type line, text. These objects represent Object position, Predicted position, Corrected position.

Подробнее

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

Алгоритмы

Фильтр Калмана описывает движение объекта, оценивая его состояние. Состояние обычно состоит из положения и скорости объекта и, возможно, его ускорения. Состояние может охватывать один, два или три пространственных измерения. Чаще всего для моделирования движения с постоянной скоростью или с постоянным ускорением используется фильтр Калмана. Линейный фильтр Калмана предполагает, что процесс подчиняется следующему линейному стохастическому уравнению разности:

xk + 1 = Fkxk + Gkuk + vk

xk - состояние на этапе k. Fk - матрица модели перехода состояния. Gk - матрица управляющей модели. uk представляет известные обобщенные элементы управления, действующие на объект. В дополнение к заданным уравнениям движения на движение могут влиять случайные шумовые возмущения vk. Состояние, матрица перехода состояния и элементы управления вместе обеспечивают достаточное количество информации для определения будущего движения объекта в отсутствие шума.

В фильтре Кальмана измерения также являются линейными функциями состояния,

zk = Hkxk + wk

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

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

Краткое описание алгоритма линейного фильтра Калмана см. в разделе Линейные фильтры Калмана.

Ссылки

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

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

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

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

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