Aria  2.8.0
ArActionDeceleratingLimiter Class Reference

Action to limit the forwards motion of the robot based on range sensor readings. More...

#include <ArActionDeceleratingLimiter.h>

Inherits ArAction.

Public Types

enum  LimiterType { FORWARDS, BACKWARDS, LATERAL_LEFT, LATERAL_RIGHT }
 

Public Member Functions

void addToConfig (ArConfig *config, const char *section, const char *prefix=NULL)
 Adds to the ArConfig given, in section, with prefix.
 
 ArActionDeceleratingLimiter (const char *name="limitAndDecel", LimiterType type=FORWARDS)
 Constructor. More...
 
virtual ArActionDesiredfire (ArActionDesired currentDesired)
 
virtual ArActionDesiredgetDesired (void)
 
virtual const ArActionDesiredgetDesired (void) const
 
LimiterType getType (void)
 Gets if this will control us when going forwards.
 
bool getUseLocationDependentDevices (void)
 Sets if we're using locationDependent range devices or not.
 
void setParameters (double clearance=100, double sideClearanceAtSlowSpeed=50, double paddingAtSlowSpeed=50, double slowSpeed=200, double sideClearanceAtFastSpeed=400, double paddingAtFastSpeed=300, double fastSpeed=1000, double preferredDecel=600, bool useEStop=false, double maxEmergencyDecel=0)
 Sets the parameters (don't use this if you're using the addToConfig) More...
 
void setStopRotationToo (bool stopRotationToo)
 
void setType (LimiterType type)
 Sets if this will control us when going forwards.
 
void setUseLocationDependentDevices (bool useLocationDependentDevices)
 Sets if we're using locationDependent range devices or not.
 
virtual ~ArActionDeceleratingLimiter ()
 Destructor.
 
- Public Member Functions inherited from ArAction
virtual void activate (void)
 Activate the action.
 
 ArAction (const char *name, const char *description="")
 Constructor.
 
virtual void deactivate (void)
 Deactivate the action.
 
virtual const ArArggetArg (int number) const
 Gets the numbered argument. More...
 
virtual ArArggetArg (int number)
 Gets the numbered argument.
 
virtual const char * getDescription (void) const
 Gets the long description of the action.
 
virtual const char * getName (void) const
 Gets the name of the action.
 
virtual int getNumArgs (void) const
 Find the number of arguments this action takes.
 
ArRobotgetRobot () const
 Get the robot we are controlling, which was set by setRobot()
 
virtual bool isActive (void) const
 Returns whether the action is active or not.
 
virtual void log (bool verbose=true) const
 Log information about this action using ArLog.
 
virtual void setRobot (ArRobot *robot)
 Sets the robot this action is driving. More...
 
virtual ~ArAction ()
 Desructor.
 

Protected Attributes

double myClearance
 
ArActionDesired myDesired
 
double myFastSpeed
 
bool myLastStopped
 
double myMaxEmergencyDecel
 
double myPaddingAtFastSpeed
 
double myPaddingAtSlowSpeed
 
double myPreferredDecel
 
double mySideClearanceAtFastSpeed
 
double mySideClearanceAtSlowSpeed
 
double mySlowSpeed
 
bool myStopRotationToo
 
LimiterType myType
 
bool myUseEStop
 
bool myUseLocationDependentDevices
 
- Protected Attributes inherited from ArAction
std::map< int, ArArgmyArgumentMap
 
std::string myDescription
 
bool myIsActive
 
std::string myName
 
int myNumArgs
 
ArRobotmyRobot
 The robot we are controlling, set by the action resolver using setRobot()
 

Additional Inherited Members

- Static Public Member Functions inherited from ArAction
static bool getDefaultActivationState (void)
 Gets the default activation state for all ArActions.
 
static void setDefaultActivationState (bool defaultActivationState)
 Sets the default activation state for all ArActions.
 
- Protected Member Functions inherited from ArAction
void setNextArgument (ArArg const &arg)
 Sets the argument type for the next argument (must only be used in a constructor!)
 
- Static Protected Attributes inherited from ArAction
static bool ourDefaultActivationState = true
 

Detailed Description

Action to limit the forwards motion of the robot based on range sensor readings.

This action uses the robot's range sensors (e.g. sonar, laser) to find a maximum speed at which to travel and will increase the deceleration so that the robot doesn't hit anything. If it has to, it will trigger an estop to avoid a collision.

Note that this cranks up the deceleration with a strong strength, but it checks to see if there is already something decelerating more strongly... so you can put these actions lower in the priority list so things will play together nicely.

Member Enumeration Documentation

◆ LimiterType

Enumerator
FORWARDS 

Limit forwards.

BACKWARDS 

Limit backwards.

LATERAL_LEFT 

Limit lateral left.

LATERAL_RIGHT 

Limit lateral right.

Constructor & Destructor Documentation

◆ ArActionDeceleratingLimiter()

ArActionDeceleratingLimiter::ArActionDeceleratingLimiter ( const char *  name = "limitAndDecel",
LimiterType  type = FORWARDS 
)

Constructor.

Parameters
namename of the action
typewhether we're an action for going forwards (ArActionDeceleratingLimiter::FORWARDS) backwards (ArActionDeceleratingLimiter::BACKWARDS), or laterally to the left (ArActionDeceleratingLimiter::LATERAL_LEFT) or laterally to the right (ArActionDeceleratingLimiter::LATERAL_RIGHT). This causes ArActionDeceleratingLimiter to choose the right values and choose X or Y translation decelerations and speeds.

Member Function Documentation

◆ setParameters()

void ArActionDeceleratingLimiter::setParameters ( double  clearance = 100,
double  sideClearanceAtSlowSpeed = 50,
double  paddingAtSlowSpeed = 50,
double  slowSpeed = 200,
double  sideClearanceAtFastSpeed = 400,
double  paddingAtFastSpeed = 300,
double  fastSpeed = 1000,
double  preferredDecel = 600,
bool  useEStop = false,
double  maxEmergencyDecel = 0 
)

Sets the parameters (don't use this if you're using the addToConfig)

Parameters
clearancedistance at which to estop (mm)
sideClearanceAtSlowSpeeddistance on the side to stop for if going at slow speed or slower (mm)
paddingAtSlowSpeeddistance in addition to clerance at which to stop at slow speed (mm)
slowSpeedspeed which we consider to be "slow" (mm/sec)
sideClearanceAtFastSpeeddistance on the side to stop for if going at fast speed or faster (mm)
paddingAtFastSpeeddistance in addition to clerance at which to stop at fast speed (mm)
fastSpeedspeed which we consider to be "fast" (mm/sec)
preferredDecelthe maximum deceleration to slow for obstacles (unless it will be insufficient to keep the clearances free, then decelerate faster)
useEStopif something is detected within the clearance, cause an immediate emergecy stop
maxEmergencyDecelultimate limit on deceleration to apply when slowing for an obstacle detected within clearance (mm/sec/sec); if 0, use the robot's maximum decel parameter.

The documentation for this class was generated from the following files: