Program listing for file control/src/Controller/PID.hpp#

 1#ifndef PID_H
 2#define PID_H
 3
 4#include "Actuator.hpp"
 5#include "SiconosAlgebraTypeDef.hpp"
 6#include <boost/circular_buffer.hpp>
 7
 8class PID : public Actuator
 9{
10private:
11
12  PID() {};
13
14
15  ACCEPT_SERIALIZATION(PID);
16
17
18  std::shared_ptr<boost::circular_buffer<double> > _err;
19
20
21  double _ref;
22
23  double _curDeltaT;
24
25
26  SP::SiconosVector _K;
27
28public:
29
30
31  PID(SP::ControlSensor sensor, SP::SimpleMatrix B = std::shared_ptr<SimpleMatrix>());
32
33
34  virtual ~PID();
35
36
37  virtual void initialize(const NonSmoothDynamicalSystem& nsds, const Simulation& s);
38
39
40  void actuate();
41
42
43  void setK(SP::SiconosVector K);
44
45
46  void inline setRef(double reference)
47  {
48    _ref = reference;
49  }
50
51
52  virtual void setTimeDiscretisation(const TimeDiscretisation& td);
53
54  void setDeltaT(double deltaT)
55  {
56    _curDeltaT = deltaT;
57  }
58
59
60  virtual void display() const;
61
62};
63#endif