Robotsystem of the Robot Group Leipzig: AbstractController Class Reference

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages
- Examples

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# AbstractController Class Reference

Abstract class (interface) for robot controller. More...

`#include <abstractcontroller.h>`

Inherits Configurable, Inspectable, and Storeable.

Inherited by AbstractControllerAdapter, AbstractIAFController, ClassicReinforce, FFNNController, InvertController, InvertMotorController, MutualInformationController, ReplayController, SineController, and use_java_controller.

Inheritance diagram for AbstractController:

[legend]
Collaboration diagram for AbstractController:

[legend]
List of all members.

## Public Types
typedef double | sensor
typedef double | motor
## Public Member Functions
| AbstractController (const std::string &name, const std::string &revision)
| contructor (hint: use $ID$ for revision)
virtual void | init (int sensornumber, int motornumber, RandGen *randGen=0)=0
| initialisation of the controller with the given sensor/ motornumber Must be called before use.
virtual int | getSensorNumber () const =0
virtual int | getMotorNumber () const =0
virtual void | step (const sensor *sensors, int sensornumber, motor *motors, int motornumber)=0
| performs one step (includes learning).
virtual void | stepNoLearning (const sensor *, int number_sensors, motor *, int number_motors)=0
| performs one step without learning.

## Detailed Description

Abstract 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:

- init() is called first to initialise the dimension of sensor- and motor space
- each time step either step() or stepNoLearning() is called to ask the controller for motor values.

Examples:

  directconnect/directconnect.cpp, integration/main.cpp, and template_sphererobot/main.cpp.

## Member Typedef Documentation

typedef double motor

typedef double sensor

## Constructor & Destructor Documentation

AbstractController | ( | const std::string & | name,
|  | const std::string & | revision |
| ) |  |  | `[inline]`

contructor (hint: use $ID$ for revision)

## Member Function Documentation

virtual int getMotorNumber | ( |  | ) | const`[pure virtual]`

Returns:
  Number of motors the controller was initialised with or 0 if not initialised

Implemented in AbstractControllerAdapter, AbstractIAFController, BasicController, ClassicReinforce, FFNNController, InvertMotorBigModel, InvertMotorNStep, InvertMotorSpace, InvertNChannelController, MutualInformationController, ReplayController, SineController, and use_java_controller.

virtual int getSensorNumber | ( |  | ) | const`[pure virtual]`

Returns:
  Number of sensors the controller was initialised with or 0 if not initialised

Implemented in AbstractControllerAdapter, AbstractIAFController, BasicController, ClassicReinforce, FFNNController, InvertMotorBigModel, InvertMotorNStep, InvertMotorSpace, InvertNChannelController, MutualInformationController, ReplayController, SineController, and use_java_controller.

virtual void init | ( | int | sensornumber,
|  | int | motornumber,
|  | RandGen * | randGen = `0` |
| ) |  |  | `[pure virtual]`

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

The random generator is optional.

Implemented in AbstractControllerAdapter, AbstractIAFController, AbstractMultiController, BasicController, ClassicReinforce, DiscreteControllerAdapter, FFNNController, InvertMotorBigModel, InvertMotorNStep, InvertMotorSpace, InvertNChannelController, MeasureAdapter, MutualInformationController, OneActiveMultiPassiveController, ReplayController, and SineController.

Examples:
  directconnect/directconnect.cpp.

virtual void step | ( | const sensor * | sensors,
|  | int | sensornumber,
|  | motor * | motors,
|  | int | motornumber |
| ) |  |  | `[pure virtual]`

performs one step (includes learning).

Calculates motor commands from sensor inputs.

Parameters:

  | 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

Implemented in AbstractControllerAdapter, AbstractIAFController, AbstractMultiController, BasicController, ClassicReinforce, DiscreteControllerAdapter, Discretesizable, FFNNController, InvertMotorBigModel, InvertMotorNStep, InvertMotorSpace, InvertNChannelController, MeasureAdapter, MutualInformationController, OneActiveMultiPassiveController, ReplayController, SineController, and use_java_controller.

Examples:
  directconnect/directconnect.cpp.

virtual void stepNoLearning | ( | const sensor * | ,
|  | int | number_sensors,
|  | motor * | ,
|  | int | number_motors |
| ) |  |  | `[pure virtual]`

performs one step without learning.

See also:
  step

Implemented in AbstractControllerAdapter, AbstractIAFController, AbstractMultiController, BasicController, ClassicReinforce, DiscreteControllerAdapter, Discretesizable, FFNNController, InvertMotorBigModel, InvertMotorNStep, InvertMotorSpace, InvertNChannelController, MeasureAdapter, MutualInformationController, OneActiveMultiPassiveController, ReplayController, SineController, and use_java_controller.

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

- abstractcontroller.h