siconos.control.simulation

Module documentation

class siconos.control.simulation.nullDeleter(*args, **kwargs)[source]

Bases: object

Using a shared_ptr to hold a pointer to a statically allocated

object use create<type>SPtr(<type> &x) cf http://www.boost.org/doc/

class siconos.control.simulation.ControlManager(*args)[source]

Bases: object

ControlManager Class: tools to provide control in a Simulation (Sensors, Actuators, Observers)

This class is used to handle all the sensors and actuators declared by the user and to schedule them into the simulation.

A ControlManager has: - a list of Sensor - a list of Actuator - a link to an existing Simulation

The usual way to define control over a system is as follows: - declare a ControlManager and associate it with a Simulation - add some sensors and actuators into the ControlManager - initialize the ControlManager (which will result in the recording of all actuators and sensors into the list of events processed during the simulation) - optionally add some new sensor/actuator at any time but with a specific function: addAndRecord(…). A call to this function results in the creation of a Sensor/Actuator and in the insertion of the corresponding event into the simulation eventsManager.

Overload 1: default constructor


Overload 2: Constructor with a Simulation, to which control will be applied.

Parameters

sim (Simulation) – the Simulation

linkSensorSimulation(s, td)[source]

Create associated Event and give the opportunity to get the TimeDiscretisation

Parameters
  • s (Sensor) – a Sensor

  • td (TimeDiscretisation) – a TimeDiscretisation asociated with this Sensor

linkActuatorSimulation(act, td)[source]

Create associated Event and give the opportunity to get the TimeDiscretisation

Parameters
  • act (Actuator) – a Sensor

  • td (TimeDiscretisation) – a TimeDiscretisation asociated with this Sensor

linkObserverSimulation(obs, td)[source]

Create associated Event and give the opportunity to get the TimeDiscretisation

Parameters
  • obs (Observer) – a Sensor

  • td (TimeDiscretisation) – a TimeDiscretisation asociated with this Sensor

simulation()[source]

get the Simulation linked to this ControlManager

Return type

Simulation

Returns

a SP::Simulation

getSensors()[source]

get the list of Sensors associated to this manager.

Return type

Sensors

Returns

a Sensors object.

getActuators()[source]

get the list of Actuators associated to this manager.

Return type

Actuators

Returns

a Actuators object.

getObservers()[source]

get the list of Observers associated to this manager.

Return type

Observers

Returns

a Observers object.

addSensor(name, td, ds)[source]

To build and add a new Sensor in the Manager

Parameters
  • name (int) – the type of the Sensor

  • td (TimeDiscretisation) – the SP::TimeDiscretisation of the Sensor

  • ds (DynamicalSystem) – the DynamicalSystem used in the Sensor

Return type

Sensor

Returns

a SP::Sensor to the added Sensor

addAndRecordSensor(name, td, ds, nsds)[source]

To build, add, initialize a new Sensor in the Manager and record it in the simulation This function is only useful to add a new Sensor after the initialization of the manager else call addSensor()

Parameters
  • name (int) – the type (int) of the Sensor

  • td (TimeDiscretisation) – the SP::TimeDiscretisation of the Sensor

  • ds (DynamicalSystem) – the DynamicalSystem used in the Sensor

  • nsds (NonSmoothDynamicalSystem) – the NonSmoothDynamicalSystem

Return type

Sensor

Returns

a SP::Sensor to the added Sensor

addSensorPtr(s, td)[source]

Add an existing Sensor to the Manager

Parameters
  • s (Sensor) – a SP::Sensor to the Sensor we want to add

  • td (TimeDiscretisation) – the TimeDiscretisation used for the associated Event

addAndRecordSensorPtr(s, td, nsds)[source]

To add, initialize an existing Sensor in the manager and record it in the simulation This function is only useful to add a new Sensor after the initialization of the manager else call addSensor()

Parameters
  • s (Sensor) – a SP::Sensor to the Sensor we want to add

  • td (TimeDiscretisation) – the TimeDiscretisation used for the associated Event

  • nsds (NonSmoothDynamicalSystem) – current nonsmooth dynamical system

addActuator(name, td, sensor)[source]

To build and add a new Actuator in the Manager

Parameters
  • name (int) – the type of the Actuator

  • td (TimeDiscretisation) – the SP::TimeDiscretisation of the Actuator

  • sensor (ControlSensor) – the ControlSensor used to feed the Actuator

Return type

Actuator

Returns

the added Actuator

addAndRecordActuator(name, t, sensor, nsds)[source]

To build, add, initialize a new Actuator in the manager and record it in the simulation This function is only useful to add a new Actuator after the initialization of the manager else call addActuator()

Parameters
  • name (int) – the type of the Actuator

  • t (TimeDiscretisation) – the SP::TimeDiscretisation of the Actuator

  • sensor (ControlSensor) – the ControlSensor used to feed the Actuator

  • nsds (NonSmoothDynamicalSystem) – the NonSmoothDynamicalSystem

Return type

Actuator

Returns

a SP::Actuator to the added Actuator

addActuatorPtr(act, td)[source]

Add an existing Actuator to the manager

Parameters
  • act (Actuator) – a SP::Actuator to the Actuator we want to add

  • td (TimeDiscretisation) – the TimeDiscretisation used for the associated Event

addAndRecordActuatorPtr(act, td, nsds)[source]

To add, initialize an existing Actuator in the manager and record it in the simulation This function is only useful to add a new Actuator after the initialization of the manager otherwise call addActuator()

Parameters
  • act (Actuator) – a SP::Actuator to the Actuator we want to add

  • td (TimeDiscretisation) – the TimeDiscretisation used for the associated Event

  • nsds (NonSmoothDynamicalSystem) – current nonsmooth dynamical system

addObserver(name, td, sensor, xHat0)[source]

To build and add a new Observer in the Manager

Parameters
  • name (int) – the type of the Observer

  • td (TimeDiscretisation) – the SP::TimeDiscretisation of the Observer

  • sensor (ControlSensor) – the ControlSensor feeding the Observer

  • xHat0 (SiconosVector) – the initial guess for the state

Return type

Observer

Returns

a SP::ACtuator to the added Observer

addAndRecordObserver(name, td, sensor, xHat0, nsds)[source]

To build, add, initialize a new Observer in the manager and record it in the simulation This function is only useful to add a new Observer after the initialization of the manager else call addObserver()

Parameters
  • name (int) – the type of the Observer

  • td (TimeDiscretisation) – the SP::TimeDiscretisation of the Observer

  • sensor (ControlSensor) – the ControlSensor feeding the Observer

  • xHat0 (SiconosVector) – the initial guess for the state

  • nsds (NonSmoothDynamicalSystem) – current nonsmooth dynamical system

Return type

Observer

Returns

the added Observer

addObserverPtr(obs, td)[source]

Add an existing Observer to the manager

Parameters
  • obs (Observer) – a SP::Observer to the Observer we want to add

  • td (TimeDiscretisation) – the TimeDiscretisation used for the associated Event

addAndRecordObserverPtr(obs, td, nsds)[source]

To add, initialize an existing Observer in the manager and record it in the simulation This function is only useful to add a new Observer after the initialization of the manager otherwise call addObserver()

Parameters
  • obs (Observer) – a SP::Observer to the Observer we want to add

  • td (TimeDiscretisation) – the TimeDiscretisation used for the associated Event

  • nsds (NonSmoothDynamicalSystem) – current nonsmooth dynamical system

initialize(nsds)[source]

initialize all Sensors, Observers and Actuators.

Parameters

nsds (NonSmoothDynamicalSystem) – current nonsmooth dynamical system

display()[source]

display the data of the ControlManager on the standard output