Getting Started

The MHT Module is an add-on module to the Core Control Toolbox that implements Track-Oriented Multiple Hypothesis Testing. Remember that you must install GLPK and GLPKMEX before running the MHT functions.

A brief manual with background theory and references is included with the module.


Contents

Background on MHT

In many situations a sensor system must track multiple targets, like in rush hour traffic shown in the photo above. This leads to the problem of associating measurements with objects, or tracks. This is an essential element of any practical tracking system.

The following figure shows the general tracking problem. Two scans (concurrent sets) of data are shown. When the first scan is done there are two tracks. The uncertainty ellipsoids are shown and they are based on all previous information. In the $k-1$ scan three measurements are observed. 1 and 3 are within the ellipsoids of the two tracks but 2 is in both. It may be a measurement of either of the tracks or a spurious measurement. In scan $k$ four measurements are taken. Only measurement 4 is in one of the uncertainty ellipsoids. 3 might be interpreted as spurious but it is actually due to to a new track from a third vehicle that separates from the blue track. 1 is outside of the red ellipsoid but is actually a good measurement of the red track and (if correctly interpreted) indicates that the model is erroneous. 4 is a good measurement of the blue track and indicates that the model is valid.

Hypotheses are sets of tracks with consistent data, that is where no measurements are assigned to more than one track. The track-oriented approach recomputes the hypotheses using the newly updated tracks after each scan of data are received. Rather than maintaining, and expanding, hypotheses from scan to scan, the track-oriented approach discards the hypotheses formed on scan k-1. The tracks that survive pruning are predicted to the next scan k where new tracks are formed, using the new observations, and reformed into hypotheses. Except for the necessity to delete some tracks based upon low probability or N-scan pruning, no information is lost because the track scores, that are maintained, contain all the relevant statistical data.

The MHT Toolbox uses a powerful track pruning algorithm that does the pruning in one step. Because of its speed, ad-hoc pruning methods are not required leading to more robust and reliable results. The track management software is, as a consequence, quite simple.

Kalman Filters

The Core Control Toolbox includes Kalman Filters, Extended Kalman Filters and Unscented Kalman Filters. All of the Kalman Filters use a common code format:

    u.t     = t;
    u.y     = xS(3,k);
    u       = UKFPredict( u );
    u       = UKFUpdate( u );

where u is a MATLAB data structure. This allows the two filtering steps to be used independently. For example, you can run the predict step multiple times while waiting for a measurement update.

You can switch filter types by simply changing the UKF in the name to EKF. Each Kalman Filter can handle multiple measurement sources and measurements arriving at different times.

All three Kalman Filters can be used independently or as part of the MHT system. The usual practice is to test the filter with the dynamical model before incorporating it into the MHT management system. The toolbox makes this easy to do. For example, the toolbox includes MHT distance functions for Kalman Filters, Extended Kalman Filters and the UKF. The UKF automatically uses sigma points and does not require derivatives to be taken of the measurement functions or linearized versions of the measurement models.

Example: Automobile Simulation

This demonstration involves multiple cars passing another car which has a radar system that measures range, range rate and azimuth. The radar has a limited field of view and range.

There are two scripts associated with this demo. The first, UKFAutomobileDemo.m, tests the Unscented Kalman Filter that is to be used in the MHT system. This script has the car containing the radar and one other car that does a variety of maneuvers. It is, in essence, an MHT system with perfect measurement association. It is always a good idea to do this first to sort out the filter parameters and make sure that your filter works. The second script is the MHTAutomobileDemo.m that implements the MHT system.

The first figure shows the four cars in the simulation. At first the car with the radar cannot see any of the cars until one begins to pass.

The passing car is quickly acquired. The tree shows the "thinking" of the MHT algorithm. The circles show which measurements from each scan are assigned to the tracks, and the blue bars are the resulting score for each.

The MHT GUI provides the user with a snapshot of the process of the MHT system thinking. This makes it easy to validate its decisions and to debug your software.

Using MHT

You will need the following functions to build an MHT application.

for the automobile demonstration the functions are.

Once you get good results your can build your MHT function using the same simulation. A convenient way is to have one script to run the simulation and save the measurements and states in a mat file. Then you can use this for both the Kalman Filter and MHT tests.

MHT Simulations

Thorough testing of an MHT system requires a number of features in the simulation.

It is always a good idea to start by using the same model in your simulation as is in your Kalman filter. You should also not add false alarms or missed measurements until you have thoroughly tested your MHT code. Another useful debugging tool is to initialize new track Kalman Filter states exactly. Remove these simplifications one at time to validate your system. Your test script can have flags that allow you to switch these "features" on and off.



Back to main module page.