Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Alice.h

Go to the documentation of this file.
00001 /*
00002     Enki - a fast 2D robot simulator
00003     Copyright (C) 1999-2005 Stephane Magnenat <nct@ysagoon.com>
00004     Copyright (C) 2004-2005 Markus Waibel <markus.waibel@epfl.ch>
00005     Copyright (C) 2005 Laboratory of Intelligent Systems, EPFL, Lausanne
00006     See AUTHORS for details
00007 
00008     This program is free software; the authors of any publication 
00009     arising from research using this software are asked to add the 
00010     following reference:
00011     Enki - a fast 2D robot simulator part of the Teem framework
00012     http://teem.epfl.ch
00013     Stephane Magnenat <stephane.magnenat@epfl.ch>,
00014     Markus Waibel <markus.waibel@epfl.ch>
00015     Laboratory of Intelligent Systems, EPFL, Lausanne.
00016 
00017     You can redistribute this program and/or modify
00018     it under the terms of the GNU General Public License as published by
00019     the Free Software Foundation; either version 2 of the License, or
00020     (at your option) any later version.
00021 
00022     This program is distributed in the hope that it will be useful,
00023     but WITHOUT ANY WARRANTY; without even the implied warranty of
00024     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00025     GNU General Public License for more details.
00026 
00027     You should have received a copy of the GNU General Public License
00028     along with this program; if not, write to the Free Software
00029     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00030 */
00031 
00032 #ifndef __ALICE_H
00033 #define __ALICE_H
00034 
00035 #include <enki/PhysicalEngine.h>
00036 #include <enki/interactions/IRSensor.h>
00037 #include <enki/interactions/CircularCam.h>
00038 #include <enki/robots/alice/AliceCommunication.h>
00039 
00044 namespace Enki
00045 {
00047 
00048     class Alice : public Robot
00049     {
00050     protected:
00052         struct SensorModels
00053         {
00054             SensorResponseFunctor *left[3];
00055             SensorResponseFunctor *normal[3];
00056             SensorResponseFunctor *high[3];
00057             
00058             SensorModels();
00059             ~SensorModels();
00060         } sensorModels;
00061     
00062     public:
00064         IRSensor left;
00066         IRSensor front;
00068         IRSensor right;
00070         IRSensor back;
00072         IRSensor frontHighExt;
00074         IRSensor backleft;
00076         IRSensor backright;
00078         CircularCam circcam;
00080         AliceCommunication comm;
00081 
00082 
00083     public:
00085         double leftSpeed, rightSpeed;
00086         
00087     public:
00088         enum Capabilities
00089         {
00091             CAPABILITIY_NONE = 0,
00093             CAPABILITIY_BASIC_SENSORS = 0x1,
00095             CAPABILITIY_CAMERA = 0x2,
00097             CAPABILITIY_COMMUNICATION = 0x4,
00099             CAPABILITIY_EXT_HIGH_SENSOR = 0x8,
00101             CAPABILITIY_EXT_BACK_LR_SENSORS = 0x10,
00102         };
00103 
00104     public:
00106         Alice(unsigned capabilities = CAPABILITIY_BASIC_SENSORS);
00108         void step(double dt);
00109     };
00110 }
00111 
00112 #endif
00113 

Generated on Mon Oct 24 17:33:58 2005 for Enki by  doxygen 1.4.2