experimentslibinitializer.cpp
1 /********************************************************************************
2  * FARSA Experimentes Library *
3  * Copyright (C) 2007-2012 *
4  * Gianluca Massera <emmegian@yahoo.it> *
5  * Stefano Nolfi <stefano.nolfi@istc.cnr.it> *
6  * Tomassino Ferrauto <tomassino.ferrauto@istc.cnr.it> *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  * This program is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16  * GNU General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this program; if not, write to the Free Software *
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
21  ********************************************************************************/
22 
23 #include "experimentsconfig.h"
24 #include "evonet.h"
25 #include "component.h"
26 #include "sensors.h"
27 #include "motors.h"
28 #include "marxbotsensors.h"
29 #include "marxbotmotors.h"
30 #include "epucksensors.h"
31 #include "epuckmotors.h"
32 #include "kheperasensors.h"
33 #include "kheperamotors.h"
34 #include "evoga.h"
35 #include "abstracttest.h"
36 #include "tests.h"
37 #include "evorobotcomponent.h"
38 #include "factory.h"
39 #include "logger.h"
40 #include "robots.h"
41 #include "arena.h"
42 #include "baseexperiment.h"
43 
44 namespace farsa {
45 
46 bool FARSA_EXPERIMENTS_API initExperimentsLib() {
47  static bool dummy = false;
48  if ( dummy ) return true;
49  dummy = true;
50  // Registering main types to factory
51  Factory::getInstance().registerClass<Component>( "Component", "ParameterSettableWithConfigureFunction" );
52  Factory::getInstance().registerClass<BaseExperiment>( "BaseExperiment", "Component" );
53 
54  // Evonet does not comply with ConfigurationParameters
55  Factory::getInstance().registerClass<Evonet>( "Evonet", "ParameterSettableWithConfigureFunction" );
56 
57  // Registering all robots
58  Factory::getInstance().registerClass<Robot>( "Robot", "ParameterSettableInConstructor" );
59  Factory::getInstance().registerClass<MarXbot>( "MarXbot", "Robot" );
60  Factory::getInstance().registerClass<Epuck>( "Epuck", "Robot" );
61  Factory::getInstance().registerClass<Khepera>( "Khepera", "Robot" );
62 
63  // Registering the arena
64  Factory::getInstance().registerClass<Arena>( "Arena", "ParameterSettableInConstructor" );
65 
66  // Registering all types for evorobot component
67  Factory::getInstance().registerClass<EvoRobotComponent>( "EvoRobotComponent", "Component" );
68  Factory::getInstance().registerClass<Evoga>("Evoga", "ParameterSettableWithConfigureFunction");
69  Factory::getInstance().registerClass<AbstractTest>("AbstractTest", "ParameterSettableWithConfigureFunction");
70  Factory::getInstance().registerClass<EvoRobotExperiment>("EvoRobotExperiment", "ParameterSettableWithConfigureFunction");
71  Factory::getInstance().registerClass<TestRandom>("TestRandom", "AbstractTest");
72  Factory::getInstance().registerClass<TestIndividual>("TestIndividual", "AbstractTest");
73  Factory::getInstance().registerClass<TestCurrent>("TestCurrent", "AbstractTest");
74 
75  // Registering sensors
76  Factory::getInstance().registerClass<Sensor>("Sensor", "ParameterSettableInConstructor");
77  Factory::getInstance().registerClass<FakeSensor>("FakeSensor", "Sensor");
78  Factory::getInstance().registerClass<ObjectPositionSensor>("ObjectPositionSensor", "Sensor");
79  Factory::getInstance().registerClass<MarXbotSensor>("MarXbotSensor", "Sensor");
80  Factory::getInstance().registerClass<MarXbotProximityIRSensor>("MarXbotProximityIRSensor", "MarXbotSensor");
81  Factory::getInstance().registerClass<MarXbotGroundBottomIRSensor>("MarXbotGroundBottomIRSensor", "MarXbotSensor");
82  Factory::getInstance().registerClass<MarXbotGroundAroundIRSensor>("MarXbotGroundAroundIRSensor", "MarXbotSensor");
83  Factory::getInstance().registerClass<MarXbotLinearCameraSensor>("MarXbotLinearCameraSensor", "MarXbotSensor");
84  Factory::getInstance().registerClass<MarXbotLinearCameraSensorNew>("MarXbotLinearCameraSensorNew", "MarXbotSensor");
85  Factory::getInstance().registerClass<MarXbotTractionSensor>("MarXbotTractionSensor", "MarXbotSensor");
86  Factory::getInstance().registerClass<MarXbotSampledProximityIRSensor>("MarXbotSampledProximityIRSensor", "MarXbotSensor");
87  Factory::getInstance().registerClass<MarXbotAttachmentDeviceSensor>("MarXbotAttachmentDeviceSensor", "MarXbotSensor");
88  Factory::getInstance().registerClass<MarXbotWheelSpeedsSensor>("MarXbotWheelSpeedsSensor", "MarXbotSensor");
89  Factory::getInstance().registerClass<MarXbotLaserFrontDistanceSensor>("MarXbotLaserFrontDistanceSensor", "MarXbotSensor");
90  Factory::getInstance().registerClass<MarXbotLaserOmniDistanceSensor>("MarXbotLaserOmniDistanceSensor", "MarXbotSensor");
91  Factory::getInstance().registerClass<EpuckSensor>("EpuckSensor", "Sensor");
92  Factory::getInstance().registerClass<EpuckProximityIRSensor>("EpuckProximityIRSensor", "EpuckSensor");
93  Factory::getInstance().registerClass<EpuckGroundIRSensor>("EpuckGroundIRSensor", "EpuckSensor");
94  Factory::getInstance().registerClass<EpuckLinearCameraSensor>("EpuckLinearCameraSensor", "EpuckSensor");
95  Factory::getInstance().registerClass<EpuckSampledProximityIRSensor>("EpuckSampledProximityIRSensor", "EpuckSensor");
96  Factory::getInstance().registerClass<KheperaSensor>("KheperaSensor", "Sensor");
97  Factory::getInstance().registerClass<KheperaProximityIRSensor>("KheperaProximityIRSensor", "KheperaSensor");
98  Factory::getInstance().registerClass<KheperaSampledProximityIRSensor>("KheperaSampledProximityIRSensor", "KheperaSensor");
99 
100  Factory::getInstance().registerClass<KheperaSampledLightSensor>("KheperaSampledLightSensor", "KheperaSensor");
101  Factory::getInstance().registerClass<KheperaGroundSensor>("KheperaGroundSensor", "KheperaSensor");
102  Factory::getInstance().registerClass<KheperaWheelSpeedsSensor>("KheperaWheelSpeedsSensor", "KheperaSensor");
103 
104  Factory::getInstance().registerClass<KheperaWheelSpeedsSensor>("KheperaWheelSpeedsSensor", "KheperaSensor");
105 
106 
107  // Registering motors
108  Factory::getInstance().registerClass<Motor>("Motor", "ParameterSettableInConstructor");
109  Factory::getInstance().registerClass<FakeMotor>("FakeMotor", "Motor");
110  Factory::getInstance().registerClass<MarXbotMotor>("MarXbotMotor", "Motor");
111  Factory::getInstance().registerClass<MarXbotWheelVelocityMotor>("MarXbotWheelVelocityMotor", "MarXbotMotor");
112  Factory::getInstance().registerClass<MarXbotWheelVelOrient>("MarXbotWheelVelOrient", "MarXbotMotor");
113  Factory::getInstance().registerClass<MarXbotColorMotor>("MarXbotColorMotor", "MarXbotMotor");
114  Factory::getInstance().registerClass<MarXbotAttachmentDeviceMotor>("MarXbotAttachmentDeviceMotor", "MarXbotMotor");
115  Factory::getInstance().registerClass<EpuckMotor>("EpuckMotor", "Motor");
116  Factory::getInstance().registerClass<EpuckWheelVelocityMotor>("EpuckWheelVelocityMotor", "EpuckMotor");
117  Factory::getInstance().registerClass<KheperaMotor>("KheperaMotor", "Motor");
118  Factory::getInstance().registerClass<KheperaWheelVelocityMotor>("KheperaWheelVelocityMotor", "KheperaMotor");
119 
120 
121  Logger::info( "Library Experiments Initialized" );
122  return true;
123 }
124 
125 } // end namespace farsa
This file contains the common type defitions used on the whole framework.
static void info(QString msg)
static Factory & getInstance()
void registerClass(QString className, QString parentClassName)