Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ArActionDeceleratingLimiter Class Reference

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

#include <ArActionDeceleratingLimiter.h>

Inheritance diagram for ArActionDeceleratingLimiter:

ArAction List of all members.

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", bool forwards=true)
 Constructor.
virtual ArActionDesiredfire (ArActionDesired currentDesired)
 Fires the action, returning what the action wants to do.
virtual ArActionDesiredgetDesired (void)
 Gets what this action wants to do (for display purposes).
bool getForwards (void)
 Gets if this will control us when going forwards.
void setForwards (bool forwards)
 Sets if this will control us when going forwards.
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).
virtual ~ArActionDeceleratingLimiter ()
 Destructor.

Protected Attributes

double myClearance
ArActionDesired myDesired
double myFastSpeed
bool myForwards
bool myLastStopped
double myMaxEmergencyDecel
double myPaddingAtFastSpeed
double myPaddingAtSlowSpeed
double myPreferredDecel
double mySideClearanceAtFastSpeed
double mySideClearanceAtSlowSpeed
double mySlowSpeed
bool myUseEStop

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.

Definition at line 46 of file ArActionDeceleratingLimiter.h.


Constructor & Destructor Documentation

ArActionDeceleratingLimiter::ArActionDeceleratingLimiter const char *  name = "limitAndDecel",
bool  forwards = true
 

Constructor.

Parameters:
name name of the action
forwards whether we're an action for going forwards (true) or backwards (false)

Definition at line 39 of file ArActionDeceleratingLimiter.cpp.

References setParameters().


Member Function Documentation

ArActionDesired * ArActionDeceleratingLimiter::fire ArActionDesired  currentDesired  )  [virtual]
 

Fires the action, returning what the action wants to do.

Parameters:
currentDesired this is what the current resolver has for its desired, this is SOLELY for the purpose of giving information to the action
Returns:
pointer to what this action wants to do, NULL if it wants to do nothing

Implements ArAction.

Definition at line 183 of file ArActionDeceleratingLimiter.cpp.

References ArRobot::checkRangeDevicesCurrentBox(), ArRobot::comInt(), ArMath::fabs(), ArRobot::getOrigRobotConfig(), ArRobot::getRobotLength(), ArRobot::getRobotWidth(), ArRobotConfigPacketReader::getTransAccelTop(), ArActionDesired::getTransDecel(), ArRobot::getTransDecel(), ArActionDesired::getTransDecelStrength(), ArRobot::getVel(), ArRobotConfigPacketReader::hasPacketArrived(), ArLog::log(), ArActionDesired::reset(), ArActionDesired::setMaxNegVel(), ArActionDesired::setMaxVel(), ArActionDesired::setTransDecel(), and ArActionDesired::setVel().

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:
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.

Definition at line 68 of file ArActionDeceleratingLimiter.cpp.

Referenced by ArActionDeceleratingLimiter().


The documentation for this class was generated from the following files:
Generated on Wed Oct 19 12:56:39 2005 for Aria by  doxygen 1.4.0