# initcaekf

Create constant-acceleration extended Kalman filter from detection report

## Description

example

filter = initcaekf(detection) creates and initializes a constant-acceleration extended Kalman filter from information contained in a detection report. For more information about the extended Kalman filter, see trackingEKF.

The function initializes a constant acceleration state with the same convention as constacc and cameas, [x vx ax y vy ay z vz az].

## Examples

collapse all

Create and initialize a 3-D constant-acceleration extended Kalman filter object from an initial detection report.

Create the detection report from an initial 3-D measurement, (-200;30;0) , of the object position. Assume uncorrelated measurement noise.

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

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

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

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

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

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

MaxNumOOSMSteps: 0

EnableSmoothing: 0

Show the filter state.

filter.State
ans = 9×1

-200
0
0
-30
0
0
0
0
0

Show the state covariance matrix.

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

Initialize a 3D constant-acceleration 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 $4{5}^{\circ }$, the elevation to $2{2}^{\circ }$, the range to 1000 meters, and the range rate to -4.0 m/s.

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

Create the measurement parameters structure. Set 'HasVelocity' and 'HasElevation' to true. Then, the measurement vector consists of azimuth, elevation, range, and range rate.

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
ObjectClassParameters: []
MeasurementParameters: [1x1 struct]
ObjectAttributes: {}

filter = initcaekf(detection);

Display the state vector.

disp(filter.State)
680.6180
-2.6225
0
615.6180
2.3775
0
364.6066
-1.4984
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

Extended Kalman filter, returned as a trackingEKF object.

## Algorithms

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

• You can use this function as the FilterInitializationFcn property of a radarTracker object.

## Version History

Introduced in R2021a