diff --git a/perception/image_projection_based_fusion/README.md b/perception/image_projection_based_fusion/README.md index 207989d8a6f25..dba64a27232b1 100644 --- a/perception/image_projection_based_fusion/README.md +++ b/perception/image_projection_based_fusion/README.md @@ -22,23 +22,29 @@ current default value at autoware.universe for TIER IV Robotaxi are: - input_off ![roi_sync_image2](./docs/images/roi_sync_2.png) The subscription status of the message is signed with 'O'. + 1.if a pointcloud message is subscribed under the below condition: -| | pointcloud | roi msg 1 | roi msg 2 | roi msg 3 | + +| | pointcloud | roi msg 1 | roi msg 2 | roi msg 3 | | :-----------------: | :--------: | :-------: | :-------: | :-------: | -| subscription status | | O | O | O | +| subscription status | | O | O | O | If the roi msgs can be matched, fuse them and postprocess the pointcloud message. Otherwise, fuse the matched roi msgs and cache the pointcloud. + 2.if a pointcloud message is subscribed under the below condition: -| | pointcloud | roi msg 1 | roi msg 2 | roi msg 3 | + +| | pointcloud | roi msg 1 | roi msg 2 | roi msg 3 | | :-----------------: | :--------: | :-------: | :-------: | :-------: | -| subscription status | | O | O | | +| subscription status | | O | O | | if the roi msgs can be matched, fuse them and cache the pointcloud. + 3.if a pointcloud message is subscribed under the below condition: -| | pointcloud | roi msg 1 | roi msg 2 | roi msg 3 | + +| | pointcloud | roi msg 1 | roi msg 2 | roi msg 3 | | :-----------------: | :--------: | :-------: | :-------: | :-------: | -| subscription status | O | O | O | | +| subscription status | O | O | O | | If the roi msg 3 is subscribed before the next pointcloud message coming or timeout, fuse it if matched, otherwise wait for the next roi msg 3. If the roi msg 3 is not subscribed before the next pointcloud message coming or timeout, postprocess the pointcloud message as it is. diff --git a/perception/image_projection_based_fusion/package.xml b/perception/image_projection_based_fusion/package.xml index 5ff99af2ebb21..1648de210ec2c 100644 --- a/perception/image_projection_based_fusion/package.xml +++ b/perception/image_projection_based_fusion/package.xml @@ -6,6 +6,9 @@ The image_projection_based_fusion package Yukihiro Saito Yusuke Muramatsu + Shunsuke Miura + Yoshi Ri + badai nguyen Apache License 2.0 ament_cmake_auto diff --git a/planning/surround_obstacle_checker/README.md b/planning/surround_obstacle_checker/README.md index 51f090d7cc2e3..80bb56ff843c4 100644 --- a/planning/surround_obstacle_checker/README.md +++ b/planning/surround_obstacle_checker/README.md @@ -101,6 +101,8 @@ As mentioned in stop condition section, it prevents chattering by changing thres ## Parameters +{{ json_to_markdown("planning/surround_obstacle_checker/schema/surround_obstacle_checker.schema.json") }} + | Name | Type | Description | Default value | | :-------------------------------- | :------- | :------------------------------------------------------------------------------------- | :------------ | | `use_pointcloud` | `bool` | Use pointcloud as obstacle check | `true` | diff --git a/planning/surround_obstacle_checker/schema/surround_obstacle_checker.schema.json b/planning/surround_obstacle_checker/schema/surround_obstacle_checker.schema.json new file mode 100644 index 0000000000000..00a8ae6a12991 --- /dev/null +++ b/planning/surround_obstacle_checker/schema/surround_obstacle_checker.schema.json @@ -0,0 +1,397 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Parameters for Surround Obstacle Checker Node", + "type": "object", + "definitions": { + "surround_obstacle_checker": { + "type": "object", + "properties": { + "pointcloud": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding pointcloud", + "default": "false" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "unknown": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding unknown objects", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "car": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding car", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "truck": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding truck", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "bus": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding bus", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "trailer": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding trailer", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "motorcycle": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding motorcycle", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "bicycle": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding bicycle", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "f objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "pedestrian": { + "type": "object", + "properties": { + "enable_check": { + "type": "boolean", + "description": "enable to check surrounding pedestrian", + "default": "true" + }, + "surround_check_front_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_side_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + }, + "surround_check_back_distance": { + "type": "number", + "description": "If objects exist in this distance, transit to \"exist-surrounding-obstacle\" status. [m]", + "default": "0.5", + "minimum": 0.0 + } + }, + "required": [ + "enable_check", + "surround_check_front_distance", + "surround_check_side_distance", + "surround_check_back_distance" + ], + "additionalProperties": false + }, + "surround_check_hysteresis_distance": { + "type": "number", + "description": "If no object exists in this hysteresis distance added to the above distance, transit to \"non-surrounding-obstacle\" status [m]", + "default": "0.3", + "minimum": 0.0 + }, + "state_clear_time": { + "type": "number", + "description": "Threshold to clear stop state [s]", + "default": "2.0", + "minimum": 0.0 + }, + "stop_state_ego_speed": { + "type": "number", + "description": "Threshold to check ego vehicle stopped [m/s]", + "default": "0.1", + "minimum": 0.0 + }, + "publish_debug_footprints": { + "type": "boolean", + "description": "Publish vehicle footprint & footprints with surround_check_distance and surround_check_recover_distance offsets.", + "default": "true" + }, + "debug_footprint_label": { + "type": "string", + "description": "select the label for debug footprint", + "default": "car", + "enum": [ + "pointcloud", + "unknown", + "car", + "truck", + "bus", + "trailer", + "motorcycle", + "bicycle", + "pedestrian" + ] + } + }, + "required": [ + "pointcloud", + "unknown", + "car", + "truck", + "bus", + "trailer", + "motorcycle", + "bicycle", + "pedestrian", + "surround_check_hysteresis_distance", + "state_clear_time", + "stop_state_ego_speed", + "publish_debug_footprints", + "debug_footprint_label" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/surround_obstacle_checker" + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +}