# initcvckf

Create constant velocity tracking cubature Kalman filter from detection report

## Syntax

``ckf = initcvckf(detection)``

## Description

example

````ckf = initcvckf(detection)` initializes a constant velocity cubature Kalman filter for object tracking based on information provided in an `objectDetection` object, `detection`. The function initializes a constant velocity state with the same convention as `constvel` and `cvmeas`, [x vx y vy z vz].```

## Examples

collapse all

Create a constant velocity tracking cubature Kalman filter object, `trackingCKF`, from an initial detection report. The detection report is made from an initial 3-D position measurement of the Kalman filter state in rectangular coordinates. You can obtain the 3-D position measurement using the constant velocity measurement function, `cvmeas`.

This example uses the coordinates, `x = 1,` `y = 3,` `z = 0` and a 3-D position measurement noise of `[1 0.2 0; 0.2 2 0; 0 0 1]`.

`detection = objectDetection(0, [1;3;0], 'MeasurementNoise', [1 0.2 0; 0.2 2 0; 0 0 1]);`

Use `initcvckf` to create a `trackingCKF` filter initialized at the provided position and using the measurement noise defined above.

`ckf = initcvckf(detection)`
```ckf = trackingCKF with properties: State: [6x1 double] StateCovariance: [6x6 double] StateTransitionFcn: @constvel ProcessNoise: [3x3 double] HasAdditiveProcessNoise: 0 MeasurementFcn: @cvmeas HasMeasurementWrapping: 1 MeasurementNoise: [3x3 double] HasAdditiveMeasurementNoise: 1 EnableSmoothing: 0 ```

Check the values of the state and the measurement noise. Verify that the filter state, `ckf.State`, has the same position components as the detection measurement, `detection.Measurement`.

`ckf.State`
```ans = 6×1 1 0 3 0 0 0 ```

Verify that the filter measurement noise, `ckf.MeasurementNoise`, is the same as the `detection.MeasurementNoise` values.

`ckf.MeasurementNoise`
```ans = 3×3 1.0000 0.2000 0 0.2000 2.0000 0 0 0 1.0000 ```

Create a constant velocity tracking cubature Kalman filter object, `trackingCKF`, from an initial detection report. The detection report is made from an initial 3-D position measurement of the Kalman filter state in spherical coordinates. You can obtain the 3D position measurement using the constant velocity measurement function, `cvmeas`.

This example uses the coordinates, az` = 30, e1 = 5, r = 100, rr = 4` and a measurement noise of `diag([2.5, 2.5, 0.5, 1].^2)`.

```meas = [30;5;100;4]; measNoise = diag([2.5, 2.5, 0.5, 1].^2);```

Use the `MeasurementParameters` property of the `detection` object to define the frame. When not defined, the fields of the `MeasurementParameters` struct use default values. In this example, sensor position, sensor velocity, orientation, elevation, and range rate flags are default.

```measParams = struct('Frame','spherical'); detection = objectDetection(0,meas,'MeasurementNoise',measNoise,... 'MeasurementParameters',measParams) ```
```detection = objectDetection with properties: Time: 0 Measurement: [4x1 double] MeasurementNoise: [4x4 double] SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: [1x1 struct] ObjectAttributes: {} ```

Use `initcvckf` to create a `trackingCKF` filter initialized at the provided position and using the measurement noise defined above.

`ckf = initcvckf(detection)`
```ckf = trackingCKF with properties: State: [6x1 double] StateCovariance: [6x6 double] StateTransitionFcn: @constvel ProcessNoise: [3x3 double] HasAdditiveProcessNoise: 0 MeasurementFcn: @cvmeas HasMeasurementWrapping: 1 MeasurementNoise: [4x4 double] HasAdditiveMeasurementNoise: 1 EnableSmoothing: 0 ```

Verify that the filter state produces the same measurement as above.

`meas2 = cvmeas(ckf.State, measParams)`
```meas2 = 4×1 30.0000 5.0000 100.0000 4.0000 ```

## 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

Constant velocity cubature Kalman filter for object tracking, returned as a `trackingCKF` object.

## Version History

Introduced in R2018b