initcaekf

Создайте расширенный фильтр Калмана с постоянным ускорением из отчета о обнаружении

Описание

пример

filter = initcaekf(detection) создает и инициализирует расширенный filter Калмана с постоянным ускорением из информации, содержащейся в detection отчет. Для получения дополнительной информации о расширенном фильтре Калмана смотрите trackingEKF.

Функция инициализирует постоянное состояние ускорения с тем же соглашением, что и constacc и cameas, [x; <reservedrangesplaceholder13> <reservedrangesplaceholder12>; <reservedrangesplaceholder11> <reservedrangesplaceholder10>; y; <reservedrangesplaceholder8> <reservedrangesplaceholder7>; <reservedrangesplaceholder6> <reservedrangesplaceholder5>; z; <reservedrangesplaceholder3> <reservedrangesplaceholder2>; <reservedrangesplaceholder1> <reservedrangesplaceholder0>].

Примеры

свернуть все

Создайте и инициализируйте 3-D объект расширенного фильтра Калмана с постоянным ускорением из начального отчета об обнаружении.

Создайте отчет об обнаружении из начального 3-D измерения (-200; 30; 0) положения объекта. Предположим некоррелированный шум измерения.

detection = objectDetection(0,[-200;-30;0],'MeasurementNoise',2.1*eye(3), ...
    'SensorIndex',1,'ObjectClassID',1,'ObjectAttributes',{'Car',2});

Создайте новый фильтр из отчета об обнаружении и отобразите его свойства.

filter = initcaekf(detection)
filter = 
  trackingEKF with properties:

                          State: [9x1 double]
                StateCovariance: [9x9 double]

             StateTransitionFcn: @constacc
     StateTransitionJacobianFcn: @constaccjac
                   ProcessNoise: [3x3 double]
        HasAdditiveProcessNoise: 0

                 MeasurementFcn: @cameas
         MeasurementJacobianFcn: @cameasjac
               MeasurementNoise: [3x3 double]
    HasAdditiveMeasurementNoise: 1

                EnableSmoothing: 0

Отображение состояния фильтра.

filter.State
ans = 9×1

  -200
     0
     0
   -30
     0
     0
     0
     0
     0

Покажите ковариационную матрицу состояния.

filter.StateCovariance
ans = 9×9

    2.1000         0         0         0         0         0         0         0         0
         0  100.0000         0         0         0         0         0         0         0
         0         0  100.0000         0         0         0         0         0         0
         0         0         0    2.1000         0         0         0         0         0
         0         0         0         0  100.0000         0         0         0         0
         0         0         0         0         0  100.0000         0         0         0
         0         0         0         0         0         0    2.1000         0         0
         0         0         0         0         0         0         0  100.0000         0
         0         0         0         0         0         0         0         0  100.0000

Инициализируйте 3D фильтр Калмана с постоянным ускорением из начального отчета об обнаружении, сделанного из начального измерения в сферических координатах. Если вы хотите использовать сферические координаты, то вы должны предоставить структуру параметра измерения в качестве части отчета о обнаружении с Frame значение поля установлено в 'spherical'. Установите угол азимута цели равным 45, а повышение к 22, от области значений до 1000 метров, и скорость области значений до -4,0 м/с.

frame = 'spherical';
sensorpos = [25,-40,-10].';
sensorvel = [0;5;0];
laxes = eye(3);

Создайте структуру параметров измерения. Задайте 'HasVelocity' и 'HasElevation' на true. Затем вектор измерения состоит из азимута, повышения, области значений и скорости области значений.

measparms = struct('Frame',frame,'OriginPosition',sensorpos, ...
    'OriginVelocity',sensorvel,'Orientation',laxes,'HasVelocity',true, ...
    'HasElevation',true);
meas = [45;22;1000;-4];
measnoise = diag([3.0,2.5,2,1.0].^2);
detection = objectDetection(0,meas,'MeasurementNoise', ...
    measnoise,'MeasurementParameters',measparms)
detection = 
  objectDetection with properties:

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

filter = initcaekf(detection);

Отобразите вектор состояния.

disp(filter.State)
  680.6180
   -2.6225
         0
  615.6180
    2.3775
         0
  364.6066
   -1.4984
         0

Входные параметры

свернуть все

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

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

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

свернуть все

Расширенный фильтр Калмана, возвращенный как trackingEKF объект.

Алгоритмы

  • Функция вычисляет матрицу шума процесса, принимая за одну секунду временной шаг и стандартное отклонение скорости ускорения 1 м/с3.

  • Вы можете использовать эту функцию как FilterInitializationFcn свойство multiObjectTracker объект.

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

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

.
Введенный в R2017a