exponenta event banner

гладкий

Оценки плавного состояния назад trackingIMM фильтр

Описание

пример

[smoothX,smoothP,modelProbability] = smooth(imm) выполняет обратную рекурсию для получения сглаженных состояний, ковариаций и вероятностей модели на предыдущих шагах для trackingIMM фильтр, imm. Функция определяет количество обратных шагов на основе количества выполненных прямых шагов F и максимального количества обратных шагов MB, заданного MaxNumSmoothingSteps имущества filter. Если F < MB, число обратных шагов равно F-1. В противном случае число обратных шагов равно МБ.

Количество шагов переадресации равно количеству вызовов predict объектная функция фильтра. Обратные шаги не включают текущий временной шаг фильтра.

[smoothX,smoothP,modelProbability] = smooth(imm,numBackSteps) определяет количество шагов обратного сглаживания numBackSteps. Значение numBackSteps должно быть меньше или равно меньшему из F-1 и MB, где F - количество выполненных прямых шагов, а MB - максимальное количество обратных шагов, заданное MaxNumSmoothingSteps свойства фильтра.

Примеры

свернуть все

Создать истину с помощью присоединенного helperGenerateTruth функция. Истинная траектория состоит из сегментов постоянной скорости, постоянного ускорения и постоянной траектории поворота.

n = 1000;
[trueState, time, fig1] = helperGenerateTruth(n);
dt = diff(time(1:2));
numSteps = numel(time);

Настройте начальные условия для моделирования.

rng(2021); % for repeatable results
positionSelector = [1 0 0 0 0 0;
                    0 0 1 0 0 0;
                    0 0 0 0 1 0]; % Select position from 6-dimenstional state [x;vx;y;vy;z;vz]            
truePos = positionSelector*trueState;
sigma = 10; % Measurement noise standard deviation
measNoise = sigma* randn(size(truePos));
measPos = truePos + measNoise;
initialState = positionSelector'*measPos(:,1);
initialCovariance = diag([1 1e4 1 1e4 1 1e4]); % Velocity is not measured

Создайте фильтр IMM на основе трех фильтров EKF и инициализируйте фильтр IMM.

detection = objectDetection(0,[0; 0; 0],'MeasurementNoise',sigma^2 * eye(3));
f1 = initcvekf(detection); % constant velocity EKF
f2 = initcaekf(detection); % constant acceleration EKF
f2.ProcessNoise = 3*eye(3);
f3 = initctekf(detection); % Constant turn EKF
f3.ProcessNoise(3,3) = 100;
imm = trackingIMM({f1; f2; f3},'TransitionProbabilities',0.99, ...
    'ModelConversionFcn',@switchimm, ...
    'EnableSmoothing',true, ...
    'MaxNumSmoothingSteps',size(measPos,2)-1);
initialize(imm, initialState, initialCovariance);

Предварительно распределить переменные для выходов фильтра.

estState = zeros(6,numSteps);
modelProbs = zeros(numel(imm.TrackingFilters),numSteps);
modelProbs(:,1) = imm.ModelProbabilities;

Запустите фильтр.

for i = 2:size(measPos,2)
    predict(imm,dt);
    estState(:,i) = correct(imm,measPos(:,i));
    modelProbs(:,i) = imm.ModelProbabilities;
end

Сглаживайте фильтр.

[smoothState,~,smoothProbs] = smooth(imm);

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

fig1
fig1 = 
  Figure (1) with properties:

      Number: 1
        Name: ''
       Color: [1 1 1]
    Position: [360 502 560 420]
       Units: 'pixels'

  Show all properties

hold on;
plot3(estState(1,:),estState(3,:),estState(5,:),'k:','DisplayName','Foward estimates')
plot3(smoothState(1,:),smoothState(3,:),smoothState(5,:),'g:','DisplayName','Smooth estimates')
axis image;

Figure contains an axes. The axes contains 5 objects of type line. These objects represent Truth: Constant Velocity, Truth: Constant Turn, Truth: Constant Acceleration, Foward estimates, Smooth estimates.

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

figure;
errorTruth = abs(estState - trueState);
errorSmooth = abs(smoothState - trueState(:,1:end-1));

subplot(3,1,1)
plot(time,errorTruth(1,:),'k')
hold on
plot(time(1:end-1),errorSmooth(1,:),'g')
ylabel('x-error (m)')
legend('Forward estimate error','Smooth error')
title('Absolute Error of Forward and Smooth Estimates')

subplot(3,1,2)
plot(time,errorTruth(2,:),'k')
hold on;
plot(time(1:end-1),errorSmooth(2,:),'g')
ylim([0 30])
ylabel('y-error (m)')

subplot(3,1,3)
plot(time,errorTruth(3,:),'k')
hold on
plot(time(1:end-1),errorSmooth(3,:),'g')
xlabel('time (sec)')
ylabel('z-error (m)')

Figure contains 3 axes. Axes 1 with title Absolute Error of Forward and Smooth Estimates contains 2 objects of type line. These objects represent Forward estimate error, Smooth error. Axes 2 contains 2 objects of type line. Axes 3 contains 2 objects of type line.

Отображение вероятностей модели на основе прямой фильтрации и обратного сглаживания.

figure
plot(time,modelProbs(1,:))
hold on
plot(time,modelProbs(2,:))
plot(time,modelProbs(3,:))
xlabel('Time (sec)')
title('Model Probabilities in Forward Filtering')
legend('Constant velocity','Constant turn','Constant acceleration')

Figure contains an axes. The axes with title Model Probabilities in Forward Filtering contains 3 objects of type line. These objects represent Constant velocity, Constant turn, Constant acceleration.

figure
plot(time(1:end-1),smoothProbs(1,:))
hold on
plot(time(1:end-1),smoothProbs(2,:))
plot(time(1:end-1),smoothProbs(3,:))
xlabel('Time (sec)');
title('Model Probabilities in Backward Smoothing')
legend('Constant velocity','Constant turn','Constant acceleration')

Figure contains an axes. The axes with title Model Probabilities in Backward Smoothing contains 3 objects of type line. These objects represent Constant velocity, Constant turn, Constant acceleration.

Входные аргументы

свернуть все

Фильтр для отслеживания объектов, указанный как trackingIMM объект.

Число шагов назад, указанное как положительное целое число. Значение должно быть меньше или равно меньшему из F-1 и MB, где F - количество выполненных шагов вперед, а MB - максимальное количество шагов назад, заданное MaxNumSmoothingSteps свойство фильтра, imm.

Выходные аргументы

свернуть все

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

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

Сглаженные ковариации, возвращаемые как массив N-by-N-by-K. N - измерение состояния, а K - число шагов назад. Каждая страница (матрица N-на-N) массива является сглаженной ковариационной матрицей для соответствующего сглаженного состояния в smoothX выход.

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

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

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

Ссылки

[1] Надараджа, Н., Р. Тармараса, Майк Макдональд и Т. Кирубараджан. «Фильтрация вперед и сглаживание назад IMM для отслеживания маневрирующих целей». Сделки IEEE по аэрокосмическим и электронным системам 48, № 3 (июль 2012 года): 2673-78. https://doi.org/10.1109/TAES.2012.6237617.

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

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