In the TOMHT tracker, how do I change the state vector and add more filters?

2 views (last 30 days)
We are working with the TOMHT tracker, and I noticed that the state vector is only (x, y, vx, vy). This seems very limiting, but I can't figure out how to modify this. Is there any documentation on this, or can somebody explain? For example, I would like to add ax and ay to the state vector and implement an additional filter that predicts constant accelaration. Furthermore, Is there a more detailed description on the TOMHT tracker?
Thank you very much,
Joost

Accepted Answer

Elad Kivelevitch
Elad Kivelevitch on 15 Sep 2021
The default state depends on the FilterInitializationFcn property, which is initcvekf. initcvekf initializes a constant velocity (CV) extended Kalman filter (EKF). You can choose from a variety of other init functions by using tab-completion in the MATLAB Window:
trackerTOMHT('FilterInitializationFcn', @init<TAB % <TAB means hit the tab button here
This will give you a wide range of initialization functions. One of them, initcaekf, initializes filters based on the constant acceleration (CA) extended Kalman filter (EKF).
Please use the documentation of each function to know how the state vector is defined and which motion and measurement models are used.
Additionally, You can always create your own initalization functions, and in each one of them you can define the filter to use and which motion and measurement models to use. Please do not feel restricted to use the built-in motion and measurement models or the initialization functions that ship with the product.
  7 Comments
Joost
Joost on 20 Sep 2021
Edited: Joost on 20 Sep 2021
Thank you Prashant,
this definitily helped a lot. I have some more questions about this prediction for the TOMHT tracker: ("For this, the tracker will first predict the track to the detection time and then calculate the likelihood of association.").
  1. Does it use for this prediction the same filter as in step 11 of the algorithm logic flow? Is this prediction also corrected by the filter? I assume that it is, and the outcome of this is used to score the branch?
  2. And is this prediction done from the state & covariance matrix resulting from the previous prediction of this branch? (Or is it done from the state & covariance matrix of the track?)
  3. And In step 11, how does it combine the final scores of each branch to a new state & covariance matrix of the track? I assume, that the previous predicted and corrected states of each branch that were used for the branch scoring, are predicted even further to the input time, and the weighted average of these predictions is taken. But if you use an IMM filter, this seems difficult because you are now predicting ahead of the measurement, so there is no way to weight the different filters used by the IMM.
Kind Regards,
Joost
Prashant Arora
Prashant Arora on 21 Sep 2021
Hi Joost,
In general, data association for TOMHT is carried out at the branch level. Every branch carries its own filter (with the same filter type and initial state as specified by FilterInitializationFcn).
  1. There are essentially two types of "prediction". The first one is to calculate association likelihood with every detection that can into the step. This prediction is NOT followed by a correction and the filter is brought back to its original state. The second type of prediction is when the branch must be updated with a particular detection. In that case, we perform a prediction + correction AND yes, its outcome is used to update the branch score. For every prediction, correction or likelihood, distance calculation, we use the same filter as initialized by FilterInitializationFcn. The tracker essentially calls these methods on the filter. For example, if your FilterInitializationFcn is outputting an IMM filter, every branch is estimated using an IMM filter.
  2. Yes, every branch maintains its own filter and estimate, which is used for prediction.
  3. This is correct. Every branch is predicted to the input time and the "output" tracks is the weighted mean (Gaussian-mixture reduction) of individual branch estimates. If every branch is using an IMM filter, the model probabilities of motion models per barnch will also be "predicted" to input time. The IMM filter standard model probabilities update is split into two parts - prediction and correction. This is provided in the reference literature [1] for IMM filter. During prediction, we predict them using prior information provided via "transition probabilities". This essentially captures the effect of "dT" on the probabilities in the absence of measurement. If measurement is indeed available, we can simply "correct" these predicted probabilities using the measurement likelihood.
Hope this helps. All the algorithms are implemented using MATLAB code. You should be able to validate most of what I said by opening the respective files.
Thanks,
Prashant

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!