33#ifndef CONTROL_TOOLBOX__PID_HPP_
34#define CONTROL_TOOLBOX__PID_HPP_
38#include "rclcpp/duration.hpp"
39#include "realtime_tools/realtime_buffer.hpp"
127 Gains(
double p,
double i,
double d,
double i_max,
double i_min)
146 Gains(
double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup)
182 double p = 0.0,
double i = 0.0,
double d = 0.0,
double i_max = 0.0,
double i_min = -0.0,
183 bool antiwindup =
false);
213 double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup =
false);
226 void reset(
bool save_i_term);
241 void get_gains(
double & p,
double & i,
double & d,
double & i_max,
double & i_min);
256 double & p,
double & i,
double & d,
double & i_max,
double & i_min,
bool & antiwindup);
278 void set_gains(
double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup =
false);
298 [[nodiscard]]
double compute_command(
double error,
const double & dt_s);
310 [[nodiscard]]
double compute_command(
double error,
const rcl_duration_value_t & dt_ns);
322 [[nodiscard]]
double compute_command(
double error,
const rclcpp::Duration & dt);
334 [[nodiscard]]
double compute_command(
double error,
const std::chrono::nanoseconds & dt_ns);
347 [[nodiscard]]
double compute_command(
double error,
double error_dot,
const double & dt_s);
361 double error,
double error_dot,
const rcl_duration_value_t & dt_ns);
374 [[nodiscard]]
double compute_command(
double error,
double error_dot,
const rclcpp::Duration & dt);
388 double error,
double error_dot,
const std::chrono::nanoseconds & dt_ns);
414 if (
this == &source) {
419 gains_buffer_ = source.gains_buffer_;
432 double p_error_last_;