Main Content

# currentTrackMetrics

Metrics for recent tracks

## Syntax

``metricsTable = currentTrackMetrics(errorMetrics)``

## Description

example

````metricsTable = currentTrackMetrics(errorMetrics)` returns a table of metrics, `metricsTable`, for every track identifier provided in the most recent update.```

## Examples

collapse all

Examine the assignments and errors for a system tracking two targets.

First, load the stored track data.

`load trackmetricex tracklog truthlog`

Create objects to analyze assignment and error metrics.

```tam = trackAssignmentMetrics; tem = trackErrorMetrics;```

Create the output variables.

```posRMSE = zeros(numel(tracklog),1); velRMSE = zeros(numel(tracklog),1); posANEES = zeros(numel(tracklog),1); velANEES = zeros(numel(tracklog),1);```

Loop over all tracks to:

• Extract the tracks and ground truth at the i th tracker update.

• Analyze and retrieve the current track-to-truth assignment.

• Analyze instantaneous error metrics over all tracks and truths.

```for i=1:numel(tracklog) tracks = tracklog{i}; truths = truthlog{i}; [trackAM,truthAM] = tam(tracks, truths); [trackIDs,truthIDs] = currentAssignment(tam); [posRMSE(i),velRMSE(i),posANEES(i),velANEES(i)] = ... tem(tracks,trackIDs,truths,truthIDs); end```

Show the track metrics table.

`trackMetricsTable(tam)`
```ans=4×15 table TrackID AssignedTruthID Surviving TotalLength DeletionStatus DeletionLength DivergenceStatus DivergenceCount DivergenceLength RedundancyStatus RedundancyCount RedundancyLength FalseTrackStatus FalseTrackLength SwapCount _______ _______________ _________ ___________ ______________ ______________ ________________ _______________ ________________ ________________ _______________ ________________ ________________ ________________ _________ 1 NaN false 1120 false 0 false 3 3 false 0 0 false 0 0 2 NaN false 1736 false 0 false 8 88 false 0 0 false 28 3 6 3 true 1138 false 0 false 4 314 false 1 28 false 0 2 8 2 true 662 false 0 false 2 29 false 1 169 false 28 0 ```

Show the truth metrics table.

`truthMetricsTable(tam)`
```ans=2×10 table TruthID AssociatedTrackID DeletionStatus TotalLength BreakStatus BreakCount BreakLength InCoverageArea EstablishmentStatus EstablishmentLength _______ _________________ ______________ ___________ ___________ __________ ___________ ______________ ___________________ ___________________ 2 8 false 2678 false 4 168 true true 56 3 6 false 2678 false 3 645 true true 84 ```

Plot the RMSE and ANEES error metrics.

```subplot(2,2,1) plot(posRMSE) title('Position Error') xlabel('tracker update') ylabel('RMSE (m)') subplot(2,2,2) plot(velRMSE) title('Velocity Error') xlabel('tracker update') ylabel('RMSE (m/s)') subplot(2,2,3) plot(posANEES) title('Position Error') xlabel('tracker update') ylabel('ANEES') subplot(2,2,4) plot(velANEES) title('Velocity Error') xlabel('tracker update') ylabel('ANEES')``` Show the current error metrics for each individual recorded track.

`currentTrackMetrics(tem)`
```ans=2×5 table TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 6 44.712 20.988 0.05974 0.31325 8 129.26 12.739 1.6745 0.2453 ```

Show the current error metrics for each individual recorded truth object.

`currentTruthMetrics(tem)`
```ans=2×5 table TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 129.26 12.739 1.6745 0.2453 3 44.712 20.988 0.05974 0.31325 ```

Show the cumulative error metrics for each individual recorded track.

`cumulativeTrackMetrics(tem)`
```ans=4×5 table TrackID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 1 117.69 43.951 0.58338 0.44127 2 129.7 42.8 0.81094 0.42509 6 371.35 87.083 4.5208 1.6952 8 130.45 53.914 1.0448 0.44813 ```

Show the cumulative error metrics for each individual recorded truth object.

`cumulativeTruthMetrics(tem)`
```ans=2×5 table TruthID posRMS velRMS posANEES velANEES _______ ______ ______ ________ ________ 2 258.21 65.078 2.2514 0.93359 3 134.41 48.253 0.96314 0.49183 ```

## Input Arguments

collapse all

Error metrics object, specified as a `trackErrorMetrics` System object™.

## Output Arguments

collapse all

Track error metrics, returned as a table:

• When you set the `ErrorFunctionFormat` property of the input error metrics object to `'built-in'`, the table columns depend on the setting of the `MotionModel` property.

 Motion Model Table Columns `'constvel'` `posRMSE`, `velRMSE`, `posANEES`, `velANEES` `'constacc'` `posRMSE`, `velRMSE`, `accRMSE`, `posANEES`, `velANEES`, `accANEES` `'constturn'` `posRMSE`, `velRMSE`, `yawRateRMSE`, `posANEES`, `velANEES`, `yawRateANEES`

RMSE and ANEES denote root mean squared error and average normalized estimation error squared of a track at the current time step. For example, the position RMSE and ANEES values for a track are defined respectively as:

`$\begin{array}{l}posRMSE=‖\Delta {p}_{i}‖=‖{p}_{track,i}-{p}_{truth,i}‖\\ posANEES=\Delta {p}_{i}^{T}{C}_{i}^{-1}\Delta {p}_{i}\end{array}$`

where ptrack, i is the position of track i, ptruth, i is the position of the truth associated to track i, and Ci is the position covariance of track i at the current time step. Note that the RMSE and ANEES values are only calculated for one time step using the `currentTrackMetrics`. The RMSE and ANEES values for other states (`vel`, `pos`, `acc`, and `yawRate`) are defined similarly.

• When you set the `ErrorFunctionFormat` property to `'custom'`, the table contains the arithmetically averaged values of the custom metrics output from the error function.

Introduced in R2018b

## Support

#### Sensor Fusion and Tracking for Autonomous Systems

Download white paper