From 57e925188959fd1e9494ab670176f0851e1c3075 Mon Sep 17 00:00:00 2001 From: satoshi-ota Date: Wed, 26 Feb 2025 18:50:55 +0900 Subject: [PATCH] fix(static_obstacle_avoidance): turn signal chattering Signed-off-by: satoshi-ota --- .../scene.hpp | 3 ++- .../src/scene.cpp | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp index 406c5ce924a5b..2586b6767282d 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -459,7 +460,7 @@ class StaticObstacleAvoidanceModule : public SceneModuleInterface bool safe_{true}; - std::optional ignore_signal_{std::nullopt}; + std::set ignore_signal_ids_; std::shared_ptr helper_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp index 948d0cdd58b4b..91ce34a410ea7 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp @@ -962,15 +962,13 @@ auto StaticObstacleAvoidanceModule::getTurnSignal( using autoware::motion_utils::calcSignedArcLength; const auto is_ignore_signal = [this](const UUID & uuid) { - if (!ignore_signal_.has_value()) { - return false; - } - - return ignore_signal_.value() == uuid; + return ignore_signal_ids_.find(toHexString(uuid)) != ignore_signal_ids_.end(); }; const auto update_ignore_signal = [this](const UUID & uuid, const bool is_ignore) { - ignore_signal_ = is_ignore ? std::make_optional(uuid) : std::nullopt; + if (is_ignore) { + ignore_signal_ids_.insert(toHexString(uuid)); + } }; const auto is_large_deviation = [this](const auto & path) { @@ -1509,6 +1507,7 @@ void StaticObstacleAvoidanceModule::initVariables() resetPathCandidate(); resetPathReference(); arrived_path_end_ = false; + ignore_signal_ids_.clear(); } void StaticObstacleAvoidanceModule::initRTCStatus()