#include <ArRobot.h>
This is the most important class. It is used to communicate with the robot by sending commands and retrieving data (including wheel odometry, digital and analog inputs, sonar data, and more). It is also used to provide access to objects for controlling attached accessories, ArRangeDevice objects, ArAction objects, and others. For details on usage, and how the task cycle and obot state synchronization works, see the ArRobot section and the Commands and Actions section of the ARIA overview.
actionExample.cpp, actionGroupExample.cpp, actsColorFollowingExample.cpp, armExample.cpp, auxSerialExample.cpp, demo.cpp, dpptuExample.cpp, gotoActionExample.cpp, gripperExample.cpp, gyroExample.cpp, joydriveActionExample.cpp, lineFinderExample.cpp, moduleExample.cpp, moduleExample_Mod.cpp, robotConnectionCallbacks.cpp, robotSyncTaskExample.cpp, simpleConnect.cpp, sonyPTZDemo.cpp, teleopActionsExample.cpp, triangleDriveToActionExample.cpp, vcc4CameraExample.cpp, and wander.cpp.
Definition at line 73 of file ArRobot.h.
Public Types | |
| enum | ChargeState { CHARGING_UNKNOWN = -1, CHARGING_NOT = 0, CHARGING_BULK = 1, CHARGING_OVERCHARGE = 2, CHARGING_FLOAT = 3 } |
| CHARGING_BULK = 1 | |
| CHARGING_FLOAT = 3 | |
| CHARGING_NOT = 0 | |
| CHARGING_OVERCHARGE = 2 | |
| CHARGING_UNKNOWN = -1 | |
| WAIT_CONNECTED | |
| The robot has connected. | |
| WAIT_FAIL | |
| The wait failed due to an error. | |
| WAIT_FAILED_CONN | |
| The robot failed to connect. | |
| WAIT_INTR | |
| The wait was interupted by a signal. | |
| WAIT_RUN_EXIT | |
| The run loop has exited. | |
| WAIT_TIMEDOUT | |
| The wait reached the timeout specified. | |
| enum | WaitState { WAIT_CONNECTED, WAIT_FAILED_CONN, WAIT_RUN_EXIT, WAIT_TIMEDOUT, WAIT_INTR, WAIT_FAIL } |
Public Member Functions | |
| void | actionHandler (void) |
| Action Handler, internal. | |
| bool | addAction (ArAction *action, int priority) |
| Adds an action to the list with the given priority. | |
| void | addConnectCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a connect callback. | |
| void | addDisconnectNormallyCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a callback for when disconnect is called while connected. | |
| void | addDisconnectOnErrorCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a callback for when disconnection happens because of an error. | |
| void | addFailedConnectCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a callback for when a connection to the robot is failed. | |
| void | addPacketHandler (ArRetFunctor1< bool, ArRobotPacket * > *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a packet handler to the list of packet handlers. | |
| void | addRangeDevice (ArRangeDevice *device) |
| Adds a rangeDevice to the robot's list of them, and set the device's robot pointer. | |
| void | addRunExitCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a callback for when the run loop exits for what ever reason. | |
| bool | addSensorInterpTask (const char *name, int position, ArFunctor *functor, ArTaskState::State *state=NULL) |
| Adds a task under the sensor interp part of the syncronous tasks. | |
| void | addStabilizingCB (ArFunctor *functor, ArListPos::Pos position=ArListPos::LAST) |
| Adds a callback called when the robot starts stabilizing before declaring connection. | |
| bool | addUserTask (const char *name, int position, ArFunctor *functor, ArTaskState::State *state=NULL) |
| Adds a user task to the list of synchronous taskes. | |
| void | applyTransform (ArTransform trans, bool doCumulative=true) |
| This applies a transform to all the robot range devices and to the sonar. | |
| bool | areMotorsEnabled (void) const |
| returns true if the motors are enabled | |
| bool | areSonarsEnabled (void) const |
| returns true if the sonars are enabled (note that if the robot has no sonars at all, this will return false) | |
| void | ariaExitCallback (void) |
| internal function called when Aria::exit is called | |
| ArRobot (const char *name=NULL, bool ignored=true, bool doSigHandle=true, bool normalInit=true, bool addAriaExitCallback=true) | |
| Constructor. | |
| bool | asyncConnect (void) |
| Connects to a robot, from the robots own thread. | |
| int | asyncConnectHandler (bool tryHarderToConnect) |
| Internal function, shouldn't be used, does a single run of connecting. | |
| void | attachKeyHandler (ArKeyHandler *keyHandler, bool exitOnEscape=true, bool useExitNotShutdown=true) |
| Attachs a key handler. | |
| bool | blockingConnect (void) |
| Connects to a robot, not returning until connection made or failed. | |
| void | cancelConnection (void) |
| Internal function, shouldn't be used, cancels the connection quietly. | |
| double | checkRangeDevicesCumulativeBox (double x1, double y1, double x2, double y2, ArPose *readingPos=NULL, const ArRangeDevice **rangeDevice=NULL, bool useLocationDependentDevices=true) const |
| double | checkRangeDevicesCumulativePolar (double startAngle, double endAngle, double *angle=NULL, const ArRangeDevice **rangeDevice=NULL, bool useLocationDependentDevices=true) const |
| Goes through all the range devices and checks them. | |
| double | checkRangeDevicesCurrentBox (double x1, double y1, double x2, double y2, ArPose *readingPos=NULL, const ArRangeDevice **rangeDevice=NULL, bool useLocationDependentDevices=true) const |
| double | checkRangeDevicesCurrentPolar (double startAngle, double endAngle, double *angle=NULL, const ArRangeDevice **rangeDevice=NULL, bool useLocationDependentDevices=true) const |
| Goes through all the range devices and checks them. | |
| void | clearDirectMotion (void) |
| Clears what direct motion commands have been given, so actions work. | |
| bool | com (unsigned char command) |
| Sends a command to the robot with no arguments. | |
| bool | com2Bytes (unsigned char command, char high, char low) |
| Sends a command to the robot with two bytes for argument. | |
| bool | comDataN (unsigned char command, const char *data, int size) |
| Sends a command containing exactly the data in the given buffer as argument. | |
| bool | comInt (unsigned char command, short int argument) |
| Sends a command to the robot with an int for argument. | |
| bool | comStr (unsigned char command, const char *argument) |
| Sends a command to the robot with a length-prefixed string for argument. | |
| bool | comStrN (unsigned char command, const char *str, int size) |
| Sends a command to the robot with a length-prefixed string for argument. | |
| void | deactivateActions (void) |
| Deactivates all the actions. | |
| void | disableMotors () |
| Disables the motors on the robot. | |
| void | disableSonar () |
| Disables the sonar on the robot. | |
| bool | disconnect (void) |
| Disconnects from a robot. | |
| void | dropConnection (void) |
| Internal function, shouldn't be used, drops the conn because of error. | |
| void | enableMotors () |
| Enables the motors on the robot. | |
| void | enableSonar () |
| Enables the sonar on the robot. | |
| void | failedConnect (void) |
| Internal function, shouldn't be used, denotes the conn failed. | |
| ArAction * | findAction (const char *actionName) |
| Returns the first (highest priority) action with the given name (or NULL). | |
| double | findAngleTo (const ArPose pose) |
| Gets the distance to a point from the robot. | |
| double | findDeltaHeadingTo (const ArPose pose) |
| Gets the distance to a point from the robot. | |
| double | findDistanceTo (const ArPose pose) |
| Gets the distance to a point from the robot. | |
| ArRangeDevice * | findRangeDevice (const char *name) |
| Finds a rangeDevice in the robot's list. | |
| const ArRangeDevice * | findRangeDevice (const char *name) const |
| Finds a rangeDevice in the robot's list. | |
| ArSyncTask * | findTask (ArFunctor *functor) |
| Finds a task by functor. | |
| ArSyncTask * | findTask (const char *name) |
| Finds a task by name. | |
| ArSyncTask * | findUserTask (ArFunctor *functor) |
| Finds a user task by functor. | |
| ArSyncTask * | findUserTask (const char *name) |
| Finds a user task by name. | |
| void | finishedConnection (void) |
| Internal function, shouldn't be used, does the after conn stuff. | |
| void | forceTryingToMove (void) |
| Sets the flag that says the robot is trying to move. | |
| double | getAbsoluteMaxRotAccel (void) const |
| Gets the robot's absolute maximum rotational acceleration. | |
| double | getAbsoluteMaxRotDecel (void) const |
| Gets the robot's absolute maximum rotational deceleration. | |
| double | getAbsoluteMaxRotVel (void) const |
| Gets the robot's absolute maximum rotational velocity. | |
| double | getAbsoluteMaxTransAccel (void) const |
| Gets the robot's absolute maximum translational acceleration. | |
| double | getAbsoluteMaxTransDecel (void) const |
| Gets the robot's absolute maximum translational deceleration. | |
| double | getAbsoluteMaxTransVel (void) const |
| Gets the robot's absolute maximum translational velocity. | |
| ArResolver::ActionMap * | getActionMap (void) |
| unsigned char | getAnalog (void) const |
| Gets the analog value. | |
| int | getAnalogPortSelected (void) const |
| Gets which analog port is selected. | |
| double | getBatteryVoltage (void) const |
| Gets the battery voltage of the robot (normalized to 12 volt system). | |
| size_t | getBatteryVoltageAverageOfNum (void) |
| Gets the number of readings the battery voltage is the average of. | |
| double | getBatteryVoltageNow (void) const |
| Gets the instaneous battery voltage. | |
| ChargeState | getChargeState (void) const |
| Gets the charge state of the robot (see long docs). | |
| int | getClosestSonarNumber (double startAngle, double endAngle) const |
| Returns the number of the sonar that has the closest current reading in the given range. | |
| int | getClosestSonarRange (double startAngle, double endAngle) const |
| Returns the closest of the current sonar reading in the given range. | |
| double | getCompass (void) const |
| Gets the compass heading from the robot. | |
| unsigned int | getConnectionCycleMultiplier (void) const |
| Gets the multiplier for how many cycles ArRobot waits when connecting. | |
| int | getConnectionTimeoutTime (void) const |
| Gets the time without a response until connection assumed lost. | |
| double | getControl (void) const |
| Gets the control heading. | |
| unsigned int | getCounter (void) const |
| Gets the Counter for the time through the loop. | |
| unsigned int | getCycleTime (void) const |
| Gets the number of ms between cycles. | |
| unsigned int | getCycleWarningTime (void) |
| Gets the number of ms between cycles to warn over. | |
| unsigned int | getCycleWarningTime (void) const |
| Gets the number of ms between cycles to warn over. | |
| ArDeviceConnection * | getDeviceConnection (void) const |
| Gets the connection this instance uses. | |
| unsigned char | getDigIn (void) const |
| Gets the byte representing digital input status. | |
| unsigned char | getDigOut (void) const |
| Gets the byte representing digital output status. | |
| unsigned int | getDirectMotionPrecedenceTime (void) const |
| ArRetFunctor1< double, ArPoseWithTime > * | getEncoderCorrectionCallback (void) const |
| Gets the encoderCorrectionCallback. | |
| ArPose | getEncoderPose (void) const |
| Get the position of the robot according to the last robot SIP, possibly with gyro correction if installed and enabled. | |
| size_t | getEncoderPoseInterpNumReadings (void) const |
| Sets the number of packets back in time the encoder position interpolation goes. | |
| int | getEncoderPoseInterpPosition (ArTime timeStamp, ArPose *position) |
| Gets the encoder position the robot was at at the given timestamp. | |
| ArTransform | getEncoderTransform (void) const |
| Gets the encoder transform. | |
| bool | getEstop (void) |
| Returns true if the E-Stop button is pressed. | |
| int | getFaultFlags (void) const |
| Gets the fault flags values. | |
| int | getFlags (void) const |
| Gets the flags values. | |
| double | getHeadingDoneDiff (void) const |
| Gets the difference required for being done with a heading change. | |
| int | getIOAnalog (int num) const |
| Gets the n'th byte from the analog input data from the IO packet. | |
| int | getIOAnalogSize (void) const |
| Gets the number of bytes in the analog IO buffer. | |
| double | getIOAnalogVoltage (int num) const |
| Gets the n'th byte from the analog input data from the IO packet. | |
| unsigned char | getIODigIn (int num) const |
| Gets the n'th byte from the digital input data from the IO packet. | |
| int | getIODigInSize (void) const |
| Gets the number of bytes in the digital input IO buffer. | |
| unsigned char | getIODigOut (int num) const |
| Gets the n'th byte from the digital output data from the IO packet. | |
| int | getIODigOutSize (void) const |
| Gets the number of bytes in the digital output IO buffer. | |
| ArTime | getIOPacketTime (void) const |
| Returns the time received of the last IO packet. | |
| ArKeyHandler * | getKeyHandler (void) const |
| Gets the key handler attached to this robot. | |
| ArTime | getLastPacketTime (void) const |
| Gets the time the last packet was received. | |
| long int | getLeftEncoder (void) |
| Gets packet data from the left encoder. | |
| double | getLeftVel (void) const |
| Gets the velocity of the left wheel. | |
| bool | getLogActions (void) |
| Gets if we're logging all the actions as they happen. | |
| bool | getLogMovementReceived (void) |
| Gets if we're logging all the positions received from the robot. | |
| bool | getLogMovementSent (void) |
| Gets if we're logging all the movement commands sent down. | |
| bool | getLogVelocitiesReceived (void) |
| Gets if we're logging all the velocities (and heading) received. | |
| int | getMotorPacCount (void) const |
| Gets the number of motor packets received in the last second. | |
| double | getMoveDoneDist (void) |
| Gets the difference required for being done with a move. | |
| const char * | getName (void) const |
| Gets the robots name in ARIAs list. | |
| bool | getNoTimeWarningThisCycle (void) |
| Internal function for sync loop and sync task to see if we should warn this cycle or not. | |
| unsigned int | getNumFrontBumpers (void) const |
| Get the number of the front bumper switches. | |
| unsigned int | getNumRearBumpers (void) const |
| Gets the number of rear bumper switches. | |
| int | getNumSonar (void) const |
| Find the number of sonar sensors (that the robot has yet returned values for). | |
| double | getOdometerDegrees (void) |
| This gets the number of degrees the robot has turned (deg). | |
| double | getOdometerDistance (void) |
| This gets the distance the robot has travelled (mm). | |
| double | getOdometerTime (void) |
| This gets the time since the odometer was reset (sec). | |
| const ArRobotConfigPacketReader * | getOrigRobotConfig (void) const |
| Gets the original robot config packet information. | |
| bool | getPacketsReceivedTracking (void) |
| Gets if we're logging all the packets received (just times and types). | |
| bool | getPacketsSentTracking (void) |
| Gets if we're logging all the packets sent and their payload. | |
| ArPose | getPose (void) const |
| Get the current stored global position of the robot. This pose is updated by data reported by the robot as it moves, and may also be changed by other program components, such as a localization process (see moveTo()). | |
| size_t | getPoseInterpNumReadings (void) const |
| Sets the number of packets back in time the position interpol goes. | |
| int | getPoseInterpPosition (ArTime timeStamp, ArPose *position) |
| Gets the position the robot was at at the given timestamp. | |
| ArPTZ * | getPTZ (void) |
| Sets the camera this robot is using. | |
| std::list< ArRangeDevice * > * | getRangeDeviceList (void) |
| Gets the range device list. | |
| ArPose | getRawEncoderPose (void) const |
| Get the position of the robot according to the last robot SIP only, with no correction by the gyro, other devices or software proceses. | |
| double | getRealBatteryVoltage (void) const |
| Gets the real battery voltage of the robot. | |
| size_t | getRealBatteryVoltageAverageOfNum (void) |
| Gets the number of readings the battery voltage is the average of. | |
| double | getRealBatteryVoltageNow (void) const |
| Gets the instaneous battery voltage. | |
| ArResolver * | getResolver (void) |
| Gets the resolver the robot is using. | |
| long int | getRightEncoder (void) |
| Gets packet data from the right encoder. | |
| double | getRightVel (void) const |
| Gets the velocity of the right wheel. | |
| double | getRobotDiagonal (void) const |
| Gets the robot diagonal (half-height to diagonal of octagon) (in mm). | |
| double | getRobotLength (void) const |
| Gets the robot length (in mm). | |
| double | getRobotLengthFront (void) const |
| Gets the robot length to the front (in mm). | |
| double | getRobotLengthRear (void) const |
| Gets the robot length to the front (in mm). | |
| const char * | getRobotName (void) const |
| Returns the robot's name that is set in its onboard firmware configuration. | |
| const ArRobotParams * | getRobotParams (void) const |
| Gets the parameters the robot is using. | |
| double | getRobotRadius (void) const |
| Gets the robot radius (in mm). | |
| const char * | getRobotSubType (void) const |
| Returns the subtype of the robot we are currently connected to. | |
| const char * | getRobotType (void) const |
| Returns the type of the robot we are currently connected to. | |
| double | getRobotWidth (void) const |
| Gets the robot width (in mm). | |
| double | getRotAccel (void) const |
| Gets the rotational acceleration. | |
| double | getRotDecel (void) const |
| Gets the rotational acceleration. | |
| double | getRotVel (void) const |
| Gets the rotational velocity of the robot. | |
| double | getRotVelMax (void) const |
| Gets the maximum rotational velocity. | |
| std::list< ArFunctor * > * | getRunExitListCopy () |
| Internal function, shouldn't be used, does what its name says. | |
| int | getSonarPacCount (void) const |
| Gets the number of sonar returns received in the last second. | |
| int | getSonarRange (int num) const |
| Gets the range of the last sonar reading for the given sonar. | |
| ArSensorReading * | getSonarReading (int num) const |
| Returns the sonar reading for the given sonar. | |
| int | getStabilizingTime (void) const |
| How long we stabilize for in ms (0 means no stabilizng). | |
| int | getStallValue (void) const |
| Gets the 2 bytes of stall and bumper flags from the robot (see operations manual for details). | |
| int | getStateReflectionRefreshTime (void) const |
| ArSyncTask * | getSyncTaskRoot (void) |
| double | getTh (void) const |
| Gets the global Th location of the robot. | |
| ArTransform | getToGlobalTransform (void) const |
| This gets the transform from local coords to global coords. | |
| ArTransform | getToLocalTransform (void) const |
| This gets the transform for going from global coords to local coords. | |
| double | getTransAccel (void) const |
| Gets the translational acceleration. | |
| double | getTransDecel (void) const |
| Gets the translational acceleration. | |
| double | getTransVelMax (void) const |
| Gets the maximum translational velocity. | |
| double | getVel (void) const |
| Gets the translational velocity of the robot. | |
| double | getX (void) const |
| Gets the global X location of the robot. | |
| double | getY (void) const |
| Gets the global Y location of the robot. | |
| bool | handlePacket (ArRobotPacket *packet) |
| bool | hasFaultFlags (void) const |
| Gets whether or not we're getting the fault flags values. | |
| bool | hasFrontBumpers (void) const |
| Gets whether the robot has front bumpers (see ARCOS parameters in the robot manual). | |
| bool | hasRangeDevice (ArRangeDevice *device) const |
| Finds whether a particular range device is attached to this robot or not. | |
| bool | hasRearBumpers (void) const |
| Gets whether the robot has rear bumpers (see ARCOS parameters in the robot manual). | |
| bool | hasSettableAccsDecs (void) const |
| If the robot has settable accels and decels. | |
| bool | hasSettableVelMaxes (void) const |
| If the robot has settable maximum velocities. | |
| bool | hasTableSensingIR (void) const |
| Gets whether the robot has table sensing IR or not (see params in docs). | |
| void | incCounter (void) |
| This is only for use by syncLoop. | |
| void | init (void) |
| Internal function, shouldn't be used. | |
| bool | isConnected (void) const |
| Questions whether the robot is connected or not. | |
| bool | isCycleChained (void) const |
| Gets whether we chain the robot cycle to when we get in SIP packets. | |
| bool | isDirectMotion (void) const |
| Returns true if direct motion commands are blocking actions. | |
| bool | isEStopPressed (void) const |
| returns true if the estop is pressed (or unrelieved) | |
| bool | isHeadingDone (double delta=0.0) const |
| Sees if the robot is done changing to the previously given setHeading. | |
| bool | isLeftBreakBeamTriggered (void) const |
| Returns true if the left break beam IR is triggered. | |
| bool | isLeftMotorStalled (void) const |
| Returns true if the left motor is stalled. | |
| bool | isLeftTableSensingIRTriggered (void) const |
| Returns true if the left table sensing IR is triggered. | |
| bool | isMoveDone (double delta=0.0) |
| Sees if the robot is done moving the previously given move. | |
| bool | isRightBreakBeamTriggered (void) const |
| Returns true if the right break beam IR is triggered. | |
| bool | isRightMotorStalled (void) const |
| Returns true if the left motor is stalled. | |
| bool | isRightTableSensingIRTriggered (void) const |
| Returns true if the right table sensing IR is triggered. | |
| bool | isRunning (void) const |
| Returns whether the robot is currently running or not. | |
| bool | isSonarNew (int num) const |
| Find out if the given sonar reading was newly refreshed by the last incoming SIP received. | |
| bool | isStabilizing (void) |
| This tells us if we're in the preconnection state. | |
| bool | isTryingToMove (void) |
| Gets if the robot is trying to move or not. | |
| void | keyHandlerExit (void) |
| For the key handler, escape calls this to exit, internal. | |
| bool | loadParamFile (const char *file) |
| Loads a parameter file (replacing all other params). | |
| int | lock () |
| Lock the robot instance. | |
| void | logActions (bool logDeactivated=false) const |
| Logs out the actions and their priorities. | |
| void | logAllTasks (void) const |
| Logs the list of all tasks, strictly for your viewing pleasure. | |
| void | logUserTasks (void) const |
| Logs the list of user tasks, strictly for your viewing pleasure. | |
| void | loopOnce (void) |
| This function loops once... only serious developers should use it. | |
| bool | madeConnection (void) |
| Internal function, shouldn't be used, does the initial conn stuff. | |
| void | move (double distance) |
| Move the given distance forward/backwards. | |
| void | moveTo (ArPose to, ArPose from, bool doCumulative=true) |
| Change stored pose (i.e. the value returned by getPose()). | |
| void | moveTo (ArPose pose, bool doCumulative=true) |
| Change stored pose (i.e. the value returned by getPose()). | |
| void | packetHandler (void) |
| Packet Handler, internal. | |
| bool | processEncoderPacket (ArRobotPacket *packet) |
| Processes a new encoder packet, internal. | |
| bool | processIOPacket (ArRobotPacket *packet) |
| Processes a new IO packet, internal. | |
| bool | processMotorPacket (ArRobotPacket *packet) |
| Processes a motor packet, internal. | |
| void | processNewSonar (char number, int range, ArTime timeReceived) |
| Processes a new sonar reading, internal. | |
| void | processParamFile (void) |
| Internal function, processes a parameter file. | |
| bool | remAction (const char *actionName) |
| Removes an action from the list, by name. | |
| bool | remAction (ArAction *action) |
| Removes an action from the list, by pointer. | |
| void | remConnectCB (ArFunctor *functor) |
| Removes a connect callback. | |
| void | remDisconnectNormallyCB (ArFunctor *functor) |
| Removes a callback for when disconnect is called while connected. | |
| void | remDisconnectOnErrorCB (ArFunctor *functor) |
| Removes a callback for when disconnection happens because of an error. | |
| void | remFailedConnectCB (ArFunctor *functor) |
| Removes a callback for when a connection to the robot is failed. | |
| void | remPacketHandler (ArRetFunctor1< bool, ArRobotPacket * > *functor) |
| Removes a packet handler from the list of packet handlers. | |
| void | remRangeDevice (ArRangeDevice *device) |
| Remove a range device from the robot's list, by instance. | |
| void | remRangeDevice (const char *name) |
| Remove a range device from the robot's list, by name. | |
| void | remRunExitCB (ArFunctor *functor) |
| Removes a callback for when the run loop exits for what ever reason. | |
| void | remSensorInterpTask (ArFunctor *functor) |
| Removes a sensor interp tasks by functor. | |
| void | remSensorInterpTask (const char *name) |
| Removes a sensor interp tasks by name. | |
| void | remStabilizingCB (ArFunctor *functor) |
| Removes stabilizing callback. | |
| void | remUserTask (ArFunctor *functor) |
| Removes a user task from the list of synchronous taskes by functor. | |
| void | remUserTask (const char *name) |
| Removes a user task from the list of synchronous taskes by name. | |
| void | requestEncoderPackets (void) |
| Starts a continuous stream of encoder packets. | |
| void | requestIOPackets (void) |
| Starts a continuous stream of IO packets. | |
| void | resetOdometer (void) |
| Resets the odometer. | |
| void | robotLocker (void) |
| Robot locker, internal. | |
| void | robotUnlocker (void) |
| Robot unlocker, internal. | |
| void | run (bool stopRunIfNotConnected) |
| Starts the instance to do processing in this thread. | |
| void | runAsync (bool stopRunIfNotConnected) |
| Starts the instance to do processing in its own new thread. | |
| bool | setAbsoluteMaxRotAccel (double maxAccel) |
| Sets the robot's absolute maximum rotational acceleration. | |
| bool | setAbsoluteMaxRotDecel (double maxDecel) |
| Sets the robot's absolute maximum rotational deceleration. | |
| bool | setAbsoluteMaxRotVel (double maxVel) |
| Sets the robot's absolute maximum rotational velocity. | |
| bool | setAbsoluteMaxTransAccel (double maxAccel) |
| Sets the robot's absolute maximum translational acceleration. | |
| bool | setAbsoluteMaxTransDecel (double maxDecel) |
| Sets the robot's absolute maximum translational deceleration. | |
| bool | setAbsoluteMaxTransVel (double maxVel) |
| Sets the robot's absolute maximum translational velocity. | |
| void | setBatteryVoltageAverageOfNum (size_t numToAverage) |
| Sets the number of readings the battery voltage is the average of (default 20). | |
| void | setConnectionCycleMultiplier (unsigned int multiplier) |
| Sets the multiplier for how many cycles ArRobot waits when connecting. | |
| void | setConnectionTimeoutTime (int mSecs) |
| Sets the time without a response until connection assumed lost. | |
| void | setConnectWithNoParams (bool connectWithNoParams) |
| internal call that will let the robot connect even if it can't find params | |
| void | setCycleChained (bool cycleChained) |
| Sets whether to chain the robot cycle to when we get in SIP packets. | |
| void | setCycleTime (unsigned int ms) |
| Sets the number of ms between cycles. | |
| void | setCycleWarningTime (unsigned int ms) |
| Sets the number of ms between cycles to warn over. | |
| void | setDeadReconPose (ArPose pose) |
| Sets the dead recon position of the robot. | |
| void | setDeltaHeading (double deltaHeading) |
| Sets the delta heading. | |
| void | setDeviceConnection (ArDeviceConnection *connection) |
| Sets the connection this instance uses. | |
| void | setDirectMotionPrecedenceTime (int mSec) |
| void | setEncoderCorrectionCallback (ArRetFunctor1< double, ArPoseWithTime > *functor) |
| Sets the encoderCorrectionCallback. | |
| void | setEncoderPoseInterpNumReadings (size_t numReadings) |
| Sets the number of packets back in time the ArInterpolation goes for encoder readings. | |
| void | setEncoderTransform (ArPose transformPos) |
| Changes the transform directly. | |
| void | setEncoderTransform (ArPose deadReconPos, ArPose globalPos) |
| Changes the transform. | |
| void | setHeading (double heading) |
| Sets the heading. | |
| void | setHeadingDoneDiff (double degrees) |
| sets the difference required for being done with a heading change | |
| void | setLogActions (bool logActions) |
| Sets if we're logging all the movement commands sent down. | |
| void | setLogMovementReceived (bool logMovementReceived) |
| Sets if we're logging all the positions received from the robot. | |
| void | setLogMovementSent (bool logMovementSent) |
| Sets if we're logging all the movement commands sent down. | |
| void | setLogVelocitiesReceived (bool logVelocitiesReceived) |
| Sets if we're logging all the velocities (and heading) received. | |
| void | setMoveDoneDist (double dist) |
| Sets the difference required for being done with a move. | |
| void | setName (const char *name) |
| Sets the robots name in ARIAs list. | |
| void | setNoTimeWarningThisCycle (bool noTimeWarningThisCycle) |
| Internal function for sync loop and sync task to say if we should warn this cycle or not. | |
| void | setPacketsReceivedTracking (bool packetsReceivedTracking) |
| Sets if we're logging all the packets received (just times and types). | |
| void | setPacketsSentTracking (bool packetsSentTracking) |
| Sets if we're logging all the packets received (just times and types). | |
| void | setPoseInterpNumReadings (size_t numReadings) |
| Sets the number of packets back in time the ArInterpolation goes. | |
| void | setPTZ (ArPTZ *ptz) |
| Sets the camera this robot is using. | |
| void | setRealBatteryVoltageAverageOfNum (size_t numToAverage) |
| Sets the number of readings the real battery voltage is the average of (default 20). | |
| void | setResolver (ArResolver *resolver) |
| Sets the resolver the robot is using. | |
| void | setRotAccel (double acc) |
| Sets the rotational acceleration. | |
| void | setRotDecel (double decel) |
| Sets the rotational acceleration. | |
| void | setRotVel (double velocity) |
| Sets the rotational velocity. | |
| void | setRotVelMax (double vel) |
| Sets the maximum rotational velocity. | |
| void | setStabilizingTime (int mSecs) |
| How long we should stabilize for in ms (0 disables stabilizing). | |
| void | setStateReflectionRefreshTime (int msec) |
| void | setTransAccel (double acc) |
| Sets the translational acceleration. | |
| void | setTransDecel (double decel) |
| Sets the translational acceleration. | |
| void | setTransVelMax (double vel) |
| Sets the maximum translational velocity. | |
| void | setUpPacketHandlers (void) |
| Internal function, shouldn't be used, sets up the default packet handlers. | |
| void | setUpSyncList (void) |
| Internal function, shouldn't be used, sets up the default sync list. | |
| void | setVel (double velocity) |
| void | setVel2 (double leftVelocity, double rightVelocity) |
| Sets the velocity of the wheels independently. | |
| void | startStabilization (void) |
| Internal function, shouldn't be used, calls the preconnected stuff. | |
| void | stateReflector (void) |
| State Reflector, internal. | |
| void | stop (void) |
| void | stopEncoderPackets (void) |
| Stops a continuous stream of encoder packets. | |
| void | stopIOPackets (void) |
| Stops a continuous stream of IO packets. | |
| void | stopRunning (bool doDisconnect=true) |
| Stops the robot from doing any more processing. | |
| void | stopStateReflection (void) |
| int | tryLock () |
| Try to lock the robot instance without blocking. | |
| int | unlock () |
| Unlock the robot instance. | |
| WaitState | waitForConnect (unsigned int msecs=0) |
| Suspend calling thread until the ArRobot is connected. | |
| WaitState | waitForConnectOrConnFail (unsigned int msecs=0) |
| Suspend calling thread until the ArRobot is connected or fails to connect. | |
| WaitState | waitForRunExit (unsigned int msecs=0) |
| Suspend calling thread until the ArRobot run loop has exited. | |
| void | wakeAllConnOrFailWaitingThreads () |
| Wake up all threads waiting for connection or connection failure. | |
| void | wakeAllConnWaitingThreads () |
| Wake up all threads waiting for connection. | |
| void | wakeAllRunExitWaitingThreads () |
| Wake up all threads waiting for the run loop to exit. | |
| void | wakeAllWaitingThreads () |
| Wake up all threads waiting on this robot. | |
| ~ArRobot () | |
| Destructor. | |
Public Attributes | |
| ArFunctorC< ArRobot > | myActionHandlerCB |
|
ArRetFunctor1C< bool, ArRobot, ArRobotPacket * > | myEncoderPacketCB |
|
ArRetFunctorC< unsigned int, ArRobot > | myGetCycleWarningTimeCB |
| ArRetFunctorC< bool, ArRobot > | myGetNoTimeWarningThisCycleCB |
|
ArRetFunctor1C< bool, ArRobot, ArRobotPacket * > | myIOPacketCB |
| ArFunctorC< ArKeyHandler > * | myKeyHandlerCB |
| ArFunctorC< ArRobot > | myKeyHandlerExitCB |
|
ArRetFunctor1C< bool, ArRobot, ArRobotPacket * > | myMotorPacketCB |
| ArFunctorC< ArRobot > | myPacketHandlerCB |
| ArFunctorC< ArRobot > | myRobotLockerCB |
| ArFunctorC< ArRobot > | myRobotUnlockerCB |
| ArFunctorC< ArRobot > | myStateReflectorCB |
Protected Types | |
| ROT_HEADING | |
| ROT_IGNORE | |
| ROT_NONE | |
| ROT_VEL | |
| enum | RotDesired { ROT_NONE, ROT_IGNORE, ROT_HEADING, ROT_VEL } |
| TRANS_DIST | |
| TRANS_DIST_NEW | |
| TRANS_IGNORE | |
| TRANS_NONE | |
| TRANS_VEL | |
| TRANS_VEL2 | |
| enum | TransDesired { TRANS_NONE, TRANS_IGNORE, TRANS_VEL, TRANS_VEL2, TRANS_DIST, TRANS_DIST_NEW } |
Protected Member Functions | |
| void | reset (void) |
Protected Attributes | |
| double | myAbsoluteMaxRotAccel |
| double | myAbsoluteMaxRotDecel |
| double | myAbsoluteMaxRotVel |
| double | myAbsoluteMaxTransAccel |
| double | myAbsoluteMaxTransDecel |
| double | myAbsoluteMaxTransVel |
| ArActionDesired | myActionDesired |
| bool | myActionRotSet |
| ArResolver::ActionMap | myActions |
| bool | myActionTransSet |
| bool | myAddedAriaExitCB |
| unsigned char | myAnalog |
| int | myAnalogPortSelected |
| ArFunctorC< ArRobot > | myAriaExitCB |
| bool | myAsyncConnectFlag |
| int | myAsyncConnectNoPacketCount |
| bool | myAsyncConnectSentChangeBaud |
| int | myAsyncConnectStartBaud |
| ArTime | myAsyncConnectStartedChangeBaud |
| int | myAsyncConnectState |
| int | myAsyncConnectTimesTried |
| ArTime | myAsyncStartedConnection |
| ArRunningAverage | myBatteryAverager |
| double | myBatteryVoltage |
| bool | myBlockingConnectRun |
| ChargeState | myChargeState |
| double | myCompass |
| ArDeviceConnection * | myConn |
| std::list< ArFunctor * > | myConnectCBList |
| ArCondition | myConnectCond |
| unsigned int | myConnectionCycleMultiplier |
| bool | myConnectWithNoParams |
| ArCondition | myConnOrFailCond |
| double | myControl |
| unsigned int | myCounter |
| bool | myCycleChained |
| unsigned int | myCycleTime |
| unsigned int | myCycleWarningTime |
| unsigned char | myDigIn |
| unsigned char | myDigOut |
| int | myDirectPrecedenceTime |
| std::list< ArFunctor * > | myDisconnectNormallyCBList |
| std::list< ArFunctor * > | myDisconnectOnErrorCBList |
| ArRetFunctor1< double, ArPoseWithTime > * | myEncoderCorrectionCB |
| ArTransform | myEncoderGlobalTrans |
| ArInterpolation | myEncoderInterpolation |
| ArPoseWithTime | myEncoderPose |
| ArTime | myEncoderPoseTaken |
| ArTransform | myEncoderTransform |
| std::list< ArFunctor * > | myFailedConnectCBList |
| int | myFaultFlags |
| bool | myFirstEncoderPose |
| int | myFlags |
| ArPose | myGlobalPose |
| bool | myHasFaultFlags |
| double | myHeadingDoneDiff |
| ArInterpolation | myInterpolation |
| int | myIOAnalog [128] |
| int | myIOAnalogSize |
| unsigned char | myIODigIn [255] |
| int | myIODigInSize |
| unsigned char | myIODigOut [255] |
| int | myIODigOutSize |
| bool | myIsConnected |
| bool | myIsStabilizing |
| ArKeyHandler * | myKeyHandler |
| bool | myKeyHandlerUseExitNotShutdown |
| bool | myLastActionRotHeading |
| bool | myLastActionRotStopped |
| int | myLastActionRotVal |
| int | myLastActionTransVal |
| double | myLastCalculatedRotVel |
| double | myLastHeading |
| ArTime | myLastIOPacketReceivedTime |
| ArTime | myLastPacketReceivedTime |
| ArTime | myLastPulseSent |
| ArTime | myLastRotSent |
| RotDesired | myLastRotType |
| int | myLastRotVal |
| double | myLastRotVel |
| double | myLastSentRotAccel |
| double | myLastSentRotDecel |
| double | myLastSentRotVelMax |
| double | myLastSentTransAccel |
| double | myLastSentTransDecel |
| double | myLastSentTransVelMax |
| int | myLastTh |
| ArTime | myLastTransSent |
| TransDesired | myLastTransType |
| int | myLastTransVal |
| int | myLastTransVal2 |
| double | myLastVel |
| int | myLastX |
| int | myLastY |
| long int | myLeftEncoder |
| double | myLeftVel |
| bool | myLogActions |
| bool | myLogMovementReceived |
| bool | myLogMovementSent |
| bool | myLogVelocitiesReceived |
| int | myMotorPacCount |
| int | myMotorPacCurrentCount |
| double | myMoveDoneDist |
| ArMutex | myMutex |
| std::string | myName |
| bool | myNoTimeWarningThisCycle |
| int | myNumSonar |
| double | myOdometerDegrees |
| double | myOdometerDistance |
| ArTime | myOdometerStart |
| ArRobotConfigPacketReader * | myOrigRobotConfig |
| bool | myOwnTheResolver |
|
std::list< ArRetFunctor1< bool, ArRobotPacket * > * > | myPacketHandlerList |
| bool | myPacketsReceivedTracking |
| long | myPacketsReceivedTrackingCount |
| ArTime | myPacketsReceivedTrackingStarted |
| bool | myPacketsSentTracking |
| ArRobotParams * | myParams |
| ArPTZ * | myPtz |
| std::list< ArRangeDevice * > | myRangeDeviceList |
| ArPoseWithTime | myRawEncoderPose |
| ArRunningAverage | myRealBatteryAverager |
| double | myRealBatteryVoltage |
| ArRobotPacketReceiver | myReceiver |
| bool | myRequestedEncoderPackets |
| bool | myRequestedIOPackets |
| ArResolver * | myResolver |
| long int | myRightEncoder |
| double | myRightVel |
| double | myRobotLengthFront |
| double | myRobotLengthRear |
| std::string | myRobotName |
| std::string | myRobotSubType |
| std::string | myRobotType |
| double | myRotAccel |
| double | myRotDecel |
| ArTime | myRotSetTime |
| RotDesired | myRotType |
| double | myRotVal |
| double | myRotVel |
| double | myRotVelMax |
| std::list< ArFunctor * > | myRunExitCBList |
| ArCondition | myRunExitCond |
| ArRobotPacketSender | mySender |
| bool | mySentPulse |
| int | mySonarPacCount |
| int | mySonarPacCurrentCount |
| std::map< int, ArSensorReading * > | mySonars |
| std::list< ArFunctor * > | myStabilizingCBList |
| int | myStabilizingTime |
| int | myStallValue |
| ArTime | myStartedStabilizing |
| int | myStateReflectionRefreshTime |
| ArSyncLoop | mySyncLoop |
| ArSyncTask * | mySyncTaskRoot |
| time_t | myTimeLastMotorPacket |
| time_t | myTimeLastSonarPacket |
| int | myTimeoutTime |
| double | myTransAccel |
| double | myTransDecel |
| ArPose | myTransDistStart |
| ArTime | myTransSetTime |
| TransDesired | myTransType |
| double | myTransVal |
| double | myTransVal2 |
| double | myTransVelMax |
| bool | myTryingToMove |
| double | myVel |
| bool | myWarnedAboutExtraSonar |
| enum ArRobot::WaitState |
| ArRobot::ArRobot | ( | const char * | name = NULL, |
|
| bool | obsolete = true, |
|||
| bool | doSigHandle = true, |
|||
| bool | normalInit = true, |
|||
| bool | addAriaExitCallback = true | |||
| ) |
Constructor.
The parameters only rarely need to be specified.
| name | A name for this robot, useful if a program has more than one ArRobot object | |
| obsolete | This parameter is ignored. (It used to turn off state reflection if false, but that is no longer possible.) | |
| normalInit | whether the robot should initializes its structures or the calling program will take care of it. No one will probalby ever use this value, since if they are doing that then overriding will probably be more useful, but there it is. | |
| doSigHandle | do normal signal handling and have this robot instance stopRunning() when the program is signaled |
Definition at line 69 of file ArRobot.cpp.
| void ArRobot::actionHandler | ( | void | ) |
Action Handler, internal.
Runs the resolver on the actions, it just saves these values for use by the stateReflector, otherwise it sends these values straight down to the robot.
Definition at line 3435 of file ArRobot.cpp.
| bool ArRobot::addAction | ( | ArAction * | action, | |
| int | priority | |||
| ) |
Adds an action to the list with the given priority.
Adds an action to the list of actions with the given priority. In the case of two (or more) actions with the same priority, the default resolver (ArPriorityResolver) averages the the multiple readings. The priority can be any integer, but as a convention 0 to 100 is used, with 100 being the highest priority. The default resolver (ArPriorityResolver) resolves the actions in order of descending priority. For example, an action with priority 100 is evaluated before one with priority 99, followed by 50, etc. This means that an action with a higher priority may be able to supercede a lower-priority action's desired value for a certain output to a lesser or greater degree, depending on how high a "strength" value it sets. See the overview of ARIA in this reference manual for more discussion on Actions.
| action | the action to add | |
| priority | what importance to give the action; how to order the actions. High priority actions are evaluated by the action resolvel before lower priority actions. |
Definition at line 2492 of file ArRobot.cpp.
| void ArRobot::addConnectCB | ( | ArFunctor * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a connect callback.
Adds a connect callback, which is an ArFunctor, (created as an ArFunctorC). The entire list of connect callbacks is called when a connection is made with the robot. If you have some sort of module that adds a callback, that module must remove the callback when the module is removed.
| functor | A functor (created from ArFunctorC) which refers to the function to call. | |
| position | whether to place the functor first or last |
Definition at line 1865 of file ArRobot.cpp.
| void ArRobot::addDisconnectNormallyCB | ( | ArFunctor * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a callback for when disconnect is called while connected.
Adds a disconnect normally callback,which is an ArFunctor, created as an ArFunctorC. This whole list of disconnect normally callbacks is called when something calls disconnect if the instance isConnected. If there is no connection and disconnect is called nothing is done. If you have some sort of module that adds a callback, that module must remove the callback when the module is removed.
| functor | functor created from ArFunctorC which refers to the function to call. | |
| position | whether to place the functor first or last |
Definition at line 1932 of file ArRobot.cpp.
| void ArRobot::addDisconnectOnErrorCB | ( | ArFunctor * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a callback for when disconnection happens because of an error.
Adds a disconnect on error callback, which is an ArFunctor, created as an ArFunctorC. This whole list of disconnect on error callbacks is called when ARIA loses connection to a robot because of an error. This can occur if the physical connection (ie serial cable) between the robot and the computer is severed/disconnected, if one of a pair of radio modems that connect the robot and computer are disconnected, if someone presses the reset button on the robot, or if the simulator is closed while ARIA is connected to it. Note that if the link between the two is lost the ARIA assumes it is temporary until it reaches a timeout value set with setConnectionTimeoutTime. If you have some sort of module that adds a callback, that module must remove the callback when the module removed.
| functor | functor created from ArFunctorC which refers to the function to call. | |
| position | whether to place the functor first or last |
Definition at line 1969 of file ArRobot.cpp.
| void ArRobot::addFailedConnectCB | ( | ArFunctor * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a callback for when a connection to the robot is failed.
Adds a failed connect callback,which is an ArFunctor, created as an ArFunctorC. This whole list of failed connect callbacks is called when an attempt is made to connect to the robot, but fails. The usual reason for this failure is either that there is no robot/sim where the connection was tried to be made, the robot wasn't given a connection, or the radio modems that communicate with the robot aren't on. If you have some sort of module that adds a callback, that module must remove the callback when the module removed.
| functor | functor created from ArFunctorC which refers to the function to call. | |
| position | whether to place the functor first or last |
Definition at line 1900 of file ArRobot.cpp.
| void ArRobot::addPacketHandler | ( | ArRetFunctor1< bool, ArRobotPacket * > * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a packet handler to the list of packet handlers.
Adds a packet handler. A packet handler is an ArRetFunctor1<bool, ArRobotPacket*>, (e.g. created as an instance of ArRetFunctor1C. The return is a boolean, while the functor takes an ArRobotPacket pointer as the argument. This functor is placed in a list of functors to call when a packet arrives. This list is processed in order until one of the handlers returns true. Your packet handler function may be invoked for any packet, so it should test the packet type ID (see ArRobotPacket::getID()). If you handler gets data from the packet (it "handles" it) it should return true, to prevent ArRobot from invoking other handlers with the packet (with data removed). If you hander cannot interpret the packet, it should leave it unmodified and return false to allow other handlers a chance to receive it.
| functor | the functor to call when the packet comes in | |
| position | whether to place the functor first or last |
Definition at line 1832 of file ArRobot.cpp.
| void ArRobot::addRunExitCB | ( | ArFunctor * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a callback for when the run loop exits for what ever reason.
Adds a callback that is called when the run loop exits. The functor is which is an ArFunctor, created as an ArFunctorC. The whole list of functors is called when the run loop exits. This is most usefull for threaded programs that run the robot using ArRobot::runAsync. This will allow user threads to know when the robot loop has exited.
| functor | functor created from ArFunctorC which refers to the function to call. | |
| position | whether to place the functor first or last |
Definition at line 2001 of file ArRobot.cpp.
| bool ArRobot::addSensorInterpTask | ( | const char * | name, | |
| int | position, | |||
| ArFunctor * | functor, | |||
| ArTaskState::State * | state = NULL | |||
| ) |
Adds a task under the sensor interp part of the syncronous tasks.
The synchronous tasks get called every robot cycle (every 100 ms by default).
| name | the name to give to the task, should be unique | |
| position | the place in the list of user tasks to place this task, this can be any integer, though by convention 0 to 100 is used. The tasks are called in order of highest number to lowest number. | |
| functor | functor created from ArFunctorC which refers to the function to call. |
Definition at line 2315 of file ArRobot.cpp.
| void ArRobot::addStabilizingCB | ( | ArFunctor * | functor, | |
| ArListPos::Pos | position = ArListPos::LAST | |||
| ) |
Adds a callback called when the robot starts stabilizing before declaring connection.
Adds a stablizing callback, which is an ArFunctor, created as an ArFunctorC. The entire list of connect callbacks is called just before the connection is called done to the robot. This time can be used to calibtrate readings (on things like gyros).
| functor | The functor to call (e.g. ArFunctorC) | |
| position | whether to place the functor first or last |
Definition at line 2033 of file ArRobot.cpp.
| bool ArRobot::addUserTask | ( | const char * | name, | |
| int | position, | |||
| ArFunctor * | functor, | |||
| ArTaskState::State * | state = NULL | |||
| ) |
Adds a user task to the list of synchronous taskes.
The synchronous tasks get called every robot cycle (every 100 ms by default).
| name | the name to give to the task, should be unique | |
| position | the place in the list of user tasks to place this task, this can be any integer, though by convention 0 to 100 is used. The tasks are called in order of highest number to lowest position number. | |
| functor | functor created from ArFunctorC which refers to the function to call. |
Definition at line 2237 of file ArRobot.cpp.
| void ArRobot::applyTransform | ( | ArTransform | trans, | |
| bool | doCumulative = true | |||
| ) |
This applies a transform to all the robot range devices and to the sonar.
Applies a transform to the range devices and sonar... this is mostly useful for translating to/from local/global coords, but may have other uses
| trans | the transform to apply | |
| doCumulative | whether to transform the cumulative buffers or not |
Definition at line 4715 of file ArRobot.cpp.
| bool ArRobot::asyncConnect | ( | void | ) |
Connects to a robot, from the robots own thread.
Sets up the robot to connect, then returns, but the robot must be running (ie from runAsync) before you do this. Also this will fail if the robot is already connected. If you want to know what happened because of the connect then look at the callbacks. NOTE, this will not lock robot before setting values, so you MUST lock the robot before you call this function and unlock the robot after you call this function. If you fail to lock the robot, you'll may wind up with wierd behavior. Other than the aspect of blocking or not the only difference between async and blocking connects (other than the blocking) is that async is run every robot cycle, whereas blocking runs as fast as it can... also blocking will try to reconnect a radio modem if it looks like it didn't get connected in the first place, so blocking can wind up taking 10 or 12 seconds to decide it can't connect, whereas async doesn't try hard at all to reconnect the radio modem (beyond its first try) (under the assumption the async connect is user driven, so they'll just try again, and so that it won't mess up the sync loop by blocking for so long).
Definition at line 576 of file ArRobot.cpp.
| int ArRobot::asyncConnectHandler | ( | bool | tryHarderToConnect | ) |
Internal function, shouldn't be used, does a single run of connecting.
This is an internal function that is used both for async connects and blocking connects use to connect. It does about the same thing for both, and it should only be used by asyncConnect and blockingConnect really. But here it is. The only difference between when its being used by blocking/async connect is that in blocking mode if it thinks there may be problems with the radio modem it pauses for two seconds trying to deal with this... whereas in async mode it tries to deal with this in a simpler way.
| tryHarderToConnect | if this is true, then if the radio modems look like they aren't working, it'll take about 2 seconds to try and connect them, whereas if its false, it'll do a little try, but won't try very hard |
Definition at line 650 of file ArRobot.cpp.
| void ArRobot::attachKeyHandler | ( | ArKeyHandler * | keyHandler, | |
| bool | exitOnEscape = true, |
|||
| bool | useExitNotShutdown = true | |||
| ) |
Attachs a key handler.
This will attach a key handler to a robot, by putting it into the robots sensor interp task list (a keyboards a sensor of users will, right?). By default exitOnEscape is true, which will cause this function to add an escape key handler to the key handler, this will make the program exit when escape is pressed... if you don't like this you can pass exitOnEscape in as false.
| keyHandler | the key handler to attach | |
| exitOnEscape | whether to exit when escape is pressed or not | |
| useExitNotShutdown | if true then Aria::exit will be called instead of Aria::shutdown if it tries to exit |
Definition at line 4959 of file ArRobot.cpp.
| bool ArRobot::blockingConnect | ( | void | ) |
Connects to a robot, not returning until connection made or failed.
Connects to the robot, returning only when a connection has been made or it has been established a connection can't be made. This connection usually is fast, but can take up to 30 seconds if the robot is in a wierd state (this is not often). If the robot is connected via ArSerialConnection then the connect will also connect the radio modems. Upon a successful connection all of the Connection Callback Functors that have been registered will be called. NOTE, this will lock the robot before setting values, so you MUST not have the robot locked from where you call this function. If you do, you'll wind up in a deadlock. This behavior is there because otherwise you'd have to lock the robot before calling this function, and normally blockingConnect will be called from a separate thread, and that thread won't be doing anything else with the robot at that time. Other than the aspect of blocking or not the only difference between async and blocking connects (other than the blocking) is that async is run every robot cycle, whereas blocking runs as fast as it can... also blocking will try to reconnect a radio modem if it looks like it didn't get connected in the first place, so blocking can wind up taking 10 or 12 seconds to decide it can't connect, whereas async doesn't try hard at all to reconnect the radio modem (under the assumption the async connect is user driven, so they'll just try again, and so that it won't mess up the sync loop by blocking for so long).
Definition at line 617 of file ArRobot.cpp.
| double ArRobot::checkRangeDevicesCumulativeBox | ( | double | x1, | |
| double | y1, | |||
| double | x2, | |||
| double | y2, | |||
| ArPose * | readingPos = NULL, |
|||
| const ArRangeDevice ** | rangeDevice = NULL, |
|||
| bool | useLocationDependentDevices = true | |||
| ) | const |
This goes through all of the registered range devices and locks each, calls cumulativeReadingBox on it, and then unlocks it.
Gets the closest reading in a region defined by the two points of a rectangle.
| x1 | the x coordinate of one of the rectangle points | |
| y1 | the y coordinate of one of the rectangle points | |
| x2 | the x coordinate of the other rectangle point | |
| y2 | the y coordinate of the other rectangle point | |
| readingPos | a pointer to a position in which to store the location of the closest position |
Definition at line 4491 of file ArRobot.cpp.
| double ArRobot::checkRangeDevicesCumulativePolar | ( | double | startAngle, | |
| double | endAngle, | |||
| double * | angle = NULL, |
|||
| const ArRangeDevice ** | rangeDevice = NULL, |
|||
| bool | useLocationDependentDevices = true | |||
| ) | const |
Goes through all the range devices and checks them.
Find the closest reading from any range device's set of cumulative readings within a polar region or "slice" defined by the given angle range. This function iterates through each registered range device (see addRangeDevice()), calls ArRangeDevice::lockDevice(), uses ArRangeDevice::cumulativeReadingPolar() to find a reading, then calls ArRangeDevice::unlockDevice().
Gets the closest cumulative reading in the given polar region.
The closest reading in this range device's cumulative buffer within a polar region or "slice" defined by the given angle range is returned. Optionally return the specific angle of the found reading as well. The region searched is the region between a starting angle, sweeping counter-clockwise to the ending angle (0 is straight ahead of the device, -90 to the right, 90 to the left). Note that there is a difference between the region (0, 10) and (10, 0). (0, 10) is a 10-degree span near the front of the device, while (10, 0) is a 350 degree span covering the sides and rear. Similarly, (-60, -30) covers 30 degrees on the right hand side, while (-30, -60) covers 330 degrees. In other words, if you want the smallest section between the two angles, ensure than startAngle < endAngle.
| startAngle | where to start the slice | |
| endAngle | where to end the slice, going counterclockwise from startAngle | |
| angle | if given, a pointer to a value in which to put the specific angle to the found reading |
This figure illustrates an example range device and the meanings of arguments and return value.
| rangeDevice | If not null, then a pointer to the ArRangeDevice that provided the returned reading is placed in this variable. |
Definition at line 4358 of file ArRobot.cpp.
| double ArRobot::checkRangeDevicesCurrentBox | ( | double | x1, | |
| double | y1, | |||
| double | x2, | |||
| double | y2, | |||
| ArPose * | readingPos = NULL, |
|||
| const ArRangeDevice ** | rangeDevice = NULL, |
|||
| bool | useLocationDependentDevices = true | |||
| ) | const |
This goes through all of the registered range devices and locks each, calls currentReadingBox on it, and then unlocks it.
Gets the closest reading in a region defined by the two points of a rectangle.
| x1 | the x coordinate of one of the rectangle points | |
| y1 | the y coordinate of one of the rectangle points | |
| x2 | the x coordinate of the other rectangle point | |
| y2 | the y coordinate of the other rectangle point | |
| readingPos | a pointer to a position in which to store the location of the closest position |
Definition at line 4425 of file ArRobot.cpp.
| double ArRobot::checkRangeDevicesCurrentPolar | ( | double | startAngle, | |
| double | endAngle, | |||
| double * | angle = NULL, |
|||
| const ArRangeDevice ** | rangeDevice = NULL, |
|||
| bool | useLocationDependentDevices = true | |||
| ) | const |
Goes through all the range devices and checks them.
Find the closest reading from any range device's set of current readings within a polar region or "slice" defined by the given angle range. This function iterates through each registered range device (see addRangeDevice()), calls ArRangeDevice::lockDevice(), uses ArRangeDevice::currentReadingPolar() to find a reading, then calls ArRangeDevice::unlockDevice().
Gets the closest current reading in the given polar region.
The closest reading within a polar region or "slice" defined by the given angle range is returned. Optionally, the specific angle of the found may be placed in angle, if not NULL. The region searched is the region between startAngle, sweeping counter-clockwise to endAngle (0 is straight ahead of the device, -90 to the right, 90 to the left). Note that therefore there is a difference between e.g. the regions (0, 10) and (10, 0). (0, 10) is a 10-degree span near the front of the device, while (10, 0) is a 350 degree span covering the sides and rear. Similarly, (-60, -30) covers 30 degrees on the right hand side, while (-30, -60) covers 330 degrees. (-90, 90) is 180 degrees in front. (-180, 180) covers all sides of the robot. In other words, if you want the smallest section between the two angles, ensure that startAngle < endAngle.
| startAngle | where to start the slice | |
| endAngle | where to end the slice, going counterclockwise from startAngle | |
| angle | if given, a pointer to a value in which to put the specific angle to the found reading |
This figure illustrates an example range device and the meanings of arguments and return value.
| rangeDevice | If not null, then a pointer to the ArRangeDevice that provided the returned reading is placed in this variable. |
Definition at line 4294 of file ArRobot.cpp.
| void ArRobot::clearDirectMotion | ( | void | ) |
Clears what direct motion commands have been given, so actions work.
This clears the direct motion commands so that actions will be allowed to control the robot again.
Definition at line 4843 of file ArRobot.cpp.
| bool ArRobot::com | ( | unsigned char | command | ) |
Sends a command to the robot with no arguments.
| command | the command number to send |
Definition at line 4047 of file ArRobot.cpp.
| bool ArRobot::com2Bytes | ( | unsigned char | command, | |
| char | high, | |||
| char | low | |||
| ) |
Sends a command to the robot with two bytes for argument.
| command | the command number to send | |
| high | the high byte to send with the command | |
| low | the low byte to send with the command |
Definition at line 4074 of file ArRobot.cpp.
| bool ArRobot::comInt | ( | unsigned char | command, | |
| short int | argument | |||
| ) |
Sends a command to the robot with an int for argument.
| command | the command number to send | |
| argument | the integer argument to send with the command |
Definition at line 4060 of file ArRobot.cpp.
| bool ArRobot::comStr | ( | unsigned char | command, | |
| const char * | argument | |||
| ) |
Sends a command to the robot with a length-prefixed string for argument.
| command | the command number to send | |
| argument | NULL-terminated string to get data from to send with the command; length to send with packet is determined by strlen |
Definition at line 4088 of file ArRobot.cpp.
| bool ArRobot::comStrN | ( | unsigned char | command, | |
| const char * | str, | |||
| int | size | |||
| ) |
Sends a command to the robot with a length-prefixed string for argument.
Sends a length-prefixed string command to the robot, copying 'size' bytes of data from 'str' into the packet.
| command | the command number to send | |
| str | copy data to send from this character array | |
| size | length of the string to send; copy this many bytes from 'str'; use this value as the length prefix byte before the sent string. This length must be less than the maximum packet size of 200. |
Definition at line 4105 of file ArRobot.cpp.
| void ArRobot::disableMotors | ( | ) |
Disables the motors on the robot.
This command disables the motors on the robot, if it is connected.
Definition at line 4894 of file ArRobot.cpp.
| void ArRobot::disableSonar | ( | ) |
Disables the sonar on the robot.
This command disables the sonars on the robot, if it is connected.
Definition at line 4910 of file ArRobot.cpp.
| bool ArRobot::disconnect | ( | void | ) |
Disconnects from a robot.
Disconnects from a robot. This also calls of the DisconnectNormally Callback Functors if the robot was actually connected to a robot when this member was called.
Definition at line 1367 of file ArRobot.cpp.
| void ArRobot::enableMotors | ( | ) |
Enables the motors on the robot.
This command enables the motors on the robot, if it is connected.
Definition at line 4886 of file ArRobot.cpp.
| void ArRobot::enableSonar | ( | ) |
Enables the sonar on the robot.
This command enables the sonars on the robot, if it is connected.
Definition at line 4902 of file ArRobot.cpp.
| ArAction * ArRobot::findAction | ( | const char * | actionName | ) |
Returns the first (highest priority) action with the given name (or NULL).
Finds the action with the given name... if more than one action has that name it find the one with the highest priority
| actionName | the name of the action we want to find |
Definition at line 2576 of file ArRobot.cpp.
| ArRangeDevice * ArRobot::findRangeDevice | ( | const char * | name | ) |
Finds a rangeDevice in the robot's list.
| name | return the first device with this name |
Definition at line 4219 of file ArRobot.cpp.
| const ArRangeDevice * ArRobot::findRangeDevice | ( | const char * | name | ) | const |
Finds a rangeDevice in the robot's list.
| name | return the first device with this name |
Definition at line 4239 of file ArRobot.cpp.
| ArSyncTask * ArRobot::findTask | ( | ArFunctor * | functor | ) |
Finds a task by functor.
Finds a task by its functor, searching the entire space of tasks
Definition at line 2462 of file ArRobot.cpp.
| ArSyncTask * ArRobot::findTask | ( | const char * | name | ) |
Finds a task by name.
Finds a task by its name, searching the entire space of tasks
Definition at line 2448 of file ArRobot.cpp.
| ArSyncTask * ArRobot::findUserTask | ( | ArFunctor * | functor | ) |
Finds a user task by functor.
Finds a user task by its functor, searching the entire space of tasks
Definition at line 2430 of file ArRobot.cpp.
| ArSyncTask * ArRobot::findUserTask | ( | const char * | name | ) |
Finds a user task by name.
Finds a user task by its name, searching the entire space of tasks
Definition at line 2412 of file ArRobot.cpp.
| void ArRobot::forceTryingToMove | ( | void | ) | [inline] |
Sets the flag that says the robot is trying to move.
This is so that things that might move can make the robot look like it is trying to move. For example, so teleop mode can say that it might make the robot move, so the sonar aren't turned off
| ArResolver::ActionMap * ArRobot::getActionMap | ( | void | ) |
Returns the map of actions... don't do this unless you really know what you're doing
Definition at line 2600 of file ArRobot.cpp.
| double ArRobot::getBatteryVoltage | ( | void | ) | const [inline] |
Gets the battery voltage of the robot (normalized to 12 volt system).
This value is averaged over a number of readings, (You can get this number by calling getBatteryVoltageAverageOfNum and set this with setBatteryVoltageAverageOfNum... you can call getBatteryVoltageNow to get the reading from the last packet.
This is a value normalized to 12 volts, if you want what the actual voltage of the robot is use getRealBatteryVoltage.
| double ArRobot::getBatteryVoltageNow | ( | void | ) | const [inline] |
| ArRobot::ChargeState ArRobot::getChargeState | ( | void | ) | const |
Gets the charge state of the robot (see long docs).
Note that this is only available on robots with an firwmare operating system (ARCOS or uARCS) thats at least newer than July of 2005. It'll just be CHARGING_UNKNOWN on everything else always.
Definition at line 5010 of file ArRobot.cpp.
| unsigned int ArRobot::getConnectionCycleMultiplier | ( | void | ) | const |
Gets the multiplier for how many cycles ArRobot waits when connecting.
Definition at line 3574 of file ArRobot.cpp.
| int ArRobot::getConnectionTimeoutTime | ( | void | ) | const |
Gets the time without a response until connection assumed lost.
Gets the number of seconds to go without response from the robot until it is assumed tha tthe connection with the robot has been broken and the disconnect on error events will happen.
Definition at line 531 of file ArRobot.cpp.
| double ArRobot::getControl | ( | void | ) | const [inline] |
| unsigned int ArRobot::getCycleTime | ( | void | ) | const |
Gets the number of ms between cycles.
Finds the number of milliseconds between cycles, at each cycle is when all packets are processed, all sensors are interpretted, all actions are called, and all user tasks are serviced. Be warned, if you set this too small you could overflow your serial connection.
Definition at line 3547 of file ArRobot.cpp.
| unsigned int ArRobot::getCycleWarningTime | ( | void | ) |
Gets the number of ms between cycles to warn over.
Sets a time such that if the number of milliseconds between cycles goes over this then there will be an ArLog::log(ArLog::Normal) warning.
Definition at line 3493 of file ArRobot.cpp.
| unsigned int ArRobot::getCycleWarningTime | ( | void | ) | const |
Gets the number of ms between cycles to warn over.
Sets a time such that if the number of milliseconds between cycles goes over this then there will be an ArLog::log(ArLog::Normal) warning.
Definition at line 3480 of file ArRobot.cpp.
| ArDeviceConnection * ArRobot::getDeviceConnection | ( | void | ) | const |
Gets the connection this instance uses.
Gets the connection this instance uses to the actual robot. This is where commands will be sent and packets will be received from
Definition at line 502 of file ArRobot.cpp.
| unsigned int ArRobot::getDirectMotionPrecedenceTime | ( | void | ) | const |
Gets the length of time a direct motion command will take precedence over actions, in milliseconds
Definition at line 4831 of file ArRobot.cpp.
| ArRetFunctor1< double, ArPoseWithTime > * ArRobot::getEncoderCorrectionCallback | ( | void | ) | const |
Gets the encoderCorrectionCallback.
This gets the encoderCorrectionCB, see setEncoderCorrectionCallback for details.
Definition at line 4799 of file ArRobot.cpp.
| ArPose ArRobot::getEncoderPose | ( | void | ) | const [inline] |
Get the position of the robot according to the last robot SIP, possibly with gyro correction if installed and enabled.
Gets the encoder position the robot was at at the given timestamp.
| ArTransform ArRobot::getEncoderTransform | ( | void | ) | const |
Gets the encoder transform.
Definition at line 4664 of file ArRobot.cpp.
| int ArRobot::getIOAnalog | ( | int | num | ) | const |
Gets the n'th byte from the analog input data from the IO packet.
This gets the raw IO Analog value, which is a number between 0 and 1024 (2^10).
Definition at line 1762 of file ArRobot.cpp.
| double ArRobot::getIOAnalogVoltage | ( | int | num | ) | const |
Gets the n'th byte from the analog input data from the IO packet.
This gets the IO Analog value converted to a voltage between 0 and 5 voltes.
Definition at line 1773 of file ArRobot.cpp.
| ArTime ArRobot::getLastPacketTime | ( | void | ) | const |
Gets the time the last packet was received.
This gets the ArTime that the last packet was received at
Definition at line 541 of file ArRobot.cpp.
| long int ArRobot::getLeftEncoder | ( | void | ) |
Gets packet data from the left encoder.
Definition at line 3292 of file ArRobot.cpp.
| const ArRobotConfigPacketReader * ArRobot::getOrigRobotConfig | ( | void | ) | const |
Gets the original robot config packet information.
Definition at line 1811 of file ArRobot.cpp.
| ArPose ArRobot::getPose | ( | void | ) | const [inline] |
Get the current stored global position of the robot. This pose is updated by data reported by the robot as it moves, and may also be changed by other program components, such as a localization process (see moveTo()).
| std::list< ArRangeDevice * > * ArRobot::getRangeDeviceList | ( | void | ) |
Gets the range device list.
This gets the list of range devices attached to this robot, do NOT manipulate this list directly. If you want to manipulate use the appropriate addRangeDevice, or remRangeDevice
Definition at line 4261 of file ArRobot.cpp.
| ArPose ArRobot::getRawEncoderPose | ( | void | ) | const [inline] |
Get the position of the robot according to the last robot SIP only, with no correction by the gyro, other devices or software proceses.
| double ArRobot::getRealBatteryVoltage | ( | void | ) | const [inline] |
Gets the real battery voltage of the robot.
This value is averaged over a number of readings, you can get this by calling getRealBatteryVoltageAverageOfNum and set this with setRealBatteryVoltageAverageOfNum... you can call getRealBatteryVoltageNow to get the reading from the last packet.
This is whatever the actual voltage of the robot is, if you want a value normalized to 12 volts use getBatteryVoltage.
If the robot connected to doesn't send the real battery voltage it will just use the normal battery voltage (normalized to 12 volt scale).
| double ArRobot::getRealBatteryVoltageNow | ( | void | ) | const [inline] |
Gets the instaneous battery voltage.
This is whatever the actual voltage of the robot is, if you want a value normalized to 12 volts use getBatteryVoltage. If the robot doesn't support this number the voltage will be less than 0 and you should use getBatteryVoltageNow.
| long int ArRobot::getRightEncoder | ( | void | ) |
Gets packet data from the right encoder.
Definition at line 3300 of file ArRobot.cpp.
| const ArRobotParams * ArRobot::getRobotParams | ( | void | ) | const |
Gets the parameters the robot is using.
Definition at line 1802 of file ArRobot.cpp.
| double ArRobot::getRotVel | ( | void | ) | const [inline] |
Gets the rotational velocity of the robot.
Note that with new firmware versions (as of April 2006 or so) this is the velocity reported by the robot. With older firmware this number is come up with by the difference between the wheel velocities multiplied by diffConvFactor from the .p files.
| int ArRobot::getSonarRange | ( | int | num | ) | const |
Gets the range of the last sonar reading for the given sonar.
| num | the sonar number to check, should be between 0 and the number of sonar, the function won't fail if a bad number is given, will just return -1 |
Definition at line 3989 of file ArRobot.cpp.
| ArSensorReading * ArRobot::getSonarReading | ( | int | num | ) | const |
Returns the sonar reading for the given sonar.
| num | the sonar number to check, should be between 0 and the number of sonar, the function won't fail if a bad number is given, will just return false |
Definition at line 4031 of file ArRobot.cpp.
| int ArRobot::getStabilizingTime | ( | void | ) | const |
How long we stabilize for in ms (0 means no stabilizng).
This is the amount of time the robot will stabilize for after it has connected to the robot (it won't report it is connected until after this time is over).
Definition at line 3535 of file ArRobot.cpp.
| int ArRobot::getStateReflectionRefreshTime | ( | void | ) | const |
Sets the number of milliseconds between state reflection refreshes if the state has not changed
Definition at line 4939 of file ArRobot.cpp.
| ArSyncTask * ArRobot::getSyncTaskRoot | ( | void | ) |
This gets the root of the syncronous task tree, only serious developers should use it
Definition at line 2216 of file ArRobot.cpp.
| ArTransform ArRobot::getToGlobalTransform | ( | void | ) | const |
This gets the transform from local coords to global coords.
Definition at line 4684 of file ArRobot.cpp.
| ArTransform ArRobot::getToLocalTransform | ( | void | ) | const |
This gets the transform for going from global coords to local coords.
Definition at line 4698 of file ArRobot.cpp.
| bool ArRobot::handlePacket | ( | ArRobotPacket * | packet | ) |
Internal function, takes a packet and passes it to the packet handlers, returns true if handled, false otherwise
Definition at line 3255 of file ArRobot.cpp.
| bool ArRobot::hasRangeDevice | ( | ArRangeDevice * | device | ) | const |
Finds whether a particular range device is attached to this robot or not.
| device | the device to check for |
Definition at line 4269 of file ArRobot.cpp.
| void ArRobot::init | ( | void | ) |
Internal function, shouldn't be used.
Sets up the packet handlers, sets up the sync list and makes the default priority resolver.
Definition at line 188 of file ArRobot.cpp.
| bool ArRobot::isConnected | ( | void | ) | const [inline] |
| bool ArRobot::isDirectMotion | ( | void | ) | const |
Returns true if direct motion commands are blocking actions.
Returns the state of direct motion commands: whether actions are allowed or not
Definition at line 4873 of file ArRobot.cpp.
| bool ArRobot::isHeadingDone | ( | double | delta = 0.0 |
) | const |
Sees if the robot is done changing to the previously given setHeading.
Determines if a setHeading() command is finished, to within a small distance. If delta = 0 (default), the delta distance is what was set with setHeadingDoneDiff(), you can get the distnace with getHeadingDoneDiff()
| delta | how close to the goal distance the robot must be |
Definition at line 1552 of file ArRobot.cpp.
| bool ArRobot::isMoveDone | ( | double | delta = 0.0 |
) |
Sees if the robot is done moving the previously given move.
Determines if a move command is finished, to within a small distance threshold, "delta". If delta = 0 (default), the delta distance set with setMoveDoneDist() will be used.
| delta | how close to the goal distance the robot must be, or 0 for previously set default |
Definition at line 1527 of file ArRobot.cpp.
| bool ArRobot::isRunning | ( | void | ) | const |
Returns whether the robot is currently running or not.
Definition at line 224 of file ArRobot.cpp.
| bool ArRobot::isSonarNew | ( | int | num | ) | const |
Find out if the given sonar reading was newly refreshed by the last incoming SIP received.
| num | the sonar number to check, should be between 0 and the number of sonar, the function won't fail if a bad number is given, will just return false |
Definition at line 4009 of file ArRobot.cpp.
| bool ArRobot::isTryingToMove | ( | void | ) | [inline] |
Gets if the robot is trying to move or not.
This is so that if the robot is trying to move, but is prevented (mainly in actions) there'll still be some indication that the robot is trying to move so that things like the sonar aren't turned off because the robot's stopped, note that this flag doesn't have anything to do with if the robot is really moving or not and that you'll still want to check the vels for that
| bool ArRobot::loadParamFile | ( | const char * | file | ) |
Loads a parameter file (replacing all other params).
Definition at line 1083 of file ArRobot.cpp.
| void ArRobot::logAllTasks | ( | void | ) | const |
Logs the list of all tasks, strictly for your viewing pleasure.
Definition at line 2401 of file ArRobot.cpp.
| void ArRobot::logUserTasks | ( | void | ) | const |
Logs the list of user tasks, strictly for your viewing pleasure.
Definition at line 2385 of file ArRobot.cpp.
| void ArRobot::loopOnce | ( | void | ) |
This function loops once... only serious developers should use it.
This function is only for serious developers, it basically runs the loop once. You would use this function if you were wanting to use robot control in some other monolithic program, so you could work within its framework, rather than trying to get it to work in ARIA.
Definition at line 3586 of file ArRobot.cpp.
| void ArRobot::move | ( | double | distance | ) |
Move the given distance forward/backwards.
Tells the robot to begin moving the specified distance forward/backwards. ArRobot caches this value, and sends it during the next cycle (with a MOVE or VEL command, depending on the robot).
| distance | the distance for the robot to move (millimeters). Note, due to the implementation of the MOVE command on some robots, it is best to restrict the distance to the range (5000mm, 5000mm] if possible. Not all robots have this restriction, however. |
Definition at line 1504 of file ArRobot.cpp.
Change stored pose (i.e. the value returned by getPose()).
The robot-relative positions of the readings of attached range devices, plus sonar readings stored in this object, will also be updated. This variant allows you to manually specify a pose to use as the robot's old pose when updating range device readings (rather than ArRobot's currently stored pose).
| poseTo | the new absolute real world position | |
| poseFrom | the original absolute real world position | |
| doCumulative | whether to update the cumulative buffers of range devices |
Definition at line 4603 of file ArRobot.cpp.
| void ArRobot::moveTo | ( | ArPose | pose, | |
| bool | doCumulative = true | |||
| ) |
Change stored pose (i.e. the value returned by getPose()).
The robot-relative positions of the readings of attached range devices, plus sonar readings stored in this object, will also be updated.
| pose | New pose to set (in absolute world coordinates) | |
| doCumulative | whether to update the cumulative buffers of range devices |
Definition at line 4553 of file ArRobot.cpp.
| void ArRobot::packetHandler | ( | void | ) |
Packet Handler, internal.
Reads in all of the packets that are available to read in, then runs through the list of packet handlers and tries to get each packet handled.
Definition at line 3330 of file ArRobot.cpp.
| void ArRobot::processNewSonar | ( | char | number, | |
| int | range, | |||
| ArTime | timeReceived | |||
| ) |
Processes a new sonar reading, internal.
This function used to just create more sonar readings if it didn't have the sonar number that was given (only the case if that sonar didn't have an entry in the param file), this caused some silent bugs in other peoples code and so was removed... especially since we don't know where the sonar are at if they weren't in the parameter file anyways.
Definition at line 3903 of file ArRobot.cpp.
| bool ArRobot::remAction | ( | const char * | actionName | ) |
Removes an action from the list, by name.
Finds the action with the given name and removes it from the actions... if more than one action has that name it find the one with the lowest priority
| actionName | the name of the action we want to find |
Definition at line 2516 of file ArRobot.cpp.
| bool ArRobot::remAction | ( | ArAction * | action | ) |
Removes an action from the list, by pointer.
Finds the action with the given pointer and removes it from the actions... if more than one action has that pointer it find the one with the lowest priority
| action | the action we want to remove |
Definition at line 2546 of file ArRobot.cpp.
| void ArRobot::remConnectCB | ( | ArFunctor * | functor | ) |
Removes a connect callback.
| functor | the functor to remove from the list of connect callbacks |
Definition at line 1881 of file ArRobot.cpp.
| void ArRobot::remDisconnectNormallyCB | ( | ArFunctor * | functor | ) |
Removes a callback for when disconnect is called while connected.
| functor | the functor to remove from the list of connect callbacks |
Definition at line 1948 of file ArRobot.cpp.
| void ArRobot::remDisconnectOnErrorCB | ( | ArFunctor * | functor | ) |
Removes a callback for when disconnection happens because of an error.
| functor | the functor to remove from the list of connect callbacks |
Definition at line 1985 of file ArRobot.cpp.
| void ArRobot::remFailedConnectCB | ( | ArFunctor * | functor | ) |
Removes a callback for when a connection to the robot is failed.
| functor | the functor to remove from the list of connect callbacks |
Definition at line 1916 of file ArRobot.cpp.
| void ArRobot::remPacketHandler | ( | ArRetFunctor1< bool, ArRobotPacket * > * | functor | ) |
Removes a packet handler from the list of packet handlers.
| functor | the functor to remove from the list of packet handlers |
Definition at line 1849 of file ArRobot.cpp.
| void ArRobot::remRangeDevice | ( | ArRangeDevice * | device | ) |
Remove a range device from the robot's list, by instance.
| device | remove the first device with this pointer value |
Definition at line 4202 of file ArRobot.cpp.
| void ArRobot::remRangeDevice | ( | const char * | name | ) |
Remove a range device from the robot's list, by name.
| name | remove the first device with this name |
Definition at line 4186 of file ArRobot.cpp.
| void ArRobot::remRunExitCB | ( | ArFunctor * | functor | ) |
Removes a callback for when the run loop exits for what ever reason.
| functor | The functor to remove from the list of run exit callbacks |
Definition at line 2016 of file ArRobot.cpp.
| void ArRobot::remSensorInterpTask | ( | ArFunctor * | functor | ) |
Removes a sensor interp tasks by functor.
remSensorInterpTask(std::string name)
Definition at line 2360 of file ArRobot.cpp.
| void ArRobot::remSensorInterpTask | ( | const char * | name | ) |
| void ArRobot::remStabilizingCB | ( | ArFunctor * | functor | ) |
Removes stabilizing callback.
| functor | the functor to remove from the list of stabilizing callbacks |
Definition at line 2049 of file ArRobot.cpp.
| void ArRobot::remUserTask | ( | ArFunctor * | functor | ) |
Removes a user task from the list of synchronous taskes by functor.
remUserTask(std::string name)
Definition at line 2282 of file ArRobot.cpp.
| void ArRobot::remUserTask | ( | const char * | name | ) |
Removes a user task from the list of synchronous taskes by name.
Definition at line 2257 of file ArRobot.cpp.
| void ArRobot::requestEncoderPackets | ( | void | ) |
Starts a continuous stream of encoder packets.
Encoder packet data may then be from getLeftEncoder(), getRightEncoder().
Encoder packets may be stopped with stopEncoderPackets().
Definition at line 1286 of file ArRobot.cpp.
| void ArRobot::run | ( | bool | stopRunIfNotConnected | ) |
Starts the instance to do processing in this thread.
This starts the list of tasks to be run through until stopped. This function doesn't return until something calls stop on this instance.
| stopRunIfNotConnected | if true, the run will return if there is no connection to the robot at any given point, this is good for one-shot programs... if it is false the run won't return unless stop is called on the instance |
Definition at line 206 of file ArRobot.cpp.
| void ArRobot::runAsync | ( | bool | stopRunIfNotConnected | ) |
Starts the instance to do processing in its own new thread.
This starts a new thread then has runs through the tasks until stopped. This function doesn't return until something calls stop on this instance. This function returns immediately
| stopRunIfNotConnected | if true, the run will stop if there is no connection to the robot at any given point, this is good for one-shot programs... if it is false the run won't stop unless stop is called on the instance |
Definition at line 238 of file ArRobot.cpp.
| bool ArRobot::setAbsoluteMaxRotAccel | ( | double | maxAccel | ) |
Sets the robot's absolute maximum rotational acceleration.
This sets the absolute maximum rotational acceleration the robot will do... the acceleration can also be set by the actions and by setRotAccel, but it will not be allowed to go higher than this value. You should not set this very often, if you want to manipulate this value you should use the actions or setRotAccel.
| maxAccel | the maximum acceleration to be set, it must be a non-zero number |
Definition at line 1725 of file ArRobot.cpp.
| bool ArRobot::setAbsoluteMaxRotDecel | ( | double | maxDecel | ) |
Sets the robot's absolute maximum rotational deceleration.
This sets the absolute maximum rotational deceleration the robot will do... the deceleration can also be set by the actions and by setRotDecel, but it will not be allowed to go higher than this value. You should not set this very often, if you want to manipulate this value you should use the actions or setRotDecel.
| maxDecel | the maximum deceleration to be set, it must be a non-zero number |
Definition at line 1748 of file ArRobot.cpp.
| bool ArRobot::setAbsoluteMaxRotVel | ( | double | maxVel | ) |
Sets the robot's absolute maximum rotational velocity.
This sets the absolute maximum velocity the robot will go... the maximum velocity can also be set by the actions and by setRotVelMax, but it will not be allowed to go higher than this value. You should not set this very often, if you want to manipulate this value you should use the actions or setRotVelMax.
| maxVel | the maximum velocity to be set, it must be a non-zero number |
Definition at line 1702 of file ArRobot.cpp.
| bool ArRobot::setAbsoluteMaxTransAccel | ( | double | maxAccel | ) |
Sets the robot's absolute maximum translational acceleration.
This sets the absolute maximum translational acceleration the robot will do... the acceleration can also be set by the actions and by setTransAccel, but it will not be allowed to go higher than this value. You should not set this very often, if you want to manipulate this value you should use the actions or setTransAccel.
| maxAccel | the maximum acceleration to be set, it must be a non-zero number |
Definition at line 1658 of file ArRobot.cpp.
| bool ArRobot::setAbsoluteMaxTransDecel | ( | double | maxDecel | ) |
Sets the robot's absolute maximum translational deceleration.
This sets the absolute maximum translational deceleration the robot will do... the deceleration can also be set by the actions and by setTransDecel, but it will not be allowed to go higher than this value. You should not set this very often, if you want to manipulate this value you should use the actions or setTransDecel.
| maxDecel | the maximum deceleration to be set, it must be a non-zero number |
Definition at line 1681 of file ArRobot.cpp.
| bool ArRobot::setAbsoluteMaxTransVel | ( | double | maxVel | ) |
Sets the robot's absolute maximum translational velocity.
This sets the absolute maximum velocity the robot will go... the maximum velocity can also be set by the actions and by setTransVelMax, but it will not be allowed to go higher than this value. You should not set this very often, if you want to manipulate this value you should use the actions or setTransVelMax.
| maxVel | the maximum velocity to be set, it must be a non-zero number |
Definition at line 1635 of file ArRobot.cpp.
| void ArRobot::setConnectionCycleMultiplier | ( | unsigned int | multiplier | ) |
Sets the multiplier for how many cycles ArRobot waits when connecting.
| multiplier | when the ArRobot is waiting for a connection packet back from a robot, it waits for this multiplier times the cycle time for the packet to come back before it gives up on it... This should be small for normal connections but if doing something over a slow network then you may want to make it larger |
Definition at line 3562 of file ArRobot.cpp.
| void ArRobot::setConnectionTimeoutTime | ( | int | mSecs | ) |
Sets the time without a response until connection assumed lost.
Sets the number of milliseconds to go without a response from the robot until it is assumed that the connection with the robot has been broken and the disconnect on error events will happen. Note that this will only happen with the default packet handler.
| mSecs | if seconds is 0 then the connection timeout feature will be disabled, otherwise disconnect on error will be triggered after this number of seconds... |
Definition at line 517 of file ArRobot.cpp.
| void ArRobot::setCycleTime | ( | unsigned int | ms | ) |
Sets the number of ms between cycles.
Sets the number of milliseconds between cycles, at each cycle is when all packets are processed, all sensors are interpretted, all actions are called, and all user tasks are serviced. Be warned, if you set this too small you could overflow your serial connection.
| ms | the number of milliseconds between cycles |
Definition at line 3505 of file ArRobot.cpp.
| void ArRobot::setCycleWarningTime | ( | unsigned int | ms | ) |
Sets the number of ms between cycles to warn over.
Sets a time such that if the number of milliseconds between cycles goes over this then there will be an ArLog::log(ArLog::Normal) warning.
| ms | the number of milliseconds between cycles to warn over, 0 turns warning off |
Definition at line 3466 of file ArRobot.cpp.
| void ArRobot::setDeadReconPose | ( | ArPose | pose | ) |
Sets the dead recon position of the robot.
| pose | the position to set the dead recon position to |
Definition at line 4672 of file ArRobot.cpp.
| void ArRobot::setDeltaHeading | ( | double | deltaHeading | ) |
Sets the delta heading.
Sets a delta heading to the robot, it caches this value, and sends it during the next cycle.
| deltaHeading | the desired amount to change the heading of the robot by |
Definition at line 1609 of file ArRobot.cpp.
| void ArRobot::setDeviceConnection | ( | ArDeviceConnection * | connection | ) |
Sets the connection this instance uses.
Sets the connection this instance uses to the actual robot. This is where commands will be sent and packets will be received from
| connection | The deviceConnection to use for this robot |
Definition at line 487 of file ArRobot.cpp.
| void ArRobot::setDirectMotionPrecedenceTime | ( | int | mSec | ) |
Sets the length of time a direct motion command will take precedence over actions, in milliseconds
Definition at line 4814 of file ArRobot.cpp.
| void ArRobot::setEncoderCorrectionCallback | ( | ArRetFunctor1< double, ArPoseWithTime > * | functor | ) |
Sets the encoderCorrectionCallback.
This sets the encoderCorrectionCB, this callback returns the robots change in heading, it takes in the change in heading, x, and y, between the previous and current readings.
| functor | an ArRetFunctor1 created as an ArRetFunctor1C, that will be the callback... call this function NULL to clear the callback |
Definition at line 4787 of file ArRobot.cpp.
| void ArRobot::setEncoderTransform | ( | ArPose | transformPos | ) |
Changes the transform directly.
| transformPos | the position to transform to |
Definition at line 4655 of file ArRobot.cpp.
Changes the transform.
| deadReconPos | the dead recon position to transform from | |
| globalPos | the real world global position to transform to |
Definition at line 4645 of file ArRobot.cpp.
| void ArRobot::setHeading | ( | double | heading | ) |
Sets the heading.
Sets the heading of the robot, it caches this value, and sends it during the next cycle.
| heading | the desired heading of the robot (degrees) |
Definition at line 1571 of file ArRobot.cpp.
| void ArRobot::setRotVel | ( | double | velocity | ) |
Sets the rotational velocity.
Sets the rotational velocity of the robot, it caches this value, and sends it during the next cycle.
| velocity | the desired rotational velocity of the robot (deg/sec) |
Definition at line 1590 of file ArRobot.cpp.
| void ArRobot::setStabilizingTime | ( | int | mSecs | ) |
How long we should stabilize for in ms (0 disables stabilizing).
This is the amount of time the robot will stabilize for after it has connected to the robot (it won't report it is connected until after this time is over). By convention you should never set this lower than what you find the value at (though it will let you) this is so that everything can get itself stabilized before we let things drive.
| mSecs | the amount of time to stabilize for (0 disables) |
Definition at line 3522 of file ArRobot.cpp.
| void ArRobot::setStateReflectionRefreshTime | ( | int | msec | ) |
Sets the number of milliseconds between state reflection refreshes if the state has not changed
Definition at line 4924 of file ArRobot.cpp.
| void ArRobot::setVel | ( | double | velocity | ) |
| void ArRobot::setVel2 | ( | double | leftVelocity, | |
| double | rightVelocity | |||
| ) |
Sets the velocity of the wheels independently.
Sets the velocity of each of the wheels on the robot independently. ArRobot caches these values, and sends them with a VEL2 command during the next cycle. Note that this cancels both translational velocity AND rotational velocity, and is canceled by any of the other direct motion commands.
| leftVelocity | the desired velocity of the left wheel | |
| rightVelocity | the desired velocity of the right wheel |
Definition at line 1484 of file ArRobot.cpp.
| void ArRobot::stop | ( | void | ) |
Stops the robot
Definition at line 1445 of file ArRobot.cpp.
| void ArRobot::stopRunning | ( | bool | doDisconnect = true |
) |
Stops the robot from doing any more processing.
This stops this robot's processing cycle. If it is running in a background thread (from runAsync()), it will cause that thread to exit. If it is running synchronously (from run()), then run() will return.
| doDisconnect | If true, also disconnect from the robot connection (default is true). |
Definition at line 260 of file ArRobot.cpp.
| void ArRobot::stopStateReflection | ( | void | ) |
Sets the state reflection to be inactive (until motion or clearDirectMotion)
Definition at line 4861 of file ArRobot.cpp.
| ArRobot::WaitState ArRobot::waitForConnect | ( | unsigned int | msecs = 0 |
) |
Suspend calling thread until the ArRobot is connected.
This will suspend the calling thread until the ArRobot's run loop has managed to connect with the robot. There is an optional paramater of milliseconds to wait for the ArRobot to connect. If msecs is set to 0, it will wait until the ArRobot connects. This function will never return if the robot can not be connected with. If you want to be able to handle that case within the calling thread, you must call waitForConnectOrConnFail().
| msecs | milliseconds in which to wait for the ArRobot to connect |
Definition at line 2075 of file ArRobot.cpp.
| ArRobot::WaitState ArRobot::waitForConnectOrConnFail | ( | unsigned int | msecs = 0 |
) |
Suspend calling thread until the ArRobot is connected or fails to connect.
This will suspend the calling thread until the ArRobot's run loop has managed to connect with the robot or fails to connect with the robot. There is an optional paramater of milliseconds to wait for the ArRobot to connect. If msecs is set to 0, it will wait until the ArRobot connects.
| msecs | milliseconds in which to wait for the ArRobot to connect |
Definition at line 2107 of file ArRobot.cpp.
| ArRobot::WaitState ArRobot::waitForRunExit | ( | unsigned int | msecs = 0 |
) |
Suspend calling thread until the ArRobot run loop has exited.
This will suspend the calling thread until the ArRobot's run loop has exited. There is an optional paramater of milliseconds to wait for the ArRobot run loop to exit . If msecs is set to 0, it will wait until the ArRrobot run loop exits.
| msecs | milliseconds in which to wait for the robot to connect |
Definition at line 2142 of file ArRobot.cpp.
| void ArRobot::wakeAllConnOrFailWaitingThreads | ( | ) |
Wake up all threads waiting for connection or connection failure.
This will wake all the threads waiting for the robot to be connected or waiting for the robot to fail to connect.
Definition at line 2194 of file ArRobot.cpp.
| void ArRobot::wakeAllConnWaitingThreads | ( | ) |
Wake up all threads waiting for connection.
This will wake all the threads waiting for the robot to be connected.
Definition at line 2182 of file ArRobot.cpp.
| void ArRobot::wakeAllRunExitWaitingThreads | ( | ) |
Wake up all threads waiting for the run loop to exit.
This will wake all the threads waiting for the run loop to exit.
Definition at line 2204 of file ArRobot.cpp.
| void ArRobot::wakeAllWaitingThreads | ( | ) |
Wake up all threads waiting on this robot.
This will wake all the threads waiting for various major state changes in this particular ArRobot. This includes all threads waiting for the robot to be connected and all threads waiting for the run loop to exit.
Definition at line 2171 of file ArRobot.cpp.
1.4.7