trackingMSCEKF

Extended Kalman filter for object tracking in modified spherical coordinates (MSC)

Description

The trackingMSCEKF object represents an extended Kalman filter (EKF) for object tracking in modified spherical coordinates (MSC) using angle-only measurements from a single observer. Use the filter to predict the future location of an object in the MSC frame or associate multiple object detections with their tracks. You can specify the observer maneuver or acceleration required by the state-transition functions (@constantvelmsc and @constantvelmscjac) by using the ObserverInput property.

The following properties are fixed for the trackingMSCEKF object:

  • StateTransitionFcn - @constvelmsc

  • StateTransitionJacobianFcn - @constvelmscjac

  • MeasurementFcn - @cvmeasmsc

  • MeasurementJacobianFcn - @cvmeasmscjac

  • HasAdditiveProcessNoise - false

  • HasAdditiveMeasurementNoise - true

Creation

Description

mscekf = trackingMSCEKF returns an extended Kalman filter to use the MSC state-transition and measurement functions with object trackers. The default State implies a static target at 1 meter from the observer at zero azimuth and elevation.

example

mscekf = trackingMSCEKF(Name,Value) specifies the properties of the filter using one or more Name,Value pair arguments. Any unspecified properties take default values.

Properties

expand all

Filter state, specified as a real-valued M-element vector.

  • For 2-D tracking, M is equal to four and the four-dimensional state is: [az;azRate;1/r;rDot/r].

    For 3-D tracking, M is equal to six and the six-dimensional state is: [az;azRate;el;elRate;1/r;rDot/r].

az and el are the azimuth and elevation angle in radians. azRate and elRate are the azimuth and elevation angular rate in radians per second. r is the range in meters, and rDot is the range rate in meters per second.

Data Types: double

State error covariance, specified as an M-by-M matrix where M is the size of the filter state. A scalar input is extended to an M-by-M matrix. The covariance matrix represents the uncertainty in the filter state. M is either 4 for 2-D tracking or 6 for 3-D tracking.

Example: eye(6)

This property is read-only.

State transition function, specified as a function handle. This function calculates the state vector at time step k from the state vector at time step k–1. For the trackingMSCEKF object, the transition function is fixed to @constvelmsc.

Data Types: function_handle

This property is read-only.

The Jacobian of the state transition function, specified as a function handle. This function has the same input arguments as the state transition function. For the trackingMSCEKF object, the transition function Jacobian is fixed to @constvelmsc.

Data Types: function_handle

Process noise covariance, specified as a Q-by-Q matrix. Q is either 2 or 3. The process noise represents uncertainty in the acceleration of the target.

Specify ProcessNoise before any call to the predict function. In later calls to predict, you can optionally specify the process noise as a scalar. In this case, the process noise matrix is a multiple of the Q-by-Q identity matrix.

Example: [1.0 0.05; 0.05 2]

Acceleration or maneuver of the observer, specified as a three-element vector. To specify an acceleration, use an M/2 vector, where M is either 4 for 2-D tracking or 6 for 3-D tracking. To specify a maneuver, give an M-element vector.

Example: [1;2;3]

This property is read-only.

Model additive process noise, specified as false. For the trackingMSCEKF object, this property is fixed to false.

This property is read-only.

Measurement model function, specified as a function handle, @cvmeasmsc. Input to the function is the M-element state vector. The output is the N-element measurement vector. For the trackingMSCEKF object, the measurement model function is fixed to @cvmeasmsc.

Data Types: function_handle

This property is read-only.

Jacobian of the measurement function, specified as a function handle. The function has the same input arguments as the measurement function. For the trackingMSCEKF object, the Jacobian of the measurement function is fixed to @cvmeasmscjac.

Data Types: function_handle

Measurement noise covariance, specified as a positive scalar or positive-definite real-valued matrix. When specified as a scalar, the matrix is a multiple of the N-by-N identity matrix. N is the size of the measurement vector.

Specify MeasurementNoise before any call to the correct function.

Example: 0.2

This property is read-only.

Model additive process noise, specified as true. For the trackingMSCEKF object, this property is fixed to true.

Object Functions

predictPredict state and state estimation error covariance of tracking filter
correctCorrect state and state estimation error covariance using tracking filter
correctjpdaCorrect state and state estimation error covariance using tracking filter and JPDA
distanceDistances between current and predicted measurements of tracking filter
likelihoodLikelihood of measurement from tracking filter
cloneCreate duplicate tracking filter
residualMeasurement residual and residual noise from tracking filter
initializeInitialize state and covariance of tracking filter

Examples

collapse all

This example shows how to make an extended Kalman filter (EKF) for object tracking in modified spherical coordinates (MSC). Create the filter, predict the state, and correct the state estimate using measurement observations.

Create the filter for a 3-D motion model. Specify the state estimates for the MSC frame.

az = 0.1; % in radians
azRate = 0;
r = 1000;
rDot = 10;
el = 0.3; % in radians
elRate = 0;
omega = azRate*cos(el);

mscekf = trackingMSCEKF('State',[az;omega;el;elRate;1/r;rDot/r]);

Predict the filter state using a constant observer acceleration.

mscekf.ObserverInput = [1;2;3];
predict(mscekf); % Default time 1 second.
predict(mscekf,0.1); % Predict using dt = 0.1 second.

Correct the filter state using an angle-only measurement.

meas = [5;18]; % measured azimuth and elevation in degrees
correct(mscekf,meas);

References

[1] Aidala, V. and Hammel, S., 1983. Utilization of modified polar coordinates for bearings-only tracking. IEEE Transactions on Automatic Control, 28(3), pp.283-294.

Introduced in R2018b