00001 /** 00002 * @file PlayersPercept.h 00003 * 00004 * Declaration of classes PlayersPercept and SinglePlayerPercept 00005 * @author <A href=mailto:timlaue@informatik.uni-bremen.de>Tim Laue</A> 00006 */ 00007 00008 #ifndef __PlayersPercept_h_ 00009 #define __PlayersPercept_h_ 00010 00011 00012 #include "Tools/Streams/InOut.h" 00013 #include "Tools/Math/Vector2.h" 00014 00015 00016 /** 00017 * This class contains some information about a single perceived robot 00018 */ 00019 class SinglePlayerPercept 00020 { 00021 public: 00022 /** Simple constructor */ 00023 SinglePlayerPercept() : validity(0) {} 00024 00025 /** Copy constructor */ 00026 SinglePlayerPercept(const SinglePlayerPercept& other) {*this = other;}; 00027 00028 /** offset to the robot, relative to own robot */ 00029 Vector2<double> offset; 00030 00031 /** The direction of the perceived robot*/ 00032 double direction; 00033 00034 /** The validity of this percept */ 00035 double validity; 00036 }; 00037 00038 00039 /** 00040 * This is a collection of SinglePlayerPercept for red and blue dressed robots. 00041 */ 00042 class PlayersPercept 00043 { 00044 public: 00045 /** Constants */ 00046 enum { 00047 maxNumberOfRedPlayerPercepts = 13, 00048 maxNumberOfBluePlayerPercepts = 17, 00049 maxNumberOfOneRobotsPercepts = 17, 00050 maxNumberOfPercepts = 34 00051 }; 00052 00053 /** Constructor */ 00054 PlayersPercept(); 00055 00056 /** Destructor */ 00057 ~PlayersPercept(); 00058 00059 /** Initializes the percept */ 00060 void reset(unsigned long frameNumber); 00061 00062 /** 00063 * The function adds a red player percept. 00064 * @param percept The percept to add. 00065 */ 00066 void addRedPlayer(const SinglePlayerPercept& percept); 00067 00068 /** 00069 * The function adds a blue player percept. 00070 * @param percept The percept to add. 00071 */ 00072 void addBluePlayer(const SinglePlayerPercept& percept); 00073 00074 /** List of perceived red robots */ 00075 SinglePlayerPercept redPlayers[maxNumberOfRedPlayerPercepts]; 00076 00077 /** List of perceived blue robots */ 00078 SinglePlayerPercept bluePlayers[maxNumberOfBluePlayerPercepts]; 00079 00080 /** Number of perceived red robots */ 00081 int numberOfRedPlayers; 00082 00083 /** Number of perceived blue robots */ 00084 int numberOfBluePlayers; 00085 00086 /** The frame number when perceived. */ 00087 unsigned long frameNumber; 00088 }; 00089 00090 /** 00091 * Streaming operator that reads a PlayersPercept from a stream. 00092 * @param stream The stream from which is read. 00093 * @param playersPercept The PlayersPercept object. 00094 * @return The stream. 00095 */ 00096 In& operator>>(In& stream,PlayersPercept& playersPercept); 00097 00098 /** 00099 * Streaming operator that writes a PlayersPercept to a stream. 00100 * @param stream The stream to write on. 00101 * @param playersPercept The PlayersPercept object. 00102 * @return The stream. 00103 */ 00104 Out& operator<<(Out& stream, const PlayersPercept& playersPercept); 00105 00106 00107 #endif //__PlayersPercept_h_ 00108 00109 /* 00110 * Change log : 00111 * 00112 * $Log: PlayersPercept.h,v $ 00113 * Revision 1.1.1.1 2004/05/22 17:25:59 cvsadm 00114 * created new repository GT2004_WM 00115 * 00116 * Revision 1.4 2004/03/24 14:04:07 tim 00117 * - added member 00118 * - removed old unused members 00119 * 00120 * Revision 1.3 2004/01/19 14:53:46 dueffert 00121 * all frameNumbers (and not only some of them) are unsigned long now 00122 * 00123 * Revision 1.2 2003/11/12 16:19:35 goehring 00124 * frameNumber added to percepts 00125 * 00126 * Revision 1.1 2003/10/07 10:09:36 cvsadm 00127 * Created GT2004 (M.J.) 00128 * 00129 * Revision 1.1.1.1 2003/07/02 09:40:22 cvsadm 00130 * created new repository for the competitions in Padova from the 00131 * tamara CVS (Tuesday 2:00 pm) 00132 * 00133 * removed unused solutions 00134 * 00135 * Revision 1.8 2003/05/20 12:15:43 reiss 00136 * Fit Variables. 00137 * 00138 * Revision 1.7 2003/03/26 09:46:06 roefer 00139 * LinesImageProcessor2 generates player percepts 00140 * 00141 * Revision 1.6 2003/03/06 11:53:16 dueffert 00142 * re-order warning removed 00143 * 00144 * Revision 1.5 2003/02/27 10:06:59 schmidt 00145 * Added three variants of a SensorFusionPlayersLocator. 00146 * 00147 * Revision 1.4 2002/11/27 13:52:48 dueffert 00148 * doxygen docu added 00149 * 00150 * Revision 1.3 2002/09/22 18:40:50 risler 00151 * added new math functions, removed GTMath library 00152 * 00153 * Revision 1.2 2002/09/17 23:55:20 loetzsch 00154 * - unraveled several datatypes 00155 * - changed the WATCH macro 00156 * - completed the process restructuring 00157 * 00158 * Revision 1.1 2002/09/10 15:26:40 cvsadm 00159 * Created new project GT2003 (M.L.) 00160 * - Cleaned up the /Src/DataTypes directory 00161 * - Removed Challenge Code 00162 * - Removed processing of incoming audio data 00163 * - Renamed AcousticMessage to SoundRequest 00164 * 00165 * Revision 1.2 2002/07/23 13:32:57 loetzsch 00166 * new streaming classes 00167 * 00168 * removed many #include statements 00169 * 00170 * Revision 1.1.1.1 2002/05/10 12:40:13 cvsadm 00171 * Moved GT2002 Project from ute to tamara. 00172 * 00173 * Revision 1.8 2002/04/16 16:18:12 dueffert 00174 * no message 00175 * 00176 * Revision 1.2 2002/04/11 21:59:08 Joscha Bach 00177 * More players possible... 00178 * 00179 * Revision 1.7 2002/04/02 13:10:18 dueffert 00180 * big change: odometryData and cameraMatrix in image now, old logfiles may be obsolete 00181 * 00182 * Revision 1.6 2002/02/22 16:07:03 tim 00183 * Angle/Distance replaced by relative position 00184 * 00185 * Revision 1.5 2001/12/17 00:16:55 tim 00186 * validity hinzugefügt 00187 * 00188 * Revision 1.4 2001/12/15 18:21:39 tim 00189 * PlayersPercept fertig (voererst ;-) 00190 * 00191 * Revision 1.3 2001/12/10 17:47:06 risler 00192 * change log added 00193 * 00194 */