## 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, vx, y, vy, z, vz], with the variables specified in this order.

State ComponentDefinition
xx-coordinate of the target, specified as a scalar.
vxx-direction velocity of the target, specified as a scalar.
yy-coordinate of the target, specified as a scalar.
vyy-direction velocity of the target, specified as a scalar.
zz-coordinate of the target, specified as a scalar.
vzz-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\left(k+1\right)\\ {v}_{x}\left(k+1\right)\end{array}\right]=\left[\begin{array}{cc}1& T\\ 0& 1\end{array}\right]\left[\begin{array}{l}x\left(k\right)\\ {v}_{x}\left(k\right)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{T}^{2}\\ T\end{array}\right]{w}_{x}\left(k\right)$`

where T is the time step size of the discrete model, k is the time step index, and wx(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\left(k+1\right)\\ {v}_{x}\left(k+1\right)\\ y\left(k+1\right)\\ {v}_{y}\left(k+1\right)\\ z\left(k+1\right)\\ {v}_{z}\left(k+1\right)\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\left(k\right)\\ {v}_{x}\left(k\right)\\ y\left(k\right)\\ {v}_{y}\left(k\right)\\ z\left(k\right)\\ {v}_{z}\left(k\right)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{w}_{x}\left(k\right){T}^{2}\\ {w}_{x}\left(k\right)T\\ \frac{1}{2}{w}_{y}\left(k\right){T}^{2}\\ {w}_{y}\left(k\right)T\\ \frac{1}{2}{w}_{z}\left(k\right){T}^{2}\\ {w}_{z}\left(k\right)T\end{array}\right]$`

where wy and wz 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, vx, ax, y, vy, ay, z, vz, az], with the variables specified in this order. .

State ComponentDefinition
xx-coordinate of the target, specified as a scalar.
vxx-direction velocity of the target, specified as a scalar.
axx-direction acceleration of the target, specified as a scalar.
yy-coordinate of the target, specified as a scalar.
vyy-direction velocity of the target, specified as a scalar.
ayy-direction acceleration of the target, specified as a scalar.
zz-coordinate of the target, specified as a scalar.
vzz-direction velocity of the target, specified as a scalar.
azz-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\left(k+1\right)\\ {v}_{x}\left(k+1\right)\\ {a}_{x}\left(k+1\right)\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\left(k\right)\\ {v}_{x}\left(k\right)\\ {a}_{x}\left(k\right)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{T}^{2}\\ T\\ 1\end{array}\right]{w}_{x}\left(k\right)$`

where T is the time step size of the discrete model, k is the time step index, and wx 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, vx, y, vy, ω, z, vz], with the variables specified in this order.

State ComponentDefinition
xx-coordinate of the target, specified as a scalar.
vxx-direction velocity of the target, specified as a scalar.
yy-coordinate of the target, specified as a scalar.
vyy-direction velocity of the target, specified as a scalar.
ωTurn rate in the x-y plane, specified as a scalar.
zz-coordinate of the target, specified as a scalar.
vzz-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\left(k+1\right)\\ {v}_{x}\left(k+1\right)\\ y\left(k+1\right)\\ {v}_{y}\left(k+1\right)\\ \omega \left(k+1\right)\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\left(k\right)\\ {v}_{x}\left(k\right)\\ y\left(k\right)\\ {v}_{y}\left(k\right)\\ \omega \left(k\right)\end{array}\right]+\left[\begin{array}{l}\frac{1}{2}{w}_{x}\left(k\right){T}^{2}\\ {w}_{x}\left(k\right)T\\ \frac{1}{2}{w}_{y}\left(k\right){T}^{2}\\ {w}_{y}\left(k\right)T\\ {w}_{\omega }\left(k\right)T\end{array}\right]$`

where T is the time step size of the discrete model, k is the time step index, and wx, wy, 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}\left(\omega \left(k\right)T\right)}{\omega \left(k\right)}\\ TC=\frac{\left[1-\mathrm{cos}\left(\omega \left(k\right)T\right)\right]}{\omega \left(k\right)}\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 (x1, y1) to (x2, y2) following an arc of radius r and angle ωT. The velocities v1 and v2 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{ }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, vx, ax, y, vy, ay, z, vz, az], , with the variables specified in this order.

State ComponentDefinition
xx-coordinate of the target, specified as a scalar.
vxx-direction velocity of the target, specified as a scalar.
axx-direction acceleration of the target, specified as a scalar.
yy-coordinate of the target, specified as a scalar.
vyy-direction velocity of the target, specified as a scalar.
ayy-direction acceleration of the target, specified as a scalar.
zz-coordinate of the target, specified as a scalar.
vzz-direction velocity of the target, specified as a scalar.
azz-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\left(k+1\right)\\ {v}_{x}\left(k+1\right)\\ {a}_{x}\left(k+1\right)\end{array}\right]=\left[\begin{array}{ccc}1& T& \left(\alpha T-1-{e}^{-\alpha T}\right)/{\alpha }^{2}\\ 0& 1& \left(1-{e}^{-\alpha T}\right)/\alpha \\ 0& 0& {e}^{-\alpha T}\end{array}\right]\left[\begin{array}{l}x\left(k\right)\\ {v}_{x}\left(k\right)\\ {a}_{x}\left(k\right)\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 Model1-D State2-D State3-D StateApplication Assumption
`constvel`Constant velocity[x, vx][x, vx, y, vy][x, vx, y, vy, z, vz]The velocity vector of the target is roughly constant.
`constacc`Constant acceleration[x, vx, ax][x, vx, ax, y, vy, ay][x, vx, ax, y, vy, ay, z, vz, az]The acceleration vector of the target is roughly constant.
`constturn`Constant turn rateN/A[x, vx, y, vy, ω][x, vx, y, vy, ω, z, vz]The turn rate and turn radius of the target are roughly constant.
`singer`Singer[x, vx, ax][x, vx, ax, y, vy, ay][x, vx, ax, y, vy, ay, z, vz, az]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.