## Motion Model, State, and Process Noise

### Introduction

A motion model describes how a target or object moves with respect to time and is usually expressed as an equation of motion governing the transition of target states, such as position and velocity. You can use a motion model to simulate the ideal motion of a target. In estimation filters, you use a motion model to predict the estimated state from one time step to the next.

In real applications, modeling the exact motion of targets is often impossible, because the target motion can be perturbed by unknown external effects. Process noise is commonly used to account for these motion uncertainties in an estimation system.

There are many conventions for defining motion models, states, and process noise in the literature. However, this topic focuses on the conventions used in the Sensor Fusion and Tracking Toolbox™, which assume the process noise is constant between discrete time steps.

### Constant Velocity Model

The `constvel`

function models constant
velocity motion, which assumes that the velocity vector is constant. In many cases, even
though the target velocity vector is not exactly constant, you can use this model if the
velocity vector does not change consistently. In fact, because of the simplicity of the
constant velocity model, you can often try to use the constant velocity model before
using other motion models.

The `constvel`

function defines the state as [*x*,
*v*_{x},
*y*,
*v*_{y},
*z*,
*v*_{z}], with the variables
specified in this order.

State Component | Definition |
---|---|

x | x-coordinate of the target, specified as a
scalar. |

v_{x} | x-direction velocity of the target, specified
as a scalar. |

y | y-coordinate of the target, specified as a
scalar. |

v_{y} | y-direction velocity of the target, specified
as a scalar. |

z | z-coordinate of the target, specified as a
scalar. |

v_{z} | z-direction velocity of the target, specified
as a scalar. |

Since the motion model assumes decoupled *x*-,
*y*-, and *z*-motion, you can use the
`constvel`

function to model 1-D, 2-D, or 3-D constant velocity
motion.

With process noise, the `constvel`

model for the 1-D
*x*-motion is:

$$\left[\begin{array}{l}x(k+1)\\ {v}_{x}(k+1)\end{array}\right]=\left[\begin{array}{cc}1& T\\ 0& 1\end{array}\right]\left[\begin{array}{l}x(k)\\ {v}_{x}(k)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{T}^{2}\\ T\end{array}\right]{w}_{x}(k)$$

where *T* is the time step size of the discrete
model, *k* is the time step index, and
*w*_{x}(*k*)
is the process noise in the *x*-direction at the
*k*-th time step. From the equation, the function treats the process
noise as an acceleration disturbance. If you do not specify the process noise, the
function assumes the process noise to be zero.

To model 3-D motion, the function repeats the equation for the *y*-
and *z*-directions as:

$$\left[\begin{array}{l}x(k+1)\\ {v}_{x}(k+1)\\ y(k+1)\\ {v}_{y}(k+1)\\ z(k+1)\\ {v}_{z}(k+1)\end{array}\right]=\left[\begin{array}{cccccc}1& T& 0& 0& 0& 0\\ 0& 1& 0& 0& 0& 0\\ 0& 0& 1& T& 0& 0\\ 0& 0& 0& 1& 0& 0\\ 0& 0& 0& 0& 1& T\\ 0& 0& 0& 0& 0& 1\end{array}\right]\left[\begin{array}{l}x(k)\\ {v}_{x}(k)\\ y(k)\\ {v}_{y}(k)\\ z(k)\\ {v}_{z}(k)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{w}_{x}(k){T}^{2}\\ {w}_{x}(k)T\\ \frac{1}{2}{w}_{y}(k){T}^{2}\\ {w}_{y}(k)T\\ \frac{1}{2}{w}_{z}(k){T}^{2}\\ {w}_{z}(k)T\end{array}\right]$$

where *w*_{y}
and *w*_{z} represent the
process noise for the *y*- and *z*-directions,
respectively.

### Constant Acceleration Model

The `constacc`

function models constant
velocity motion, which assumes that the acceleration vector is constant. In many cases,
even though the target acceleration vector is not exactly constant, you can use the
constant acceleration model if the target acceleration vector does not change
consistently.

The `constvel`

function defines the state as [*x*,
*v*_{x},
*a*_{x},
*y*,
*v*_{y},
*a*_{y},
*z*,
*v*_{z},
*a*_{z}], with the variables
specified in this order.

State Component | Definition |
---|---|

x | x-coordinate of the target, specified as a
scalar. |

v_{x} | x-direction velocity of the target, specified
as a scalar. |

a_{x} | x-direction acceleration of the target,
specified as a scalar. |

y | y-coordinate of the target, specified as a
scalar. |

v_{y} | y-direction velocity of the target, specified
as a scalar. |

a_{y} | y-direction acceleration of the target,
specified as a scalar. |

z | z-coordinate of the target, specified as a
scalar. |

v_{z} | z-direction velocity of the target, specified
as a scalar. |

a_{z} | z-direction acceleration of the target,
specified as a scalar. |

Since the motion model assumes decoupled *x*-,
*y*-, and *z*-motion, you can use the
`constacc`

function to model 1-D, 2-D, or 3-D constant
acceleration motion.

With process noise, the constant acceleration model for the 1-D
*x*-motion is:

$$\left[\begin{array}{l}x(k+1)\\ {v}_{x}(k+1)\\ {a}_{x}(k+1)\end{array}\right]=\left[\begin{array}{ccc}1& T& \frac{1}{2}{T}^{2}\\ 0& 1& T\\ 0& 0& 1\end{array}\right]\left[\begin{array}{l}x(k)\\ {v}_{x}(k)\\ {a}_{x}(k)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{T}^{2}\\ T\\ 1\end{array}\right]{w}_{x}(k)$$

where *T* is the time step size of the discrete
model, *k* is the time step index, and
*w*_{x} is the process
noise in the *x*-direction. From the equation, the
`constacc`

function models the process noise as an acceleration
disturbance. If you do not specify the process noise, the function assumes the process
noise is zero.

To model 2-D or 3-D motion, simply repeat the equations for the *y*-
and *z*-directions.

### Constant Turn Rate Model

The `constturn`

function models the
horizontal constant turn motion, in which the turn rate and turn radius of the target
trajectory are constant. In many cases, even though the target turn rate and turn radius
are not exactly constant, you can use the constant turn rate model if the turn rate and
turn radius do not change consistently.

The `consturn`

function defines the state as [*x*,
*v*_{x},
*y*,
*v*_{y},
*ω*, *z*,
*v*_{z}], with the
variables specified in this order.

State Component | Definition |
---|---|

x | x-coordinate of the target, specified as a
scalar. |

v_{x} | x-direction velocity of the target, specified
as a scalar. |

y | y-coordinate of the target, specified as a
scalar. |

v_{y} | y-direction velocity of the target, specified
as a scalar. |

ω | Turn rate in the x-y plane,
specified as a scalar. |

z | z-coordinate of the target, specified as a
scalar. |

v_{z} | z-direction velocity of the target, specified
as a scalar. |

In the model, the *x*- and *y*-motion depends on
the turnrate, *ω*. The equation for the 2-D motion is:

$$\left[\begin{array}{l}x(k+1)\\ {v}_{x}(k+1)\\ y(k+1)\\ {v}_{y}(k+1)\\ \omega (k+1)\end{array}\right]=\left[\begin{array}{ccccc}1& TS& 0& -TC& 0\\ 0& \mathrm{cos}\omega T& 0& -\mathrm{sin}\omega T& 0\\ 0& TC& 1& TS& 0\\ 0& \mathrm{sin}\omega T& 0& \mathrm{cos}\omega T& 0\\ 0& 0& 0& 0& 1\end{array}\right]\left[\begin{array}{l}x(k)\\ {v}_{x}(k)\\ y(k)\\ {v}_{y}(k)\\ \omega (k)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{w}_{x}(k){T}^{2}\\ {w}_{x}(k)T\\ \frac{1}{2}{w}_{y}(k){T}^{2}\\ {w}_{y}(k)T\\ {w}_{\omega}(k)T\end{array}\right]$$

where *T* is the time step size of the discrete model,
*k* is the time step index, and
*w*_{x},
*w*_{y}, and
*w*_{ω} represent the
process noise for the *x*-motion, the *y*-motion, and
the turn rate, respectively. The two variables *TS* and
*TC* are:

$$\begin{array}{l}TS=\frac{\mathrm{sin}(\omega (k)T)}{\omega (k)}\\ TC=\frac{\left[1-\mathrm{cos}(\omega (k)T)\right]}{\omega (k)}\end{array}$$

This figure shows the target motion from one time step to the next step using the 2-D
constant turn rate model without process noise. During one time step, the target moves
from (*x*_{1},
*y*_{1}) to
(*x*_{2},
*y*_{2}) following an arc of radius
*r* and angle *ωT*. The velocities
**v**_{1}
and **v**_{2} are
perpendicular to their respective radial directions. The magnitude of the velocity is
constant along the entire arc as:

$$v=\omega r=\sqrt{{v}_{{x}_{i}}^{2}+{v}_{{y}_{i}}^{2}},\text{\hspace{1em}}i=1,\text{\hspace{0.17em}}2.$$

From the equation of motion, the `constturn`

function treats the
process noise for the *x*- and *y*-motion as
acceleration disturbances and treats the process noise for the turn rate as the
disturbance of the turn rate.

To model 3-D motion, simply add the *z*-motion equation of the
constant velocity model since the *z*-motion is decoupled from the
*x*-*y* motion in the constant turn model.

### Singer Model

The `singer`

function models the target
motion with a state definition similar to that of the constant acceleration motion.
However, the Singer model assumes that the target acceleration decays over time. Thus,
the Singer model allows you to model targets that change their motion between different
constant velocity sections by using limited-time linear acceleration or turn.

Like the `constacc`

function, the `constvel`

function defines the state as [*x*,
*v*_{x},
*a*_{x},
*y*,
*v*_{y},
*a*_{y},
*z*,
*v*_{z},
*a*_{z}], , with the
variables specified in this order.

State Component | Definition |
---|---|

x | x-coordinate of the target, specified as a
scalar. |

v_{x} | x-direction velocity of the target, specified
as a scalar. |

a_{x} | x-direction acceleration of the target,
specified as a scalar. |

y | y-coordinate of the target, specified as a
scalar. |

v_{y} | y-direction velocity of the target, specified
as a scalar. |

a_{y} | y-direction acceleration of the target,
specified as a scalar. |

z | z-coordinate of the target, specified as a
scalar. |

v_{z} | z-direction velocity of the target, specified
as a scalar. |

a_{z} | z-direction acceleration of the target,
specified as a scalar. |

Since the motion model assumes decoupled *x*-, *y*-,
and *z*-motion, you can use the `singer`

function to
model 1-D, 2-D, or 3-D Singer motion.

Without the process noise, the Singer model for the 1-D *x*-motion
can be expressed as:

$$\left[\begin{array}{l}x(k+1)\\ {v}_{x}(k+1)\\ {a}_{x}(k+1)\end{array}\right]=\left[\begin{array}{ccc}1& T& (\alpha T-1-{e}^{-\alpha T})/{\alpha}^{2}\\ 0& 1& (1-{e}^{-\alpha T})/\alpha \\ 0& 0& {e}^{-\alpha T}\end{array}\right]\left[\begin{array}{l}x(k)\\ {v}_{x}(k)\\ {a}_{x}(k)\end{array}\right]$$

where *T* is the time step size of the discrete
model, *k* is the time step index, and *α* =
1/*τ* is the reciprocal of the target maneuver time constant
*τ*. If *τ* → +∞, the Singer model reduces to the
constant acceleration model.

The process noise in the signer model follows a Markov process and is not white noise.
You can use the `singerProcessNoise`

function to generate the process noise and add to the state. See [1] or [2] for more
details.

### Summary

This table summarizes the motion models, model states, and their application assumptions. You can always start by using a simpler model, such as the constant velocity model, and review the estimation performance before applying more sophisticated models.

Function | Motion Model | 1-D State | 2-D State | 3-D State | Application Assumption |
---|---|---|---|---|---|

`constvel` | Constant velocity | [x,
v_{x}] | [x,
v_{x},
y,
v_{y}] | [x,
v_{x},
y,
v_{y},
z,
v_{z}] | The velocity vector of the target is roughly constant. |

`constacc` | Constant acceleration | [x,
v_{x},
a_{x}] | [x,
v_{x},
a_{x},
y,
v_{y},
a_{y}] | [x,
v_{x},
a_{x},
y,
v_{y},
a_{y},
z,
v_{z},
a_{z}] | The acceleration vector of the target is roughly constant. |

`constturn` | Constant turn rate | N/A | [x,
v_{x},
y,
v_{y},
ω] | [x,
v_{x},
y,
v_{y},
ω, z,
v_{z}] | The turn rate and turn radius of the target are roughly constant. |

`singer` | Singer | [x,
v_{x},
a_{x}] | [x,
v_{x},
a_{x},
y,
v_{y},
a_{y}] | [x,
v_{x},
a_{x},
y,
v_{y},
a_{y},
z,
v_{z},
a_{z}] | The target can often perform maneuvers. |

## References

[1] Singer, Robert. "Estimating
optimal tracking filter performance for manned maneuvering targets." *IEEE
Transactions on Aerospace and Electronic Systems* 4 (1970):
473-483.

[2] Blackman, Samuel S., and
Robert Popoli. *Design and Analysis of Modern Tracking Systems.*
Artech House Radar Library, Boston, 1999.

[3] Li, X. Rong, and Vesselin P.
Jilkov. "Survey of maneuvering target tracking: dynamic models." *Signal and
Data Processing of Small Targets* 2000, vol. 4048, pp. 212-235.
International Society for Optics and Photonics, 2000.