Skip to content

multi_object_tracker#

Purpose#

The results of the detection are processed by a time series. The main purpose is to give ID and estimate velocity.

Inner-workings / Algorithms#

This multi object tracker consists of data association and EKF.

multi_object_tracker_overview

Data association#

The data association performs maximum score matching, called min cost max flow problem. In this package, mussp[1] is used as solver. In addition, when associating observations to tracers, data association have gates such as the area of the object from the BEV, Mahalanobis distance, and maximum distance, depending on the class label.

EKF Tracker#

Models for pedestrians, bicycles (motorcycles), cars and unknown are available. The pedestrian or bicycle tracker is running at the same time as the respective EKF model in order to enable the transition between pedestrian and bicycle tracking. For big vehicles such as trucks and buses, we have separate models for passenger cars and large vehicles because they are difficult to distinguish from passenger cars and are not stable. Therefore, separate models are prepared for passenger cars and big vehicles, and these models are run at the same time as the respective EKF models to ensure stability.

Inputs / Outputs#

Input#

Multiple inputs are pre-defined in the input channel parameters (described below) and the inputs can be configured

Name Type Description
selected_input_channels std::vector<std::string> array of channel names
  • default value: selected_input_channels:="['detected_objects']", merged DetectedObject message
  • multi-input example: selected_input_channels:="['lidar_centerpoint','camera_lidar_fusion','detection_by_tracker','radar_far']"

Output#

Name Type Description
~/output autoware_perception_msgs::msg::TrackedObjects tracked objects

Parameters#

Input Channel parameters#

Available input channels are defined in input_channels.param.yaml.

Name Type Description
<channel> the name of channel
<channel>.topic autoware_perception_msgs::msg::DetectedObjects detected objects
<channel>.can_spawn_new_tracker bool a switch allow to spawn a new tracker
<channel>.optional.name std::string channel name for analysis
<channel>.optional.short_name std::string short name for visualization

Core Parameters#

Node parameters are defined in multi_object_tracker_node.param.yaml and association parameters are defined in data_association_matrix.param.yaml.

Node parameters#

Name Type Description
***_tracker string EKF tracker name for each class
world_frame_id double object kinematics definition frame
enable_delay_compensation bool if True, tracker use timers to schedule publishers and use prediction step to extrapolate object state at desired timestamp
publish_rate double Timer frequency to output with delay compensation
publish_processing_time bool enable to publish debug message of process time information
publish_tentative_objects bool enable to publish tentative tracked objects, which have lower confidence
publish_debug_markers bool enable to publish debug markers, which indicates association of multi-inputs, existence probability of each detection

Association parameters#

Name Type Description
can_assign_matrix double Assignment table for data association
max_dist_matrix double Maximum distance table for data association
max_area_matrix double Maximum area table for data association
min_area_matrix double Minimum area table for data association
max_rad_matrix double Maximum angle table for data association

Assumptions / Known limits#

See the model explanations.

(Optional) Error detection and handling#

(Optional) Performance characterization#

Evaluation of muSSP#

According to our evaluation, muSSP is faster than normal SSP when the matrix size is more than 100.

Execution time for varying matrix size at 95% sparsity. In real data, the sparsity was often around 95%. mussp_evaluation1

Execution time for varying the sparsity with matrix size 100. mussp_evaluation2

This package makes use of external code.

Name License Original Repository
muSSP Apache-2.0 https://github.com/yu-lab-vt/muSSP

[1] C. Wang, Y. Wang, Y. Wang, C.-t. Wu, and G. Yu, “muSSP: Efficient Min-cost Flow Algorithm for Multi-object Tracking,” NeurIPS, 2019

(Optional) Future extensions / Unimplemented parts#