diff --git a/perception/autoware_radar_object_tracker/README.md b/perception/autoware_radar_object_tracker/README.md index f9ca194de2491..5762fbc597fea 100644 --- a/perception/autoware_radar_object_tracker/README.md +++ b/perception/autoware_radar_object_tracker/README.md @@ -39,40 +39,13 @@ See more details in the [models.md](models.md). ## Parameters -### Node Parameters - -| Name | Type | Default Value | Description | -| ------------------------------------ | ------ | --------------------------- | --------------------------------------------------------------------------------------------------------------- | -| `publish_rate` | double | 10.0 | The rate at which to publish the output messages | -| `world_frame_id` | string | "map" | The frame ID of the world coordinate system | -| `enable_delay_compensation` | bool | false | Whether to enable delay compensation. If set to `true`, output topic is published by timer with `publish_rate`. | -| `tracking_config_directory` | string | "./config/tracking/" | The directory containing the tracking configuration files | -| `enable_logging` | bool | false | Whether to enable logging | -| `logging_file_path` | string | "/tmp/association_log.json" | The path to the file where logs should be written | -| `tracker_lifetime` | double | 1.0 | The lifetime of the tracker in seconds | -| `use_distance_based_noise_filtering` | bool | true | Whether to use distance based filtering | -| `minimum_range_threshold` | double | 70.0 | Minimum distance threshold for filtering in meters | -| `use_map_based_noise_filtering` | bool | true | Whether to use map based filtering | -| `max_distance_from_lane` | double | 5.0 | Maximum distance from lane for filtering in meters | -| `max_angle_diff_from_lane` | double | 0.785398 | Maximum angle difference from lane for filtering in radians | -| `max_lateral_velocity` | double | 5.0 | Maximum lateral velocity for filtering in m/s | -| `can_assign_matrix` | array | | An array of integers used in the data association algorithm | -| `max_dist_matrix` | array | | An array of doubles used in the data association algorithm | -| `max_area_matrix` | array | | An array of doubles used in the data association algorithm | -| `min_area_matrix` | array | | An array of doubles used in the data association algorithm | -| `max_rad_matrix` | array | | An array of doubles used in the data association algorithm | -| `min_iou_matrix` | array | | An array of doubles used in the data association algorithm | +{{ json_to_markdown("perception/autoware_radar_object_tracker/schema/data_association_matrix.schema.json") }} -See more details in the [models.md](models.md). - -### Tracker parameters - -Currently, this package supports the following trackers: +{{ json_to_markdown("perception/autoware_radar_object_tracker/schema/default_tracker.schema.json") }} -- `linear_motion_tracker` -- `constant_turn_rate_motion_tracker` +{{ json_to_markdown("perception/autoware_radar_object_tracker/schema/radar_object_tracker.schema.json") }} -Default settings for each tracker are defined in the [./config/tracking/](./config/tracking/), and described in [models.md](models.md). +{{ json_to_markdown("perception/autoware_radar_object_tracker/schema/simulation_tracker.schema.json") }} ## Assumptions / Known limits diff --git a/perception/autoware_radar_object_tracker/schema/data_association_matrix.schema.json b/perception/autoware_radar_object_tracker/schema/data_association_matrix.schema.json new file mode 100644 index 0000000000000..480a1ffda2fb8 --- /dev/null +++ b/perception/autoware_radar_object_tracker/schema/data_association_matrix.schema.json @@ -0,0 +1,168 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_radar_object_tracker parameter", + "type": "object", + "definitions": { + "autoware_radar_object_tracker": { + "type": "object", + "properties": { + "can_assign_matrix": { + "type": "array", + "description": "8x8 assignment matrix (Tracker x Measurement) with 0/1 values", + "items": { + "type": "integer", + "enum": [0, 1] + }, + "minItems": 64, + "maxItems": 64, + "default": [ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, + 0, 0, 0, 1, 1, 1 + ] + }, + "max_dist_matrix": { + "type": "array", + "description": "8x8 maximum distance matrix", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 64, + "maxItems": 64, + "default": [ + 4.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 4.0, 8.0, 8.0, 8.0, 8.0, 1.0, 1.0, 1.0, 4.0, + 6.0, 8.0, 8.0, 8.0, 1.0, 1.0, 1.0, 4.0, 6.0, 8.0, 8.0, 8.0, 1.0, 1.0, 1.0, 4.0, 6.0, + 8.0, 8.0, 8.0, 1.0, 1.0, 1.0, 3.0, 1.0, 1.0, 1.0, 1.0, 3.0, 3.0, 2.0, 3.0, 1.0, 1.0, + 1.0, 1.0, 3.0, 3.0, 2.0, 2.0, 1.0, 1.0, 1.0, 1.0, 3.0, 3.0, 2.0 + ] + }, + "max_area_matrix": { + "type": "array", + "description": "8x8 maximum area matrix", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 64, + "maxItems": 64, + "default": [ + 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 12.1, 12.1, 36.0, 60.0, 60.0, + 10000.0, 10000.0, 10000.0, 36.0, 12.1, 36.0, 60.0, 60.0, 10000.0, 10000.0, 10000.0, + 60.0, 12.1, 36.0, 60.0, 60.0, 10000.0, 10000.0, 10000.0, 60.0, 12.1, 36.0, 60.0, 60.0, + 10000.0, 10000.0, 10000.0, 2.5, 10000.0, 10000.0, 10000.0, 10000.0, 2.5, 2.5, 1.0, 2.5, + 10000.0, 10000.0, 10000.0, 10000.0, 2.5, 2.5, 1.0, 2.0, 10000.0, 10000.0, 10000.0, + 10000.0, 1.5, 1.5, 1.0 + ] + }, + "min_area_matrix": { + "type": "array", + "description": "8x8 minimum area matrix", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 64, + "maxItems": 64, + "default": [ + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.6, 3.6, 6.0, 10.0, 10.0, 0.0, 0.0, 0.0, 6.0, + 3.6, 6.0, 10.0, 10.0, 0.0, 0.0, 0.0, 10.0, 3.6, 6.0, 10.0, 10.0, 0.0, 0.0, 0.0, 10.0, + 3.6, 6.0, 10.0, 10.0, 0.0, 0.0, 0.0, 0.001, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.001, + 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.001, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1 + ] + }, + "max_rad_matrix": { + "type": "array", + "description": "8x8 maximum radius matrix", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 64, + "maxItems": 64, + "default": [ + 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 1.047, 1.047, 1.047, 1.047, 3.15, + 3.15, 3.15, 3.15, 1.047, 1.047, 1.047, 1.047, 3.15, 3.15, 3.15, 3.15, 1.047, 1.047, + 1.047, 1.047, 3.15, 3.15, 3.15, 3.15, 1.047, 1.047, 1.047, 1.047, 3.15, 3.15, 3.15, + 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, + 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15, 3.15 + ] + }, + "min_iou_matrix": { + "type": "array", + "description": "8x8 minimum IoU matrix", + "items": { + "type": "number" + }, + "minItems": 64, + "maxItems": 64, + "default": [ + 0.0001, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, -0.1, 0.2, 0.2, 0.2, 0.1, 0.1, 0.1, 0.1, + 0.2, 0.3, 0.3, 0.3, 0.1, 0.1, 0.1, 0.1, 0.2, 0.3, 0.3, 0.3, 0.1, 0.1, 0.1, 0.1, 0.2, + 0.3, 0.3, 0.3, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.0001 + ] + }, + "car_tracker": { + "type": "string", + "description": "Tracker type for cars", + "default": "pass_through_tracker" + }, + "truck_tracker": { + "type": "string", + "description": "Tracker type for trucks", + "default": "pass_through_tracker" + }, + "bus_tracker": { + "type": "string", + "description": "Tracker type for buses", + "default": "pass_through_tracker" + }, + "pedestrian_tracker": { + "type": "string", + "description": "Tracker type for pedestrians", + "default": "pass_through_tracker" + }, + "bicycle_tracker": { + "type": "string", + "description": "Tracker type for bicycles", + "default": "pass_through_tracker" + }, + "motorcycle_tracker": { + "type": "string", + "description": "Tracker type for motorcycles", + "default": "pass_through_tracker" + } + }, + "required": [ + "can_assign_matrix", + "max_dist_matrix", + "max_area_matrix", + "min_area_matrix", + "max_rad_matrix", + "min_iou_matrix", + "car_tracker", + "truck_tracker", + "bus_tracker", + "pedestrian_tracker", + "bicycle_tracker", + "motorcycle_tracker" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/autoware_radar_object_tracker" + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +} diff --git a/perception/autoware_radar_object_tracker/schema/default_tracker.schema.json b/perception/autoware_radar_object_tracker/schema/default_tracker.schema.json new file mode 100644 index 0000000000000..44db20b37e221 --- /dev/null +++ b/perception/autoware_radar_object_tracker/schema/default_tracker.schema.json @@ -0,0 +1,71 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_radar_object_tracker parameters", + "type": "object", + "definitions": { + "autoware_radar_object_tracker": { + "type": "object", + "properties": { + "car_tracker": { + "type": "string", + "description": "Tracker type for cars", + "default": "constant_turn_rate_motion_tracker" + }, + "truck_tracker": { + "type": "string", + "description": "Tracker type for trucks", + "default": "constant_turn_rate_motion_tracker" + }, + "bus_tracker": { + "type": "string", + "description": "Tracker type for buses", + "default": "constant_turn_rate_motion_tracker" + }, + "trailer_tracker": { + "type": "string", + "description": "Tracker type for trailers", + "default": "constant_turn_rate_motion_tracker" + }, + "pedestrian_tracker": { + "type": "string", + "description": "Tracker type for pedestrians", + "default": "constant_turn_rate_motion_tracker" + }, + "bicycle_tracker": { + "type": "string", + "description": "Tracker type for bicycles", + "default": "constant_turn_rate_motion_tracker" + }, + "motorcycle_tracker": { + "type": "string", + "description": "Tracker type for motorcycles", + "default": "constant_turn_rate_motion_tracker" + } + }, + "required": [ + "car_tracker", + "truck_tracker", + "bus_tracker", + "trailer_tracker", + "pedestrian_tracker", + "bicycle_tracker", + "motorcycle_tracker" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/autoware_radar_object_tracker" + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +} diff --git a/perception/autoware_radar_object_tracker/schema/radar_object_tracker.schema.json b/perception/autoware_radar_object_tracker/schema/radar_object_tracker.schema.json new file mode 100644 index 0000000000000..212ac5bebc7e3 --- /dev/null +++ b/perception/autoware_radar_object_tracker/schema/radar_object_tracker.schema.json @@ -0,0 +1,113 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_radar_object_tracker parameter", + "type": "object", + "definitions": { + "autoware_radar_object_tracker ": { + "type": "object", + "properties": { + "world_frame_id": { + "type": "string", + "description": "The frame ID of the world coordinate.", + "default": "map" + }, + "tracker_lifetime": { + "type": "number", + "description": "The lifetime of the tracker in seconds.", + "default": 1.0 + }, + "measurement_count_threshold": { + "type": "integer", + "description": "The number of measurements required to publish an object.", + "default": 3 + }, + "publish_rate": { + "type": "number", + "description": "The rate at which to publish the output.", + "default": 10.0 + }, + "enable_delay_compensation": { + "type": "boolean", + "description": "Whether to enable delay compensation.", + "default": true + }, + "enable_logging": { + "type": "boolean", + "description": "Whether to enable logging.", + "default": false + }, + "logging_file_path": { + "type": "string", + "description": "The path to the file where logs should be written.", + "default": "/tmp/association_log.json" + }, + "use_distance_based_noise_filtering": { + "type": "boolean", + "description": "Whether to enable distance-based noise filtering.", + "default": true + }, + "minimum_range_threshold": { + "type": "number", + "description": "Minimum distance threshold for filtering in meters.", + "default": 60.0 + }, + "use_map_based_noise_filtering": { + "type": "boolean", + "description": "Whether to enable map-based noise filtering.", + "default": true + }, + "max_distance_from_lane": { + "type": "number", + "description": "The maximum allowable distance from a lane for filtering, in meters.", + "default": 5.0 + }, + "max_angle_diff_from_lane": { + "type": "number", + "description": "The maximum angle difference from a lane for filtering, in radians.", + "default": 0.785398 + }, + "max_lateral_velocity": { + "type": "number", + "description": "The maximum lateral velocity for filtering, in meters per second.", + "default": 7.0 + }, + "tracking_config_directory": { + "type": "string", + "description": "The directory containing the tracking configuration.", + "default": "$(find-pkg-share radar_object_tracker)/config/tracking/" + } + }, + "required": [ + "world_frame_id", + "tracker_lifetime", + "measurement_count_threshold", + "publish_rate", + "enable_delay_compensation", + "enable_logging", + "logging_file_path", + "use_distance_based_noise_filtering", + "minimum_range_threshold", + "use_map_based_noise_filtering", + "max_distance_from_lane", + "max_angle_diff_from_lane", + "max_lateral_velocity", + "tracking_config_directory" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/autoware_radar_object_tracker " + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +} diff --git a/perception/autoware_radar_object_tracker/schema/simulation_tracker.schema.json b/perception/autoware_radar_object_tracker/schema/simulation_tracker.schema.json new file mode 100644 index 0000000000000..966f4cbcc3476 --- /dev/null +++ b/perception/autoware_radar_object_tracker/schema/simulation_tracker.schema.json @@ -0,0 +1,65 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_radar_object_tracker parameter", + "type": "object", + "definitions": { + "autoware_radar_object_tracker ": { + "type": "object", + "properties": { + "car_tracker": { + "type": "string", + "description": "The tracker type used for cars.", + "default": "pass_through_tracker" + }, + "truck_tracker": { + "type": "string", + "description": "The tracker type used for trucks.", + "default": "pass_through_tracker" + }, + "bus_tracker": { + "type": "string", + "description": "The tracker type used for buses.", + "default": "pass_through_tracker" + }, + "pedestrian_tracker": { + "type": "string", + "description": "The tracker type used for pedestrians.", + "default": "pass_through_tracker" + }, + "bicycle_tracker": { + "type": "string", + "description": "The tracker type used for bicycles.", + "default": "pass_through_tracker" + }, + "motorcycle_tracker": { + "type": "string", + "description": "The tracker type used for motorcycles.", + "default": "pass_through_tracker" + } + }, + "required": [ + "car_tracker", + "truck_tracker", + "bus_tracker", + "pedestrian_tracker", + "bicycle_tracker", + "motorcycle_tracker" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/autoware_radar_object_tracker " + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +}