00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __GT2005PotentialFieldBasicBehaviors_h_
00010 #define __GT2005PotentialFieldBasicBehaviors_h_
00011
00012 #include "Tools/Xabsl2/Xabsl2Engine/Xabsl2Engine.h"
00013 #include "Tools/PotentialFields/GTStandardConverter.h"
00014 #include "Modules/BehaviorControl/BehaviorControl.h"
00015 #include "Tools/Xabsl2/Xabsl2Engine/Xabsl2BasicBehavior.h"
00016
00017
00018
00019
00020
00021
00022
00023 class GT2005PotentialFieldBasicBehavior : public Xabsl2BasicBehavior,
00024 public BehaviorControlInterfaces
00025 {
00026 public:
00027
00028
00029
00030
00031
00032 GT2005PotentialFieldBasicBehavior(const BehaviorControlInterfaces& interfaces,
00033 Xabsl2ErrorHandler& errorHandler, const char* behaviorName, const char* pfcFileName):
00034 Xabsl2BasicBehavior(behaviorName, errorHandler),
00035 BehaviorControlInterfaces(interfaces)
00036 {
00037 potentialfields.load(pfcFileName);
00038 };
00039
00040
00041 virtual void execute() = 0;
00042
00043 protected:
00044
00045 GTStandardConverter potentialfields;
00046
00047 PotentialfieldResult result;
00048 };
00049
00050
00051 class GT2005PotentialFieldBasicBehaviorSupport : public GT2005PotentialFieldBasicBehavior
00052 {
00053 public:
00054
00055
00056
00057
00058
00059 GT2005PotentialFieldBasicBehaviorSupport(const BehaviorControlInterfaces& interfaces,
00060 Xabsl2ErrorHandler& errorHandler);
00061
00062
00063 virtual void execute();
00064
00065 private:
00066
00067 double x;
00068
00069 double y;
00070
00071 double maxSpeed;
00072 };
00073
00074
00075 class GT2005PotentialFieldBasicBehaviorOffensiveSupport : public GT2005PotentialFieldBasicBehavior
00076 {
00077 public:
00078
00079
00080
00081
00082
00083 GT2005PotentialFieldBasicBehaviorOffensiveSupport(const BehaviorControlInterfaces& interfaces,
00084 Xabsl2ErrorHandler& errorHandler);
00085
00086
00087 virtual void execute();
00088
00089 private:
00090
00091 double x;
00092
00093 double y;
00094
00095 double maxSpeed;
00096 };
00097
00098
00099 class GT2005PotentialFieldBasicBehaviorAvoidRobots : public GT2005PotentialFieldBasicBehavior
00100 {
00101 public:
00102
00103
00104
00105
00106
00107 GT2005PotentialFieldBasicBehaviorAvoidRobots(const BehaviorControlInterfaces& interfaces,
00108 Xabsl2ErrorHandler& errorHandler);
00109
00110
00111 virtual void execute();
00112
00113 private:
00114
00115 double x;
00116
00117 double y;
00118
00119 double maxSpeed;
00120 };
00121
00122
00123
00124
00125
00126
00127
00128 class GT2005PotentialFieldBasicBehaviors : public BehaviorControlInterfaces
00129 {
00130 public:
00131
00132
00133
00134 GT2005PotentialFieldBasicBehaviors(BehaviorControlInterfaces& interfaces,
00135 Xabsl2ErrorHandler& errorHandler):
00136 BehaviorControlInterfaces(interfaces),
00137 errorHandler(errorHandler),
00138 potentialFieldSupport(interfaces, errorHandler),
00139 potentialFieldOffensiveSupport(interfaces, errorHandler),
00140 potentialFieldAvoidRobots(interfaces, errorHandler)
00141 {}
00142
00143
00144 void registerBasicBehaviors(Xabsl2Engine& engine)
00145 {
00146 engine.registerBasicBehavior(potentialFieldSupport);
00147 engine.registerBasicBehavior(potentialFieldOffensiveSupport);
00148 engine.registerBasicBehavior(potentialFieldAvoidRobots);
00149 }
00150
00151
00152 void update() {};
00153
00154 private:
00155
00156 Xabsl2ErrorHandler& errorHandler;
00157
00158
00159
00160 GT2005PotentialFieldBasicBehaviorSupport potentialFieldSupport;
00161 GT2005PotentialFieldBasicBehaviorOffensiveSupport potentialFieldOffensiveSupport;
00162 GT2005PotentialFieldBasicBehaviorAvoidRobots potentialFieldAvoidRobots;
00163
00164 };
00165
00166 #endif // __GT2005PotentialFieldBasicBehaviors_h_