Aria
2.8.0
|
This action goes to a given ArPose very naively. More...
#include <ArActionDriveDistance.h>
Inherits ArAction.
Public Member Functions | |
ArActionDriveDistance (const char *name="driveDistance", double speed=400, double deceleration=200) | |
void | cancelDistance (void) |
Cancels the goal the robot has. | |
virtual ArActionDesired * | fire (ArActionDesired currentDesired) |
double | getDeceleration (void) |
Gets the deceleration the action will use (mm/sec/sec) | |
virtual ArActionDesired * | getDesired (void) |
virtual const ArActionDesired * | getDesired (void) const |
double | getSpeed (void) |
Gets the speed the action will travel at (mm/sec) | |
bool | haveAchievedDistance (void) |
Sees if the goal has been achieved. | |
void | setDeceleration (double deceleration=200) |
Sets the deceleration the action will use (mm/sec/sec) | |
void | setDistance (double distance, bool useEncoders=true) |
Sets a new goal and sets the action to go there. | |
void | setPrinting (bool printing) |
Sets if we're printing or not. | |
void | setSpeed (double speed=400) |
Sets the speed the action will travel at (mm/sec) | |
bool | usingEncoders (void) |
Gets whether we're using the encoder position or the normal position. | |
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 Types | |
enum | State { STATE_NO_DISTANCE, STATE_ACHIEVED_DISTANCE, STATE_GOING_DISTANCE } |
Protected Attributes | |
double | myDeceleration |
ArActionDesired | myDesired |
double | myDistance |
double | myDistTravelled |
ArPose | myLastPose |
double | myLastVel |
bool | myPrinting |
double | mySpeed |
State | myState |
bool | myUseEncoders |
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 |
This action goes to a given ArPose very naively.
This action naively drives a fixed distance. The action stops the robot when it has travelled the appropriate distance. It travels at 'speed' mm/sec.
You can give it a distance with setDistance(), cancel its movement with cancelDistance(), and see if it got there with haveAchievedDistance().
You can tell it to go backwards by calling setDistance with a negative value.
This doesn't avoid obstacles or anything, you could add have an limiting ArAction at a higher priority to try to do this (so you don't smash things). (For truly intelligent navigation, see the ARNL or SONARNL software libraries.)