include/diffbot_base/pid.h
Go to the documentation of this file.
1 #include <ros/duration.h>
2 #include <control_toolbox/pid.h>
3 
4 // Dynamic reconfigure
5 #include <dynamic_reconfigure/server.h>
6 #include <diffbot_base/ParametersConfig.h>
7 #include <boost/thread/mutex.hpp>
8 
9 namespace diffbot_base
10 {
11  class PID : public control_toolbox::Pid
12  {
13  public:
26  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);
27 
42  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);
43 
52  double operator()(const double &measured_value, const double &setpoint, const ros::Duration &dt);
53 
64  void getParameters(double &f, double &p, double &i, double &d, double &i_max, double &i_min);
76  void getParameters(double &f, double &p, double &i, double &d, double &i_max, double &i_min, bool &antiwindup);
77 
89  void setParameters(double f, double p, double i, double d, double i_max, double i_min, bool antiwindup = false);
90 
97  void setOutputLimits(double out_min, double out_max);
98 
107  double clamp(const double& value, const double& lower_limit, const double& upper_limit);
108 
114  inline double getError() const { return error_; };
115 
121 
125  void updateDynamicReconfig();
126  void updateDynamicReconfig(Gains gains_config);
127  void updateDynamicReconfig(diffbot_base::ParametersConfig config);
128 
132  void dynamicReconfigCallback(diffbot_base::ParametersConfig &config, uint32_t /*level*/);
133 
134  private:
135  double f_;
136  double error_;
137  double out_min_;
138  double out_max_;
139 
140  // Dynamic reconfigure
142  typedef dynamic_reconfigure::Server<diffbot_base::ParametersConfig> DynamicReconfigServer;
144  DynamicReconfigServer::CallbackType param_reconfig_callback_;
145 
146  boost::recursive_mutex param_reconfig_mutex_;
147  };
148 
149 }
diffbot_base::PID::dynamic_reconfig_initialized_
bool dynamic_reconfig_initialized_
Definition: include/diffbot_base/pid.h:141
boost::shared_ptr< DynamicReconfigServer >
diffbot_base::PID::updateDynamicReconfig
void updateDynamicReconfig()
Set Dynamic Reconfigure's gains to PID's values.
Definition: src/pid.cpp:129
diffbot_base::PID::param_reconfig_server_
boost::shared_ptr< DynamicReconfigServer > param_reconfig_server_
Definition: include/diffbot_base/pid.h:143
diffbot_base::PID::getParameters
void getParameters(double &f, double &p, double &i, double &d, double &i_max, double &i_min)
Get the FPID parameters.
Definition: src/pid.cpp:65
diffbot_base::PID::init
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.
Definition: src/pid.cpp:18
diffbot_base::PID::setOutputLimits
void setOutputLimits(double out_min, double out_max)
Set the Output Limits of the PID controller.
Definition: src/pid.cpp:87
diffbot_base::PID::error_
double error_
Definition: include/diffbot_base/pid.h:136
diffbot_base::PID::param_reconfig_callback_
DynamicReconfigServer::CallbackType param_reconfig_callback_
Definition: include/diffbot_base/pid.h:144
f
f
diffbot_base::PID::DynamicReconfigServer
dynamic_reconfigure::Server< diffbot_base::ParametersConfig > DynamicReconfigServer
Definition: include/diffbot_base/pid.h:142
diffbot_base::PID::clamp
double clamp(const double &value, const double &lower_limit, const double &upper_limit)
Clam given value to upper and lower limits.
Definition: src/pid.cpp:95
diffbot_base::PID::setParameters
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.
Definition: src/pid.cpp:78
diffbot_base::PID::operator()
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.
Definition: src/pid.cpp:35
diffbot_base::PID::getError
double getError() const
Get the current error.
Definition: include/diffbot_base/pid.h:114
d
d
nh
ros::NodeHandle nh
Definition: main.cpp:8
diffbot_base::PID
Definition: include/diffbot_base/pid.h:11
diffbot_base::PID::initDynamicReconfig
void initDynamicReconfig(ros::NodeHandle &node)
Start the dynamic reconfigure node and load the default values.
Definition: src/pid.cpp:111
diffbot_base
Definition: diffbot_hw_interface.h:21
diffbot_base::PID::dynamicReconfigCallback
void dynamicReconfigCallback(diffbot_base::ParametersConfig &config, uint32_t)
Update the PID parameters from dynamics reconfigure.
Definition: src/pid.cpp:157
control_toolbox::Pid
diffbot_base::PID::f_
double f_
Definition: include/diffbot_base/pid.h:135
diffbot_base::PID::out_min_
double out_min_
Definition: include/diffbot_base/pid.h:137
pid.h
diffbot_base::PID::PID
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.
Definition: src/pid.cpp:6
diffbot_base::PID::param_reconfig_mutex_
boost::recursive_mutex param_reconfig_mutex_
Definition: include/diffbot_base/pid.h:146
diffbot_base::PID::out_max_
double out_max_
Definition: include/diffbot_base/pid.h:138
ros::Duration
ros::NodeHandle


diffbot_base
Author(s):
autogenerated on Thu Sep 7 2023 02:35:23