00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __PlayerPoseCollection_h_
00009 #define __PlayerPoseCollection_h_
00010
00011 #include "Representations/Cognition/RobotPose.h"
00012 #include "Tools/Streams/InOut.h"
00013 #include "Tools/Math/Pose2D.h"
00014 #include "Tools/Player.h"
00015 #include "Platform/SystemCall.h"
00016
00017
00018
00019
00020
00021
00022 class PlayerPose
00023 {
00024 public:
00025
00026 PlayerPose(){speed = 0;playerNumber=Player::undefinedPlayerNumber;sigmaMin=-1;sigmaMaj=-1;timeStamp=0;}
00027
00028 PlayerPose(const PlayerPose& other){*this = other;};
00029
00030 ~PlayerPose(){};
00031
00032 unsigned long frameNumber;
00033
00034 void setFrameNumber(unsigned long frameNumber) {this->frameNumber = frameNumber;}
00035
00036
00037 void setPose(const Pose2D& p) {pose = p;}
00038
00039
00040 void setRobotPose(const RobotPose& p)
00041 {
00042 pose = p.getPose();
00043 validity = p.getValidity();
00044 timeStamp = p.timestamp;
00045 }
00046
00047
00048 void setPose(const double& x, const double& y, const double& rotation)
00049 { pose.translation.x = x; pose.translation.y = y; pose.rotation = rotation; }
00050
00051
00052 const Pose2D& getPose() const {return pose;}
00053
00054
00055 void setSpeed(const double& _speed) {
00056 speed = _speed;
00057 }
00058
00059
00060 const double& getSpeed() const {return speed;}
00061
00062
00063 void setValidity(const double& v) {validity = v;}
00064
00065
00066 void setPlayerNumber(const Player::playerNumber p) {playerNumber = p;}
00067
00068
00069 void setTimeStamp(const long& t) {timeStamp = t;}
00070
00071
00072 const double& getValidity() const {return validity;}
00073
00074
00075 const Player::playerNumber& getPlayerNumber() const {return playerNumber;}
00076
00077
00078 const long& getTimeStamp() const {return timeStamp;}
00079
00080
00081 int getPlayerNumberAsInt() const {return (int)playerNumber; }
00082
00083
00084 void operator = (const PlayerPose& other);
00085
00086
00087 void setSigmaMin(const double sigma) {sigmaMin = sigma;}
00088
00089
00090 const double& getSigmaMin() const {return sigmaMin;}
00091
00092
00093 void setSigmaMaj(const double sigma) {sigmaMaj = sigma;}
00094
00095
00096 const double& getSigmaMaj() const {return sigmaMaj;}
00097
00098
00099 void setCosAngle(const double cos) {cosAngle = cos;}
00100
00101
00102 const double& getCosAngle() const {return cosAngle;}
00103
00104
00105 void setSinAngle(const double sin) {sinAngle = sin;}
00106
00107
00108 const double& getSinAngle() const {return sinAngle;}
00109
00110 private:
00111
00112 Pose2D pose;
00113
00114
00115 double speed;
00116
00117
00118 double validity;
00119
00120
00121 double sigmaMin;
00122
00123
00124 double sigmaMaj;
00125
00126
00127 double cosAngle;
00128
00129
00130 double sinAngle;
00131
00132
00133
00134 long timeStamp;
00135
00136
00137 Player::playerNumber playerNumber;
00138 };
00139
00140
00141
00142
00143
00144
00145
00146 In& operator>>(In& stream,PlayerPose& playerPose);
00147
00148
00149
00150
00151
00152
00153
00154 Out& operator<<(Out& stream, const PlayerPose& playerPose);
00155
00156
00157
00158
00159
00160
00161 class PlayerPoseCollection
00162 {
00163 public:
00164
00165 PlayerPoseCollection();
00166
00167
00168 PlayerPoseCollection(PlayerPoseCollection& other);
00169
00170
00171 ~PlayerPoseCollection();
00172
00173
00174 void setOwnPlayerPose(int index, const PlayerPose& pose) {ownPlayerPoses[index] = pose;}
00175
00176
00177 void setOwnPlayerPose(int index, const double& x, const double& y, const double& rotation)
00178 {ownPlayerPoses[index].setPose(x,y,rotation);}
00179
00180
00181 void setOwnPlayerPose(int index, const double& x, const double& y, const double& rotation, const double& validity)
00182 {
00183 ownPlayerPoses[index].setPose(x,y,rotation);
00184 ownPlayerPoses[index].setValidity(validity);
00185 }
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202 void setOwnPlayerPose(const RobotPose pose, const Player::playerNumber playerNumber)
00203 {
00204 if (numberOfOwnPlayers<4)
00205 {
00206 ownPlayerPoses[numberOfOwnPlayers].setRobotPose(pose);
00207 ownPlayerPoses[numberOfOwnPlayers].setPlayerNumber(playerNumber);
00208 ownPlayerPoses[numberOfOwnPlayers].setTimeStamp(SystemCall::getCurrentSystemTime());
00209 numberOfOwnPlayers++;
00210 }
00211 }
00212
00213 const PlayerPose& getOwnPlayerPose(int index) const {return ownPlayerPoses[index];}
00214
00215
00216 const bool getOwnPlayerPoseByPlayerNumber(Player::playerNumber player,PlayerPose& pose) const
00217 {
00218 for (int i=0;i<numberOfOwnPlayers;i++)
00219 {
00220 if (ownPlayerPoses[i].getPlayerNumber() == player)
00221 {
00222 pose = ownPlayerPoses[i];
00223 return true;
00224 }
00225 else
00226 return false;
00227 }
00228 return false;
00229 }
00230
00231
00232 void setOpponentPlayerPose(int index, const PlayerPose& pose) {opponentPlayerPoses[index] = pose;}
00233
00234
00235 void setOpponentPlayerPose(int index, const double& x, const double& y, const double& rotation)
00236 {opponentPlayerPoses[index].setPose(x,y,rotation);}
00237
00238
00239 void setOpponentPlayerPose(int index, const double& x, const double& y, const double& rotation, const double& validity)
00240 {
00241 opponentPlayerPoses[index].setPose(x,y,rotation);
00242 opponentPlayerPoses[index].setValidity(validity);
00243 }
00244
00245
00246 const PlayerPose& getOpponentPlayerPose(int index) const {return opponentPlayerPoses[index];}
00247
00248
00249 void operator = (const PlayerPoseCollection& other);
00250
00251
00252 int numberOfOpponentPlayers;
00253
00254
00255 int numberOfOwnPlayers;
00256
00257
00258 friend In& operator>>(In& stream,PlayerPoseCollection& playerPoseCollection);
00259
00260
00261 friend Out& operator<<(Out& stream, const PlayerPoseCollection& playerPoseCollection);
00262
00263 protected:
00264
00265 PlayerPose opponentPlayerPoses[4];
00266
00267
00268 PlayerPose ownPlayerPoses[3];
00269 };
00270
00271
00272
00273
00274
00275
00276
00277 In& operator>>(In& stream,PlayerPoseCollection& playerPoseCollection);
00278
00279
00280
00281
00282
00283
00284
00285 Out& operator<<(Out& stream, const PlayerPoseCollection& playerPoseCollection);
00286
00287
00288 #endif //__PlayerPoseCollection_h_