Program listing for file control/src/Controller/LinearSMCimproved.hpp#
Return to documentation for this file
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