#include <ArActionDesired.h>
This class is use by actions to report what they want to want to do (hence the name).
The way it works, is that translational (front/back) and rotational (right/left) are separate. Translational movement uses velocity, while rotational movement uses change in heading from current heading. Translational and rotational each have their own strength value. Both translational and rotational movement have maximum velocities as well, that also have their own strengths.
The strength value reflects how strongly an action wants to do the chosen movement command, the resolver (ArResolver) will combine these strengths and figure out what to do based on them.
For all strength values there is a total of 1.0 strength to be had. The range for strength is from 0 to 1. This is simply a convention that ARIA uses by default, if you don't like it, you can override this class and make an ArResolver.
Note that for the different maximum/accel/decel values they take an additional argument of whether just to use the slowest speed, slowest accel, or fastest decel. By default these will just use safer values (slowest speed, slowest accel, fastest decel)... you can specify false on these for the old behavior. Note that if you're safest values then the strength is largely ignored though it is still tracked and must still be greater than MIN_STRENGTH to work and it is still capped at MAX_STRENGTH).
actionExample.cpp, actsColorFollowingExample.cpp, and joydriveActionExample.cpp.
Definition at line 183 of file ArActionDesired.h.
Public Member Functions | |
virtual void | accountForRobotHeading (double robotHeading) |
Accounts for robot heading, mostly internal. | |
virtual void | addAverage (ArActionDesired *actDesired) |
Adds another actionDesired into the mix to average. | |
ArActionDesired () | |
Constructor. | |
virtual void | endAverage (void) |
Ends the process of avereraging together different desireds. | |
virtual double | getDeltaHeading (void) const |
Gets the delta heading desired (deg). | |
virtual double | getDeltaHeadingStrength (void) const |
Gets the strength of the delta heading desired. | |
virtual double | getHeading (void) const |
Gets the heading desired (deg). | |
virtual double | getHeadingStrength (void) const |
Gets the strength of the heading desired. | |
virtual double | getMaxAccelSlowestUsed (void) const |
Gets whether the slowest rot accel is being used or not. | |
virtual double | getMaxNegVel (void) const |
Gets the desired maximum negative velocity (-mm/sec). | |
virtual double | getMaxNegVelSlowestUsed (void) const |
Gets whether the slowest is being used or not. | |
virtual double | getMaxNegVelStrength (void) const |
Gets the desired maximum negative velocity strength. | |
virtual double | getMaxRotVel (void) const |
Gets the maximum rotational velocity. | |
virtual double | getMaxRotVelSlowestUsed (void) const |
Gets whether the slowest rot vel is being used or not. | |
virtual double | getMaxRotVelStrength (void) const |
Gets the maximum rotational velocity strength. | |
virtual double | getMaxVel (void) const |
Gets the desired maximum velocity (mm/sec). | |
virtual double | getMaxVelSlowestUsed (void) const |
Gets whether the slowest is being used or not. | |
virtual double | getMaxVelStrength (void) const |
Gets the maximum velocity strength. | |
virtual double | getRotAccel (void) const |
Gets the desired rotational acceleration (mm/sec). | |
virtual double | getRotAccelStrength (void) const |
Gets the desired rotational acceleration strength. | |
virtual double | getRotDecel (void) const |
Gets the desired rotational deceleration (-mm/sec/sec). | |
virtual double | getRotDecelFastestUsed (void) const |
Gets whether the fastest rot decel is being used or not. | |
virtual double | getRotDecelStrength (void) const |
Gets the desired rotational deceleration strength. | |
virtual double | getRotVel (void) const |
Gets the rot vel that was set. | |
virtual double | getRotVelStrength (void) const |
Gets the rot vel des (deg/sec). | |
virtual double | getTransAccel (void) const |
Gets the desired trans acceleration (mm/sec). | |
virtual double | getTransAccelSlowestUsed (void) const |
Gets whether the slowest accel is being used or not. | |
virtual double | getTransAccelStrength (void) const |
Gets the desired trans acceleration strength. | |
virtual double | getTransDecel (void) const |
Gets the desired trans deceleration (-mm/sec/sec). | |
virtual double | getTransDecelFastestUsed (void) const |
Gets whether the fastest decel is being used or not. | |
virtual double | getTransDecelStrength (void) const |
Gets the desired trans deceleration strength. | |
virtual double | getVel (void) const |
Gets the translational velocity desired (mm/sec). | |
virtual double | getVelStrength (void) const |
Gets the strength of the translational velocity desired. | |
virtual bool | isAnythingDesired (void) const |
Gets whether anything is desired (should only really be used in relation to logging). | |
virtual void | log (void) const |
Logs what is desired. | |
virtual void | merge (ArActionDesired *actDesired) |
virtual void | reset (void) |
Resets the strengths to 0. | |
virtual void | setDeltaHeading (double deltaHeading, double strength=MAX_STRENGTH) |
Sets the delta heading (deg) and strength. | |
virtual void | setHeading (double heading, double strength=MAX_STRENGTH) |
Sets the absolute heading (deg). | |
virtual void | setMaxNegVel (double maxVel, double strength=MAX_STRENGTH, bool useSlowest=true) |
Sets the maximum velocity for going backwards (-mm/sec) and strength. | |
virtual void | setMaxRotVel (double maxVel, double strength=MAX_STRENGTH, bool useSlowest=true) |
Sets the maximum rotational velocity (deg/sec) and strength. | |
virtual void | setMaxVel (double maxVel, double strength=MAX_STRENGTH, bool useSlowest=true) |
Sets the maximum velocity (+mm/sec) and strength. | |
virtual void | setRotAccel (double rotAccel, double strength=MAX_STRENGTH, bool useSlowest=true) |
Sets the rotational acceleration (deg/sec/sec) and strength. | |
virtual void | setRotDecel (double rotDecel, double strength=MAX_STRENGTH, bool useFastest=true) |
Sets the rotational deceleration (deg/sec/sec) and strength. | |
virtual void | setRotVel (double rotVel, double strength=MAX_STRENGTH) |
Sets the rotational velocity. | |
virtual void | setTransAccel (double transAccel, double strength=MAX_STRENGTH, bool useSlowest=true) |
Sets the translation acceleration (deg/sec/sec) and strength. | |
virtual void | setTransDecel (double transDecel, double strength=MAX_STRENGTH, bool useFastestDecel=true) |
Sets the translation deceleration (deg/sec/sec) and strength. | |
virtual void | setVel (double vel, double strength=MAX_STRENGTH) |
Sets the velocity (mm/sec) and strength. | |
virtual void | startAverage (void) |
Starts the process of avereraging together different desireds. | |
virtual | ~ArActionDesired () |
Destructor. | |
Static Public Attributes | |
static const double | MAX_STRENGTH = 1.0 |
static const double | MIN_STRENGTH = .000001 |
static const double | NO_STRENGTH = 0.0 |
Protected Attributes | |
ArActionDesiredChannel | myDeltaHeadingDes |
double | myHeading |
bool | myHeadingSet |
double | myHeadingStrength |
ArActionDesiredChannel | myMaxNegVelDes |
ArActionDesiredChannel | myMaxRotVelDes |
ArActionDesiredChannel | myMaxVelDes |
ArActionDesiredChannel | myRotAccelDes |
ArActionDesiredChannel | myRotDecelDes |
ArActionDesiredChannel | myRotVelDes |
ArActionDesiredChannel | myTransAccelDes |
ArActionDesiredChannel | myTransDecelDes |
ArActionDesiredChannel | myVelDes |
|
Accounts for robot heading, mostly internal. This accounts for the robots heading, and transforms the set heading on this actionDesired into a delta heading so it can be merged and averaged and the like
Definition at line 560 of file ArActionDesired.h. |
|
Adds another actionDesired into the mix to average. For a description of how to use this, see startAverage.
Definition at line 503 of file ArActionDesired.h. |
|
Ends the process of avereraging together different desireds. For a description of how to use this, see startAverage. Definition at line 540 of file ArActionDesired.h. |
|
This merges in the two different action values, accountForRobotHeading MUST be done before this is called (on both actions), since this merges their delta headings, and the deltas can't be known unless the account for angle is done.
Definition at line 450 of file ArActionDesired.h. |
|
Sets the delta heading (deg) and strength. If there's already a rotVel set this WILL NOT work.
Definition at line 210 of file ArActionDesired.h. |
|
Sets the absolute heading (deg). If there's already a rotVel set this WILL NOT work. This is a way to set the heading instead of using a delta, there is no get for this, because accountForRobotHeading MUST be called (this should be called by all resolvers, but if you want to call it you can, thats fine).
Definition at line 223 of file ArActionDesired.h. |
|
Sets the maximum velocity for going backwards (-mm/sec) and strength. This sets the maximum negative velocity for this cycle. Check the ArRobot class notes for more details.
Definition at line 260 of file ArActionDesired.h. |
|
Sets the maximum rotational velocity (deg/sec) and strength. This sets the maximum rotational velocity for this cycle (this is sent down to the robot). Check the ArRobot class notes for more details.
Definition at line 306 of file ArActionDesired.h. |
|
Sets the maximum velocity (+mm/sec) and strength. This sets the maximum positive velocity for this cycle. Check the ArRobot class notes for more details.
Definition at line 247 of file ArActionDesired.h. |
|
Sets the rotational acceleration (deg/sec/sec) and strength. This sets the rotational acceleration for this cycle (this is sent down to the robot). Check the ArRobot class notes for more details.
Definition at line 321 of file ArActionDesired.h. |
|
Sets the rotational deceleration (deg/sec/sec) and strength. This sets the rotational deceleration for this cycle (this is sent down to the robot). Check the ArRobot class notes for more details.
Definition at line 336 of file ArActionDesired.h. |
|
Sets the rotational velocity. If there's already a delta heading or heading this WILL NOT work.
Definition at line 232 of file ArActionDesired.h. |
|
Sets the translation acceleration (deg/sec/sec) and strength. This sets the translation acceleration for this cycle (this is sent down to the robot). Check the ArRobot class notes for more details.
Definition at line 275 of file ArActionDesired.h. |
|
Sets the translation deceleration (deg/sec/sec) and strength. This sets the translation deceleration for this cycle (this is sent down to the robot). Check the ArRobot class notes for more details.
Definition at line 291 of file ArActionDesired.h. |
|
Sets the velocity (mm/sec) and strength.
Definition at line 202 of file ArActionDesired.h. |
|
Starts the process of avereraging together different desireds. There is a three step process for averaging actionDesireds together, first startAverage must be done to set up the process, then addAverage must be done with each average that is desired, then finally endAverage should be used, after that is done then the normal process of getting the results out should be done. Definition at line 485 of file ArActionDesired.h. |