Aria
2.8.0
|
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 ArActionDesired * | fire (ArActionDesired currentDesired) |
virtual ArActionDesired * | getDesired (void) |
virtual const ArActionDesired * | getDesired (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 ArArg * | getArg (int number) const |
Gets the numbered argument. More... | |
virtual ArArg * | getArg (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. | |
ArRobot * | getRobot () 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, ArArg > | myArgumentMap |
std::string | myDescription |
bool | myIsActive |
std::string | myName |
int | myNumArgs |
ArRobot * | myRobot |
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 |
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.
ArActionDeceleratingLimiter::ArActionDeceleratingLimiter | ( | const char * | name = "limitAndDecel" , |
LimiterType | type = FORWARDS |
||
) |
Constructor.
name | name of the action |
type | whether 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. |
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)
clearance | distance at which to estop (mm) |
sideClearanceAtSlowSpeed | distance on the side to stop for if going at slow speed or slower (mm) |
paddingAtSlowSpeed | distance in addition to clerance at which to stop at slow speed (mm) |
slowSpeed | speed which we consider to be "slow" (mm/sec) |
sideClearanceAtFastSpeed | distance on the side to stop for if going at fast speed or faster (mm) |
paddingAtFastSpeed | distance in addition to clerance at which to stop at fast speed (mm) |
fastSpeed | speed which we consider to be "fast" (mm/sec) |
preferredDecel | the maximum deceleration to slow for obstacles (unless it will be insufficient to keep the clearances free, then decelerate faster) |
useEStop | if something is detected within the clearance, cause an immediate emergecy stop |
maxEmergencyDecel | ultimate 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. |