enki/robots/alice/Alice.h

Go to the documentation of this file.
00001 /*
00002     Enki - a fast 2D robot simulator
00003     Copyright (C) 1999-2008 Stephane Magnenat <stephane at magnenat dot net>
00004     Copyright (C) 2004-2005 Markus Waibel <markus dot waibel at epfl dot ch>
00005     Copyright (c) 2004-2005 Antoine Beyeler <abeyeler at ab-ware dot com>
00006     Copyright (C) 2005-2006 Laboratory of Intelligent Systems, EPFL, Lausanne
00007     Copyright (C) 2006-2008 Laboratory of Robotics Systems, EPFL, Lausanne
00008     See AUTHORS for details
00009 
00010     This program is free software; the authors of any publication 
00011     arising from research using this software are asked to add the 
00012     following reference:
00013     Enki - a fast 2D robot simulator
00014     http://lis.epfl.ch/enki
00015     Stephane Magnenat <stephane at magnenat dot net>,
00016     Markus Waibel <markus dot waibel at epfl dot ch>
00017     Laboratory of Intelligent Systems, EPFL, Lausanne.
00018 
00019     You can redistribute this program and/or modify
00020     it under the terms of the GNU General Public License as published by
00021     the Free Software Foundation; either version 2 of the License, or
00022     (at your option) any later version.
00023 
00024     This program is distributed in the hope that it will be useful,
00025     but WITHOUT ANY WARRANTY; without even the implied warranty of
00026     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00027     GNU General Public License for more details.
00028 
00029     You should have received a copy of the GNU General Public License
00030     along with this program; if not, write to the Free Software
00031     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00032 */
00033 
00034 #ifndef __ENKI_ALICE_H
00035 #define __ENKI_ALICE_H
00036 
00037 #include <enki/PhysicalEngine.h>
00038 #include <enki/interactions/IRSensor.h>
00039 #include <enki/interactions/CircularCam.h>
00040 #include <enki/robots/alice/AliceCommunication.h>
00041 
00046 namespace Enki
00047 {
00049 
00050     class Alice : public Robot
00051     {
00052     protected:
00054         struct SensorModels
00055         {
00057             SensorResponseFunctor *frontleft[3];
00059             SensorResponseFunctor *frontright[3];
00061             SensorResponseFunctor *normal[3];
00063             SensorResponseFunctor *high[3];
00064             
00066             SensorModels();
00068             ~SensorModels();
00069         } sensorModels;
00070     
00071     public:
00073         IRSensor left;
00075         IRSensor front;
00077         IRSensor right;
00079         IRSensor back;
00081         IRSensor frontHighExt;
00083         IRSensor backleft;
00085         IRSensor backright;
00087         CircularCam circcam;
00089         AliceCommunication comm;
00090 
00091 
00092     public:
00094         double leftSpeed;
00096         double rightSpeed;
00097         
00098     public:
00100         enum Capabilities
00101         {
00103             CAPABILITIY_NONE = 0,
00105             CAPABILITIY_BASIC_SENSORS = 0x1,
00107             CAPABILITIY_CAMERA = 0x2,
00109             CAPABILITIY_COMMUNICATION = 0x4,
00111             CAPABILITIY_EXT_HIGH_SENSOR = 0x8,
00113             CAPABILITIY_EXT_BACK_LR_SENSORS = 0x10,
00114         };
00115         
00116     public:
00118         Alice(unsigned capabilities = CAPABILITIY_BASIC_SENSORS);
00120         void controlStep(double dt);
00121     };
00122 }
00123 
00124 #endif
00125 

Generated on Sun Mar 1 03:10:09 2009 for Enki by  doxygen 1.5.1