Skip to content

Commit a5d5479

Browse files
authored
fix(avoidance): check far objects during shifting (#5857)
* fix(avoidance): check far objects during shifting Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com> * fix(avoidance): update impl Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com> --------- Signed-off-by: satoshi-ota <satoshi.ota928@gmail.com>
1 parent a661585 commit a5d5479

File tree

1 file changed

+14
-2
lines changed
  • planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module

1 file changed

+14
-2
lines changed

planning/behavior_path_avoidance_module/include/behavior_path_avoidance_module/helper.hpp

+14-2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ class AvoidanceHelper
5858

5959
double getEgoSpeed() const { return std::abs(data_->self_odometry->twist.twist.linear.x); }
6060

61+
geometry_msgs::msg::Pose getEgoPose() const { return data_->self_odometry->pose.pose; }
62+
6163
size_t getConstraintsMapIndex(const double velocity, const std::vector<double> & values) const
6264
{
6365
const auto itr = std::find_if(
@@ -185,10 +187,20 @@ class AvoidanceHelper
185187
return parameters_->object_check_max_forward_distance;
186188
}
187189

190+
const auto & route_handler = data_->route_handler;
191+
192+
lanelet::ConstLanelet closest_lane;
193+
if (!route_handler->getClosestLaneletWithinRoute(getEgoPose(), &closest_lane)) {
194+
return parameters_->object_check_max_forward_distance;
195+
}
196+
197+
const auto limit = route_handler->getTrafficRulesPtr()->speedLimit(closest_lane);
198+
const auto speed = isShifted() ? limit.speedLimit.value() : getEgoSpeed();
199+
188200
const auto max_shift_length = std::max(
189201
std::abs(parameters_->max_right_shift_length), std::abs(parameters_->max_left_shift_length));
190-
const auto dynamic_distance = PathShifter::calcLongitudinalDistFromJerk(
191-
max_shift_length, getLateralMinJerkLimit(), getEgoSpeed());
202+
const auto dynamic_distance =
203+
PathShifter::calcLongitudinalDistFromJerk(max_shift_length, getLateralMinJerkLimit(), speed);
192204

193205
return std::clamp(
194206
1.5 * dynamic_distance + getNominalPrepareDistance(),

0 commit comments

Comments
 (0)