exponenta event banner

initcvckf

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

Описание

пример

ckf = initcvckf(detection) инициализирует кубатурный фильтр Калмана постоянной скорости для отслеживания объектов на основе информации, предоставленной в objectDetection объект, detection.

Функция инициализирует состояние постоянной скорости с тем же соглашением, что и constvel и cvmeas, [x; vx; y; vy; z; vz].

Примеры

свернуть все

Создание кубатурного фильтра Калмана для отслеживания постоянной скорости, trackingCKF, из первоначального отчета об обнаружении. Отчет об обнаружении выполнен из начального измерения положения 3-D состояния фильтра Калмана в прямоугольных координатах. Измерение положения 3-D можно получить с помощью функции измерения постоянной скорости. cvmeas.

В этом примере используются координаты, x = 1, y = 3, z = 0 и шум измерения положения 3-D [1 0.2 0; 0.2 2 0; 0 0 1].

detection = objectDetection(0, [1;3;0], 'MeasurementNoise', [1 0.2 0; 0.2 2 0; 0 0 1]);

Использовать initcvckf для создания trackingCKF фильтр, инициализированный в заданном положении и использующий измерительный шум, определенный выше.

ckf = initcvckf(detection)
ckf = 
  trackingCKF with properties:

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

             StateTransitionFcn: @constvel
                   ProcessNoise: [3x3 double]
        HasAdditiveProcessNoise: 0

                 MeasurementFcn: @cvmeas
               MeasurementNoise: [3x3 double]
    HasAdditiveMeasurementNoise: 1

                EnableSmoothing: 0

Проверьте значения состояния и шума измерений. Проверьте состояние фильтра, ckf.State, имеет те же компоненты положения, что и измерение обнаружения, detection.Measurement.

ckf.State
ans = 6×1

     1
     0
     3
     0
     0
     0

Проверьте, что фильтр измеряет шум, ckf.MeasurementNoise, совпадает с detection.MeasurementNoise значения.

ckf.MeasurementNoise
ans = 3×3

    1.0000    0.2000         0
    0.2000    2.0000         0
         0         0    1.0000

Создание кубатурного фильтра Калмана для отслеживания постоянной скорости, trackingCKF, из первоначального отчета об обнаружении. Отчет об обнаружении выполнен из начального измерения положения 3-D состояния фильтра Калмана в сферических координатах. Измерение положения 3D можно получить с помощью функции измерения постоянной скорости. cvmeas.

В этом примере используются координаты az = 30, e1 = 5, r = 100, rr = 4 и шум измерения diag([2.5, 2.5, 0.5, 1].^2).

meas = [30;5;100;4];
measNoise = diag([2.5, 2.5, 0.5, 1].^2);

Используйте MeasurementParameters имущества detection объект для определения кадра. Если не определено, поля MeasurementParameters struct использует значения по умолчанию. В этом примере по умолчанию используются флаги положения датчика, скорости, ориентации, высоты и дальности.

measParams = struct('Frame','spherical');
detection = objectDetection(0,meas,'MeasurementNoise',measNoise,...
    'MeasurementParameters',measParams) 
detection = 
  objectDetection with properties:

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

Использовать initcvckf для создания trackingCKF фильтр, инициализированный в заданном положении и использующий измерительный шум, определенный выше.

ckf = initcvckf(detection)
ckf = 
  trackingCKF with properties:

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

             StateTransitionFcn: @constvel
                   ProcessNoise: [3x3 double]
        HasAdditiveProcessNoise: 0

                 MeasurementFcn: @cvmeas
               MeasurementNoise: [4x4 double]
    HasAdditiveMeasurementNoise: 1

                EnableSmoothing: 0

Убедитесь, что состояние фильтра дает то же измерение, что и выше.

meas2 = cvmeas(ckf.State, measParams)
meas2 = 4×1

   30.0000
    5.0000
  100.0000
    4.0000

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

свернуть все

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

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

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

свернуть все

Кубатурный фильтр Калмана с постоянной скоростью для отслеживания объектов, возвращаемый как trackingCKF объект.

Алгоритмы

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

  • Эту функцию можно использовать в качестве FilterInitializationFcn имущество trackerTOMHT и trackerGNN Системные объекты.

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

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

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