Skip to content

Commit 302674a

Browse files
authored
Merge pull request #1602 from tier4/feat/intersection-RT33896-2
fix(intersection): handle pass judge after red/arrow-signal to ignore NPCs after the signal changed to green again
2 parents cdeea66 + 8fc3897 commit 302674a

33 files changed

+5984
-3381
lines changed

planning/behavior_velocity_crosswalk_module/src/scene_crosswalk.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -1035,19 +1035,20 @@ bool CrosswalkModule::isRedSignalForPedestrians() const
10351035
crosswalk_.regulatoryElementsAs<const lanelet::TrafficLight>();
10361036

10371037
for (const auto & traffic_lights_reg_elem : traffic_lights_reg_elems) {
1038-
const auto traffic_signal_stamped =
1038+
const auto traffic_signal_stamped_opt =
10391039
planner_data_->getTrafficSignal(traffic_lights_reg_elem->id());
1040-
if (!traffic_signal_stamped) {
1040+
if (!traffic_signal_stamped_opt) {
10411041
continue;
10421042
}
1043+
const auto traffic_signal_stamped = traffic_signal_stamped_opt.value();
10431044

10441045
if (
10451046
planner_param_.traffic_light_state_timeout <
1046-
(clock_->now() - traffic_signal_stamped->stamp).seconds()) {
1047+
(clock_->now() - traffic_signal_stamped.stamp).seconds()) {
10471048
continue;
10481049
}
10491050

1050-
const auto & lights = traffic_signal_stamped->signal.elements;
1051+
const auto & lights = traffic_signal_stamped.signal.elements;
10511052
if (lights.empty()) {
10521053
continue;
10531054
}

planning/behavior_velocity_intersection_module/CMakeLists.txt

+9-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ pluginlib_export_plugin_description_file(behavior_velocity_planner plugins.xml)
88
find_package(OpenCV REQUIRED)
99

1010
ament_auto_add_library(${PROJECT_NAME} SHARED
11-
src/debug.cpp
1211
src/manager.cpp
12+
src/util.cpp
1313
src/scene_intersection.cpp
14+
src/intersection_lanelets.cpp
15+
src/object_manager.cpp
16+
src/decision_result.cpp
17+
src/scene_intersection_prepare_data.cpp
18+
src/scene_intersection_stuck.cpp
19+
src/scene_intersection_occlusion.cpp
20+
src/scene_intersection_collision.cpp
1421
src/scene_merge_from_private_road.cpp
15-
src/util.cpp
22+
src/debug.cpp
1623
)
1724

1825
target_link_libraries(${PROJECT_NAME}

planning/behavior_velocity_intersection_module/README.md

+59-27
Large diffs are not rendered by default.

planning/behavior_velocity_intersection_module/config/intersection.param.yaml

+5-4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
max_accel: -2.8
1313
max_jerk: -5.0
1414
delay_response_time: 0.5
15+
enable_pass_judge_before_default_stopline: false
1516

1617
stuck_vehicle:
1718
turn_direction:
@@ -23,8 +24,7 @@
2324
stuck_vehicle_velocity_threshold: 0.833
2425
# enable_front_car_decel_prediction: false
2526
# assumed_front_car_decel: 1.0
26-
timeout_private_area: 3.0
27-
enable_private_area_stuck_disregard: false
27+
disable_against_private_lane: true
2828

2929
yield_stuck:
3030
turn_direction:
@@ -37,7 +37,6 @@
3737
consider_wrong_direction_vehicle: false
3838
collision_detection_hold_time: 0.5
3939
min_predicted_path_confidence: 0.05
40-
keep_detection_velocity_threshold: 0.833
4140
velocity_profile:
4241
use_upstream: true
4342
minimum_upstream_velocity: 0.01
@@ -60,6 +59,8 @@
6059
object_expected_deceleration: 2.0
6160
ignore_on_red_traffic_light:
6261
object_margin_to_path: 2.0
62+
avoid_collision_by_acceleration:
63+
object_time_margin_to_collision_point: 4.0
6364

6465
occlusion:
6566
enable: false
@@ -73,7 +74,7 @@
7374
enable: false
7475
creep_velocity: 0.8333
7576
peeking_offset: -0.5
76-
occlusion_required_clearance_distance: 55
77+
occlusion_required_clearance_distance: 55.0
7778
possible_object_bbox: [1.5, 2.5]
7879
ignore_parked_vehicle_speed_threshold: 0.8333
7980
occlusion_detection_hold_time: 1.5

planning/behavior_velocity_intersection_module/docs/pass-judge-line.drawio.svg

+473
Loading

planning/behavior_velocity_intersection_module/package.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,19 @@
2222
<depend>autoware_auto_planning_msgs</depend>
2323
<depend>autoware_perception_msgs</depend>
2424
<depend>behavior_velocity_planner_common</depend>
25+
<depend>fmt</depend>
2526
<depend>geometry_msgs</depend>
2627
<depend>interpolation</depend>
2728
<depend>lanelet2_extension</depend>
2829
<depend>libopencv-dev</depend>
30+
<depend>magic_enum</depend>
2931
<depend>motion_utils</depend>
3032
<depend>nav_msgs</depend>
3133
<depend>pluginlib</depend>
3234
<depend>rclcpp</depend>
3335
<depend>route_handler</depend>
3436
<depend>rtc_interface</depend>
3537
<depend>tf2_geometry_msgs</depend>
36-
<depend>tier4_api_msgs</depend>
3738
<depend>tier4_autoware_utils</depend>
3839
<depend>tier4_planning_msgs</depend>
3940
<depend>vehicle_info_util</depend>

planning/behavior_velocity_intersection_module/scripts/ttc.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from threading import Lock
2222
import time
2323

24+
from PIL import Image
2425
import imageio
2526
import matplotlib
2627
import matplotlib.pyplot as plt
@@ -218,7 +219,19 @@ def plot_world(self):
218219
def cleanup(self):
219220
if self.args.save:
220221
kwargs_write = {"fps": self.args.fps, "quantizer": "nq"}
221-
imageio.mimsave("./" + self.args.gif + ".gif", self.images, **kwargs_write)
222+
max_size_total = 0
223+
max_size = None
224+
for image in self.images:
225+
(w, h) = image.size
226+
if w * h > max_size_total:
227+
max_size = image.size
228+
max_size_total = w * h
229+
reshaped = []
230+
for image in self.images:
231+
reshaped.append(image.resize(max_size))
232+
233+
imageio.mimsave("./" + self.args.gif + ".gif", reshaped, **kwargs_write)
234+
print("saved fig")
222235
rclpy.shutdown()
223236

224237
def on_plot_timer(self):
@@ -241,6 +254,7 @@ def on_plot_timer(self):
241254
if self.args.save:
242255
image = np.frombuffer(self.fig.canvas.tostring_rgb(), dtype="uint8")
243256
image = image.reshape(self.fig.canvas.get_width_height()[::-1] + (3,))
257+
image = Image.fromarray(image.astype(np.uint8))
244258
self.images.append(image)
245259

246260
def on_ego_ttc(self, msg):

0 commit comments

Comments
 (0)