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
00027 #ifndef ARACTIONDECELERATINGLIMITER_H
00028 #define ARACTIONDECELERATINGLIMITER_H
00029
00030 #include "ariaTypedefs.h"
00031 #include "ArAction.h"
00032
00034
00046 class ArActionDeceleratingLimiter : public ArAction
00047 {
00048 public:
00050 ArActionDeceleratingLimiter(const char *name = "limitAndDecel",
00051 bool forwards = true);
00053 virtual ~ArActionDeceleratingLimiter();
00054 virtual ArActionDesired *fire(ArActionDesired currentDesired);
00055 virtual ArActionDesired *getDesired(void) { return &myDesired; }
00057 void setParameters(double clearance = 100,
00058 double sideClearanceAtSlowSpeed = 50,
00059 double paddingAtSlowSpeed = 50,
00060 double slowSpeed = 200,
00061 double sideClearanceAtFastSpeed = 400,
00062 double paddingAtFastSpeed = 300,
00063 double fastSpeed = 1000,
00064 double preferredDecel = 600,
00065 bool useEStop = false,
00066 double maxEmergencyDecel = 0);
00068 bool getForwards(void) { return myForwards; }
00070 void setForwards(bool forwards) { myForwards = forwards; }
00072 void addToConfig(ArConfig *config, const char *section,
00073 const char *prefix = NULL);
00074 protected:
00075 bool myLastStopped;
00076 bool myForwards;
00077 double myClearance;
00078 double mySideClearanceAtSlowSpeed;
00079 double myPaddingAtSlowSpeed;
00080 double mySlowSpeed;
00081 double mySideClearanceAtFastSpeed;
00082 double myPaddingAtFastSpeed;
00083 double myFastSpeed;
00084 double myPreferredDecel;
00085 double myMaxEmergencyDecel;
00086 bool myUseEStop;
00087
00088 ArActionDesired myDesired;
00089 };
00090
00091 #endif // ARACTIONSPEEDLIMITER_H