Extended Kalman filter for object tracking

A `trackingEKF`

object is a discrete-time
extended Kalman filter used to track the positions and velocities of target
platforms.

A Kalman filter is a recursive algorithm for estimating the evolving state of a
process when measurements are made on the process. The extended Kalman filter can model
the evolution of a state when the state follows a nonlinear motion model, when the
measurements are nonlinear functions of the state, or when both conditions apply. The
extended Kalman filter is based on the linearization of the nonlinear equations. This
approach leads to a filter formulation similar to the linear Kalman filter, `trackingKF`

.

The process and measurements can have Gaussian noise, which you can include in these ways:

Add noise to both the process and the measurements. In this case, the sizes of the process noise and measurement noise must match the sizes of the state vector and measurement vector, respectively.

Add noise in the state transition function, the measurement model function, or in both functions. In these cases, the corresponding noise sizes are not restricted.

`filter = trackingEKF`

creates an extended Kalman filter object for a
discrete-time system by using default values for the
`StateTransitionFcn`

,
`MeasurementFcn`

, and `State`

properties.
The process and measurement noises are assumed to be additive.

specifies
the state transition function, `filter`

= trackingEKF(`transitionfcn`

,`measurementfcn`

,`state`

)`transitionfcn`

,
the measurement function, `measurementfcn`

, and
the initial state of the system, `state`

.

configures the properties of the extended Kalman filter object by using one or
more `filter`

= trackingEKF(___,`Name,Value`

)`Name,Value`

pair arguments and any of the previous
syntaxes. Any unspecified properties have default values.

`predict` | Predict state and state estimation error covariance of tracking filter |

`correct` | Correct state and state estimation error covariance using tracking filter |

`correctjpda` | Correct state and state estimation error covariance using tracking filter and JPDA |

`distance` | Distances between current and predicted measurements of tracking filter |

`likelihood` | Likelihood of measurement from tracking filter |

`clone` | Create duplicate tracking filter |

`residual` | Measurement residual and residual noise from tracking filter |

`initialize` | Initialize state and covariance of tracking filter |

The extended Kalman filter estimates the state of a process governed by this nonlinear stochastic equation:

$${x}_{k+1}=f({x}_{k},{u}_{k},{w}_{k},t)$$

*x _{k}* is the state at step

$${x}_{k+1}=f({x}_{k},{u}_{k},t)+{w}_{k}$$

To use the simplified form, set
`HasAdditiveProcessNoise`

to `true`

.

In the extended Kalman filter, the measurements are also general functions of the state:

$${z}_{k}=h({x}_{k},{v}_{k},t)$$

*h(x _{k},v_{k},t)*
is the measurement function that determines the measurements as functions of the state.
Typical measurements are position and velocity or some function of position and
velocity. The measurements can also include noise, represented by

$${z}_{k}=h({x}_{k},t)+{v}_{k}$$

To use the simplified form, set
`HasAdditiveMeasurmentNoise`

to `true`

.

These equations represent the actual motion and the actual measurements of the object. However, the noise contribution at each step is unknown and cannot be modeled deterministically. Only the statistical properties of the noise are known.

[1] Brown, R.G. and P.Y.C. Wang.
*Introduction to Random Signal Analysis and Applied Kalman
Filtering*. 3rd Edition. New York: John Wiley & Sons,
1997.

[2] Kalman, R. E. “A New
Approach to Linear Filtering and Prediction Problems.” *Transactions of
the ASME–Journal of Basic Engineering*. Vol. 82, Series D, March 1960,
pp. 35–45.

[3] Blackman, Samuel and R.
Popoli. *Design and Analysis of Modern Tracking Systems*. Artech
House.1999.

[4] Blackman, Samuel.
*Multiple-Target Tracking with Radar Applications*. Artech
House. 1986.

`cameas`

|`cameasjac`

|`constacc`

|`constaccjac`

|`constturn`

|`constturnjac`

|`constvel`

|`constveljac`

|`ctmeas`

|`ctmeasjac`

|`cvmeas`

|`cvmeasjac`

|`initcaekf`

|`initctekf`

|`initcvekf`

`trackerGNN`

|`trackerTOMHT`

|`trackingABF`

|`trackingCKF`

|`trackingGSF`

|`trackingIMM`

|`trackingKF`

|`trackingMSCEKF`

|`trackingPF`

|`trackingUKF`