26 double error = setpoint - pv;
30 double Pout =
config_->kp * error;
31 RCLCPP_DEBUG_STREAM(
rclcpp::get_logger(
"platooning_control"),
"Proportional term: " << Pout);
40 else if (_integral < config_->integrator_min){
48 RCLCPP_DEBUG_STREAM(
rclcpp::get_logger(
"platooning_control"),
"derivative term: " << derivative);
49 double Dout =
config_->kd * derivative;
53 double output = Pout + Iout + Dout;
54 RCLCPP_DEBUG_STREAM(
rclcpp::get_logger(
"platooning_control"),
"total controller output: " << output);
57 if( output >
config_->max_delta_speed_per_timestep )
58 output =
config_->max_delta_speed_per_timestep;
59 else if( output < config_->min_delta_speed_per_timestep )
60 output =
config_->min_delta_speed_per_timestep;
std::shared_ptr< PlatooningControlPluginConfig > config_
plugin config object
PIDController()
Constructor for the PID controller class.
double calculate(double setpoint, double pv)
function to calculate control command based on setpoint and process vale
rclcpp::Logger get_logger()
Return the module-level logger used by all basic_autonomy functions.