Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Modules/WalkingEngine/WalkingEngineSelector.h

Go to the documentation of this file.
00001 /**
00002 * @file WalkingEngineSelector.h
00003 * 
00004 * Definition of class WalkingEngineSelector
00005 *
00006 * @author Max Risler
00007 */
00008 
00009 #ifndef __WalkingEngineSelector_h_
00010 #define __WalkingEngineSelector_h_
00011 
00012 #include "Tools/Module/ModuleSelector.h"
00013 
00014 #include "InvKinWalkingParameterSets.h"
00015 #include "GT2004WalkingEngine.h"
00016 #include "BB2004InvKinWalkingEngine.h"
00017 #include "MSH2004InvKinWalkingEngine.h"
00018 
00019 /**
00020 * @class WalkingEngineSelector
00021 *
00022 * A module selector for WalkingEngine modules.
00023 */
00024 class WalkingEngineSelector : public ModuleSelector, public WalkingEngine
00025 {
00026 public:
00027 /**
00028 * Constructor.
00029 * @param handler The module handler of the process.
00030 * @param moduleID The module id of the walking engine.
00031 * @param interfaces The paramters of the MotionControl module.
00032 * @param pInvKinWalkingEngine Pointer to an InvKinWalkingEngine to be used to avoid having different engines for different parameter sets.
00033   */
00034   WalkingEngineSelector(ModuleHandler &handler,
00035     SolutionRequest::ModuleID moduleID,
00036     const WalkingEngineInterfaces& interfaces,
00037     InvKinWalkingEngine* pInvKinWalkingEngine) 
00038     : ModuleSelector(moduleID),
00039     WalkingEngine(interfaces), pInvKinWalkingEngine(pInvKinWalkingEngine)
00040   {
00041     handler.setModuleSelector(moduleID,this);
00042   }
00043   
00044   
00045   /** 
00046   * Is called on start and when the selected solution changes
00047   * to create a specific solution.
00048   * @param id The id of the solution to create
00049   * @return The created solution or 0
00050   */
00051   virtual Module* createSolution(SolutionRequest::ModuleSolutionID id)
00052   {
00053     switch(id) {
00054       // "Real" WalkingEngine solutions
00055       //
00056       case SolutionRequest::gt2004WalkingEngine:
00057         return new GT2004WalkingEngine(*this);
00058       
00059       case SolutionRequest::invKinBB2004WalkingEngine:
00060         return new BB2004InvKinWalkingEngine(pInvKinWalkingEngine);
00061 
00062       case SolutionRequest::invKinMSH2004WalkingEngine: 
00063         return new MSH2004InvKinWalkingEngine(pInvKinWalkingEngine);
00064             
00065       // ParamInvKinWalkingEngines
00066       //
00067       case SolutionRequest::invKinUpsideDownWalkingEngine:
00068         return new ParamInvKinWalkingEngine(new UpsideDownWalkingParameters, pInvKinWalkingEngine);
00069       
00070       case SolutionRequest::invKinTurnWithBallWalkingEngine: 
00071         return new ParamInvKinWalkingEngine(new TurnWithBallWalkingParameters, pInvKinWalkingEngine);
00072 
00073       case SolutionRequest::invKinTurnKickWalkingEngine: 
00074         return new ParamInvKinWalkingEngine(new TurnKickWalkingParameters, pInvKinWalkingEngine);
00075 
00076       default:
00077         return 0;
00078     }
00079   }
00080   
00081   /** Executes the module */
00082   bool executeParameterized(JointData& jointData, const WalkRequest& walkRequest, double positionInWalkingCycle)
00083   {
00084     if (selectedSolution!=0) 
00085     {
00086       return ((WalkingEngine*)selectedSolution)->executeParameterized(jointData, walkRequest, positionInWalkingCycle);
00087     }
00088     else 
00089     {
00090       //if no WE is enabled, 2do:
00091       jointData.data[JointData::neckTilt] = jointDataInvalidValue;
00092       jointData.data[JointData::headPan] = jointDataInvalidValue;
00093       jointData.data[JointData::headTilt] = jointDataInvalidValue;
00094       return false;
00095     }
00096   }
00097     /** Handles a message */
00098   virtual bool handleMessage(InMessage& message)
00099   {
00100     if (selectedSolution!=0) 
00101       return ((WalkingEngine*)selectedSolution)->handleMessage(message);
00102     else return false;
00103   }
00104   
00105   /** The only used InvKinWalkingEngine */
00106   InvKinWalkingEngine* pInvKinWalkingEngine;
00107 };
00108 
00109 #endif // __WalkingEngineSelector_h_
00110 
00111 /*
00112 * Change log :
00113 * 
00114 * $Log: WalkingEngineSelector.h,v $
00115 * Revision 1.6  2004/07/10 00:13:54  spranger
00116 * renaming for coderelease and preparations for gt2005
00117 *
00118 * Revision 1.5  2004/06/14 16:47:08  juengel
00119 * Removed some WalkingEngineParameterSets.
00120 *
00121 * Revision 1.4  2004/06/07 18:47:50  spranger
00122 * extended interface of executeParametrized by positionInWalkCycle
00123 *
00124 * Revision 1.3  2004/06/02 17:18:23  spranger
00125 * MotionRequest cleanup
00126 *
00127 * Revision 1.2  2004/05/27 17:13:37  jhoffman
00128 * - renaming: tilt1 -> neckTilt,  pan -> headPan,  tilt2 -> headTilt
00129 * - clipping included for setJoints
00130 * - removed some microrad/rad-bugs
00131 * - bodyPosture constructor and "=" operator fixed
00132 *
00133 * Revision 1.1.1.1  2004/05/22 17:23:12  cvsadm
00134 * created new repository GT2004_WM
00135 *
00136 * Revision 1.21  2004/04/28 17:08:16  goehring
00137 * Head Motion control possible when switched off
00138 *
00139 * Revision 1.20  2004/04/09 11:35:53  roefer
00140 * Bremen Byters German Open check-in
00141 *
00142 * Revision 1.19  2004/04/08 15:33:07  wachter
00143 * GT04 checkin of Microsoft-Hellounds
00144 *
00145 * Revision 1.18  2004/04/07 12:29:00  risler
00146 * ddd checkin after go04 - first part
00147 *
00148 * Revision 1.5  2004/04/02 23:44:40  dthomas
00149 * added new invKinParams for turn with ball
00150 * integrated into rotate-around-ball
00151 * combined with updated catch-ball head-control-mode
00152 *
00153 * Revision 1.4  2004/04/02 09:27:54  Marc
00154 * Removed Opponent Team Code
00155 *
00156 * Revision 1.3  2004/03/31 10:08:08  dthomas
00157 * added new parameterset for ers7 based on jolly pochie
00158 *
00159 * Revision 1.2  2004/03/29 10:06:24  dthomas
00160 * added new ers7 walking engine parameters
00161 *
00162 * Revision 1.1.1.1  2004/03/29 08:28:46  Administrator
00163 * initial transfer from tamara
00164 *
00165 * Revision 1.17  2004/03/22 21:58:13  roefer
00166 * True odometry
00167 *
00168 * Revision 1.16  2004/03/17 15:38:51  thomas
00169 * added walkType debug for debugging WalkingEngineParameterSets
00170 * paramSets-messages send by debug-message are stored in the new debug-walkType only
00171 *
00172 * Revision 1.15  2004/03/17 01:10:51  cesarz
00173 * added MSH2004TurnWithBallWalkingParameters
00174 *
00175 * Revision 1.14  2004/03/16 18:47:09  kindler
00176 * - added real class for MSH2004InvKinWalkingEngine solution.
00177 *
00178 * Revision 1.13  2004/03/10 17:45:21  kindler
00179 * - Added MSH2004 InvKinWalkingEngine parameter set.
00180 *
00181 * Revision 1.12  2004/03/08 02:29:50  roefer
00182 * Interfaces should be const
00183 *
00184 * Revision 1.11  2004/03/04 18:21:21  juengel
00185 * Added ERS7TurnWithBallWalkingParameters.
00186 *
00187 * Revision 1.10  2004/03/03 21:17:07  roefer
00188 * For the sake of consistency, renamed BB* to BB2004*
00189 *
00190 * Revision 1.9  2004/02/04 13:41:33  roefer
00191 * Some place holders for BB2004 modules added
00192 *
00193 * Revision 1.8  2004/01/21 14:31:58  loetzsch
00194 * Module Selectors create only the selected solution.
00195 * When the solution changes, the old solution is erased and the new
00196 * one ist created using createSolution(..)
00197 *
00198 * Revision 1.7  2004/01/13 18:35:23  loetzsch
00199 * added invkin:walkingparameterset ERS7
00200 *
00201 * Revision 1.6  2003/12/29 15:48:54  roefer
00202 * Bremen Byters evo walking added
00203 *
00204 * Revision 1.5  2003/12/02 18:07:14  dueffert
00205 * first working not yet calibrated version of UDWalkingEngine added
00206 *
00207 * Revision 1.4  2003/11/22 09:33:01  jhoffman
00208 * added "Yet Another Inv Kin Walking Engine"
00209 * experimental stage, doesn't do much yet
00210 * no Fourier inside!
00211 *
00212 * Revision 1.3  2003/11/21 15:44:19  dueffert
00213 * fast forward walking added
00214 *
00215 * Revision 1.2  2003/10/24 15:01:25  loetzsch
00216 * added UNSW2003WalkingEngine
00217 *
00218 * Revision 1.1  2003/10/06 14:10:15  cvsadm
00219 * Created GT2004 (M.J.)
00220 *
00221 * Revision 1.5  2003/09/25 10:12:58  juengel
00222 * Removed some walking engines.
00223 *
00224 * Revision 1.4  2003/07/24 13:58:22  risler
00225 * added parameter set UNSW2003
00226 *
00227 * Revision 1.3  2003/07/24 12:41:26  risler
00228 * ParamInvKinWalkingEngine no longer is template class -> 10min boot bug fixed
00229 *
00230 * Revision 1.2  2003/07/02 14:56:58  roefer
00231 * Several walking engines removed
00232 *
00233 * Revision 1.1.1.1  2003/07/02 09:40:24  cvsadm
00234 * created new repository for the competitions in Padova from the 
00235 * tamara CVS (Tuesday 2:00 pm)
00236 *
00237 * removed unused solutions
00238 *
00239 * Revision 1.21  2003/06/14 21:45:47  roefer
00240 * GT2003 walking parameters redesign
00241 *
00242 * Revision 1.20  2003/06/12 21:42:27  roefer
00243 * GT2003 walking parameters finished
00244 *
00245 * Revision 1.19  2003/06/09 19:59:05  roefer
00246 * GT2003 walking engine parameters added
00247 *
00248 * Revision 1.18  2003/05/07 17:00:49  goehring
00249 * Added new walking solution 'Swing'
00250 *
00251 * Revision 1.17  2003/04/16 07:00:16  roefer
00252 * Bremen GO checkin
00253 *
00254 * Revision 1.18  2003/04/09 09:39:28  roefer
00255 * InvKin:UNSWLargeStep added
00256 *
00257 * Revision 1.17  2003/04/08 18:28:28  roefer
00258 * bodyTiltOffset added
00259 *
00260 * Revision 1.16  2003/04/04 17:37:38  dueffert
00261 * a bunch of fine tuning
00262 *
00263 * Revision 1.15  2003/03/31 14:16:20  hebbel
00264 * Walking parameters for turning with ball added
00265 *
00266 * Revision 1.14  2003/03/06 12:08:45  dueffert
00267 * execute with parameters renamed to avoid inheritance warnings
00268 *
00269 * Revision 1.13  2003/03/03 17:35:08  risler
00270 * added CMUClone parameter set
00271 *
00272 * Revision 1.12  2003/02/25 11:43:44  dueffert
00273 * line feed and doxygen bugs fixed
00274 *
00275 * Revision 1.11  2003/02/19 16:55:17  hebbel
00276 * Added evolved parameterset for InvKinWalkingEngine
00277 *
00278 * Revision 1.10  2003/02/17 16:17:47  dueffert
00279 * sorry Jan, but Motion needs mysterious 10 minutes to start with Fourier
00280 *
00281 * Revision 1.9  2003/01/23 16:44:10  risler
00282 * only one instance of InvKinWalkingEngine
00283 * parameter sets can now be switched while walking
00284 * added UNSWFastTurn, combining two parameter sets
00285 *
00286 * Revision 1.8  2003/01/18 17:45:59  risler
00287 * added upsideDown parameters
00288 *
00289 * Revision 1.7  2003/01/09 14:04:27  jhoffman
00290 * added Inv Kin Parameter Set
00291 *
00292 * Revision 1.6  2002/12/20 13:50:54  dueffert
00293 * CMU2002WalkingEngine added
00294 *
00295 * Revision 1.4  2002/12/16 14:49:10  dueffert
00296 * changelog added
00297 *
00298 * Revision 1.3  2002/09/22 18:40:54  risler
00299 * added new math functions, removed GTMath library
00300 *
00301 * Revision 1.2  2002/09/11 00:06:59  loetzsch
00302 * continued change of module/solution mechanisms
00303 *
00304 * Revision 1.1  2002/09/10 15:36:16  cvsadm
00305 * Created new project GT2003 (M.L.)
00306 * - Cleaned up the /Src/DataTypes directory
00307 * - Removed challenge related source code
00308 * - Removed processing of incoming audio data
00309 * - Renamed AcousticMessage to SoundRequest
00310 *
00311 * Revision 1.5  2002/09/01 18:06:41  loetzsch
00312 * removed 2 walking engines
00313 *
00314 * Revision 1.4  2002/08/21 11:50:42  cesarz
00315 * GT2001PlayersPerceptor, BerlinSelfLocator, GT2001WalkingEngine,
00316 * DoWalkingEngine, FuzzyBehaviorControl, BremenGOBehaviorControl,
00317 * FuzzyBehaviortesterdlgbar and Behaviortesterdlgbar removed.
00318 *
00319 * Revision 1.3  2002/07/23 13:33:43  loetzsch
00320 * new streaming classes
00321 *
00322 * removed many #include statements
00323 *
00324 * Revision 1.2  2002/06/17 05:06:10  risler
00325 * added FixedSequenceWalkingEngine
00326 *
00327 * Revision 1.1  2002/06/01 13:38:35  risler
00328 * reorganized walking engine selection
00329 *
00330 * Revision 1.3  2002/05/16 15:05:49  risler
00331 * added walk type walkWithBall
00332 *
00333 * Revision 1.2  2002/05/15 08:08:53  risler
00334 * changed default walk, added InvKin:Dortmund to selector
00335 *
00336 * Revision 1.1.1.1  2002/05/10 12:40:17  cvsadm
00337 * Moved GT2002 Project from ute to tamara.
00338 *
00339 * Revision 1.3  2002/05/03 16:10:19  risler
00340 * added UNSWClone InvKinWE Parameters
00341 *
00342 * Revision 1.2  2002/04/29 13:48:20  risler
00343 * added lastWalkType to WalkingEngine execute
00344 *
00345 * Revision 1.1  2002/04/26 13:35:32  risler
00346 * DarmstadtGOWalkingEngine renamed to InvKinWalkingEngine
00347 * added InvKinParameterSets
00348 *
00349 * Revision 1.18  2002/04/25 14:50:35  kallnik
00350 * changed double/float to double
00351 * added several #include GTMath
00352 *
00353 * PLEASE use double
00354 *
00355 * Revision 1.17  2002/04/18 10:25:33  roefer
00356 * Bremen GO
00357 *
00358 * Revision 1.16  2002/04/16 21:11:54  dueffert
00359 * UNSW walk added
00360 *
00361 * Revision 1.15  2002/04/16 16:41:50  dueffert
00362 * no message
00363 *
00364 * Revision 1.14  2002/04/15 13:39:23  rentmeister
00365 * DoWalkingEngine (Dortmunder WalkingEngine)
00366 *
00367 * Revision 1.13  2002/04/05 16:46:34  kosen
00368 * BremenGOWalkingEngine added
00369 *
00370 * Revision 1.12  2002/04/04 15:07:59  rentmeister
00371 * Walk with Ball hinzugefügt
00372 *
00373 * Revision 1.11  2002/03/29 19:36:53  risler
00374 * added DarmstadtGOWalkingEngine
00375 *
00376 * Revision 1.10  2002/03/24 17:45:07  juengel
00377 * Bugs FourierWalking fixed.
00378 *
00379 * Revision 1.9  2002/03/18 09:45:36  kallnik
00380 * GTMathTable updated
00381 * GTMathConfig updated
00382 * several doubles changed in GTMathValue
00383 *
00384 * Revision 1.8  2002/03/12 14:31:58  jhoffman
00385 * added fourier walking engine
00386 *
00387 * Revision 1.7  2002/02/28 16:28:25  risler
00388 * added GT2001WalkingParameters
00389 *
00390 * Revision 1.6  2002/01/20 13:00:18  risler
00391 * changed implementation of selecting default solution
00392 *
00393 * Revision 1.5  2002/01/17 14:35:48  risler
00394 * SolutionRequest added
00395 *
00396 * Revision 1.4  2001/12/10 17:47:08  risler
00397 * change log added
00398 *
00399 */

Generated on Thu Sep 23 19:57:34 2004 for GT2004 by doxygen 1.3.6