# initcackf

Create constant acceleration tracking cubature Kalman filter from detection report

## Syntax

``ckf = initcackf(detection)``

## Description

example

````ckf = initcackf(detection)` initializes a constant acceleration cubature Kalman filter for object tracking based on information provided in an `objectDetection` object, `detection`.The function initializes a constant acceleration state with the same convention as `constacc` and `cameas`, [x; vx; ax; y; vy; ay; z; vz; az].```

## Examples

collapse all

Create a constant acceleration 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 acceleration measurement function, `cameas`.

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 `initcackf` to create a `trackingCKF` filter initialized at the provided position and using the measurement noise defined above.

`ckf = initcackf(detection)`
```ckf = trackingCKF with properties: State: [9x1 double] StateCovariance: [9x9 double] StateTransitionFcn: @constacc ProcessNoise: [3x3 double] HasAdditiveProcessNoise: 0 MeasurementFcn: @cameas 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 = 9×1 1 0 0 3 0 0 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 acceleration 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 3-D position measurement using the constant acceleration measurement function, `cameas`.

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 MeasurementParameters: [1x1 struct] ObjectAttributes: {} ```

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

`ckf = initcackf(detection)`
```ckf = trackingCKF with properties: State: [9x1 double] StateCovariance: [9x9 double] StateTransitionFcn: @constacc ProcessNoise: [3x3 double] HasAdditiveProcessNoise: 0 MeasurementFcn: @cameas MeasurementNoise: [4x4 double] HasAdditiveMeasurementNoise: 1 EnableSmoothing: 0 ```

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

`meas2 = cameas(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 acceleration cubature Kalman filter for object tracking, returned as a `trackingCKF` object.

## Algorithms

• The function computes the process noise matrix assuming a unit standard deviation for the acceleration change rate.

• You can use this function as the `FilterInitializationFcn` property of `trackerTOMHT` and `trackerGNN` System objects.

## Extended Capabilities

### C/C++ Code GenerationGenerate C and C++ code using MATLAB® Coder™.

Introduced in R2018b