Skip to content

Commit 3cbb362

Browse files
committed
feat(pid_longitudinal_controller): improve FF gain constant calculation
Signed-off-by: Berkay Karaman <brkay54@gmail.com>
1 parent 8b1fbb0 commit 3cbb362

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

control/pid_longitudinal_controller/src/pid_longitudinal_controller.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,8 @@ double PidLongitudinalController::applyVelocityFeedback(const ControlData & cont
10081008
const double current_vel = control_data.current_motion.vel;
10091009
const double target_vel =
10101010
control_data.interpolated_traj.points.at(control_data.target_idx).longitudinal_velocity_mps;
1011-
1011+
const double nearest_target_vel =
1012+
control_data.interpolated_traj.points.at(control_data.nearest_idx).longitudinal_velocity_mps;
10121013
const double vel_after_delay = control_data.state_after_delay.vel;
10131014
const bool is_under_control =
10141015
m_current_operation_mode.is_autoware_control_enabled &&
@@ -1037,7 +1038,9 @@ double PidLongitudinalController::applyVelocityFeedback(const ControlData & cont
10371038
constexpr double ff_scale_max = 2.0; // for safety
10381039
constexpr double ff_scale_min = 0.5; // for safety
10391040
const double ff_scale = std::clamp(
1040-
std::abs(current_vel) / std::max(std::abs(target_vel), 0.1), ff_scale_min, ff_scale_max);
1041+
1.0 + (abs(nearest_target_vel - current_vel) / std::max(abs(current_vel), 0.1)), ff_scale_min,
1042+
ff_scale_max);
1043+
10411044
const double ff_acc =
10421045
control_data.interpolated_traj.points.at(control_data.target_idx).acceleration_mps2 * ff_scale;
10431046

0 commit comments

Comments
 (0)