exponenta event banner

initrpekf

Диапазон постоянной скорости - параметризованная инициализация EKF

Описание

filter = initrpekf(detection) конфигурирует фильтр с 6 расширенными фильтрами Калмана (EKF), и предполагается, что целевой диапазон находится в пределах 1e3 и 1e5 сценарных единиц. Функция конфигурирует технологический шум со стандартным отклонением единицы в ускорении.

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

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

пример

filter = initrpekf(detection,numFilters,rangeLimits) определяет пределы диапазона целевого объекта.

Примеры

свернуть все

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

measParam = struct('Frame','spherical','HasRange',false,'OriginPosition',[100;10;0]);

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

detection = objectDetection(0,[30;30],'MeasurementParameters',measParam,'MeasurementNoise',2*eye(2));

initrpekf функция использует обнаружение только под углом для инициализации RPEKF.

rpekf = initrpekf(detection) %#ok
rpekf = 
  trackingGSF with properties:

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

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

      MeasurementNoise: [2x2 double]

Можно также инициализировать RPEKF с помощью 10 фильтров и работать в пределах диапазона [1000, 10 000] единиц сценария.

rangeLimits = [1000 10000];
numFilters = 10;
rpekf = initrpekf(detection, numFilters, rangeLimits)
rpekf = 
  trackingGSF with properties:

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

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

      MeasurementNoise: [2x2 double]

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

funcHandle = @(detection)initrpekf(detection,numFilters,rangeLimits)
funcHandle = function_handle with value:
    @(detection)initrpekf(detection,numFilters,rangeLimits)

tracker = trackerGNN('FilterInitializationFcn',funcHandle)
tracker = 
  trackerGNN with properties:

                  TrackerIndex: 0
       FilterInitializationFcn: [function_handle]
                    Assignment: 'MatchPairs'
           AssignmentThreshold: [30 Inf]
                  MaxNumTracks: 100
                 MaxNumSensors: 20

                  OOSMHandling: 'Terminate'

                    TrackLogic: 'History'
         ConfirmationThreshold: [2 3]
             DeletionThreshold: [5 5]

            HasCostMatrixInput: false
    HasDetectableTrackIDsInput: false
               StateParameters: [1x1 struct]

                     NumTracks: 0
            NumConfirmedTracks: 0

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

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

indFilters = rpekf.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 = rpekf.State(1:2:end)';
mixedPosCov = rpekf.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.

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

свернуть все

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

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

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

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

Пределы дальности цели, заданные как двухэлементный вектор. Два элемента в векторе представляют нижний и верхний пределы целевого диапазона. Если не указано, предельные значения диапазона по умолчанию составляют [1e3 1e5] единиц сценария.

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

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

свернуть все

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

Ссылки

[1] Персик, Н. «Отслеживание только подшипников с использованием набора расширенных фильтров Калмана с диапазоном параметров». IEE Proceedings-Control Theory and Applications 142, No. 1 (1995): 73-80.

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

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

.

См. также

Функции

Объекты

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