exponenta event banner

initapekf

Инициализация EKF с параметризацией угла постоянной скорости

Описание

filter = initapekf(detection) конфигурирует фильтр с 10 расширенными фильтрами Калмана (EKF). Функция конфигурирует технологический шум со стандартным отклонением единицы в ускорении.

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

filter = initapekf(detection,numFilters) указывает количество EKF в фильтре.

пример

filter = initapekf(detection,numFilters,angleLimits) определяет пределы углового положения цели.

Примеры

свернуть все

APEKF - это специальный тип фильтра, который может быть инициализирован с помощью измерений только в диапазоне. Когда 'Frame' имеет значение 'spherical', обнаружение имеет измерения [дальность диапазона высот по азимуту]. Задайте параметры измерения соответствующим образом, чтобы определить измерение только в диапазоне.

measParam = struct('Frame','Spherical','HasAzimuth',false,'HasElevation',false,'HasVelocity',false,'OriginPosition',[100;10;0]);

objectDetection класс определяет интерфейс для обнаружения только диапазона, измеряемого датчиком. MeasurementParameters поле objectDetection содержит информацию о том, что измеряет датчик.

detection = objectDetection(0,100,'MeasurementNoise',100,'MeasurementParameters',measParam)
detection = 
  objectDetection with properties:

                     Time: 0
              Measurement: 100
         MeasurementNoise: 100
              SensorIndex: 1
            ObjectClassID: 0
    MeasurementParameters: [1x1 struct]
         ObjectAttributes: {}

initapekf функция использует обнаружение только диапазона для инициализации APEKF.

apekf = initapekf(detection) %#ok
apekf = 
  trackingGSF with properties:

                 State: [6x1 double]
       StateCovariance: [6x6 double]

       TrackingFilters: {10x1 cell}
    ModelProbabilities: [10x1 double]

      MeasurementNoise: 100

Можно также инициализировать APEKF с помощью 10 фильтров и работать в угловых пределах [-30 30] градусов.

angleLimits = [-30 30];
numFilters = 10;
apekf = initapekf(detection, numFilters, angleLimits)
apekf = 
  trackingGSF with properties:

                 State: [6x1 double]
       StateCovariance: [6x6 double]

       TrackingFilters: {10x1 cell}
    ModelProbabilities: [10x1 double]

      MeasurementNoise: 100

Можно также указать initapekf функция как FilterInitializationFcn в trackerGNN объект.

funcHandle = @(detection)initapekf(detection,numFilters,angleLimits)
funcHandle = function_handle with value:
    @(detection)initapekf(detection,numFilters,angleLimits)

tracker = trackerGNN('FilterInitializationFcn',funcHandle);

Визуализируйте фильтр.

tp = theaterPlot;
componentPlot = trackPlotter(tp,'DisplayName','Individual sums','MarkerFaceColor','r');
sumPlot = trackPlotter(tp,'DisplayName','Mixed State','MarkerFaceColor','g');

indFilters = apekf.TrackingFilters;
pos = zeros(numFilters,3);
cov = zeros(3,3,numFilters);
for i = 1:numFilters
    pos(i,:) = indFilters{i}.State(1:2:end);
    cov(1:3,1:3,i) = indFilters{i}.StateCovariance(1:2:end,1:2:end);
end
componentPlot.plotTrack(pos,cov);

mixedPos = apekf.State(1:2:end)';
mixedPosCov = apekf.StateCovariance(1:2:end,1:2:end);
sumPlot.plotTrack(mixedPos,mixedPosCov);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Individual sums, Mixed State.

Создайте параметризованный углом EKF из обнаружения [az r].

measParam = struct('Frame','Spherical','HasAzimuth',true,'HasElevation',false,'HasVelocity',false,'OriginPosition',[100;10;0]);

objectDetection класс определяет интерфейс для обнаружения только диапазона, измеряемого датчиком. MeasurementParameters поле objectDetection содержит информацию о том, что измеряет датчик.

det = objectDetection(0,[30;100],'MeasurementParameters',measParam,'MeasurementNoise',10);

initapekf функция параметризует apekf фильтр по измерению отметки.

numFilters = 10;
apekf = initapekf(det,numFilters,[-30 30]);
indFilters = apekf.TrackingFilters;
pos = zeros(numFilters,3);
cov = zeros(3,3,numFilters);
for i = 1:numFilters
    pos(i,:) = indFilters{i}.State(1:2:end);
    cov(1:3,1:3,i) = indFilters{i}.StateCovariance(1:2:end,1:2:end);
end

Визуализируйте фильтр.

tp = theaterPlot;
componentPlot = trackPlotter(tp,'DisplayName','Individual sums','MarkerFaceColor','r');
sumPlot = trackPlotter(tp,'DisplayName','Mixed State','MarkerFaceColor','g');
componentPlot.plotTrack(pos,cov);
mixedPos = apekf.State(1:2:end)';
mixedPosCov = apekf.StateCovariance(1:2:end,1:2:end);
sumPlot.plotTrack(mixedPos,mixedPosCov);
view(3);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Individual sums, Mixed State.

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

свернуть все

Отчет об обнаружении, указанный как objectDetection объект.

Пример: detection = objectDetection(0,[1;4.5;3],'MeasurementNoise', [1.0 0 0; 0 2.0 0; 0 0 1.5])

Количество ЭКФ, инициализированных в оцененном угловом положении цели, указанном как положительное целое число. Если не указано, количество EKF по умолчанию равно 10.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Угловые пределы цели, определяемые как двухэлементный вектор. Два элемента в векторе представляют нижний и верхний пределы целевого углового положения.

Когда функция обнаруживает:

  • Измерения диапазона - угловые пределы по умолчанию [-180 180].

  • Измерения азимута и дальности - угловые пределы по умолчанию [-90 90].

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Постоянный угол скорости - параметризованный расширенный фильтр Калмана (EKF), возвращаемый как trackingGSF объект.

Алгоритмы

Функция может поддерживать следующие типы измерений при обнаружении.

  • Измерения дальности - параметризация выполняется по азимуту цели, а угловые пределы по умолчанию равны [-180 180].

  • Измерения азимута и дальности (Azimuth and range measurements) - параметризация выполняется на отметке цели, а угловые пределы по умолчанию равны [-90 90].

Ссылки

[1] Ристич, Бранко, Санджеев Арулампалам и Джеймс Маккарти. «Целевой анализ движения с использованием измерений только по дальности: алгоритмы, производительность и применение к данным ISAR». Обработка сигналов 82, № 2 (2002): 273-296.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

Функции

Объекты

Представлен в R2018b