@@ -518,10 +518,12 @@ PidLongitudinalController::Motion PidLongitudinalController::calcEmergencyCtrlCm
518
518
519
519
void PidLongitudinalController::updateControlState (const ControlData & control_data)
520
520
{
521
- const double target_vel =
522
- control_data.interpolated_traj .points .at (control_data.target_idx ).longitudinal_velocity_mps ;
523
- const double target_acc =
524
- control_data.interpolated_traj .points .at (control_data.target_idx ).acceleration_mps2 ;
521
+ // const double target_vel =
522
+ // control_data.interpolated_traj.points.at(control_data.target_idx).longitudinal_velocity_mps;
523
+ // const double target_acc =
524
+ // control_data.interpolated_traj.points.at(control_data.target_idx).acceleration_mps2;
525
+ const double vel_after_delay = control_data.state_after_delay .vel ;
526
+ const double acc_after_delay = control_data.state_after_delay .acc ;
525
527
const double stop_dist = control_data.stop_dist ;
526
528
527
529
// flags for state transition
@@ -536,8 +538,8 @@ void PidLongitudinalController::updateControlState(const ControlData & control_d
536
538
537
539
const bool stopping_condition = stop_dist < p.stopping_state_stop_dist ;
538
540
if (
539
- std::fabs (target_vel ) > p.stopped_state_entry_vel ||
540
- std::fabs (target_acc ) > p.stopped_state_entry_acc ) {
541
+ std::fabs (vel_after_delay ) > p.stopped_state_entry_vel ||
542
+ std::fabs (acc_after_delay ) > p.stopped_state_entry_acc ) {
541
543
m_last_running_time = std::make_shared<rclcpp::Time>(node_->now ());
542
544
}
543
545
const bool stopped_condition =
@@ -582,7 +584,7 @@ void PidLongitudinalController::updateControlState(const ControlData & control_d
582
584
583
585
if (m_enable_smooth_stop) {
584
586
if (stopping_condition) {
585
- m_smooth_stop.init (control_data. state_after_delay . vel , control_data.stop_dist );
587
+ m_smooth_stop.init (vel_after_delay , control_data.stop_dist );
586
588
return changeState (ControlState::STOPPING);
587
589
}
588
590
} else {
@@ -673,8 +675,8 @@ PidLongitudinalController::Motion PidLongitudinalController::calcCtrlCmd(
673
675
target_motion.vel , raw_ctrl_cmd.acc );
674
676
} else if (m_control_state == ControlState::STOPPING) {
675
677
raw_ctrl_cmd.acc = m_smooth_stop.calculate (
676
- control_data.stop_dist , control_data.current_motion .vel , control_data. current_motion . acc ,
677
- m_vel_hist, m_delay_compensation_time);
678
+ control_data.stop_dist , control_data.state_after_delay .vel ,
679
+ control_data. state_after_delay . acc , m_vel_hist, m_delay_compensation_time);
678
680
raw_ctrl_cmd.vel = m_stopped_state_params.vel ;
679
681
680
682
RCLCPP_DEBUG (
0 commit comments