Skip to content

object_merger#

Purpose#

object_merger is a package for merging detected objects from two methods by data association.

Inner-workings / Algorithms#

The successive shortest path algorithm is used to solve the data association problem (the minimum-cost flow problem). The cost is calculated by the distance between two objects and gate functions are applied to reset cost, s.t. the maximum distance, the maximum area and the minimum area.

Inputs / Outputs#

Input#

Name Type Description
input/object0 autoware_auto_perception_msgs::msg::DetectedObjects detection objects
input/object1 autoware_auto_perception_msgs::msg::DetectedObjects detection objects

Output#

Name Type Description
output/object autoware_auto_perception_msgs::msg::DetectedObjects modified Objects

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
base_link_frame_id double association frame
distance_threshold_list std::vector<double> Distance threshold for each class used in judging overlap. The class order depends on ObjectClassification.
generalized_iou_threshold std::vector<double> Generalized IoU threshold for each class

Tips#

  • False Positive Unknown object detected by clustering method sometimes raises the risk of sudden stop and interferes with Planning module. If ML based detector rarely misses objects, you can tune the parameter of object_merger and make Perception module ignore unknown objects.
    • If you want to remove unknown object close to large vehicle,
      • use HIGH distance_threshold_list
        • However, this causes high computational load
      • use LOW precision_threshold_to_judge_overlapped
      • use LOW generalized_iou_threshold
        • However, these 2 params raise the risk of overlooking object close to known object.

Assumptions / Known limits#

(Optional) Error detection and handling#

(Optional) Performance characterization#

(Optional) Future extensions / Unimplemented parts#

Data association algorithm was the same as that of multi_object_tracker, but the algorithm of multi_object_tracker was already updated.