Robot Simulator of the Robotics Group for Self-Organization of Control  0.8.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DerivativeWiring Class Reference

Implements a wiring (between controller and robot) which includes the first and second derivative of the original robot sensor values. More...

#include <derivativewiring.h>

Inheritance diagram for DerivativeWiring:
Collaboration diagram for DerivativeWiring:

Public Member Functions

 DerivativeWiring (const DerivativeWiringConf &conf, NoiseGenerator *noise, const std::string &name="DerivativeWiring")
 constructor More...
 
virtual ~DerivativeWiring ()
 destructor More...
 
virtual void reset ()
 reset internal state More...
 
- Public Member Functions inherited from AbstractWiring
 AbstractWiring (NoiseGenerator *noise, int plotMode=Controller, const std::string &name="AbstractWiring")
 constructor More...
 
virtual ~AbstractWiring ()
 destructor More...
 
virtual bool init (int robotsensornumber, int robotmotornumber, RandGen *randGen=0)
 Initializes the number of sensors and motors from robot (to be precise the internal parameters rsensornumber and rmotornumber!), calculates the number of sensors and motors on controller side. More...
 
virtual bool wireSensors (const sensor *rsensors, int rsensornumber, sensor *csensors, int csensornumber, double noiseStrength)
 Realizes wiring from robot sensors to controller sensors. More...
 
virtual bool wireMotors (motor *rmotors, int rmotornumber, const motor *cmotors, int cmotornumber)
 Realizes wiring from controller motor outputs to robot motors. More...
 
virtual int getRobotSensornumber ()
 Returns the number of sensors on robot side. More...
 
virtual int getRobotMotornumber ()
 Returns the number of motors on robot side. More...
 
virtual int getControllerSensornumber ()
 Returns the number of sensors on controller side. More...
 
virtual int getControllerMotornumber ()
 Returns the number of motors on controller side. More...
 
virtual std::list
< SensorMotorInfo
wireSensorInfos (const std::list< SensorMotorInfo > &robotSensorInfos)
 routes the infos of the motors from robot to controller More...
 
virtual std::list
< SensorMotorInfo
wireMotorInfos (const std::list< SensorMotorInfo > &robotMotorInfos)
 routes the infos of the motors from robot to controller More...
 
void addSensorMotorInfosToInspectable (const std::list< SensorMotorInfo > &robotSensorInfos, const std::list< SensorMotorInfo > &robotMotorInfos, const std::list< SensorMotorInfo > &controllerSensorInfos, const std::list< SensorMotorInfo > &controllerMotorInfos)
 used by WiredController to pass infos to inspectable More...
 
- Public Member Functions inherited from Inspectable
 Inspectable (const iparamkey &name="")
 TYPEDEFS END. More...
 
virtual ~Inspectable ()
 
virtual iparamkeylist getInternalParamNames () const
 The list of the names of all internal parameters given by getInternalParams(). More...
 
virtual iparamvallist getInternalParams () const
 
virtual iparamvalptrlist getInternalParamsPtr () const
 be careful: matrices will be ignored More...
 
virtual ilayerlist getStructuralLayers () const
 Specifies which parameter vector forms a structural layer (in terms of a neural network) The ordering is important. More...
 
virtual iconnectionlist getStructuralConnections () const
 Specifies which parameter matrix forms a connection between layers (in terms of a neural network) The orderning is not important. More...
 
virtual void addInspectableValue (const iparamkey &key, iparamval const *val, const std::string &descr=std::string())
 This is the new style for adding inspectable values. More...
 
virtual void addInspectableMatrix (const iparamkey &key, const matrix::Matrix *m, bool only4x4AndDiag=true, const std::string &descr=std::string())
 This is the new style for adding inspectable values. More...
 
virtual void addInspectableDescription (const iparamkey &key, const std::string &descr)
 adds a description for the given parameter using info-lines The line will start (appart from the #I) with a D for description followed by the key end then followed by the string. More...
 
virtual void addInfoLine (std::string infoLine)
 Adds an info line to this inspectable instance. More...
 
virtual void addInfoLines (std::list< std::string > infoLineList)
 Adds a bunch of infolines with addInfoLine to this inspectable instance. More...
 
virtual void removeInfoLines ()
 Removes all infolines from this inspectable instance. More...
 
virtual const infoLinesListgetInfoLines () const
 Returns all infolines added to this inspectable instance. More...
 
virtual void addInspectable (Inspectable *insp)
 Adds an inspectable as a child object. More...
 
virtual void removeInspectable (Inspectable *insp)
 Removes an inspectable as a child object. More...
 
virtual void setNameOfInspectable (const iparamkey &name)
 set the name of the inspectable More...
 
virtual const iparamkey getNameOfInspectable () const
 return the name of the inspectable, getName() would conflict with Configurable::getName() too often More...
 
virtual const inspectableListgetInspectables () const
 Returns the list containing all inspectable children. More...
 

Static Public Member Functions

static DerivativeWiringConf getDefaultConf ()
 Providing default configuration for DerivativeWiring with first derivative. More...
 
static DerivativeWiringConf getDefaultConf1 ()
 Providing default configuration for DerivativeWiring for only first derivative. More...
 

Protected Member Functions

virtual bool initIntern ()
 to be overloaded by subclasses The rsensornumber and rmotornumber are already stored in the member variables. More...
 
virtual bool wireSensorsIntern (const sensor *rsensors, int rsensornumber, sensor *csensors, int csensornumber, double noise)
 Realizes a wiring from robot sensors to controller sensors. More...
 
virtual bool wireMotorsIntern (motor *rmotors, int rmotornumber, const motor *cmotors, int cmotornumber)
 Realizes wiring from controller motor outputs to robot motors. More...
 
void calcFirstDerivative ()
 Calculate the first derivative of the sensorvalues given by the robot f'(x) = (f(x+1) - f(x-1)) / 2 since we do not have f(x+1) we go one timestep in the past. More...
 
void calcSecondDerivative ()
 Calculate the secound derivative of the sensorvalues given by the robot f'(x) = f(x) - 2f(x-1) + f(x-2) More...
 

Protected Attributes

DerivativeWiringConf conf
 used configuration More...
 
int time
 
sensorsensorbuffer [buffersize]
 number timesteps the sensor values are delayed for calculation of the derivative More...
 
sensorfirst
 current sensors (with noise) More...
 
sensorsecond
 current second derivative More...
 
motorblindMotors
 array that stored the values of the blind motors More...
 
- Protected Attributes inherited from AbstractWiring
int plotMode
 using plotTypes this variables defines what is plotted More...
 
matrix::Matrix mNoise
 for storing the noise values More...
 
sensornoisevals
 
int noisenumber
 
int rsensornumber
 number of sensors at robot side More...
 
matrix::Matrix mRsensors
 copy of the last robot sensors More...
 
int rmotornumber
 number of motors at robot side More...
 
matrix::Matrix mRmotors
 copy of the last robot motors More...
 
int csensornumber
 number of sensors at controller side More...
 
matrix::Matrix mCsensors
 copy of the last controller sensors More...
 
int cmotornumber
 number of motors at controller side More...
 
matrix::Matrix mCmotors
 copy of the last controller motors More...
 
NoiseGeneratornoiseGenerator
 noise generator More...
 
RandGenrandGen
 random generator used in NoiseGenerator (in case it is needed by subclasses) More...
 
bool initialised
 
- Protected Attributes inherited from Inspectable
iparamkey name
 
iparampairlist mapOfValues
 
imatrixpairlist mapOfMatrices
 
infoLinesList infoLineStringList
 

Static Protected Attributes

static const int buffersize =40
 

Additional Inherited Members

- Public Types inherited from AbstractWiring
enum  PlotTypes { Nothing =0, Robot =1, Controller =4, Noise =8 }
 
typedef double sensor
 
typedef double motor
 
- Public Types inherited from Inspectable
typedef std::string iparamkey
 
typedef double iparamval
 
typedef std::pair< iparamkey,
iparamval const * > 
iparampair
 
typedef std::pair< iparamkey,
std::pair< const
matrix::Matrix *, bool > > 
imatrixpair
 
typedef std::list< iparamkeyiparamkeylist
 
typedef std::list< std::string > infoLinesList
 
typedef std::list< iparamvaliparamvallist
 
typedef std::list< iparamval
const * > 
iparamvalptrlist
 
typedef std::list< iparampairiparampairlist
 
typedef std::list< imatrixpairimatrixpairlist
 
typedef struct Inspectable::ILayer ILayer
 
typedef struct
Inspectable::IConnection 
IConnection
 
typedef std::list< ILayerilayerlist
 
typedef std::list< IConnectioniconnectionlist
 
typedef std::list< const
Inspectable * > 
inspectableList
 

Detailed Description

Implements a wiring (between controller and robot) which includes the first and second derivative of the original robot sensor values.

Constructor & Destructor Documentation

DerivativeWiring ( const DerivativeWiringConf conf,
NoiseGenerator noise,
const std::string &  name = "DerivativeWiring" 
)

constructor

Parameters
conffor giving the wished configuration of DerivativeWiring via DerivativeWiringConf
noiseNoiseGenerator that is used for adding noise to sensor values
~DerivativeWiring ( )
virtual

destructor

Member Function Documentation

void calcFirstDerivative ( )
protected

Calculate the first derivative of the sensorvalues given by the robot f'(x) = (f(x+1) - f(x-1)) / 2 since we do not have f(x+1) we go one timestep in the past.

f'(x) = (f(x+1) - f(x-1)) / 2

void calcSecondDerivative ( )
protected

Calculate the secound derivative of the sensorvalues given by the robot f'(x) = f(x) - 2f(x-1) + f(x-2)

f'(x) = f(x) - 2f(x-1) + f(x-2)

static DerivativeWiringConf getDefaultConf ( )
inlinestatic

Providing default configuration for DerivativeWiring with first derivative.

No smoothing and no scaling. ( as static method )

static DerivativeWiringConf getDefaultConf1 ( )
inlinestatic

Providing default configuration for DerivativeWiring for only first derivative.

smoothing over 4 steps and scale of 5. Use smaller noise! ( as static method )

bool initIntern ( )
protectedvirtual

to be overloaded by subclasses The rsensornumber and rmotornumber are already stored in the member variables.

The random values are to be accessed via the noiseGenerator.

See Also
init()

Implements AbstractWiring.

void reset ( )
virtual

reset internal state

Reimplemented from AbstractWiring.

bool wireMotorsIntern ( motor rmotors,
int  rmotornumber,
const motor cmotors,
int  cmotornumber 
)
protectedvirtual

Realizes wiring from controller motor outputs to robot motors.

Implements AbstractWiring.

bool wireSensorsIntern ( const sensor rsensors,
int  rsensornumber,
sensor csensors,
int  csensornumber,
double  noise 
)
protectedvirtual

Realizes a wiring from robot sensors to controller sensors.

Implements AbstractWiring.

Member Data Documentation

motor* blindMotors
protected

array that stored the values of the blind motors

const int buffersize =40
staticprotected
DerivativeWiringConf conf
protected

used configuration

sensor* first
protected

current sensors (with noise)

current first derivative

sensor* second
protected

current second derivative

sensor* sensorbuffer[buffersize]
protected

number timesteps the sensor values are delayed for calculation of the derivative

current and old smoothed sensor values of robot

int time
protected

The documentation for this class was generated from the following files: