Skip to content

Commit f48deca

Browse files
committed
ignore occlusions only if the traffic light is red
Signed-off-by: Maxime CLEMENT <maxime.clement@tier4.jp>
1 parent b681fe7 commit f48deca

File tree

8 files changed

+138
-24
lines changed

8 files changed

+138
-24
lines changed

planning/behavior_velocity_crosswalk_module/README.md

+44
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,50 @@ document.
193193
| `max_slow_down_accel` | [m/ss] | double | minimum accel deceleration for safe brake |
194194
| `no_relax_velocity` | [m/s] | double | if the current velocity is less than X m/s, ego always stops at the stop position(not relax deceleration constraints) |
195195

196+
### Occlusion
197+
198+
This feature makes ego slow down for a crosswalk that is occluded.
199+
200+
Occlusion of the crosswalk is determined using the occupancy grid.
201+
An occlusion is a square of size `min_size` of occluded cells
202+
(i.e., their values are between `free_space_max` and `occupied_min`)
203+
of size `min_size`.
204+
If an occlusion is found within range of the crosswalk,
205+
then the velocity limit at the crosswalk is set to `slow_down_velocity` (or more to not break limits set by `max_slow_down_jerk` and `max_slow_down_accel`).
206+
The range is calculated from the intersection between the ego path and the crosswalk and is equal to the time taken by ego to reach the crosswalk times the `occluded_object_velocity`.
207+
This range is meant to be large when ego is far from the crosswalk and small when ego is close.
208+
209+
In order to avoid flickering decisions, a time buffer can be used such that the decision to add (or remove) the slow down is only taken
210+
after an occlusion is detected (or not detected) for a consecutive time defined by the `time_buffer` parameter.
211+
212+
To ignore occlusions when the pedestrian light is red, `ignore_with_red_traffic_light` should be set to true.
213+
214+
To ignore temporary occlusions caused by moving objects,
215+
`ignore_behind_predicted_objects` should be set to true.
216+
By default, occlusions behind an object with velocity higher than `ignore_velocity_thresholds.default` are ignored.
217+
This velocity threshold can be specified depending on the object type by specifying the object class label and velocity threshold in the parameter lists `ignore_velocity_thresholds.custom_labels` and `ignore_velocity_thresholds.custom_thresholds`.
218+
To inflate the masking behind objects, their footprint can be made bigger using `extra_predicted_objects_size`.
219+
220+
<figure markdown>
221+
![stuck_vehicle_attention_range](docs/with_occlusion.svg){width=600}
222+
</figure>
223+
224+
| Parameter | Unit | Type | Description |
225+
| ---------------------------------------------- | ----- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
226+
| `enable` | [-] | bool | if true, ego will slow down around crosswalks that are occluded |
227+
| `occluded_object_velocity` | [m/s] | double | assumed velocity of objects that may come out of the occluded space |
228+
| `slow_down_velocity` | [m/s] | double | slow down velocity |
229+
| `time_buffer` | [s] | double | consecutive time with/without an occlusion to add/remove the slowdown |
230+
| `min_size` | [m] | double | minimum size of an occlusion (square side size) |
231+
| `free_space_max` | [-] | double | maximum value of a free space cell in the occupancy grid |
232+
| `occupied_min` | [-] | double | minimum value of an occupied cell in the occupancy grid |
233+
| `ignore_with_red_traffic_light` | [-] | bool | if true, occlusions at crosswalks with traffic lights are ignored |
234+
| `ignore_behind_predicted_objects` | [-] | bool | if true, occlusions behind predicted objects are ignored |
235+
| `ignore_velocity_thresholds.default` | [m/s] | double | occlusions are only ignored behind objects with a higher or equal velocity |
236+
| `ignore_velocity_thresholds.custom_labels` | [-] | string list | labels for which to define a non-default velocity threshold (see `autoware_auto_perception_msgs::msg::ObjectClassification` for all the labels) |
237+
| `ignore_velocity_thresholds.custom_thresholds` | [-] | double list | velocities of the custom labels |
238+
| `extra_predicted_objects_size` | [m] | double | extra size added to the objects for masking the occlusions |
239+
196240
### Others
197241

198242
In the `common` namespace, the following parameters are defined.

planning/behavior_velocity_crosswalk_module/config/crosswalk.param.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
min_size: 0.5 # [m] minimum size of an occlusion (square side size)
7979
free_space_max: 43 # [-] maximum value of a free space cell in the occupancy grid
8080
occupied_min: 58 # [-] minimum value of an occupied cell in the occupancy grid
81-
ignore_with_traffic_light: true # [-] if true, occlusions at crosswalks with traffic lights are ignored
81+
ignore_with_red_traffic_light: true # [-] if true, occlusions at crosswalks with traffic lights are ignored
8282
ignore_behind_predicted_objects: true # [-] if true, occlusions behind predicted objects are ignored
8383
ignore_velocity_thresholds:
8484
default: 0.5 # [m/s] occlusions are only ignored behind objects with a higher or equal velocity

0 commit comments

Comments
 (0)