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 ARACTIONDECELERATINGLIMITER_H
00027 #define ARACTIONDECELERATINGLIMITER_H
00028
00029 #include "ariaTypedefs.h"
00030 #include "ArAction.h"
00031
00033
00045 class ArActionDeceleratingLimiter : public ArAction
00046 {
00047 public:
00049 AREXPORT ArActionDeceleratingLimiter(const char *name = "limitAndDecel",
00050 bool forwards = true);
00052 AREXPORT virtual ~ArActionDeceleratingLimiter();
00053 AREXPORT virtual ArActionDesired *fire(ArActionDesired currentDesired);
00054 AREXPORT virtual ArActionDesired *getDesired(void) { return &myDesired; }
00055 #ifndef SWIG
00056 AREXPORT virtual const ArActionDesired *getDesired(void) const
00057 { return &myDesired; }
00058 #endif
00059
00060 AREXPORT void setParameters(double clearance = 100,
00061 double sideClearanceAtSlowSpeed = 50,
00062 double paddingAtSlowSpeed = 50,
00063 double slowSpeed = 200,
00064 double sideClearanceAtFastSpeed = 400,
00065 double paddingAtFastSpeed = 300,
00066 double fastSpeed = 1000,
00067 double preferredDecel = 600,
00068 bool useEStop = false,
00069 double maxEmergencyDecel = 0);
00071 bool getForwards(void) { return myForwards; }
00073 void setForwards(bool forwards) { myForwards = forwards; }
00075 AREXPORT void addToConfig(ArConfig *config, const char *section,
00076 const char *prefix = NULL);
00078 bool getUseLocationDependentDevices(void)
00079 { return myUseLocationDependentDevices; }
00081 void setUseLocationDependentDevices(bool useLocationDependentDevices)
00082 { myUseLocationDependentDevices = useLocationDependentDevices; }
00083 protected:
00084 bool myLastStopped;
00085 bool myForwards;
00086 double myClearance;
00087 double mySideClearanceAtSlowSpeed;
00088 double myPaddingAtSlowSpeed;
00089 double mySlowSpeed;
00090 double mySideClearanceAtFastSpeed;
00091 double myPaddingAtFastSpeed;
00092 double myFastSpeed;
00093 double myPreferredDecel;
00094 double myMaxEmergencyDecel;
00095 bool myUseEStop;
00096 bool myUseLocationDependentDevices;
00097
00098 ArActionDesired myDesired;
00099 };
00100
00101 #endif // ARACTIONSPEEDLIMITER_H