Abstract adapter class (interface) for robot controller. More...
#include <abstractcontrolleradapter.h>
Inherits AbstractController.
Inherited by AbstractMultiController, CrossMotorCoupling, DiscreteControllerAdapter, and MeasureAdapter.
Public Member Functions | |
AbstractControllerAdapter (AbstractController *controller, const std::string &name, const std::string &revision) | |
virtual | ~AbstractControllerAdapter () |
virtual void | init (int sensornumber, int motornumber, RandGen *randGen=0) |
initialisation of the controller with the given sensor/ motornumber Must NORMALLY be called before use. | |
virtual int | getSensorNumber () const |
virtual int | getMotorNumber () const |
virtual void | step (const sensor *sensors, int sensornumber, motor *motors, int motornumber) |
performs one step (includes learning). | |
virtual void | stepNoLearning (const sensor *sensors, int sensornumber, motor *motors, int motornumber) |
performs one step without learning. | |
virtual bool | store (FILE *f) const |
virtual bool | restore (FILE *f) |
Protected Attributes | |
AbstractController * | controller |
Abstract adapter class (interface) for robot controller.
The controller gets a number of input sensor values each timestep and has to generate a number of output motor values.
Interface assumes the following usage:
With the adapter class you can easily overwrite e.g. init(), step().
This is an abstract adapter class, it's useful for implementing adapters such as the DescreteController, which can be used with all Controllers.
Note that the configureable and inspectable classes are registered at this adapter class.
The store and restore-functionality is lead through, thus only store() and restore() from
AbstractControllerAdapter | ( | AbstractController * | controller, | |
const std::string & | name, | |||
const std::string & | revision | |||
) | [inline] |
virtual ~AbstractControllerAdapter | ( | ) | [inline, virtual] |
virtual int getMotorNumber | ( | ) | const [inline, virtual] |
Implements AbstractController.
virtual int getSensorNumber | ( | ) | const [inline, virtual] |
Implements AbstractController.
virtual void init | ( | int | sensornumber, | |
int | motornumber, | |||
RandGen * | randGen = 0 | |||
) | [inline, virtual] |
initialisation of the controller with the given sensor/ motornumber Must NORMALLY be called before use.
For all ControllerAdapters call first AbstractControllerAdapter::init(sensornumber,motornumber) if you overwrite this method
Implements AbstractController.
Reimplemented in AbstractMultiController, DiscreteControllerAdapter, MeasureAdapter, and OneActiveMultiPassiveController.
virtual bool restore | ( | FILE * | f | ) | [inline, virtual] |
virtual void step | ( | const sensor * | sensors, | |
int | sensornumber, | |||
motor * | motors, | |||
int | motornumber | |||
) | [inline, virtual] |
performs one step (includes learning).
Calculates motor commands from sensor inputs.
sensors | sensors inputs scaled to [-1,1] | |
sensornumber | length of the sensor array | |
motors | motors outputs. MUST have enough space for motor values! | |
motornumber | length of the provided motor array |
Implements AbstractController.
Reimplemented in AbstractMultiController, CrossMotorCoupling, DiscreteControllerAdapter, Discretesizable, MeasureAdapter, and OneActiveMultiPassiveController.
virtual void stepNoLearning | ( | const sensor * | sensors, | |
int | sensornumber, | |||
motor * | motors, | |||
int | motornumber | |||
) | [inline, virtual] |
performs one step without learning.
Implements AbstractController.
Reimplemented in AbstractMultiController, DiscreteControllerAdapter, Discretesizable, MeasureAdapter, and OneActiveMultiPassiveController.
virtual bool store | ( | FILE * | f | ) | const [inline, virtual] |
AbstractController* controller [protected] |