experiments/src/experimentslibinitializer.cpp

00001 /********************************************************************************
00002  *  FARSA Experimentes Library                                                  *
00003  *  Copyright (C) 2007-2012                                                     *
00004  *  Gianluca Massera <emmegian@yahoo.it>                                        *
00005  *  Stefano Nolfi <stefano.nolfi@istc.cnr.it>                                   *
00006  *  Tomassino Ferrauto <tomassino.ferrauto@istc.cnr.it>                         *
00007  *                                                                              *
00008  *  This program is free software; you can redistribute it and/or modify        *
00009  *  it under the terms of the GNU General Public License as published by        *
00010  *  the Free Software Foundation; either version 2 of the License, or           *
00011  *  (at your option) any later version.                                         *
00012  *                                                                              *
00013  *  This program is distributed in the hope that it will be useful,             *
00014  *  but WITHOUT ANY WARRANTY; without even the implied warranty of              *
00015  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               *
00016  *  GNU General Public License for more details.                                *
00017  *                                                                              *
00018  *  You should have received a copy of the GNU General Public License           *
00019  *  along with this program; if not, write to the Free Software                 *
00020  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA  *
00021  ********************************************************************************/
00022 
00023 #include "experimentsconfig.h"
00024 #include "evonet.h"
00025 #include "component.h"
00026 #include "sensors.h"
00027 #include "motors.h"
00028 #include "icubsensors.h"
00029 #include "icubmotors.h"
00030 #include "marxbotsensors.h"
00031 #include "marxbotmotors.h"
00032 #include "evoga.h"
00033 #include "icubsimulator.h"
00034 #include "abstracttest.h"
00035 #include "tests.h"
00036 #include "evorobotcomponent.h"
00037 #include "factory.h"
00038 #include "logger.h"
00039 #include "robots.h"
00040 
00041 namespace farsa {
00042 
00043 bool FARSA_EXPERIMENTS_API initExperimentsLib() {
00044     static bool dummy = false;
00045     if ( dummy ) return true;
00046     dummy = true;
00047     // Registering main types to factory
00048     Factory::getInstance().registerClass<Component>( "Component", "ParameterSettableWithConfigureFunction" );
00049 
00050     // Evonet does not comply with ConfigurationParameters
00051     Factory::getInstance().registerClass<Evonet>( "Evonet", "ParameterSettableWithConfigureFunction" );
00052 
00053     // Registering all robots
00054     Factory::getInstance().registerClass<Robot>( "Robot", "ParameterSettableInConstructor" );
00055 #ifdef FARSA_USE_YARP_AND_ICUB
00056     Factory::getInstance().registerClass<iCubRobot>( "iCubRobot", "Robot" );
00057 #endif
00058     Factory::getInstance().registerClass<MarXbot>( "MarXbot", "Robot" );
00059 
00060 #ifdef FARSA_USE_YARP_AND_ICUB
00061     // Registering all types for icubsimulator component
00062     Factory::getInstance().registerClass<iCubSimulator>( "iCubSimulator", "Component" );
00063 #endif
00064 
00065     // Registering all types for evorobot component
00066     Factory::getInstance().registerClass<EvoRobotComponent>( "EvoRobotComponent", "Component" );
00067     Factory::getInstance().registerClass<Evoga>("Evoga", "ParameterSettableWithConfigureFunction");
00068     Factory::getInstance().registerClass<AbstractTest>("AbstractTest", "ParameterSettableWithConfigureFunction");
00069     Factory::getInstance().registerClass<EvoRobotExperiment>("EvoRobotExperiment", "ParameterSettableWithConfigureFunction");
00070     Factory::getInstance().registerClass<TestRandom>("TestRandom", "AbstractTest");
00071     Factory::getInstance().registerClass<TestIndividual>("TestIndividual", "AbstractTest");
00072 
00073     // Registering sensors
00074     Factory::getInstance().registerClass<Sensor>("Sensor", "ParameterSettableInConstructor");
00075     Factory::getInstance().registerClass<ObjectPositionSensor>("ObjectPositionSensor", "Sensor");
00076 #ifdef FARSA_USE_YARP_AND_ICUB
00077     Factory::getInstance().registerClass<iCubSensor>("iCubSensor", "Sensor");
00078     Factory::getInstance().registerClass<iCubArmJointsSensor>("iCubArmJointsSensor", "iCubSensor");
00079     Factory::getInstance().registerClass<ColorCameraSensor>("ColorCameraSensor", "iCubSensor");
00080     Factory::getInstance().registerClass<iCubHeadJointsSensor>("iCubHeadJointsSensor", "iCubSensor");
00081     Factory::getInstance().registerClass<iCubTorsoJointsSensor>("iCubTorsoJointsSensor", "iCubSensor");
00082     Factory::getInstance().registerClass<iCubHandJointsSensor>("iCubHandJointsSensor", "iCubSensor");
00083     Factory::getInstance().registerClass<iCubPalmTargetDistSensor>("iCubPalmTargetDistSensor", "iCubSensor");
00084     Factory::getInstance().registerClass<iCubPalmTouchSensor>("iCubPalmTouchSensor", "iCubSensor");
00085     Factory::getInstance().registerClass<iCubHandTouchSensor>("iCubHandTouchSensor", "iCubSensor");
00086     Factory::getInstance().registerClass<iCubFingertipsTouchSensor>("iCubFingertipsTouchSensor", "iCubSensor");
00087     Factory::getInstance().registerClass<iCubPalmPatchesTouchSensor>("iCubPalmPatchesTouchSensor", "iCubSensor");
00088     Factory::getInstance().registerClass<HandObjectVisualOffsetSensor>("HandObjectVisualOffsetSensor", "iCubSensor");
00089 #endif
00090     Factory::getInstance().registerClass<MarXbotSensor>("MarXbotSensor", "Sensor");
00091     Factory::getInstance().registerClass<MarXbotProximityIRSensor>("MarXbotProximityIRSensor", "MarXbotSensor");
00092     Factory::getInstance().registerClass<MarXbotGroundBottomIRSensor>("MarXbotGroundBottomIRSensor", "MarXbotSensor");
00093     Factory::getInstance().registerClass<MarXbotGroundAroundIRSensor>("MarXbotGroundAroundIRSensor", "MarXbotSensor");
00094 
00095     // Registering motors
00096     Factory::getInstance().registerClass<Motor>("Motor", "ParameterSettableInConstructor");
00097     Factory::getInstance().registerClass<FakeMotor>("FakeMotor", "Motor");
00098 #ifdef FARSA_USE_YARP_AND_ICUB
00099     Factory::getInstance().registerClass<iCubMotor>("iCubMotor", "Motor");
00100     Factory::getInstance().registerClass<iCubArmRandomMotor>("iCubArmRandomMotor", "iCubMotor");
00101     Factory::getInstance().registerClass<iCubArmMusclesMotor>("iCubArmMusclesMotor", "iCubMotor");
00102     Factory::getInstance().registerClass<iCubHandMusclesMotor>("iCubHandMusclesMotor", "iCubMotor");
00103     Factory::getInstance().registerClass<iCubHeadMusclesMotor>("iCubHeadMusclesMotor", "iCubMotor");
00104     Factory::getInstance().registerClass<iCubTorsoMusclesMotor>("iCubTorsoMusclesMotor", "iCubMotor");
00105     Factory::getInstance().registerClass<iCubHeadPosToVelMotor>("iCubHeadPosToVelMotor", "iCubMotor");
00106     Factory::getInstance().registerClass<iCubTorsoPosToVelMotor>("iCubTorsoPosToVelMotor", "iCubMotor");
00107     Factory::getInstance().registerClass<iCubArmPosToVelMotor>("iCubArmPosToVelMotor", "iCubMotor");
00108     Factory::getInstance().registerClass<iCubHandPosToVelMotor>("iCubHandPosToVelMotor", "iCubMotor");
00109     Factory::getInstance().registerClass<iCubHeadVelocityMotor>("iCubHeadVelocityMotor", "iCubMotor");
00110     Factory::getInstance().registerClass<iCubConfigurableHandPosToVelMotor>("iCubConfigurableHandPosToVelMotor", "iCubMotor");
00111     Factory::getInstance().registerClass<iCubArmPosToPostureMotor>("iCubArmPosToPostureMotor", "iCubMotor" );
00112     Factory::getInstance().registerClass<iCubTorsoPosToPostureMotor>("iCubTorsoPosToPostureMotor", "iCubMotor");
00113     Factory::getInstance().registerClass<iCubArmVelocityMotor>("iCubArmVelocityMotor", "iCubMotor" );
00114     Factory::getInstance().registerClass<iCubTorsoVelocityMotor>("iCubTorsoVelocityMotor", "iCubMotor");
00115 #endif
00116     Factory::getInstance().registerClass<MarXbotMotor>("MarXbotMotor", "Motor");
00117     Factory::getInstance().registerClass<MarXbotWheelVelocityMotor>("MarXbotWheelVelocityMotor", "MarXbotMotor");
00118 
00119     Logger::info( "Library Experiments Initialized" );
00120     return true;
00121 }
00122 
00123 } // end namespace farsa