3D Multi-Object Tracking

applying a 3D multi-object tracker on a self-driving car

Giving IDs to objects found by object detection and tracking the states of these objects over time is object tracking. Multi-object tracking is simultaneously tracking multiple of these objects and their bounding boxes. Many approaches leverage traditional state estimation algorithms like Kalman filters. There are also deep learning solutions, but for this project we will stick to Kalman filters.

I wrote a wrapper for a 3D multi-object tracker as a ROS 2 package which performs tracking-by-detection to assign unique IDs to detected objects. The software estimates the states of objects using a Kalman filter with a constant acceleration model and then applies greedy matching to match bounding boxes. Source code for this package can be found in my GitHub repo. There is also a documentation about the same software which I have integrated into Nova’s perception stack. Credit goes to this repo for writing the actual algorithm.

Here is an example on the KITTI tracking dataset:

A video demonstrating a self-driving car from Nova using my software to track a bicycle around a parking lot at UTD is available below: