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

Modules/BehaviorControl/CommonXabsl2Symbols/RobotStateSymbols.cpp

Go to the documentation of this file.
00001 /** 
00002 * @file RobotStateSymbols.cpp
00003 *
00004 * Implementation of class RobotStateSymbols.
00005 *
00006 * @author Matthias Jüngel
00007 */
00008 
00009 #include "RobotStateSymbols.h"
00010 
00011 RobotStateSymbols::RobotStateSymbols(const BehaviorControlInterfaces& interfaces)
00012 : BehaviorControlInterfaces(interfaces)
00013 {
00014 }
00015 
00016 
00017 void RobotStateSymbols::registerSymbols(Xabsl2Engine& engine)
00018 {
00019   // robot-state.buttons
00020   engine.registerBooleanInputSymbol("robot-state.any-back-button-pressed-for-one-second",this,
00021     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getAnyBackButtonPressedForOneSecond);
00022 
00023   engine.registerBooleanInputSymbol("robot-state.any-back-button-pressed-short-and-released",this,
00024     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getAnyBackButtonPressedShortAndReleased);
00025 
00026   engine.registerBooleanInputSymbol("robot-state.fore-back-button-pressed-short-and-released",this,
00027     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getForeBackButtonPressedShortAndReleased);
00028 
00029   engine.registerBooleanInputSymbol("robot-state.middle-back-button-pressed-short-and-released",this,
00030     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getMiddleBackButtonPressedShortAndReleased);
00031 
00032   engine.registerBooleanInputSymbol("robot-state.hind-back-button-pressed-short-and-released",this,
00033     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getHindBackButtonPressedShortAndReleased);
00034 
00035   engine.registerBooleanInputSymbol("robot-state.fore-back-button-pressed-short",this,
00036     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getForeBackButtonPressedShort);
00037 
00038   engine.registerBooleanInputSymbol("robot-state.middle-back-button-pressed-short",this,
00039     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getMiddleBackButtonPressedShort);
00040 
00041   engine.registerBooleanInputSymbol("robot-state.hind-back-button-pressed-short",this,
00042     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getHindBackButtonPressedShort);
00043 
00044   engine.registerBooleanInputSymbol("robot-state.head-button-pressed-for-three-seconds",this,
00045     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getHeadButtonPressedForThreeSeconds);
00046 
00047   engine.registerBooleanInputSymbol("robot-state.head-button-pressed-short",this,
00048     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getHeadButtonPressedShort);
00049 
00050   engine.registerBooleanInputSymbol("robot-state.head-button-pressed-short-and-released",this,
00051     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getHeadButtonPressedShortAndReleased);
00052 
00053   // "robot-state.mouth-state"
00054   engine.registerEnumeratedInputSymbol("robot-state.mouth-state",this,
00055     (int (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getMouthState);
00056   engine.registerEnumeratedInputSymbolEnumElement("robot-state.mouth-state","mouth-open",RobotState::mouthOpen);
00057   engine.registerEnumeratedInputSymbolEnumElement("robot-state.mouth-state","mouth-closed",RobotState::mouthClosed);
00058 
00059   engine.registerBooleanInputSymbol("robot-state.ball-under-head",this,
00060     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getBallUnderHead);
00061 
00062   engine.registerBooleanInputSymbol("robot-state.something-in-front-of-chest",this,
00063     (bool (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getSomethingInFrontOfChest);
00064 
00065   engine.registerDecimalInputSymbol("robot-state.time-since-something-was-in-front-of-chest",this,
00066     (double (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getTimeSinceSomethingWasInFrontOfChest);
00067 
00068   engine.registerDecimalInputSymbol("robot-state.distance-to-something-in-front-of-chest",this,
00069     (double (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getDistanceToSIFOC);
00070 
00071   // "robot-state.system-time"
00072   engine.registerDecimalInputSymbol("robot-state.system-time",this,
00073     (double (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getCurrentSystemTime);
00074   // "robot-state.remaining-capacity"
00075   engine.registerDecimalInputSymbol("robot-state.remaining-capacity",this,
00076     (double (Xabsl2FunctionProvider::*)())&RobotStateSymbols::getRemainingCapacity);
00077 }
00078 
00079 void RobotStateSymbols::update()
00080 {
00081 }
00082 
00083 int RobotStateSymbols::getMouthState()
00084 {
00085   return robotState.getMouthState();
00086 }
00087 
00088 double RobotStateSymbols::getCurrentSystemTime()
00089 {
00090   return SystemCall::getCurrentSystemTime();
00091 }
00092 
00093 double RobotStateSymbols::getRemainingCapacity()
00094 {
00095   return SystemCall::getRemainingPower();
00096 }
00097 
00098 bool RobotStateSymbols::getBallUnderHead()
00099 {
00100 //  cout << sensorDataBuffer.lastFrame().data[SensorData::neckTilt]<<"|"<<sensorDataBuffer.lastFrame().data[SensorData::neckTilt]<<"\n";
00101 //  cout << flush;
00102   return sensorDataBuffer.lastFrame().data[SensorData::headTilt]>270000;
00103 }
00104 
00105 bool RobotStateSymbols::getSomethingInFrontOfChest()
00106 {
00107   return robotState.getSomethingInFrontOfChest();
00108 }
00109 
00110 double RobotStateSymbols::getTimeSinceSomethingWasInFrontOfChest()
00111 {
00112   return SystemCall::getTimeSince(robotState.getTimeWhenSomethingWasInFrontOfChestLast());
00113 }
00114 
00115 double RobotStateSymbols::getDistanceToSIFOC()
00116 {
00117   return robotState.getDistanceToSIFOC();
00118 }
00119 
00120 
00121 bool RobotStateSymbols::getAnyBackButtonPressedForOneSecond()
00122 {
00123   return (
00124     (
00125     robotState.getAnyBackButtonPressed() &&
00126     robotState.getAnyBackButtonDuration() > 1000
00127     )
00128     ||
00129     (
00130     !robotState.getAnyBackButtonPressed() &&
00131     robotState.getAnyBackButtonPressedTime() > 1000 &&
00132     SystemCall::getTimeSince(robotState.getAnyBackButtonTime()) < 700
00133     )
00134     );
00135 }
00136 
00137 bool RobotStateSymbols::getAnyBackButtonPressedShortAndReleased()
00138 {
00139   return (
00140     !robotState.getAnyBackButtonPressed() &&
00141     robotState.getAnyBackButtonPressedTime() < 1000 &&
00142     SystemCall::getTimeSince(robotState.getAnyBackButtonTime()) < 700
00143     );
00144 }
00145 
00146 bool RobotStateSymbols::getForeBackButtonPressedShort()
00147 {
00148   return (
00149     (
00150     robotState.getButtonPressed(BodyPercept::backFront) &&
00151     robotState.getButtonDuration(BodyPercept::backFront) < 800
00152     )
00153     );
00154 }
00155 
00156 bool RobotStateSymbols::getForeBackButtonPressedShortAndReleased()
00157 {
00158   return (
00159     !robotState.getButtonPressed(BodyPercept::backFront) &&
00160     robotState.getButtonPressedTime(BodyPercept::backFront) < 1000 &&
00161     SystemCall::getTimeSince(robotState.getButtonTime(BodyPercept::backFront)) < 700
00162     );
00163 }
00164 
00165 bool RobotStateSymbols::getMiddleBackButtonPressedShort()
00166 {
00167   return (
00168     (
00169     robotState.getButtonPressed(BodyPercept::backMiddle) &&
00170     robotState.getButtonDuration(BodyPercept::backMiddle) < 800
00171     )
00172     );
00173 }
00174 
00175 bool RobotStateSymbols::getMiddleBackButtonPressedShortAndReleased()
00176 {
00177   return (
00178     !robotState.getButtonPressed(BodyPercept::backMiddle) &&
00179     robotState.getButtonPressedTime(BodyPercept::backMiddle) < 1000 &&
00180     SystemCall::getTimeSince(robotState.getButtonTime(BodyPercept::backMiddle)) < 700
00181     );
00182 }
00183 
00184 bool RobotStateSymbols::getHindBackButtonPressedShort()
00185 {
00186   return (
00187     (
00188     robotState.getButtonPressed(BodyPercept::backBack) &&
00189     robotState.getButtonDuration(BodyPercept::backBack) < 800
00190     )
00191     );
00192 }
00193 
00194 bool RobotStateSymbols::getHindBackButtonPressedShortAndReleased()
00195 {
00196   return (
00197     !robotState.getButtonPressed(BodyPercept::backBack) &&
00198     robotState.getButtonPressedTime(BodyPercept::backBack) < 1000 &&
00199     SystemCall::getTimeSince(robotState.getButtonTime(BodyPercept::backBack)) < 700
00200     );
00201 }
00202 
00203 bool RobotStateSymbols::getHeadButtonPressedForThreeSeconds()
00204 {
00205   return (
00206     (
00207     robotState.getButtonPressed(BodyPercept::head) &&
00208     robotState.getButtonDuration(BodyPercept::head) > 3000
00209     )
00210     ||
00211     (
00212     !robotState.getButtonPressed(BodyPercept::head) &&
00213     robotState.getButtonPressedTime(BodyPercept::head) > 3000 &&
00214     SystemCall::getTimeSince(robotState.getButtonTime(BodyPercept::head)) < 500
00215     )
00216     );
00217 }
00218 
00219 bool RobotStateSymbols::getHeadButtonPressedShort()
00220 {
00221   return (
00222     (
00223     robotState.getButtonPressed(BodyPercept::head) &&
00224 //    robotState.getButtonDuration(BodyPercept::head) > 100 &&
00225     robotState.getButtonDuration(BodyPercept::head) < 800
00226     )
00227     );
00228 }
00229 
00230 bool RobotStateSymbols::getHeadButtonPressedShortAndReleased()
00231 {
00232   return (
00233     !robotState.getButtonPressed(BodyPercept::head) &&
00234 //    robotState.getButtonPressedTime(BodyPercept::head) > 100 &&
00235     robotState.getButtonPressedTime(BodyPercept::head) < 1000 &&
00236     SystemCall::getTimeSince(robotState.getButtonTime(BodyPercept::head)) < 700
00237     );
00238 }
00239 
00240 /*
00241 * Change Log
00242 * 
00243 * $Log: RobotStateSymbols.cpp,v $
00244 * Revision 1.10  2004/06/29 15:13:59  risler
00245 * removed touch sensor averaging and minimum press time, not necessary for ers7 buttons
00246 *
00247 * Revision 1.9  2004/06/17 15:55:35  cesarz
00248 * some changes
00249 *
00250 * Revision 1.8  2004/06/16 17:07:33  cesarz
00251 * Moved body PSD calculations
00252 *
00253 * Revision 1.7  2004/06/16 14:43:51  risler
00254 * added obstacles symbols
00255 * added symbol obstacles.opponent-close-to-ball
00256 *
00257 * Revision 1.6  2004/06/08 18:34:42  juengel
00258 * Added robot-state.time-since-something-was-in-front-of-chest.
00259 *
00260 * Revision 1.5  2004/06/02 14:09:48  brueckne
00261 * improved new button interface
00262 *
00263 * Revision 1.4  2004/05/27 17:13:36  jhoffman
00264 * - renaming: tilt1 -> neckTilt,  pan -> headPan,  tilt2 -> headTilt
00265 * - clipping included for setJoints
00266 * - removed some microrad/rad-bugs
00267 * - bodyPosture constructor and "=" operator fixed
00268 *
00269 * Revision 1.3  2004/05/25 20:14:30  tim
00270 * added something-in-front-of-chest
00271 *
00272 * Revision 1.2  2004/05/24 14:13:51  juengel
00273 * New button evaluation.
00274 *
00275 * Revision 1.1.1.1  2004/05/22 17:17:02  cvsadm
00276 * created new repository GT2004_WM
00277 *
00278 * Revision 1.4  2004/04/08 15:33:01  wachter
00279 * GT04 checkin of Microsoft-Hellounds
00280 *
00281 * Revision 1.3  2004/03/08 00:58:58  roefer
00282 * Interfaces should be const
00283 *
00284 * Revision 1.2  2004/01/24 11:40:13  juengel
00285 * Added ERS7 switches (head, backFront, backBack).
00286 *
00287 * Revision 1.1  2003/10/22 22:18:44  loetzsch
00288 * prepared the cloning of the GT2003BehaviorControl
00289 *
00290 * Revision 1.1  2003/10/06 13:39:29  cvsadm
00291 * Created GT2004 (M.J.)
00292 *
00293 * Revision 1.3  2003/08/09 14:56:09  dueffert
00294 * symbol remaining-capacity added
00295 *
00296 * Revision 1.2  2003/07/06 12:33:05  dueffert
00297 * robot.state-system.time added
00298 *
00299 * Revision 1.1.1.1  2003/07/02 09:40:23  cvsadm
00300 * created new repository for the competitions in Padova from the 
00301 * tamara CVS (Tuesday 2:00 pm)
00302 *
00303 * removed unused solutions
00304 *
00305 * Revision 1.5  2003/06/21 13:06:51  goehring
00306 * Debug Collisionsymbols
00307 *
00308 * Revision 1.4  2003/06/20 13:27:20  risler
00309 * added tailLeft tailRight messages
00310 *
00311 * Revision 1.3  2003/06/20 10:32:27  goehring
00312 * Added CollisionStateSymbols
00313 *
00314 * Revision 1.2  2003/06/10 15:09:07  goehring
00315 * Collision-Detector Xabsl symbols added
00316 *
00317 * Revision 1.1  2003/05/07 17:54:46  juengel
00318 * Added missing symbols to GT2003BehaviorControl.
00319 *
00320 */
00321 

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