00001 /* 00002 Teem - an open source evolutionary software framework 00003 http://lis.epfl.ch/resources/Teem 00004 Stephane Magnenat <stephane.magnenat@epfl.ch>, 00005 Antoine Beyeler <antoine.beyeler@epfl.ch>, 00006 and other contributors. See AUTHORS for details 00007 Laboratory of Intelligent Systems, EPFL, Lausanne 00008 00009 This program is free software; you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation; either version 2 of the License, or 00012 (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program; if not, write to the Free Software 00021 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00022 */ 00023 00024 #ifndef __TEEM_ENTITY_INTERFACES_H 00025 #define __TEEM_ENTITY_INTERFACES_H 00026 00031 namespace Teem 00032 { 00035 class Entity 00036 { 00037 public: 00039 virtual ~Entity() { } 00040 }; 00041 00044 class DifferentialWheeled 00045 { 00046 public: 00048 virtual ~DifferentialWheeled() { } 00049 00051 virtual void setSpeed(double left, double right) = 0; 00052 //virtual void getEncoders(double &left, double &right) = 0; 00053 }; 00054 00057 class Positionable 00058 { 00059 public: 00061 virtual ~Positionable() { } 00062 00064 virtual void setOrientation(double angle) = 0; 00066 virtual void setPosition(const An::Point &pos) = 0; 00068 virtual const An::Point &getPosition(void) = 0; 00070 virtual double getOrientation(void) = 0; 00071 00073 virtual void setPosition(const An::Point &pos, double angle) { setPosition(pos); setOrientation(angle); } 00074 }; 00075 00078 class IRSensorEquipped 00079 { 00080 public: 00082 virtual ~IRSensorEquipped() { } 00083 00085 virtual double getIRSensor(unsigned index) = 0; 00086 }; 00087 00090 class Camera1DEquipped 00091 { 00092 public: 00094 virtual ~Camera1DEquipped() { } 00095 00097 virtual unsigned getCameraSize() = 0; 00099 virtual An::Color getCameraPixel(unsigned index) = 0; 00100 }; 00101 } 00102 00103 00104 #endif