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
InvertMotorNStep Class Reference

class for robot controller that uses the georg's matrixlib for direct matrix inversion for n channels (simple one layer networks) More...

#include <invertmotornstep.h>

Inheritance diagram for InvertMotorNStep:
Collaboration diagram for InvertMotorNStep:

Public Member Functions

 InvertMotorNStep (const InvertMotorNStepConf &conf=getDefaultConf())
 
virtual void init (int sensornumber, int motornumber, RandGen *randGen=0)
 initialisation of the controller with the given sensor/ motornumber Must be called before use. More...
 
virtual ~InvertMotorNStep ()
 
virtual int getSensorNumber () const
 returns the number of sensors the controller was initialised with or 0 if not initialised More...
 
virtual int getMotorNumber () const
 returns the mumber of motors the controller was initialised with or 0 if not initialised More...
 
virtual void step (const sensor *, int number_sensors, motor *, int number_motors)
 performs one step (includes learning). More...
 
virtual void stepNoLearning (const sensor *, int number_sensors, motor *, int number_motors)
 performs one step without learning. Calulates motor commands from sensor inputs. More...
 
virtual bool store (FILE *f) const
 stores the controller values to a given file. More...
 
virtual bool restore (FILE *f)
 loads the controller values from a given file. More...
 
virtual std::list< ILayergetStructuralLayers () const
 Specifies which parameter vector forms a structural layer (in terms of a neural network) The ordering is important. More...
 
virtual std::list< IConnectiongetStructuralConnections () const
 Specifies which parameter matrix forms a connection between layers (in terms of a neural network) The orderning is not important. More...
 
virtual void setMotorTeachingSignal (const motor *teaching, int len)
 The given motor teaching signal is used for this timestep. More...
 
virtual void setSensorTeachingSignal (const sensor *teaching, int len)
 The given sensor teaching signal (distal learning) is used for this timestep. More...
 
void getLastMotors (motor *motors, int len)
 
void getLastSensors (sensor *sensors, int len)
 
virtual void setMotorTeaching (const matrix::Matrix &teaching)
 The given motor teaching signal is used for this timestep. More...
 
virtual void setSensorTeaching (const matrix::Matrix &teaching)
 The given sensor teaching signal (distal learning) is used for this timestep. More...
 
virtual matrix::Matrix getLastMotorValues ()
 returns the last motor values (useful for cross motor coupling) More...
 
virtual matrix::Matrix getLastSensorValues ()
 returns the last sensor values (useful for cross sensor coupling) More...
 
void calcCandHUpdatesTeaching (matrix::Matrix &C_update, matrix::Matrix &H_update, int y_delay)
 calculates the Update for C and H using the teaching signal More...
 
virtual void setReinforcement (double reinforcement)
 set the reinforcement signal for this timestep. More...
 
void setSensorWeights (const matrix::Matrix &weights)
 sets the sensor channel weights (matrix should be (getSensorNumber() x 1) More...
 
matrix::Matrix getSensorWeights () const
 
matrix::MatrixgetC ()
 reference to C-matrix More...
 
double getE () const
 
void kwtaInhibition (matrix::Matrix &weightmatrix, unsigned int k, double damping)
 k-winner take all inhibition for synapses. More...
 
void limitC (matrix::Matrix &weightmatrix, unsigned int rfSize)
 sets all connections to zero which are further away then rfSize from the diagonal. More...
 
- Public Member Functions inherited from InvertMotorController
 InvertMotorController (unsigned short buffersize, const std::string &name, const std::string &revision)
 
- Public Member Functions inherited from HomeokinBase
 HomeokinBase (unsigned short buffersize, const std::string &name, const std::string &revision)
 
- Public Member Functions inherited from AbstractController
 AbstractController (const std::string &name, const std::string &revision)
 contructor (hint: use $ID$ for revision) More...
 
virtual void motorBabblingStep (const sensor *, int number_sensors, const motor *, int number_motors)
 called in motor babbling phase. More...
 
virtual void sensorInfos (std::list< SensorMotorInfo > sensorInfos)
 the controller is notified about the information on sensor. More...
 
virtual void motorInfos (std::list< SensorMotorInfo > motorInfos)
 the controller is notified about the information on motors. More...
 
virtual int SIdx (const std::string &name)
 returns the index of the sensor with the given name (if not found then 0 and all sensor names are printed) More...
 
virtual int MIdx (const std::string &name)
 returns the index of the motor with the given name (if not found then 0 and all motor names are printed) More...
 
virtual SensorMotorInfo SInfo (int index)
 returns the Information for the sensor with given index More...
 
virtual SensorMotorInfo MInfo (int index)
 returns the Information for the motor with given index More...
 
- Public Member Functions inherited from Configurable
 Configurable ()
 
 Configurable (const std::string &name, const std::string &revision)
 intialise with name and revision (use "$ID$") More...
 
virtual ~Configurable ()
 
virtual void notifyOnChange (const paramkey &key)
 Is called when a parameter was changes via setParam(). More...
 
virtual void addParameter (const paramkey &key, paramval *val, paramval minBound, paramval maxBound, const paramdescr &descr=paramdescr())
 This is the new style for adding configurable parameters. More...
 
virtual void addParameter (const paramkey &key, paramval *val, const paramdescr &descr=paramdescr())
 See addParameter(const paramkey& key, paramval* val, paramval minBound, paramval maxBound, const paramdescr& descr) More...
 
virtual void addParameter (const paramkey &key, parambool *val, const paramdescr &descr=paramdescr())
 See addParameter(const paramkey& key, paramval* val) but for bool values. More...
 
virtual void addParameter (const paramkey &key, paramint *val, paramint minBound, paramint maxBound, const paramdescr &descr=paramdescr())
 See addParameter(const paramkey& key, paramval* val) but for int values. More...
 
virtual void addParameter (const paramkey &key, paramint *val, const paramdescr &descr=paramdescr())
 
virtual void addParameterDef (const paramkey &key, paramval *val, paramval def, paramval minBound, paramval maxBound, const paramdescr &descr=paramdescr())
 This function is only provided for convenience. More...
 
virtual void addParameterDef (const paramkey &key, paramval *val, paramval def, const paramdescr &descr=paramdescr())
 
virtual void addParameterDef (const paramkey &key, parambool *val, parambool def, const paramdescr &descr=paramdescr())
 See addParameterDef(const paramkey&, paramval*, paramval) More...
 
virtual void addParameterDef (const paramkey &key, paramint *val, paramint def, paramint minBound, paramint maxBound, const paramdescr &descr=paramdescr())
 See addParameterDef(const paramkey&, paramval*, paramval) More...
 
virtual void addParameterDef (const paramkey &key, paramint *val, paramint def, const paramdescr &descr=paramdescr())
 
virtual void setParamDescr (const paramkey &key, const paramdescr &descr, bool traverseChildren=true)
 sets a description for the given parameter More...
 
int getId () const
 return the id of the configurable objects, which is created by random on initialisation More...
 
virtual paramkey getName () const
 return the name of the object More...
 
virtual paramkey getRevision () const
 returns the revision of the object More...
 
virtual void setName (const paramkey &name, bool callSetNameOfInspectable=true)
 Sets the name of the configurable. More...
 
virtual void setRevision (const paramkey &revision)
 sets the revision Hint: { return "$ID$"; } More...
 
virtual paramval getParam (const paramkey &key, bool traverseChildren=true) const
 returns the value of the requested parameter or 0 (+ error message to stderr) if unknown. More...
 
virtual bool hasParam (const paramkey &key, bool traverseChildren=true) const
 Returns if the requested parameter is part of the configurable or their children. More...
 
virtual bool setParam (const paramkey &key, paramval val, bool traverseChildren=true)
 sets the value of the given parameter or does nothing if unknown. More...
 
virtual void setParamBounds (const paramkey &key, paramval minBound, paramval maxBound, bool traverseChildren=true)
 Sets the bounds (minBound and maxBound) of the given parameter. More...
 
virtual void setParamBounds (const paramkey &key, paramint minBound, paramint maxBound, bool traverseChildren=true)
 
virtual void setParamBounds (const paramkey &key, paramvalBounds bounds, bool traverseChildren=true)
 
virtual void setParamBounds (const paramkey &key, paramintBounds bounds, bool traverseChildren=true)
 
virtual paramlist getParamList () const
 The list of all parameters with there value as allocated lists. More...
 
virtual std::list< paramkeygetAllParamNames (bool traverseChildren=true)
 returns all names that are configureable More...
 
virtual parammap getParamValMap () const
 
virtual paramintmap getParamIntMap () const
 
virtual paramboolmap getParamBoolMap () const
 
virtual paramdescr getParamDescr (const paramkey &key, bool traverseChildren=true) const
 returns the description for the given parameter More...
 
virtual paramvalBounds getParamvalBounds (const paramkey &key, bool traverseChildren=true) const
 
virtual paramintBounds getParamintBounds (const paramkey &key, bool traverseChildren=true) const
 
virtual bool hasParamDescr (const paramkey &key, bool traverseChildren=true) const
 
virtual bool hasParamvalBounds (const paramkey &key, bool traverseChildren=true) const
 
virtual bool hasParamintBounds (const paramkey &key, bool traverseChildren=true) const
 
virtual bool storeCfg (const char *filenamestem, const std::list< std::string > &comments=std::list< std::string >())
 stores the key values paires into the file : filenamestem.cfg including the comments given in the list More...
 
virtual bool restoreCfg (const char *filenamestem)
 restores the key values paires from the file : filenamestem.cfg More...
 
void print (FILE *f, const char *prefix, int columns=90, bool traverseChildren=true) const
 prints the keys, values and descriptions to the file. Each line is prefixed More...
 
bool parse (FILE *f, const char *prefix=0, bool traverseChildren=true)
 parses the configuration from the given file More...
 
virtual void addConfigurable (Configurable *conf)
 Adds a configurable as a child object. More...
 
virtual void removeConfigurable (Configurable *conf)
 Removes a configurable as a child object. More...
 
virtual const configurableListgetConfigurables () const
 Returns the list containing all configurable children. More...
 
virtual void configurableChanged ()
 Indicates that the configurable itself or the configurable children attached to this configurable have changed. More...
 
- Public Member Functions inherited from BackCaller
 BackCaller ()
 
virtual ~BackCaller ()
 
virtual void addCallbackable (Callbackable *callbackableInstance, CallbackableType type=BackCaller::DEFAULT_CALLBACKABLE_TYPE)
 Adds a Callbackable instance to this caller instance. More...
 
virtual void removeCallbackable (Callbackable *callbackableInstance, CallbackableType type=BackCaller::DEFAULT_CALLBACKABLE_TYPE)
 Removes a Callbackable instance from this caller instance. More...
 
virtual void removeAllCallbackables (CallbackableType type)
 Removes all Callbackable instances from this caller instance. More...
 
virtual void callBack (CallbackableType type=BackCaller::DEFAULT_CALLBACKABLE_TYPE)
 Calls all registered callbackable classes of the determined type. More...
 
virtual void callBackQMP (CallbackableType type=BackCaller::DEFAULT_CALLBACKABLE_TYPE)
 Calls all registered callbackable classes of the determined type. 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 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...
 
- Public Member Functions inherited from Storeable
virtual ~Storeable ()
 
bool storeToFile (const char *filename) const
 Provided for convenience. More...
 
bool restoreFromFile (const char *filename)
 Provided for convenience. More...
 
- Public Member Functions inherited from Teachable
virtual ~Teachable ()
 

Static Public Member Functions

static InvertMotorNStepConf getDefaultConf ()
 
static double clip095 (double x)
 
static double regularizedInverse (double v)
 

Public Attributes

matrix::Matrix A
 Model Matrix (motors to sensors) More...
 
matrix::Matrix S
 additional Model Matrix (sensors to sensors) More...
 
matrix::Matrix SD
 additional Model Matrix (sensors derivatives to sensors) More...
 
matrix::Matrix C
 Controller Matrix. More...
 
matrix::Matrix H
 Controller Bias. More...
 
matrix::Matrix B
 Model Bias. More...
 

Protected Member Functions

virtual void fillBuffersAndControl (const sensor *x_, int number_sensors, motor *y_, int number_motors)
 puts the sensors in the ringbuffer, generate controller values and put them in the More...
 
virtual void calcEtaAndBufferIt (int delay)
 calculates the first shift into the motor space useing delayed motor values. More...
 
virtual void calcXsi (int delay)
 calculates xsi for the current time step using the delayed y values More...
 
virtual void learnController (int delay)
 learn H,C with motors y and corresponding sensors x More...
 
virtual void calcCandHUpdates (matrix::Matrix &C_update, matrix::Matrix &H_update, int delay)
 calculates the Update for C and H More...
 
virtual void updateCandH (const matrix::Matrix &C_update, const matrix::Matrix &H_update, double squashSize)
 updates the matrix C and H More...
 
virtual void learnModel (int delay)
 learn A, (and S) using motors y and corresponding sensors x More...
 
virtual matrix::Matrix model (const matrix::Matrix *x_buffer, int delay, const matrix::Matrix &y)
 calculates the predicted sensor values More...
 
virtual void management ()
 handles inhibition damping etc. More...
 
virtual matrix::Matrix calculateControllerValues (const matrix::Matrix &x_smooth)
 returns controller output for given sensor values More...
 
matrix::Matrix calcDerivatives (const matrix::Matrix *buffer, int delay)
 Calculates first and second derivative and returns both in on matrix (above). More...
 
- Protected Member Functions inherited from HomeokinBase
void putInBuffer (matrix::Matrix *buffer, const matrix::Matrix &vec, int delay=0)
 put new value in ring buffer More...
 
virtual matrix::Matrix calculateDelayedValues (const matrix::Matrix *buffer, int number_steps_of_delay_)
 calculate delayed values More...
 
virtual matrix::Matrix calculateSmoothValues (const matrix::Matrix *buffer, int number_steps_for_averaging_)
 calculate time-smoothed values More...
 
virtual double calcErrorFactor (const matrix::Matrix &e, bool loga, bool root)
 calculates the error_factor for either logarithmic (E=ln(e^T*e)) or square (E=sqrt(e^t*e)) error More...
 
- Protected Member Functions inherited from Configurable
void copyParameters (const Configurable &, bool traverseChildren=true)
 copies the internal params of the given configurable More...
 
void printdescr (FILE *f, const char *prefix, const paramkey &key, int columns, int indent) const
 

Protected Attributes

unsigned short number_sensors
 
unsigned short number_motors
 
NoiseGeneratorBNoiseGen
 Noisegenerator for noisy bias. More...
 
NoiseGeneratorYNoiseGen
 Noisegenerator for noisy motor output. More...
 
matrix::Matrix R
 C*A. More...
 
matrix::Matrix SmallID
 small identity matrix in the dimension of R More...
 
matrix::Matrix xsi
 current output error More...
 
matrix::Matrix v
 current reconstructed error More...
 
double E_val
 value of Error function More...
 
double xsi_norm
 norm of matrix More...
 
double xsi_norm_avg
 average norm of xsi (used to define whether Modell learns) More...
 
double pain
 if the modelling error (xsi) is too high we have a pain signal More...
 
matrix::Matrixx_buffer
 
matrix::Matrixy_buffer
 
matrix::Matrixeta_buffer
 
matrix::Matrix zero_eta
 
matrix::Matrix x_smooth
 
matrix::Matrix y_teaching
 teaching motor signal More...
 
bool useTeaching
 flag whether there is an actual teachning signal or not More...
 
double reinforcement
 reinforcement value (set via setReinforcement()) More...
 
double reinforcefactor
 reinforcement factor (set to 1 every step after learning) More...
 
int t_rand
 initial random time to avoid syncronous management of all controllers More...
 
matrix::Matrix sensorweights
 sensor channel weight (each channel gets a certain importance) More...
 
double continuity
 factor to teach for continuity: subsequent motor commands should not differ too much More...
 
double modelCompliant
 learning factor for model (or sensor) compliant learning More...
 
int managementInterval
 interval between subsequent management function calls More...
 
paramval inhibition
 inhibition strength for sparce kwta strategy (is scaled with epsC) More...
 
paramval kwta
 (int) number of synapses that get strengthend More...
 
paramval limitRF
 (int) receptive field of motor neurons (number of offcenter sensors) if null then no limitation. Mutual exclusive with inhibition More...
 
paramval dampS
 damping of S matrix More...
 
paramval dampC
 damping of C matrix More...
 
paramval activeExplore
 decides whether and how strong the backpropagated error is used as a control signal More...
 
paramval cfactor
 
paramval cnondiagabs
 
paramval cdiagabs
 
paramval noiseY
 noise strength for y More...
 
InvertMotorNStepConf conf
 
- Protected Attributes inherited from InvertMotorController
paramval desens
 
paramval steps
 number of timesteps is used for controller learning More...
 
paramval zetaupdate
 
paramval dampA
 damping term for model (0: no damping, 0.1 high damping) More...
 
parambool relativeE
 if not 0: a relative error signal is used (xsi is normalised in respect to |y|) More...
 
paramval adaptRate
 adaptation rate for learning rate adaptation More...
 
paramval nomUpdate
 nominal update of controller in respect to matrix norm More...
 
paramval noiseB
 size of the additional noise for model bias B More...
 
paramval noiseY
 size of the additional noise for motor values More...
 
paramval teacher
 factor for teaching signal More...
 
- Protected Attributes inherited from HomeokinBase
paramval epsC
 learning rate factor for controller learning More...
 
paramval epsA
 learning rate factor for model learning More...
 
paramval factorB
 additional learning rate factor for model bias More...
 
paramint s4delay
 number of timesteps of delay in the SML More...
 
paramint s4avg
 number of timesteps used for smoothing the controller output values More...
 
paramint logaE
 logarithmic error is used for learning 1: controller 2: model 3: both More...
 
paramint rootE
 root error is used for learning 1: controller 2: model 3: both More...
 
paramval squashSize
 size of the box, where the parameter updates are clipped to More...
 
int t
 
unsigned short buffersize
 
bool initialised
 
- Protected Attributes inherited from AbstractController
std::map< std::string, int > sensorIndexMap
 
std::map< std::string, int > motorIndexMap
 
std::map< int, SensorMotorInfosensorInfoMap
 
std::map< int, SensorMotorInfomotorInfoMap
 
- Protected Attributes inherited from Inspectable
iparamkey name
 
iparampairlist mapOfValues
 
imatrixpairlist mapOfMatrices
 
infoLinesList infoLineStringList
 

Additional Inherited Members

- Public Types inherited from AbstractController
typedef double sensor
 
typedef double motor
 
- Public Types inherited from Configurable
typedef std::string paramkey
 
typedef std::string paramdescr
 
typedef double paramval
 
typedef std::list< std::pair
< paramkey, paramval > > 
paramlist
 
typedef std::map< paramkey,
paramval * > 
parammap
 
typedef bool parambool
 
typedef std::list< std::pair
< paramkey, parambool > > 
paramboollist
 
typedef std::map< paramkey,
parambool * > 
paramboolmap
 
typedef int paramint
 
typedef std::list< std::pair
< paramkey, paramint > > 
paramintlist
 
typedef std::map< paramkey,
paramint * > 
paramintmap
 
typedef std::map< paramkey,
paramdescr
paramdescrmap
 
typedef std::pair< paramval,
paramval
paramvalBounds
 
typedef std::map< paramkey,
paramvalBounds
paramvalBoundsMap
 
typedef std::pair< paramint,
paramint
paramintBounds
 
typedef std::map< paramkey,
paramintBounds
paramintBoundsMap
 
typedef std::pair< paramkey,
paramval * > 
paramvalpair
 
typedef std::pair< paramkey,
parambool * > 
paramboolpair
 
typedef std::pair< paramkey,
paramint * > 
paramintpair
 
typedef std::vector
< Configurable * > 
configurableList
 
- Public Types inherited from BackCaller
typedef unsigned long CallbackableType
 
- 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
 
- Static Public Attributes inherited from Configurable
static const CallbackableType CALLBACK_CONFIGURABLE_CHANGED = 11
 
- Static Public Attributes inherited from BackCaller
static const CallbackableType DEFAULT_CALLBACKABLE_TYPE = 0
 This is the default Callbackable type. More...
 
- Static Protected Member Functions inherited from HomeokinBase
static double g (double z)
 neuron transfer function More...
 

Detailed Description

class for robot controller that uses the georg's matrixlib for direct matrix inversion for n channels (simple one layer networks)

Implements standart parameters: eps, rho, mu, stepnumber4avg, stepnumber4delay

Constructor & Destructor Documentation

~InvertMotorNStep ( )
virtual

Member Function Documentation

void calcCandHUpdates ( matrix::Matrix C_update,
matrix::Matrix H_update,
int  delay 
)
protectedvirtual

calculates the Update for C and H

void calcCandHUpdatesTeaching ( matrix::Matrix C_update,
matrix::Matrix H_update,
int  y_delay 
)

calculates the Update for C and H using the teaching signal

Matrix calcDerivatives ( const matrix::Matrix buffer,
int  delay 
)
protected

Calculates first and second derivative and returns both in on matrix (above).

We use simple discrete approximations:

\[ f'(x) = (f(x) - f(x-1)) / 2 \]

\[ f''(x) = f(x) - 2f(x-1) + f(x-2) \]

where we have to go into the past because we do not have f(x+1). The scaling can be neglegted.

void calcEtaAndBufferIt ( int  delay)
protectedvirtual

calculates the first shift into the motor space useing delayed motor values.

calculates Eta which corrensponds to xsi_t which means eta_{t-1}

Matrix calculateControllerValues ( const matrix::Matrix x_smooth)
protectedvirtual

returns controller output for given sensor values

calculate controller outputs

Parameters
x_smoothsmoothed sensors Matrix(number_channels,1)
void calcXsi ( int  delay)
protectedvirtual

calculates xsi for the current time step using the delayed y values

double clip095 ( double  x)
static
void fillBuffersAndControl ( const sensor x_,
int  number_sensors,
motor y_,
int  number_motors 
)
protectedvirtual

puts the sensors in the ringbuffer, generate controller values and put them in the

matrix::Matrix& getC ( )
inline

reference to C-matrix

static InvertMotorNStepConf getDefaultConf ( )
inlinestatic
double getE ( ) const
inline
void getLastMotors ( motor motors,
int  len 
)
matrix::Matrix getLastMotorValues ( )
virtual

returns the last motor values (useful for cross motor coupling)

Implements Teachable.

void getLastSensors ( sensor sensors,
int  len 
)
matrix::Matrix getLastSensorValues ( )
virtual

returns the last sensor values (useful for cross sensor coupling)

Implements Teachable.

virtual int getMotorNumber ( ) const
inlinevirtual

returns the mumber of motors the controller was initialised with or 0 if not initialised

Implements AbstractController.

virtual int getSensorNumber ( ) const
inlinevirtual

returns the number of sensors the controller was initialised with or 0 if not initialised

Implements AbstractController.

matrix::Matrix getSensorWeights ( ) const
inline
list< Inspectable::IConnection > getStructuralConnections ( ) const
virtual

Specifies which parameter matrix forms a connection between layers (in terms of a neural network) The orderning is not important.

Returns
: list of layer names with dimension

Reimplemented from Inspectable.

list< Inspectable::ILayer > getStructuralLayers ( ) const
virtual

Specifies which parameter vector forms a structural layer (in terms of a neural network) The ordering is important.

The first entry is the input layer and so on.

Returns
: list of layer names with dimension

Reimplemented from Inspectable.

void init ( int  sensornumber,
int  motornumber,
RandGen randGen = 0 
)
virtual

initialisation of the controller with the given sensor/ motornumber Must be called before use.

The random generator is optional.

Implements AbstractController.

void kwtaInhibition ( matrix::Matrix weightmatrix,
unsigned int  k,
double  damping 
)

k-winner take all inhibition for synapses.

k largest synapses are strengthed and the rest are inhibited. strong synapes are scaled by 1+(damping/k) and weak synapses are scaled by 1-(damping/(n-k)) where n is the number of synapes

Parameters
weightmatrixreference to weight matrix. Synapses for a neuron are in one row. The inhibition is done for all rows independently
knumber of synapes to strengthen
dampingstrength of supression and exitation (typically 0.001)
void learnController ( int  delay)
protectedvirtual

learn H,C with motors y and corresponding sensors x

learn values H,C

void learnModel ( int  delay)
protectedvirtual

learn A, (and S) using motors y and corresponding sensors x

void limitC ( matrix::Matrix weightmatrix,
unsigned int  rfSize 
)

sets all connections to zero which are further away then rfSize from the diagonal.

If rfSize == 1 then only main diagonal is left. If rfSize = 2: main diagonal and upper and lower side diagonal are kept and so on and so forth.

void management ( )
protectedvirtual

handles inhibition damping etc.

Matrix model ( const matrix::Matrix x_buffer,
int  delay,
const matrix::Matrix y 
)
protectedvirtual

calculates the predicted sensor values

double regularizedInverse ( double  v)
static
bool restore ( FILE *  f)
virtual

loads the controller values from a given file.

Implements Storeable.

void setMotorTeaching ( const matrix::Matrix teaching)
virtual

The given motor teaching signal is used for this timestep.

It is used as a feed forward teaching signal for the controller. Please note, that the teaching signal has to be given each timestep for a continuous teaching process.

Parameters
teachingmatrix with dimensions (motornumber,1)

Implements Teachable.

void setMotorTeachingSignal ( const motor teaching,
int  len 
)
virtual

The given motor teaching signal is used for this timestep.

It is used as a feed forward teaching signal for the controller. Please note, that the teaching signal has to be given each timestep for a continuous teaching process.

void setReinforcement ( double  reinforcement)
virtual

set the reinforcement signal for this timestep.

It is used to calculate a factor for the update. Factor = 1-0.95*reinforcement.

Parameters
reinforcementvalue between -1 and 1 (-1 bad, 0 neutral, 1 good)
void setSensorTeaching ( const matrix::Matrix teaching)
virtual

The given sensor teaching signal (distal learning) is used for this timestep.

The belonging motor teachung signal is calculated by the inverse model. See setMotorTeaching

Parameters
teachingmatrix with dimensions (motorsensors,1)

Implements Teachable.

void setSensorTeachingSignal ( const sensor teaching,
int  len 
)
virtual

The given sensor teaching signal (distal learning) is used for this timestep.

First the belonging motor teachung signal is calculated by the inverse model. See setMotorTeachingSignal

void setSensorWeights ( const matrix::Matrix weights)

sets the sensor channel weights (matrix should be (getSensorNumber() x 1)

void step ( const sensor x_,
int  number_sensors,
motor y_,
int  number_motors 
)
virtual

performs one step (includes learning).

performs one step (includes learning). Calculates motor commands from sensor inputs.

Calulates motor commands from sensor inputs.

Implements AbstractController.

void stepNoLearning ( const sensor x,
int  number_sensors,
motor y,
int  number_motors 
)
virtual

performs one step without learning. Calulates motor commands from sensor inputs.

Implements AbstractController.

bool store ( FILE *  f) const
virtual

stores the controller values to a given file.

Implements Storeable.

void updateCandH ( const matrix::Matrix C_update,
const matrix::Matrix H_update,
double  squashSize 
)
protectedvirtual

updates the matrix C and H

Member Data Documentation

Model Matrix (motors to sensors)

paramval activeExplore
protected

decides whether and how strong the backpropagated error is used as a control signal

Model Bias.

NoiseGenerator* BNoiseGen
protected

Noisegenerator for noisy bias.

Controller Matrix.

paramval cdiagabs
protected
paramval cfactor
protected
paramval cnondiagabs
protected
InvertMotorNStepConf conf
protected
double continuity
protected

factor to teach for continuity: subsequent motor commands should not differ too much

paramval dampC
protected

damping of C matrix

paramval dampS
protected

damping of S matrix

double E_val
protected

value of Error function

matrix::Matrix* eta_buffer
protected

Controller Bias.

paramval inhibition
protected

inhibition strength for sparce kwta strategy (is scaled with epsC)

paramval kwta
protected

(int) number of synapses that get strengthend

paramval limitRF
protected

(int) receptive field of motor neurons (number of offcenter sensors) if null then no limitation. Mutual exclusive with inhibition

int managementInterval
protected

interval between subsequent management function calls

double modelCompliant
protected

learning factor for model (or sensor) compliant learning

paramval noiseY
protected

noise strength for y

unsigned short number_motors
protected
unsigned short number_sensors
protected
double pain
protected

if the modelling error (xsi) is too high we have a pain signal

matrix::Matrix R
protected

C*A.

double reinforcefactor
protected

reinforcement factor (set to 1 every step after learning)

double reinforcement
protected

reinforcement value (set via setReinforcement())

additional Model Matrix (sensors to sensors)

additional Model Matrix (sensors derivatives to sensors)

matrix::Matrix sensorweights
protected

sensor channel weight (each channel gets a certain importance)

matrix::Matrix SmallID
protected

small identity matrix in the dimension of R

int t_rand
protected

initial random time to avoid syncronous management of all controllers

bool useTeaching
protected

flag whether there is an actual teachning signal or not

matrix::Matrix v
protected

current reconstructed error

matrix::Matrix* x_buffer
protected
matrix::Matrix x_smooth
protected
matrix::Matrix xsi
protected

current output error

double xsi_norm
protected

norm of matrix

double xsi_norm_avg
protected

average norm of xsi (used to define whether Modell learns)

matrix::Matrix* y_buffer
protected
matrix::Matrix y_teaching
protected

teaching motor signal

NoiseGenerator* YNoiseGen
protected

Noisegenerator for noisy motor output.

matrix::Matrix zero_eta
protected

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