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

Modules/BehaviorControl/CommonXabsl2Symbols/KickSelectionSymbols.cpp

Go to the documentation of this file.
00001 /** 
00002 * @file KickSelectionSymbols.cpp
00003 *
00004 * Implementation of class KickSelectionSymbols.
00005 *
00006 * @author Martin Lötzsch
00007 */
00008 
00009 #include "KickSelectionSymbols.h"
00010 
00011 
00012 KickSelectionSymbols::KickSelectionSymbols(BehaviorControlInterfaces& interfaces, 
00013                                            const char* fileName)
00014 : BehaviorControlInterfaces(interfaces)
00015 {
00016   kickSelectionTable.load(fileName);
00017 }
00018 
00019 
00020 void KickSelectionSymbols::registerSymbols(Xabsl2Engine& engine)
00021 {
00022   engine.registerDecimalInputFunction("retrieve-kick",this,
00023     (double (Xabsl2FunctionProvider::*)())&KickSelectionSymbols::retrieveKick);
00024   engine.registerDecimalInputFunctionParameter("retrieve-kick","retrieve-kick.angle",angle);
00025   engine.registerDecimalInputFunctionParameter("retrieve-kick","retrieve-kick.table-id",tableID);
00026 }
00027 
00028 double KickSelectionSymbols::retrieveKick()
00029 {
00030   if (SystemCall::getTimeSince(ballModel.seen.timeUntilSeenConsecutively) < 200
00031     && ballModel.seen.timeUntilSeenConsecutively - ballModel.seen.timeWhenFirstSeenConsecutively > 150)
00032   {
00033     return kickSelectionTable.retrieveKick(Geometry::distanceTo(robotPose.getPose(),ballModel.seen)
00034       * cos(Geometry::angleTo(robotPose.getPose(),ballModel.seen)),
00035       Geometry::distanceTo(robotPose.getPose(),ballModel.seen)
00036       * sin(Geometry::angleTo(robotPose.getPose(),ballModel.seen)),
00037       angle, (KickSelectionTable::KickSelectionTableID)(int)tableID);
00038   }
00039   else
00040   {
00041     return KickSelectionTable::nothing;
00042   }
00043 }
00044 
00045 bool KickSelectionSymbols::handleMessage(InMessage& message)
00046 {
00047   if(message.getMessageID() == idKickSelectionTable)
00048   {
00049     message.text >> kickSelectionTable;
00050     return true;
00051   }
00052   else return false;
00053 }
00054 
00055 /*
00056 * Change Log
00057 * 
00058 * $Log: KickSelectionSymbols.cpp,v $
00059 * Revision 1.1  2004/05/22 21:31:04  loetzsch
00060 * adopted kick selection table to GT2004
00061 *
00062 * Revision 1.6  2004/05/04 16:25:08  loetzsch
00063 * bug fixes
00064 *
00065 * Revision 1.5  2004/04/14 10:44:44  loetzsch
00066 * started redesing of ball handling options
00067 *
00068 * Revision 1.4  2004/03/27 15:47:45  loetzsch
00069 * ::retrieveKick does not check anymore whether the ball was seen before
00070 *
00071 * Revision 1.3  2004/03/19 21:19:28  altmeyer
00072 * SideHeadKick and SideHeadKick2 changed and renamed to SideHeadKick L and SideHeadKickR
00073 * a few ATH ERS7-kicks removed
00074 *
00075 * Revision 1.2  2004/03/17 19:57:48  juengel
00076 * handleMessage() for kickSelectionSymbols added.
00077 *
00078 * Revision 1.1  2004/03/16 14:00:18  juengel
00079 * Integrated Improvments from "Günne"
00080 * -ATH2004ERS7Behavior
00081 * -ATHHeadControl
00082 * -KickSelectionTable
00083 * -KickEditor
00084 *
00085 * Revision 1.4  2004/03/10 18:40:59  loetzsch
00086 * first functioning version
00087 *
00088 * Revision 1.3  2004/03/10 13:32:18  loetzsch
00089 * continued option "approach-and-kick"
00090 *
00091 * Revision 1.2  2004/03/09 18:48:47  loetzsch
00092 * kick selection table changes
00093 *
00094 * Revision 1.1  2004/03/09 13:44:49  loetzsch
00095 * added class ATH2004ERS7KickSelectionSymbols
00096 *
00097 */
00098 

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