roi_cluster_fusion
Purpose
The roi_cluster_fusion
is a package for filtering clusters that are less likely to be objects and overwriting labels of clusters with that of Region Of Interests (ROIs) by a 2D object detector.
Inner-workings / Algorithms
The clusters are projected onto image planes, and then if the ROIs of clusters and ROIs by a detector are overlapped, the labels of clusters are overwritten with that of ROIs by detector. Intersection over Union (IoU) is used to determine if there are overlaps between them.

Name |
Type |
Description |
input |
tier4_perception_msgs::msg::DetectedObjectsWithFeature |
clustered pointcloud |
input/camera_info[0-7] |
sensor_msgs::msg::CameraInfo |
camera information to project 3d points onto image planes |
input/rois[0-7] |
tier4_perception_msgs::msg::DetectedObjectsWithFeature |
ROIs from each image |
input/image_raw[0-7] |
sensor_msgs::msg::Image |
images for visualization |
Output
Name |
Type |
Description |
output |
tier4_perception_msgs::msg::DetectedObjectsWithFeature |
labeled cluster pointcloud |
~/debug/image_raw[0-7] |
sensor_msgs::msg::Image |
images for visualization |
Parameters
Core Parameters
Name |
Type |
Description |
fusion_distance |
double |
If the detected object's distance to frame_id is less than the threshold, the fusion will be processed |
trust_object_distance |
double |
if the detected object's distance is less than the trust_object_distance , trust_object_iou_mode will be used, otherwise non_trust_object_iou_mode will be used |
trust_object_iou_mode |
string |
select mode from 3 options {iou , iou_x , iou_y } to calculate IoU in range of [0 , trust_distance ]. iou : IoU along x-axis and y-axis iou_x : IoU along x-axis iou_y : IoU along y-axis |
non_trust_object_iou_mode |
string |
the IOU mode using in range of [trust_distance , fusion_distance ] if trust_distance < fusion_distance |
use_cluster_semantic_type |
bool |
if false , the labels of clusters are overwritten by UNKNOWN before fusion |
only_allow_inside_cluster |
bool |
if true , the only clusters contained inside RoIs by a detector |
roi_scale_factor |
double |
the scale factor for offset of detector RoIs if only_allow_inside_cluster=true |
iou_threshold |
double |
the IoU threshold to overwrite a label of clusters with a label of roi |
unknown_iou_threshold |
double |
the IoU threshold to fuse cluster with unknown label of roi |
remove_unknown |
bool |
if true , remove all UNKNOWN labeled objects from output |
rois_number |
int |
the number of input rois |
debug_mode |
bool |
If true , subscribe and publish images for visualization. |
Assumptions / Known limits
(Optional) Error detection and handling
(Optional) References/External links
(Optional) Future extensions / Unimplemented parts