This controller implements the standard algorihm described the the Chapter 5 (Homeokinesis) with extensions of Chapter 15 of book "The Playful Machine". More...
#include <sox.h>
Inherits AbstractController, and Teachable.

Public Member Functions | |
| Sox (const SoxConf &conf=getDefaultConf()) | |
| constructor | |
| Sox (double init_feedback_strength, bool useExtendedModel=true, bool useTeaching=false) | |
| constructor provided for convenience, use conf object to customize more | |
| virtual void | init (int sensornumber, int motornumber, RandGen *randGen=0) |
| initialisation of the controller with the given sensor/ motornumber Must be called before use. | |
| virtual | ~Sox () |
| virtual int | getSensorNumber () const |
| returns the number of sensors the controller was initialised with or 0 if not initialised | |
| virtual int | getMotorNumber () const |
| returns the mumber of motors the controller was initialised with or 0 if not initialised | |
| virtual void | step (const sensor *, int number_sensors, motor *, int number_motors) |
| performs one step (includes learning). | |
| virtual void | stepNoLearning (const sensor *, int number_sensors, motor *, int number_motors) |
| performs one step without learning. Calulates motor commands from sensor inputs. | |
| virtual void | motorBabblingStep (const sensor *, int number_sensors, const motor *, int number_motors) |
| called during babbling phase | |
| virtual bool | store (FILE *f) const |
| stores the controller values to a given file. | |
| virtual bool | restore (FILE *f) |
| loads the controller values from a given file. | |
| virtual matrix::Matrix | getA () |
| virtual void | setA (const matrix::Matrix &A) |
| virtual matrix::Matrix | getC () |
| virtual void | setC (const matrix::Matrix &C) |
| virtual matrix::Matrix | geth () |
| virtual void | seth (const matrix::Matrix &h) |
| virtual void | setMotorTeaching (const matrix::Matrix &teaching) |
| The given motor teaching signal is used for this timestep. | |
| virtual void | setSensorTeaching (const matrix::Matrix &teaching) |
| The given sensor teaching signal (distal learning) is used for this timestep. | |
| virtual matrix::Matrix | getLastMotorValues () |
| returns the last motor values (useful for cross motor coupling) | |
| virtual matrix::Matrix | getLastSensorValues () |
| returns the last sensor values (useful for cross sensor coupling) | |
Static Public Member Functions | |
| static SoxConf | getDefaultConf () |
Protected Member Functions | |
| void | constructor () |
| matrix::Matrix | pseudoInvL (const matrix::Matrix &L, const matrix::Matrix &A, const matrix::Matrix &C) |
| virtual void | learn () |
| learn values model and controller (A,b,C,h) | |
Static Protected Member Functions | |
| static double | g (double z) |
| neuron transfer function | |
| static double | g_s (double z) |
| derivative of g | |
| static double | clip (double r, double x) |
| function that clips the second argument to the interval [-first,first] | |
| static double | one_over (double x) |
| calculates the inverse the argument (useful for Matrix::map) | |
Protected Attributes | |
| unsigned short | number_sensors |
| unsigned short | number_motors |
| matrix::Matrix | A |
| matrix::Matrix | C |
| matrix::Matrix | S |
| matrix::Matrix | h |
| matrix::Matrix | b |
| matrix::Matrix | L |
| matrix::Matrix | R |
| matrix::Matrix | C_native |
| matrix::Matrix | A_native |
| matrix::Matrix | y_buffer [buffersize] |
| matrix::Matrix | x_buffer [buffersize] |
| matrix::Matrix | v_avg |
| matrix::Matrix | x |
| matrix::Matrix | x_smooth |
| int | t |
| bool | loga |
| SoxConf | conf |
| configuration objects | |
| bool | intern_isTeaching |
| matrix::Matrix | y_teaching |
| paramval | creativity |
| paramval | sense |
| paramval | harmony |
| paramval | causeaware |
| paramint | pseudo |
| paramval | epsC |
| paramval | epsA |
| paramval | damping |
| paramval | gamma |
Static Protected Attributes | |
| static const unsigned short | buffersize = 10 |
This controller implements the standard algorihm described the the Chapter 5 (Homeokinesis) with extensions of Chapter 15 of book "The Playful Machine".
| Sox | ( | double | init_feedback_strength, | |
| bool | useExtendedModel = true, |
|||
| bool | useTeaching = false | |||
| ) |
constructor provided for convenience, use conf object to customize more
| ~Sox | ( | ) | [virtual] |
| static double clip | ( | double | r, | |
| double | x | |||
| ) | [inline, static, protected] |
function that clips the second argument to the interval [-first,first]
| void constructor | ( | ) | [protected] |
| static double g | ( | double | z | ) | [inline, static, protected] |
neuron transfer function
| static double g_s | ( | double | z | ) | [inline, static, protected] |
derivative of g
| matrix::Matrix getA | ( | ) | [virtual] |
| matrix::Matrix getC | ( | ) | [virtual] |
| static SoxConf getDefaultConf | ( | ) | [inline, static] |
| matrix::Matrix geth | ( | ) | [virtual] |
| matrix::Matrix getLastMotorValues | ( | ) | [virtual] |
returns the last motor values (useful for cross motor coupling)
Implements Teachable.
| matrix::Matrix getLastSensorValues | ( | ) | [virtual] |
returns the last sensor values (useful for cross sensor coupling)
Implements Teachable.
| virtual int getMotorNumber | ( | ) | const [inline, virtual] |
returns the mumber of motors the controller was initialised with or 0 if not initialised
Implements AbstractController.
| virtual int getSensorNumber | ( | ) | const [inline, virtual] |
returns the number of sensors the controller was initialised with or 0 if not initialised
Implements AbstractController.
| 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 learn | ( | ) | [protected, virtual] |
learn values model and controller (A,b,C,h)
| void motorBabblingStep | ( | const sensor * | x_, | |
| int | number_sensors, | |||
| const motor * | y_, | |||
| int | number_motors | |||
| ) | [virtual] |
called during babbling phase
Reimplemented from AbstractController.
| static double one_over | ( | double | x | ) | [inline, static, protected] |
calculates the inverse the argument (useful for Matrix::map)
| Matrix pseudoInvL | ( | const matrix::Matrix & | L, | |
| const matrix::Matrix & | A, | |||
| const matrix::Matrix & | C | |||
| ) | [protected] |
| bool restore | ( | FILE * | f | ) | [virtual] |
loads the controller values from a given file.
Implements Storeable.
| void setA | ( | const matrix::Matrix & | A | ) | [virtual] |
| void setC | ( | const matrix::Matrix & | C | ) | [virtual] |
| void seth | ( | const matrix::Matrix & | h | ) | [virtual] |
| 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.
| teaching,: | matrix with dimensions (motornumber,1) |
Implements Teachable.
| 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
| teaching,: | matrix with dimensions (motorsensors,1) |
Implements Teachable.
performs one step (includes learning).
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.
matrix::Matrix A [protected] |
matrix::Matrix A_native [protected] |
matrix::Matrix b [protected] |
const unsigned short buffersize = 10 [static, protected] |
matrix::Matrix C [protected] |
matrix::Matrix C_native [protected] |
paramval causeaware [protected] |
paramval creativity [protected] |
matrix::Matrix h [protected] |
bool intern_isTeaching [protected] |
matrix::Matrix L [protected] |
bool loga [protected] |
unsigned short number_motors [protected] |
unsigned short number_sensors [protected] |
matrix::Matrix R [protected] |
matrix::Matrix S [protected] |
int t [protected] |
matrix::Matrix v_avg [protected] |
matrix::Matrix x [protected] |
matrix::Matrix x_buffer[buffersize] [protected] |
matrix::Matrix x_smooth [protected] |
matrix::Matrix y_buffer[buffersize] [protected] |
matrix::Matrix y_teaching [protected] |
1.6.3