00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __SolutionRequest_h_
00011 #define __SolutionRequest_h_
00012
00013 #include "Tools/Streams/InOut.h"
00014
00015
00016 const int solutionRequestMaxNumOfSolutions = 40;
00017
00018
00019 class SolutionRequest
00020 {
00021 public:
00022
00023
00024
00025
00026
00027 enum ModuleID
00028 {
00029 colorTableMod,
00030 sensorDataProcessor,
00031 imageProcessor,
00032 ballLocator,
00033 teamBallLocator,
00034 obstaclesLocator,
00035 playersLocator,
00036 selfLocator,
00037 robotStateDetector,
00038 collisionDetector,
00039 behaviorControl,
00040 motionControl,
00041 walkingEngineNormal,
00042 headControl,
00043 ledControl,
00044 getupEngine,
00045 soundControl,
00046 sensorBehaviorControl,
00047 gtCam,
00048 numOfModules
00049 };
00050
00051
00052
00053
00054
00055 enum ModuleSolutionID
00056 {
00057 disabled = -1,
00058
00059
00060 colorTable64Mod = 0,
00061 colorTable32KMod,
00062 numOfColorTableModSolutions,
00063
00064
00065 gt2005SelfLocator = 0,
00066 gt2005StableSelfLocator,
00067 gt2004SelfLocator,
00068 gtCamSelfLocator,
00069 odometrySelfLocator,
00070 slamSelfLocator,
00071 comboSelfLocator,
00072 numOfSelfLocatorSolutions,
00073
00074
00075 gt2005ImageProcessor = 0,
00076 slamImageProcessor,
00077 vlcImageProcessor,
00078 numOfImageProcessorSolutions,
00079
00080
00081 gt2005BehaviorControlAgentSoccer = 0,
00082 gt2005BehaviorControlAgentPenaltyShooter,
00083 gt2005BehaviorControlAgentPenaltyShooter2,
00084 gt2005BehaviorControlAgentPenaltyGoalie,
00085 gt2005BehaviorControlAgentJoystickControlled,
00086 gt2005BehaviorControlAgentSlamChallange,
00087 gt2005BehaviorControlAgentVLCshooter,
00088 gt2005BehaviorControlAgentVLC2shooter,
00089 gt2005BehaviorControlAgentObstacleAvoidanceChallange03,
00090 gt2005BehaviorControlAgentOdometryTester,
00091 gt2005BehaviorControlAgentGuideDog,
00092 gt2005BehaviorControlAgentBlindDog,
00093 gt2005BehaviorControlAgentKickLogger,
00094 gt2005BehaviorControlAgentBasicsTester,
00095 numOfBehaviorControlSolutions,
00096
00097
00098 gt2005CollisionDetector = 0,
00099 numOfCollisionDetectorSolutions,
00100
00101
00102 gt2005WalkingEngine = 0,
00103 gt2004WalkingEngine,
00104 invKinUpsideDownWalkingEngine,
00105 invKinTurnWithBallWalkingEngine,
00106 invKinTurnKickWalkingEngine,
00107 numOfWalkingEngineSolutions,
00108
00109
00110 gt2005BallLocator = 0,
00111 gtCamBallLocator,
00112 numOfBallLocatorSolutions,
00113
00114
00115 gt2005TeamBallLocator = 0,
00116 numOfTeamBallLocatorSolutions,
00117
00118
00119 gtCamPlayersLocator,
00120 numOfPlayersLocatorSolutions,
00121
00122
00123 gt2005ObstaclesLocator = 0,
00124 gtCamObstaclesLocator,
00125 numOfObstaclesLocatorSolutions,
00126
00127
00128 gt2005HeadControl = 0,
00129 numOfHeadControlSolutions,
00130
00131
00132 gt2005LEDControl = 0,
00133 numOfLEDControlSolutions,
00134
00135
00136 gt2005SensorDataProcessor = 0,
00137 numOfSensorDataProcessorSolutions,
00138
00139
00140 gt2005RobotStateDetector = 0,
00141 numOfRobotStateDetectorSolutions,
00142
00143
00144 dummySensorBehaviorControl = 0,
00145 numOfSensorBehaviorControlSolutions,
00146
00147
00148 gt2005MotionControl = 0,
00149 debugMotionControl,
00150 numOfMotionControlSolutions,
00151
00152
00153 gt2005GetupEngine = 0,
00154 numOfGetupEngineSolutions,
00155
00156
00157 gt2005SoundControl = 0,
00158 numOfSoundControlSolutions,
00159
00160
00161 gtCamRaw = 0,
00162 numOfGTCamSolutions
00163 };
00164
00165
00166
00167
00168 static const char* getModuleName(ModuleID id)
00169 {
00170 switch (id)
00171 {
00172 case colorTableMod: return "ColorTableModule";
00173 case imageProcessor: return "ImageProcessor";
00174 case selfLocator: return "SelfLocator";
00175 case behaviorControl: return "BehaviorControl";
00176 case collisionDetector: return "CollisionDetector";
00177 case walkingEngineNormal: return "WalkingEngine:normal";
00178 case headControl: return "HeadControl";
00179 case ledControl: return "LEDControl";
00180 case ballLocator: return "BallLocator";
00181 case playersLocator: return "PlayersLocator";
00182 case obstaclesLocator: return "ObstaclesLocator";
00183 case sensorDataProcessor: return "SensorDataProcessor";
00184 case robotStateDetector: return "RobotStateDetector";
00185 case sensorBehaviorControl: return "SensorBehaviorControl";
00186 case motionControl: return "MotionControl";
00187 case getupEngine: return "GetupEngine";
00188 case soundControl: return "SoundControl";
00189 case teamBallLocator: return "TeamBallLocator";
00190 case gtCam: return "GTCam";
00191
00192 default: return "please edit SolutionRequest::getModuleName";
00193 }
00194 }
00195
00196
00197
00198
00199 static const char* getModuleCategoryName(ModuleID id)
00200 {
00201 switch (id)
00202 {
00203 case colorTableMod: return "Perception";
00204 case imageProcessor: return "Perception";
00205 case selfLocator: return "Modeling";
00206 case behaviorControl: return "Behavior";
00207 case collisionDetector: return "Perception";
00208 case walkingEngineNormal: return "Actorics";
00209 case headControl: return "Actorics";
00210 case ledControl: return "Output";
00211 case ballLocator: return "Modeling";
00212 case playersLocator: return "Modeling";
00213 case obstaclesLocator: return "Modeling";
00214 case sensorDataProcessor: return "Perception";
00215 case robotStateDetector: return "Modeling";
00216 case sensorBehaviorControl: return "";
00217 case motionControl: return "Actorics";
00218 case getupEngine: return "Actorics";
00219 case soundControl: return "Output";
00220 case teamBallLocator: return "Modeling";
00221 case gtCam: return "";
00222
00223 default: return "please edit SolutionRequest::getModuleName";
00224 }
00225 }
00226
00227
00228
00229
00230
00231 static int getNumOfSolutions(ModuleID id)
00232 {
00233 switch (id)
00234 {
00235 case colorTableMod :return numOfColorTableModSolutions;
00236 case imageProcessor: return numOfImageProcessorSolutions;
00237 case selfLocator: return numOfSelfLocatorSolutions;
00238 case behaviorControl: return numOfBehaviorControlSolutions;
00239 case collisionDetector: return numOfCollisionDetectorSolutions;
00240 case walkingEngineNormal: return numOfWalkingEngineSolutions;
00241 case headControl: return numOfHeadControlSolutions;
00242 case ledControl: return numOfLEDControlSolutions;
00243 case ballLocator: return numOfBallLocatorSolutions;
00244 case playersLocator: return numOfPlayersLocatorSolutions;
00245 case obstaclesLocator: return numOfObstaclesLocatorSolutions;
00246 case sensorDataProcessor: return numOfSensorDataProcessorSolutions;
00247 case robotStateDetector: return numOfRobotStateDetectorSolutions;
00248 case sensorBehaviorControl: return numOfSensorBehaviorControlSolutions;
00249 case motionControl: return numOfMotionControlSolutions;
00250 case getupEngine: return numOfGetupEngineSolutions;
00251 case soundControl: return numOfSoundControlSolutions;
00252 case teamBallLocator: return numOfTeamBallLocatorSolutions;
00253 case gtCam: return numOfGTCamSolutions;
00254
00255 default: return 0;
00256 }
00257 }
00258
00259
00260
00261
00262
00263 static const char* getModuleSolutionName(ModuleID module, ModuleSolutionID solution)
00264 {
00265 if (solution == disabled) return "disabled";
00266 switch (module)
00267 {
00268 case colorTableMod: switch (solution)
00269 {
00270 case colorTable64Mod: return "ColorTable64Module";
00271 case colorTable32KMod: return "ColorTable32KModule";
00272 }
00273 case selfLocator: switch (solution)
00274 {
00275 case gt2005SelfLocator: return "GT2005";
00276 case gt2005StableSelfLocator: return "GT2005Stable";
00277 case gtCamSelfLocator: return "GTCam";
00278 case odometrySelfLocator: return "Odometry";
00279 case slamSelfLocator: return "Slam";
00280 case gt2004SelfLocator: return "GT2004";
00281 case comboSelfLocator: return "Combo";
00282 }
00283 case behaviorControl: switch (solution)
00284 {
00285 case gt2005BehaviorControlAgentSoccer: return "GT2005-soccer";
00286 case gt2005BehaviorControlAgentPenaltyShooter: return "GT2005-penalty-shooter";
00287 case gt2005BehaviorControlAgentPenaltyShooter2: return "GT2005-penalty-shooter2";
00288 case gt2005BehaviorControlAgentPenaltyGoalie: return "GT2005-penalty-goalie";
00289 case gt2005BehaviorControlAgentJoystickControlled: return "GT2005-joystick-controlled";
00290 case gt2005BehaviorControlAgentSlamChallange: return "GT2005-Slam-Behavior";
00291 case gt2005BehaviorControlAgentVLCshooter: return "GT2005-VLC-shooter";
00292 case gt2005BehaviorControlAgentVLC2shooter: return "GT2005-VLC2-shooter";
00293 case gt2005BehaviorControlAgentObstacleAvoidanceChallange03: return "GT2005-Obstacle-Avoider";
00294 case gt2005BehaviorControlAgentOdometryTester: return "GT2005-Odometry-Tester";
00295 case gt2005BehaviorControlAgentKickLogger: return "GT2005-KickLogger";
00296 case gt2005BehaviorControlAgentBasicsTester: return "GT2005-basics-tester";
00297 }
00298 case collisionDetector: switch (solution)
00299 {
00300 case gt2005CollisionDetector: return "GT2005";
00301 }
00302 case walkingEngineNormal: switch (solution)
00303 {
00304 case gt2005WalkingEngine: return "GT2005";
00305 case gt2004WalkingEngine: return "GT2004";
00306 case invKinUpsideDownWalkingEngine: return "InvKin:UpsideDown";
00307 case invKinTurnWithBallWalkingEngine: return "InvKin:TurnWithBall";
00308 case invKinTurnKickWalkingEngine: return "InvKin:invTurnKick";
00309 }
00310 case headControl: switch (solution)
00311 {
00312 case gt2005HeadControl: return "GT2005";
00313 }
00314 case ledControl: switch (solution)
00315 {
00316 case gt2005LEDControl: return "GT2005";
00317 }
00318 case ballLocator: switch (solution)
00319 {
00320 case gt2005BallLocator: return "GT2005";
00321 case gtCamBallLocator: return "GTCam";
00322 }
00323 case playersLocator: switch (solution)
00324 {
00325 case gtCamPlayersLocator: return "GTCam";
00326 }
00327 case obstaclesLocator: switch (solution)
00328 {
00329 case gt2005ObstaclesLocator: return "GT2005";
00330 case gtCamObstaclesLocator: return "GTCam";
00331 }
00332 case imageProcessor: switch (solution)
00333 {
00334 case gt2005ImageProcessor: return "GT2005";
00335 case slamImageProcessor: return "SlamImageProcessor";
00336 case vlcImageProcessor: return "VLCImageProcessor";
00337 }
00338 case sensorDataProcessor: switch(solution)
00339 {
00340 case gt2005SensorDataProcessor: return "GT2005";
00341 }
00342 case robotStateDetector: switch (solution)
00343 {
00344 case gt2005RobotStateDetector: return "GT2005";
00345 }
00346 case sensorBehaviorControl: switch (solution)
00347 {
00348 case dummySensorBehaviorControl: return "Dummy";
00349 }
00350 case motionControl: switch (solution)
00351 {
00352 case gt2005MotionControl: return "GT2005";
00353 case debugMotionControl: return "Debug";
00354 }
00355 case getupEngine: switch (solution)
00356 {
00357 case gt2005GetupEngine: return "GT2005";
00358 }
00359 case soundControl: switch (solution)
00360 {
00361 case gt2005SoundControl: return "GT2005";
00362 }
00363 case teamBallLocator: switch(solution)
00364 {
00365 case gt2005TeamBallLocator: return "GT2005";
00366 }
00367 case gtCam: switch(solution) {
00368 case gtCamRaw: return "Raw";
00369 }
00370
00371 }
00372 return "please edit SolutionRequest::getModuleSolutionName";
00373 }
00374
00375
00376 ModuleSolutionID solutions[numOfModules];
00377
00378
00379
00380
00381 SolutionRequest(bool setDefault = false);
00382
00383
00384
00385
00386 static ModuleSolutionID getDefaultSolution(ModuleID id)
00387 {
00388 static SolutionRequest defaultRequest(true);
00389 return defaultRequest.solutions[id];
00390 }
00391
00392
00393
00394
00395 void setDefaultSolutions();
00396
00397
00398 bool operator == (const SolutionRequest& other);
00399
00400
00401 bool operator != (const SolutionRequest& other)
00402 { return ! (*this == other); }
00403
00404
00405
00406
00407
00408
00409 bool errorWhileReading;
00410
00411
00412 enum xabsl2EngineID
00413 {
00414 gt2005,
00415 numOfXabslBehaviors,
00416 hc_gt2005 = numOfXabslBehaviors,
00417 undefined
00418 };
00419
00420
00421 static const char* getXabsl2EngineIDName(xabsl2EngineID id)
00422 {
00423 switch (id)
00424 {
00425 case gt2005: return "GT2005";
00426 case hc_gt2005: return "HC_GT2005";
00427 default: return "unknown";
00428 }
00429 }
00430
00431
00432
00433
00434 static const char* getXabsl2EngineFileID(xabsl2EngineID id)
00435 {
00436 switch (id)
00437 {
00438 case gt2005: return "gt05";
00439 case hc_gt2005: return "HeadCtrl/gt05";
00440 default: return "unknown";
00441 }
00442 }
00443 };
00444
00445
00446
00447
00448
00449
00450
00451 In& operator>>(In& stream,SolutionRequest& solutionRequest);
00452
00453
00454
00455
00456
00457
00458
00459 Out& operator<<(Out& stream, const SolutionRequest& solutionRequest);
00460
00461 #endif //__SolutionRequest_h_
00462