Go to the documentation of this file.
6 PID::PID(
double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup,
double out_max,
double out_min)
8 , dynamic_reconfig_initialized_(false)
11 initPid(p, i,
d, i_max, i_min, antiwindup);
18 void PID::init(
ros::NodeHandle&
nh,
double f,
double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup,
double out_max,
double out_min)
22 initPid(p, i,
d, i_max, i_min, antiwindup);
31 ROS_INFO_STREAM(
"Initialized PID: F=" <<
f <<
", P=" << gains.p_gain_ <<
", I=" << gains.i_gain_ <<
", D=" << gains.d_gain_ <<
", out_min=" <<
out_min_ <<
", out_max=" <<
out_max_);
38 error_ = setpoint - measured_value;
43 if (0.0 == setpoint && 0.0 ==
error_)
59 output =
f_ * setpoint + output;
65 void PID::getParameters(
double &f,
double &p,
double &i,
double &d,
double &i_max,
double &i_min)
71 void PID::getParameters(
double &f,
double &p,
double &i,
double &d,
double &i_max,
double &i_min,
bool &antiwindup)
75 getGains(p, i,
d, i_max, i_min, antiwindup);
78 void PID::setParameters(
double f,
double p,
double i,
double d,
double i_max,
double i_min,
bool antiwindup)
81 setGains(p, i,
d, i_max, i_min, antiwindup);
84 ROS_INFO_STREAM(
"Update PID Gains: F=" <<
f <<
", P=" << gains.p_gain_ <<
", I=" << gains.i_gain_ <<
", D=" << gains.d_gain_ <<
", out_min=" <<
out_min_ <<
", out_max=" <<
out_max_);
95 double PID::clamp(
const double& value,
const double& lower_limit,
const double& upper_limit)
97 if (value > upper_limit)
102 else if (value < lower_limit)
136 diffbot_base::ParametersConfig config;
140 getGains(config.p, config.i, config.d, config.i_clamp_max, config.i_clamp_min, config.antiwindup);
162 setParameters(config.f, config.p, config.i, config.d, config.i_clamp_max, config.i_clamp_min, config.antiwindup);
bool dynamic_reconfig_initialized_
void updateDynamicReconfig()
Set Dynamic Reconfigure's gains to PID's values.
boost::shared_ptr< DynamicReconfigServer > param_reconfig_server_
#define ROS_DEBUG_STREAM_NAMED(name, args)
void getParameters(double &f, double &p, double &i, double &d, double &i_max, double &i_min)
Get the FPID parameters.
void init(ros::NodeHandle &nh, double f, double p, double i, double d, double i_max, double i_min, bool antiwindup, double out_max, double out_min)
Initialize the.
void setOutputLimits(double out_min, double out_max)
Set the Output Limits of the PID controller.
DynamicReconfigServer::CallbackType param_reconfig_callback_
dynamic_reconfigure::Server< diffbot_base::ParametersConfig > DynamicReconfigServer
#define ROS_INFO_NAMED(name,...)
double clamp(const double &value, const double &lower_limit, const double &upper_limit)
Clam given value to upper and lower limits.
void setParameters(double f, double p, double i, double d, double i_max, double i_min, bool antiwindup=false)
Set the Parameters using the Gains object of control_toolbox::Pid.
double operator()(const double &measured_value, const double &setpoint, const ros::Duration &dt)
Compute PID output value from error using process value, set point and time period.
#define ROS_DEBUG_STREAM_THROTTLE(period, args)
#define ROS_INFO_STREAM(args)
void initDynamicReconfig(ros::NodeHandle &node)
Start the dynamic reconfigure node and load the default values.
void dynamicReconfigCallback(diffbot_base::ParametersConfig &config, uint32_t)
Update the PID parameters from dynamics reconfigure.
#define ROS_INFO_STREAM_NAMED(name, args)
PID(double p=0.0, double i=0.0, double d=0.0, double i_max=0.0, double i_min=0.0, bool antiwindup=false, double out_max=0.0, double out_min=0.0)
Construct a new PID object.
boost::recursive_mutex param_reconfig_mutex_
const std::string & getNamespace() const
diffbot_base
Author(s):
autogenerated on Thu Sep 7 2023 02:35:23