Program listing for file control/src/Controller/LinearSMCimproved.hpp

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

 1#ifndef LinearSMCimproved_H
 2#define LinearSMCimproved_H
 3
 4#include "LinearSMC.hpp"
 5
 6#include <boost/circular_buffer_fwd.hpp>
 7
 8typedef std::shared_ptr<boost::circular_buffer<SP::SiconosVector> > BufferOfVectors;
 9
10class LinearSMCimproved : public LinearSMC
11{
12private:
13  ACCEPT_SERIALIZATION(LinearSMCimproved);
14
15
16  LinearSMCimproved() {};
17
18protected:
19
20
21  bool _predictionPerturbation;
22
23
24  bool _inDisceteTimeSlidingPhase;
25
26
27  BufferOfVectors _measuredPert;
28
29
30  BufferOfVectors _predictedPert;
31
32
33  double _ubPerturbation;
34
35
36  SP::SiconosVector _up;
37
38
39  void predictionPerturbation(const SiconosVector& xTk, SimpleMatrix& CBstar);
40
41
42public:
43
44
45  LinearSMCimproved(SP::ControlSensor sensor);
46
47
48  LinearSMCimproved(SP::ControlSensor sensor, SP::SimpleMatrix B, SP::SimpleMatrix D = std::shared_ptr<SimpleMatrix>());
49
50
51  virtual ~LinearSMCimproved();
52
53
54  virtual void initialize(const NonSmoothDynamicalSystem& nsds, const Simulation & s);
55
56
57  virtual void actuate();
58
59
60  void setPerturbationPrediction(double ub = std::numeric_limits<double>::quiet_NaN())
61  {
62    _ubPerturbation = ub;
63    _predictionPerturbation = true;
64  }
65
66
67  inline const SiconosVector& up() const { return *_up; };
68
69
70  void setPredictionOrder(unsigned int order);
71};
72#endif