Robot Simulator of the Robotics Group for Self-Organization of Control
0.8.0
|
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>
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< ILayer > | getStructuralLayers () const |
Specifies which parameter vector forms a structural layer (in terms of a neural network) The ordering is important. More... | |
virtual std::list< IConnection > | 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 | 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::Matrix & | getC () |
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< paramkey > | getAllParamNames (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 configurableList & | getConfigurables () 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 infoLinesList & | getInfoLines () 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 inspectableList & | getInspectables () 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 |
NoiseGenerator * | BNoiseGen |
Noisegenerator for noisy bias. More... | |
NoiseGenerator * | YNoiseGen |
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::Matrix * | x_buffer |
matrix::Matrix * | y_buffer |
matrix::Matrix * | eta_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, SensorMotorInfo > | sensorInfoMap |
std::map< int, SensorMotorInfo > | motorInfoMap |
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< iparamkey > | iparamkeylist |
typedef std::list< std::string > | infoLinesList |
typedef std::list< iparamval > | iparamvallist |
typedef std::list< iparamval const * > | iparamvalptrlist |
typedef std::list< iparampair > | iparampairlist |
typedef std::list< imatrixpair > | imatrixpairlist |
typedef struct Inspectable::ILayer | ILayer |
typedef struct Inspectable::IConnection | IConnection |
typedef std::list< ILayer > | ilayerlist |
typedef std::list< IConnection > | iconnectionlist |
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... | |
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
InvertMotorNStep | ( | const InvertMotorNStepConf & | conf = getDefaultConf() | ) |
|
virtual |
|
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
|
protected |
Calculates first and second derivative and returns both in on matrix (above).
We use simple discrete approximations:
where we have to go into the past because we do not have f(x+1). The scaling can be neglegted.
|
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}
|
protectedvirtual |
returns controller output for given sensor values
calculate controller outputs
x_smooth | smoothed sensors Matrix(number_channels,1) |
|
protectedvirtual |
calculates xsi for the current time step using the delayed y values
|
static |
|
protectedvirtual |
puts the sensors in the ringbuffer, generate controller values and put them in the
|
inline |
reference to C-matrix
|
inlinestatic |
|
inline |
void getLastMotors | ( | motor * | motors, |
int | len | ||
) |
|
virtual |
returns the last motor values (useful for cross motor coupling)
Implements Teachable.
void getLastSensors | ( | sensor * | sensors, |
int | len | ||
) |
|
virtual |
returns the last sensor values (useful for cross sensor coupling)
Implements Teachable.
|
inlinevirtual |
returns the mumber of motors the controller was initialised with or 0 if not initialised
Implements AbstractController.
|
inlinevirtual |
returns the number of sensors the controller was initialised with or 0 if not initialised
Implements AbstractController.
|
inline |
|
virtual |
Specifies which parameter matrix forms a connection between layers (in terms of a neural network) The orderning is not important.
Reimplemented from Inspectable.
|
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.
Reimplemented from Inspectable.
|
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
weightmatrix | reference to weight matrix. Synapses for a neuron are in one row. The inhibition is done for all rows independently |
k | number of synapes to strengthen |
damping | strength of supression and exitation (typically 0.001) |
|
protectedvirtual |
learn H,C with motors y and corresponding sensors x
learn values H,C
|
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.
|
protectedvirtual |
handles inhibition damping etc.
|
protectedvirtual |
calculates the predicted sensor values
|
static |
|
virtual |
loads the controller values from a given file.
Implements Storeable.
|
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.
teaching | matrix with dimensions (motornumber,1) |
Implements Teachable.
|
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.
|
virtual |
set the reinforcement signal for this timestep.
It is used to calculate a factor for the update. Factor = 1-0.95*reinforcement.
reinforcement | value between -1 and 1 (-1 bad, 0 neutral, 1 good) |
|
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
teaching | matrix with dimensions (motorsensors,1) |
Implements Teachable.
|
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)
performs one step (includes learning).
performs one step (includes learning). Calculates motor commands from sensor inputs.
Calulates motor commands from sensor inputs.
Implements AbstractController.
performs one step without learning. Calulates motor commands from sensor inputs.
Implements AbstractController.
|
virtual |
stores the controller values to a given file.
Implements Storeable.
|
protectedvirtual |
updates the matrix C and H
Model Matrix (motors to sensors)
|
protected |
decides whether and how strong the backpropagated error is used as a control signal
Model Bias.
|
protected |
Noisegenerator for noisy bias.
Controller Matrix.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
factor to teach for continuity: subsequent motor commands should not differ too much
|
protected |
damping of C matrix
|
protected |
damping of S matrix
|
protected |
value of Error function
|
protected |
Controller Bias.
|
protected |
inhibition strength for sparce kwta strategy (is scaled with epsC)
|
protected |
(int) number of synapses that get strengthend
|
protected |
(int) receptive field of motor neurons (number of offcenter sensors) if null then no limitation. Mutual exclusive with inhibition
|
protected |
interval between subsequent management function calls
|
protected |
learning factor for model (or sensor) compliant learning
|
protected |
noise strength for y
|
protected |
|
protected |
|
protected |
if the modelling error (xsi) is too high we have a pain signal
|
protected |
C*A.
|
protected |
reinforcement factor (set to 1 every step after learning)
|
protected |
reinforcement value (set via setReinforcement())
additional Model Matrix (sensors to sensors)
additional Model Matrix (sensors derivatives to sensors)
|
protected |
sensor channel weight (each channel gets a certain importance)
|
protected |
small identity matrix in the dimension of R
|
protected |
initial random time to avoid syncronous management of all controllers
|
protected |
flag whether there is an actual teachning signal or not
|
protected |
current reconstructed error
|
protected |
|
protected |
|
protected |
current output error
|
protected |
norm of matrix
|
protected |
average norm of xsi (used to define whether Modell learns)
|
protected |
|
protected |
teaching motor signal
|
protected |
Noisegenerator for noisy motor output.
|
protected |