00001 /* 00002 Enki - a fast 2D robot simulator 00003 Copyright (C) 1999-2006 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 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_EPUCK_H 00035 #define __ENKI_EPUCK_H 00036 00037 #include <enki/robots/DifferentialWheeled.h> 00038 #include <enki/interactions/IRSensor.h> 00039 #include <enki/interactions/CircularCam.h> 00040 #include <enki/interactions/Bluetooth.h> 00041 00046 namespace Enki 00047 { 00049 00052 class EPuckScannerTurret : public OmniCam 00053 { 00054 public: 00056 00063 EPuckScannerTurret(Robot *owner, double height, unsigned halfPixelCount); 00064 00065 virtual void finalize(double dt, World* w); 00066 00067 public: 00068 std::valarray<double> scan; 00069 }; 00070 00072 00073 class EPuck : public DifferentialWheeled 00074 { 00075 public: 00077 IRSensor infraredSensor0; 00079 IRSensor infraredSensor1; 00081 IRSensor infraredSensor2; 00083 IRSensor infraredSensor3; 00085 IRSensor infraredSensor4; 00087 IRSensor infraredSensor5; 00089 IRSensor infraredSensor6; 00091 IRSensor infraredSensor7; 00093 CircularCam camera; 00095 EPuckScannerTurret scannerTurret; 00097 Bluetooth* bluetooth; 00098 00099 public: 00101 enum Capabilities 00102 { 00104 CAPABILITY_NONE = 0, 00106 CAPABILITY_BASIC_SENSORS = 0x1, 00108 CAPABILITY_CAMERA = 0x2, 00110 CAPABILITY_SCANNER_TURRET = 0x3, 00112 CAPABILITY_BLUETOOTH = 0x4 00113 }; 00114 00115 public: 00117 EPuck(unsigned capabilities = CAPABILITY_BASIC_SENSORS); 00119 ~EPuck(); 00120 00122 void setLedRing(bool status); 00123 }; 00124 } 00125 00126 #endif 00127
1.5.1