Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(multi_object_tracker): rework parameters #7333

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 7 additions & 32 deletions perception/multi_object_tracker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,41 +65,16 @@ Multiple inputs are pre-defined in the input channel parameters (described below

### Input Channel parameters

Available input channels are defined in [input_channels.param.yaml](config/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 |
{{ json_to_markdown("perception/multi_object_tracker/schema/input_channels.schema.json") }}

### Core Parameters

Node parameters are defined in [multi_object_tracker_node.param.yaml](config/multi_object_tracker_node.param.yaml) and association parameters are defined in [data_association_matrix.param.yaml](config/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 |
{{ json_to_markdown("perception/multi_object_tracker/schema/multi_object_tracker_node.schema.json") }}
{{ json_to_markdown("perception/multi_object_tracker/schema/data_association_matrix.schema.json") }}

#### Simulation parameters

{{ json_to_markdown("perception/multi_object_tracker/schema/simulation_tracker.schema.json") }}

## Assumptions / Known limits

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Parameters for Data Association Matrix",
"type": "object",
"definitions": {
"data_association_matrix": {
"type": "object",
"properties": {
"can_assign_matrix": {
"type": "array",
"description": "Assignment table for data association.",
"items": {
"type": "integer"
}
},
"max_dist_matrix": {
"type": "array",
"description": "Maximum distance table for data association.",
"items": {
"type": "number"
}
},
"max_area_matrix": {
"type": "array",
"description": "Maximum area table for data association.",
"items": {
"type": "number"
}
},
"min_area_matrix": {
"type": "array",
"description": "Minimum area table for data association.",
"items": {
"type": "number"
}
},
"max_rad_matrix": {
"type": "array",
"description": "Maximum angle table for data association.",
"items": {
"type": "number"
}
},
"min_iou_matrix": {
"type": "array",
"description": "A matrix that represents the minimum Intersection over Union (IoU) limit allowed for assignment.",
"items": {
"type": "number"
}
}
},
"required": [
"can_assign_matrix",
"max_dist_matrix",
"max_area_matrix",
"min_area_matrix",
"max_rad_matrix",
"min_iou_matrix"
]
}
},
"properties": {
"/**": {
"type": "object",
"properties": {
"ros__parameters": {
"$ref": "#/definitions/data_association_matrix"
}
},
"required": ["ros__parameters"]
}
},
"required": ["/**"]
}
80 changes: 80 additions & 0 deletions perception/multi_object_tracker/schema/input_channels.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Parameters for Input Channels",
"type": "object",
"definitions": {
"input_channel": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "The ROS topic name for the input channel."
},
"can_spawn_new_tracker": {
"type": "boolean",
"description": "Indicates if the input channel can spawn new trackers."
},
"optional": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the input channel."
},
"short_name": {
"type": "string",
"description": "The short name of the input channel."
}
}
}
},
"required": ["topic", "can_spawn_new_tracker"]
}
},
"properties": {
"/**": {
"type": "object",
"properties": {
"ros__parameters": {
"type": "object",
"properties": {
"input_channels": {
"type": "object",
"properties": {
"detected_objects": { "$ref": "#/definitions/input_channel" },
"lidar_clustering": { "$ref": "#/definitions/input_channel" },
"lidar_centerpoint": { "$ref": "#/definitions/input_channel" },
"lidar_centerpoint_validated": { "$ref": "#/definitions/input_channel" },
"lidar_apollo": { "$ref": "#/definitions/input_channel" },
"lidar_apollo_validated": { "$ref": "#/definitions/input_channel" },
"lidar_pointpainitng": { "$ref": "#/definitions/input_channel" },

Check warning on line 50 in perception/multi_object_tracker/schema/input_channels.schema.json

View workflow job for this annotation

GitHub Actions / spell-check-differential

Unknown word (pointpainitng)
"lidar_pointpainting_validated": { "$ref": "#/definitions/input_channel" },
"camera_lidar_fusion": { "$ref": "#/definitions/input_channel" },
"detection_by_tracker": { "$ref": "#/definitions/input_channel" },
"radar": { "$ref": "#/definitions/input_channel" },
"radar_far": { "$ref": "#/definitions/input_channel" }
},
"required": [
"detected_objects",
"lidar_clustering",
"lidar_centerpoint",
"lidar_centerpoint_validated",
"lidar_apollo",
"lidar_apollo_validated",
"lidar_pointpainitng",

Check warning on line 64 in perception/multi_object_tracker/schema/input_channels.schema.json

View workflow job for this annotation

GitHub Actions / spell-check-differential

Unknown word (pointpainitng)
"lidar_pointpainting_validated",
"camera_lidar_fusion",
"detection_by_tracker",
"radar",
"radar_far"
]
}
},
"required": ["input_channels"]
}
},
"required": ["ros__parameters"]
}
},
"required": ["/**"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Parameters for Multi Object Tracker Node",
"type": "object",
"definitions": {
"multi_object_tracker_node": {
"type": "object",
"properties": {
"car_tracker": {
"type": "string",
"description": "Tracker model for car class.",
"default": "multi_vehicle_tracker"
},
"truck_tracker": {
"type": "string",
"description": "Tracker model for truck class.",
"default": "multi_vehicle_tracker"
},
"bus_tracker": {
"type": "string",
"description": "Tracker model for bus class.",
"default": "multi_vehicle_tracker"
},
"trailer_tracker": {
"type": "string",
"description": "Tracker model for trailer class.",
"default": "multi_vehicle_tracker"
},
"pedestrian_tracker": {
"type": "string",
"description": "Tracker model for pedestrian class.",
"default": "pedestrian_and_bicycle_tracker"
},
"bicycle_tracker": {
"type": "string",
"description": "Tracker model for bicycle class.",
"default": "pedestrian_and_bicycle_tracker"
},
"motorcycle_tracker": {
"type": "string",
"description": "Tracker model for motorcycle class.",
"default": "pedestrian_and_bicycle_tracker"
},
"publish_rate": {
"type": "number",
"description": "Timer frequency to output with delay compensation.",
"default": 10.0
},
"world_frame_id": {
"type": "string",
"description": "Object kinematics definition frame.",
"default": "map"
},
"enable_delay_compensation": {
"type": "boolean",
"description": "If True, tracker use timers to schedule publishers and use prediction step to extrapolate object state at desired timestamp.",
"default": false
},
"publish_processing_time": {
"type": "boolean",
"description": "Enable to publish debug message of process time information.",
"default": false
},
"publish_tentative_objects": {
"type": "boolean",
"description": "Enable to publish tentative tracked objects, which have lower confidence.",
"default": false
},
"publish_debug_markers": {
"type": "boolean",
"description": "Enable to publish debug markers, which indicates association of multi-inputs, existence probability of each detection.",
"default": false
},
"diagnostics_warn_delay": {
"type": "number",
"description": "Delay threshold for warning diagnostics in seconds.",
"default": 0.5
},
"diagnostics_error_delay": {
"type": "number",
"description": "Delay threshold for error diagnostics in seconds.",
"default": 1.0
}
},
"required": [
"car_tracker",
"truck_tracker",
"bus_tracker",
"trailer_tracker",
"pedestrian_tracker",
"bicycle_tracker",
"motorcycle_tracker",
"publish_rate",
"world_frame_id",
"enable_delay_compensation",
"publish_processing_time",
"publish_tentative_objects",
"publish_debug_markers",
"diagnostics_warn_delay",
"diagnostics_error_delay"
]
}
},
"properties": {
"/**": {
"type": "object",
"properties": {
"ros__parameters": {
"$ref": "#/definitions/multi_object_tracker_node"
}
},
"required": ["ros__parameters"]
}
},
"required": ["/**"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Parameters for Simulation Tracker Node",
"type": "object",
"definitions": {
"simulation_tracker_node": {
"type": "object",
"properties": {
"car_tracker": {
"type": "string",
"description": "Tracker model for car class.",
"default": "pass_through_tracker"
},
"truck_tracker": {
"type": "string",
"description": "Tracker model for truck class.",
"default": "pass_through_tracker"
},
"bus_tracker": {
"type": "string",
"description": "Tracker model for bus class.",
"default": "pass_through_tracker"
},
"pedestrian_tracker": {
"type": "string",
"description": "Tracker model for pedestrian class.",
"default": "pass_through_tracker"
},
"bicycle_tracker": {
"type": "string",
"description": "Tracker model for bicycle class.",
"default": "pass_through_tracker"
},
"motorcycle_tracker": {
"type": "string",
"description": "Tracker model for motorcycle class.",
"default": "pass_through_tracker"
}
},
"required": [
"car_tracker",
"truck_tracker",
"bus_tracker",
"pedestrian_tracker",
"bicycle_tracker",
"motorcycle_tracker"
]
}
},
"properties": {
"/**": {
"type": "object",
"properties": {
"ros__parameters": {
"$ref": "#/definitions/simulation_tracker_node"
}
},
"required": ["ros__parameters"]
}
},
"required": ["/**"]
}
Loading