00001
00002
00003
00004
00005
00006
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
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098