Skip to content

Commit e6709ee

Browse files
rej55kyoichi-sugaharatkimura4
authored
fix(behavior_velocity_planner_common): sync activation when safety status is set (#5697)
* fix(behavior_velocity_planner_common): sync activation when safety status is set Signed-off-by: Fumiya Watanabe <rej55.g@gmail.com> * Update planning/behavior_velocity_planner_common/include/behavior_velocity_planner_common/scene_module_interface.hpp Co-authored-by: Kyoichi Sugahara <kyoichi.sugahara@tier4.jp> * Update planning/behavior_velocity_planner_common/include/behavior_velocity_planner_common/scene_module_interface.hpp Co-authored-by: Tomoya Kimura <tomoya.kimura@tier4.jp> --------- Signed-off-by: Fumiya Watanabe <rej55.g@gmail.com> Co-authored-by: Kyoichi Sugahara <kyoichi.sugahara@tier4.jp> Co-authored-by: Tomoya Kimura <tomoya.kimura@tier4.jp>
1 parent 9f2f036 commit e6709ee

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

planning/behavior_velocity_planner_common/include/behavior_velocity_planner_common/scene_module_interface.hpp

+10-1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class SceneModuleInterface
8787
boost::optional<int> getFirstStopPathPointIndex() { return first_stop_path_point_index_; }
8888

8989
void setActivation(const bool activated) { activated_ = activated; }
90+
void setRTCEnabled(const bool enable_rtc) { rtc_enabled_ = enable_rtc; }
9091
bool isActivated() const { return activated_; }
9192
bool isSafe() const { return safe_; }
9293
double getDistance() const { return distance_; }
@@ -98,6 +99,7 @@ class SceneModuleInterface
9899
const int64_t module_id_;
99100
bool activated_;
100101
bool safe_;
102+
bool rtc_enabled_;
101103
double distance_;
102104
rclcpp::Logger logger_;
103105
rclcpp::Clock::SharedPtr clock_;
@@ -106,8 +108,15 @@ class SceneModuleInterface
106108
boost::optional<int> first_stop_path_point_index_;
107109
VelocityFactorInterface velocity_factor_;
108110

109-
void setSafe(const bool safe) { safe_ = safe; }
111+
void setSafe(const bool safe)
112+
{
113+
safe_ = safe;
114+
if (!rtc_enabled_) {
115+
syncActivation();
116+
}
117+
}
110118
void setDistance(const double distance) { distance_ = distance; }
119+
void syncActivation() { setActivation(isSafe()); }
111120

112121
size_t findEgoSegmentIndex(
113122
const std::vector<autoware_auto_planning_msgs::msg::PathPointWithLaneId> & points) const;

planning/behavior_velocity_planner_common/src/scene_module_interface.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ void SceneModuleManagerInterfaceWithRTC::setActivation()
218218
for (const auto & scene_module : scene_modules_) {
219219
const UUID uuid = getUUID(scene_module->getModuleId());
220220
scene_module->setActivation(rtc_interface_.isActivated(uuid));
221+
scene_module->setRTCEnabled(rtc_interface_.isRTCEnabled(uuid));
221222
}
222223
}
223224

planning/rtc_interface/include/rtc_interface/rtc_interface.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class RTCInterface
5555
void clearCooperateStatus();
5656
bool isActivated(const UUID & uuid) const;
5757
bool isRegistered(const UUID & uuid) const;
58+
bool isRTCEnabled(const UUID & uuid) const;
5859
void lockCommandUpdate();
5960
void unlockCommandUpdate();
6061

planning/rtc_interface/src/rtc_interface.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,22 @@ bool RTCInterface::isRegistered(const UUID & uuid) const
280280
return itr != registered_status_.statuses.end();
281281
}
282282

283+
bool RTCInterface::isRTCEnabled(const UUID & uuid) const
284+
{
285+
std::lock_guard<std::mutex> lock(mutex_);
286+
const auto itr = std::find_if(
287+
registered_status_.statuses.begin(), registered_status_.statuses.end(),
288+
[uuid](auto & s) { return s.uuid == uuid; });
289+
290+
if (itr != registered_status_.statuses.end()) {
291+
return !itr->auto_mode;
292+
}
293+
294+
RCLCPP_WARN_STREAM(
295+
getLogger(), "[isRTCEnabled] uuid : " << to_string(uuid) << " is not found." << std::endl);
296+
return is_auto_mode_init_;
297+
}
298+
283299
void RTCInterface::lockCommandUpdate()
284300
{
285301
is_locked_ = true;

0 commit comments

Comments
 (0)