00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ARACTIONGOTO_H
00027 #define ARACTIONGOTO_H
00028
00029 #include "ariaTypedefs.h"
00030 #include "ariaUtil.h"
00031 #include "ArAction.h"
00032
00034
00051 class ArActionGoto : public ArAction
00052 {
00053 public:
00054 AREXPORT ArActionGoto(const char *name = "goto",
00055 ArPose goal = ArPose(0.0, 0.0, 0.0),
00056 double closeDist = 100, double speed = 400,
00057 double speedToTurnAt = 150, double turnAmount = 7);
00058 AREXPORT virtual ~ArActionGoto();
00059
00063 AREXPORT bool haveAchievedGoal(void);
00064
00066 AREXPORT void cancelGoal(void);
00067
00069 AREXPORT void setGoal(ArPose goal);
00070
00072 AREXPORT ArPose getGoal(void) { return myGoal; }
00073
00075 AREXPORT void setCloseDist(double closeDist) { myCloseDist = closeDist; }
00077 AREXPORT double getCloseDist(void) { return myCloseDist; }
00079 AREXPORT void setSpeed(double speed) { mySpeed = speed; }
00081 AREXPORT double getSpeed(void) { return mySpeed; }
00082
00087 AREXPORT virtual ArActionDesired *fire(ArActionDesired currentDesired);
00088
00090 AREXPORT virtual ArActionDesired *getDesired(void) { return &myDesired; }
00091 #ifndef SWIG
00092 AREXPORT virtual const ArActionDesired *getDesired(void) const
00093 { return &myDesired; }
00094 #endif
00095 protected:
00096 ArPose myGoal;
00097 double myCloseDist;
00098 double mySpeed;
00099 double mySpeedToTurnAt;
00100 double myDirectionToTurn;
00101 double myCurTurnDir;
00102 double myTurnAmount;
00103 ArActionDesired myDesired;
00104 bool myTurnedBack;
00105 bool myPrinting;
00106 ArPose myOldGoal;
00107
00108 enum State
00109 {
00110 STATE_NO_GOAL,
00111 STATE_ACHIEVED_GOAL,
00112 STATE_GOING_TO_GOAL
00113 };
00114 State myState;
00115 };
00116
00117 #endif // ARACTIONGOTO