Main Content

initctukf

Create constant turn-rate unscented Kalman filter from detection report

Description

filter = initctukf(detection) creates and initializes a constant-turn-rate unscented Kalman filter from information contained in a detection report. For more information about the unscented Kalman filter, see trackingUKF.

Note

initctukf represents velocity in the xy-plane with its Cartesian components, Vx and Vy. For the constant turn-rate and velocity magnitude motion model using velocity magnitude and course direction, see initctrvukf.

The function initializes a constant turn-rate state with the same convention as constturn and ctmeas, [x vx y vy ω z vz], where ω is the turn-rate.

example

Examples

collapse all

Create and initialize a 2-D constant turn-rate unscented Kalman filter object from an initial detection report.

Create the detection report from an initial 2D measurement, (-250,-40), of the object position. Assume uncorrelated measurement noise.

Extend the measurement to three dimensions by adding a z-component of zero.

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

Create the new filter from the detection report and display the filter properties.

filter = initctukf(detection)
filter = 
  trackingUKF with properties:

                          State: [7x1 double]
                StateCovariance: [7x7 double]

             StateTransitionFcn: @constturn
                   ProcessNoise: [4x4 double]
        HasAdditiveProcessNoise: 0

                 MeasurementFcn: @ctmeas
         HasMeasurementWrapping: 1
               MeasurementNoise: [3x3 double]
    HasAdditiveMeasurementNoise: 1

                          Alpha: 1.0000e-03
                           Beta: 2
                          Kappa: 0

                EnableSmoothing: 0

Show the filter state.

filter.State
ans = 7×1

  -250
     0
   -40
     0
     0
     0
     0

Show the state covariance matrix.

filter.StateCovariance
ans = 7×7

    2.0000         0         0         0         0         0         0
         0  100.0000         0         0         0         0         0
         0         0    2.0000         0         0         0         0
         0         0         0  100.0000         0         0         0
         0         0         0         0  100.0000         0         0
         0         0         0         0         0    2.0000         0
         0         0         0         0         0         0  100.0000

Initialize a 2-D constant turn-rate extended Kalman filter from an initial detection report made from an initial measurement in spherical coordinates. If you want to use spherical coordinates, then you must supply a measurement parameter structure as part of the detection report with the Frame field set to 'spherical'. Set the azimuth angle of the target to 45 degrees and the range to 1000 meters.

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

Create the measurement parameters structure. Set 'HasVelocity' and 'HasElevation' to false. Then, the measurement consists of azimuth and range.

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

                     Time: 0
              Measurement: [2x1 double]
         MeasurementNoise: [2x2 double]
              SensorIndex: 1
            ObjectClassID: 0
    ObjectClassParameters: []
    MeasurementParameters: [1x1 struct]
         ObjectAttributes: {}

filter = initctukf(detection);

Filter state vector.

disp(filter.State)
  732.1068
         0
  667.1068
         0
         0
  -10.0000
         0

Input Arguments

collapse all

Detection report, specified as an objectDetection 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

Unscented Kalman filter, returned as a trackingUKF object.

Algorithms

  • The function computes the process noise matrix assuming a one-second time step. The function assumes an acceleration standard deviation of 1 m/s2, and a turn-rate acceleration standard deviation of 1°/s2.

  • You can use this function as the FilterInitializationFcn property of a trackerGNN, trackerJPDA, or trackerTOMHT object.

Extended Capabilities

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

Version History

Introduced in R2018b