This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

initcvckf

Create constant velocity tracking cubature Kalman filter from detection report

Syntax

ckf = initcvckf(detection)

Description

example

ckf = initcvckf(detection) initializes a constant velocity cubature Kalman filter for object tracking based on information provided in an objectDetection class object, detection.

Examples

collapse all

Create a constant velocity tracking cubature Kalman filter object, trackingCKF, from an initial detection report. The detection report is made from an initial 3-D position measurement of the Kalman filter state in rectangular coordinates. You can obtain the 3-D position measurement using the constant velocity measurement function, cvmeas.

This example uses the coordinates, x = 1, y = 3, z = 0 and a 3-D position measurement noise of [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]);

Use initcvckf to create a trackingCKF filter initialized at the provided position and using the measurement noise defined above.

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

Check the values of the state and the measurement noise. Verify that the filter state, ckf.State, has the same position components as the detection measurement, detection.Measurement.

ckf.State
ans = 6×1

     1
     0
     3
     0
     0
     0

Verify that the filter measurement noise, ckf.MeasurementNoise, is the same as the detection.MeasurementNoise values.

ckf.MeasurementNoise
ans = 3×3

    1.0000    0.2000         0
    0.2000    2.0000         0
         0         0    1.0000

Create a constant velocity tracking cubature Kalman filter object, trackingCKF, from an initial detection report. The detection report is made from an initial 3-D position measurement of the Kalman filter state in spherical coordinates. You can obtain the 3D position measurement using the constant velocity measurement function, cvmeas.

This example uses the coordinates, az = 30, e1 = 5, r = 100, rr = 4 and a measurement noise of diag([2.5, 2.5, 0.5, 1].^2).

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

Use the MeasurementParameters property of the detection object to define the frame. When not defined, the fields of the MeasurementParameters struct use default values. In this example, sensor position, sensor velocity, orientation, elevation, and range rate flags are default.

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: {}

Use initcvckf to create a trackingCKF filter initialized at the provided position and using the measurement noise defined above.

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

Verify that the filter state produces the same measurement as above.

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

   30.0000
    5.0000
  100.0000
    4.0000

Input Arguments

collapse all

Detection report, specified as an Object Detections object.

Example: detection = objectDetection(0,[1;4.5;3],'MeasurementNoise', [1.0 0 0; 0 2.0 0; 0 0 1.5])

Output Arguments

collapse all

Constant velocity cubature Kalman filter for object tracking, returned as a trackingCKF object.

Algorithms

  • The function computes the process noise matrix assuming a unit acceleration standard deviation.

  • You can use this function as the FilterInitializationFcn property of trackerTOMHT and trackerGNN System objects.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2018b