Class LinearSMCimproved#

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

class LinearSMCimproved : public LinearSMC#

Public Functions

LinearSMCimproved(SP::ControlSensor sensor)#



sensor – the ControlSensor feeding the Actuator

LinearSMCimproved(SP::ControlSensor sensor, SP::SimpleMatrix B, SP::SimpleMatrix D = std::shared_ptr<SimpleMatrix>())#

Constructor with all the data.

  • sensor – the ControlSensor feeding the Actuator

  • B – the B matrix in the FirstOrderLinearR

  • D – the D matrix in the FirstOrderLinearR

virtual ~LinearSMCimproved()#


virtual void initialize(const NonSmoothDynamicalSystem &nsds, const Simulation &s)#

Initialize Controller.

  • nsds – current nonsmooth dynamical system

  • s – current simulation setup

virtual void actuate()#

Compute the new control law at each event Here we are using the following formula: TODO.

inline void setPerturbationPrediction(double ub = std::numeric_limits<double>::quiet_NaN())#

Enable perturbation prediction.

inline const SiconosVector &up() const#

Get the control input _up, acting against matched perturbations.


a reference to _up

void setPredictionOrder(unsigned int order)#

Set the order of the prediction.

  • 0 -> the predicted value is the same as the one we measured

  • 1 -> \( \widetilde{Cp_{k+1}} = 2Cp_k - Cp_{k-1} \)

  • 2 -> \( \widetilde{Cp_{k+1}} = 3Cp_k - 3Cp_{k-1} + Cp_{k-2} \)


order – the order of the prediction