Aria
2.8.0
|
Range device interface specialized for laser rangefinder sensors. More...
#include <ArLaser.h>
Inherits ArRangeDeviceThreaded.
Inherited by ArLaserFilter, ArLMS1XX, ArLMS2xx, ArS3Series, ArSimulatedLaser, ArSZSeries, ArUrg, and ArUrg_2_0.
Public Member Functions | |
void | addConnectCB (ArFunctor *functor, int position=50) |
Adds a connect callback. | |
void | addDisconnectNormallyCB (ArFunctor *functor, int position=50) |
Adds a callback for when disconnect is called while connected. | |
void | addDisconnectOnErrorCB (ArFunctor *functor, int position=50) |
Adds a callback for when disconnection happens because of an error. | |
void | addFailedConnectCB (ArFunctor *functor, int position=50) |
Adds a callback for when a connection to the robot is failed. | |
void | addIgnoreReading (double ignoreReading) |
Adds a degree at which to ignore readings (within 1 degree of nearest integer) | |
bool | addIgnoreReadings (const char *ignoreReadings) |
Adds a series of degree at which to ignore readings (within 1 degree of nearest integer) | |
void | addReadingCB (ArFunctor *functor, int position=50) |
Adds a callback that is called whenever a laser reading is processed. | |
virtual void | applyTransform (ArTransform trans, bool doCumulative=true) |
Applies a transform to the buffers. More... | |
ArLaser (int laserNumber, const char *name, unsigned int absoluteMaxRange, bool locationDependent=false, bool appendLaserNumberToName=true) | |
Constructor. | |
virtual bool | asyncConnect (void)=0 |
Connect to the laser without blocking. | |
virtual bool | blockingConnect (void)=0 |
Connect to the laser and block for the result. | |
bool | canChooseAutoBaud (void) |
Gets if you can choose autoBaud for the laser. More... | |
bool | canChooseDegrees (void) |
Gets if you can choose the number of degrees. More... | |
bool | canChooseIncrement (void) |
Gets if you can choose an increment. More... | |
bool | canChooseReflectorBits (void) |
Gets if you can choose reflectorBits for the laser. More... | |
bool | canChooseStartingBaud (void) |
Gets if you can choose startingBaud for the laser. More... | |
bool | canChooseUnits (void) |
Gets if you can choose units for the laser. More... | |
bool | canSetDegrees (void) |
Sees if this class can set the degrees with doubles or not. More... | |
bool | canSetIncrement (void) |
Gets if you can set an increment. More... | |
bool | canSetPowerControlled (void) |
Gets if you can set powerControlled for the laser. More... | |
bool | chooseAutoBaud (const char *reflectorBits) |
Sets the reflectorBits to one of the choices from getAutoBaudChoices. More... | |
bool | chooseDegrees (const char *range) |
Sets the range to one of the choices from getDegreesChoices. More... | |
bool | chooseIncrement (const char *increment) |
Sets the increment to one of the choices from getIncrementChoices. More... | |
bool | chooseReflectorBits (const char *reflectorBits) |
Sets the reflectorBits to one of the choices from getReflectorBitsChoices. More... | |
bool | chooseStartingBaud (const char *reflectorBits) |
Sets the reflectorBits to one of the choices from getStartingBaudChoices. More... | |
bool | chooseUnits (const char *units) |
Sets the units to one of the choices from getUnitsChoices. More... | |
void | clearIgnoreReadings (void) |
Clears the degrees we ignore readings at. | |
void | copyReadingCount (const ArLaser *laser) |
Copies the reading count stuff from another laser (for the laser filter) | |
virtual bool | disconnect (void)=0 |
Disconnect from the laser. | |
unsigned int | getAbsoluteMaxRange (void) |
Gets the absolute maximum range on the sensor. | |
const char * | getAutoBaudChoice (void) |
Gets the reflectorBits that was chosen. More... | |
std::list< std::string > | getAutoBaudChoices (void) |
Gets the list of reflectorBits choices. More... | |
const char * | getAutoBaudChoicesString (void) |
Gets a string with the list of reflectorBits choices seperated by |s. More... | |
virtual double | getConnectionTimeoutSeconds (void) |
Gets the number of seconds without a response until connection assumed lost. More... | |
double | getCumulativeCleanDist (void) |
Cumulative readings that are this close to current beams are discarded. | |
int | getCumulativeCleanInterval (void) |
Cumulative readings are cleaned every this number of milliseconds. | |
int | getCumulativeCleanOffset (void) |
Gets the offset for cumulative cleaning. | |
const char * | getDefaultPortType (void) |
Gets the default port type for the laser. | |
int | getDefaultTcpPort (void) |
Gets the default TCP port for the laser. | |
const char * | getDegreesChoice (void) |
Gets the range that was chosen. More... | |
double | getDegreesChoiceDouble (void) |
Gets the range that was chosen as a double. More... | |
std::list< std::string > | getDegreesChoices (void) |
Gets the list of range choices. More... | |
std::map< std::string, double > | getDegreesChoicesMap (void) |
Gets the map of degrees choices to what they mean. More... | |
const char * | getDegreesChoicesString (void) |
Gets a string with the list of degrees choices seperated by |s. More... | |
virtual ArDeviceConnection * | getDeviceConnection (void) |
Gets the device connection. | |
double | getEndDegrees (void) |
Gets the end angle. More... | |
double | getEndDegreesMax (void) |
Gets the maximum value for the end angle. More... | |
double | getEndDegreesMin (void) |
Gets the minimum value for the end angle. More... | |
bool | getFlipped (void) |
Gets if the laser is flipped or not. | |
const std::set< int > * | getIgnoreReadings (void) const |
Gets the list of readings that we ignore. | |
double | getIncrement (void) |
Gets the increment. More... | |
const char * | getIncrementChoice (void) |
Gets the increment that was chosen. More... | |
double | getIncrementChoiceDouble (void) |
Gets the increment that was chosen as a double. More... | |
std::list< std::string > | getIncrementChoices (void) |
Gets the list of increment choices. More... | |
std::map< std::string, double > | getIncrementChoicesMap (void) |
Gets the map of increment choices to what they mean. More... | |
const char * | getIncrementChoicesString (void) |
Gets a string with the list of increment choices seperated by |s. More... | |
double | getIncrementMax (void) |
Gets the increment maximum. More... | |
double | getIncrementMin (void) |
Gets the increment minimum. More... | |
ArLog::LogLevel | getInfoLogLevel (void) |
Gets the log level that informational things are logged at. | |
int | getLaserNumber (void) |
Gets the number of the laser this is. | |
ArTime | getLastReadingTime (void) |
Gets the time data was last receieved. | |
bool | getPowerControlled (void) |
Gets if the power is controlled. More... | |
int | getReadingCount (void) |
Gets the number of laser readings received in the last second. | |
const char * | getReflectorBitsChoice (void) |
Gets the reflectorBits that was chosen. More... | |
std::list< std::string > | getReflectorBitsChoices (void) |
Gets the list of reflectorBits choices. More... | |
const char * | getReflectorBitsChoicesString (void) |
Gets a string with the list of reflectorBits choices seperated by |s. More... | |
ArPose | getSensorPosition (void) |
Gets the position of the sensor on the robot. | |
double | getSensorPositionTh (void) |
Gets the heading of the sensor on the robot. | |
double | getSensorPositionX (void) |
Gets the X position of the sensor on the robot. | |
double | getSensorPositionY (void) |
Gets the Y position of the sensor on the robot. | |
double | getSensorPositionZ (void) |
Gets the Z position of the sensor on the robot (0 is unknown) | |
double | getStartDegrees (void) |
Gets the start angle. More... | |
double | getStartDegreesMax (void) |
Gets the maximum value for the start angle. More... | |
double | getStartDegreesMin (void) |
Gets the minimum value for the start angle. More... | |
const char * | getStartingBaudChoice (void) |
Gets the reflectorBits that was chosen. More... | |
std::list< std::string > | getStartingBaudChoices (void) |
Gets the list of reflectorBits choices. More... | |
const char * | getStartingBaudChoicesString (void) |
Gets a string with the list of reflectorBits choices seperated by |s. More... | |
const char * | getUnitsChoice (void) |
Gets the units that was chosen. More... | |
std::list< std::string > | getUnitsChoices (void) |
Gets the list of units choices. More... | |
const char * | getUnitsChoicesString (void) |
Gets a string with the list of units choices seperated by |s. More... | |
bool | hasSensorPosition (void) |
Gets if the sensor pose has been set. | |
virtual bool | isConnected (void)=0 |
See if the laser is connected. | |
virtual bool | isTryingToConnect (void)=0 |
See if the laser is trying to connect. | |
virtual bool | laserCheckParams (void) |
Call the laser can implement to make sure the parameters are all okay or set the maximum range (based on the params) More... | |
void | remConnectCB (ArFunctor *functor) |
Adds a disconnect 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 | remReadingCB (ArFunctor *functor) |
Removes a callback that is called whenever a laser reading is processed. | |
void | resetLastCumulativeCleanTime (void) |
Resets when the cumulative cleaning happened (so offset can help) | |
virtual void | setConnectionTimeoutSeconds (double seconds) |
Sets the numter of seconds without a response until connection assumed lost. More... | |
virtual void | setCumulativeBufferSize (size_t size) |
override the default to keep track of its been set or not | |
void | setCumulativeCleanDist (double dist) |
Cumulative readings that are this close to current beams are discarded. | |
void | setCumulativeCleanInterval (int milliSeconds) |
Cumulative readings are cleaned every this number of milliseconds. | |
void | setCumulativeCleanOffset (int milliSeconds) |
Offset for cumulative cleaning. | |
virtual void | setDeviceConnection (ArDeviceConnection *conn) |
Sets the device connection. | |
bool | setEndDegrees (double endDegrees) |
Sets the end angle, it must be between getEndDegreesMin and getEndDegreesMax. More... | |
bool | setFlipped (bool flipped) |
Sets if the laser is flipped or not. | |
bool | setIncrement (double increment) |
Sets the increment. More... | |
void | setInfoLogLevel (ArLog::LogLevel infoLogLevel) |
Sets the log level that informational things are logged at. | |
virtual void | setMaxRange (unsigned int maxRange) |
override the default to bound the maxrange by the absolute max range | |
bool | setPowerControlled (bool powerControlled) |
Sets if the power is controlled. More... | |
void | setSensorPosition (double x, double y, double th, double z=0) |
Sets the position of the sensor on the robot. | |
void | setSensorPosition (ArPose pose, double z=0) |
Sets the position of the sensor on the robot. | |
bool | setStartDegrees (double startDegrees) |
Sets the start angle, it must be between getStartDegreesMin and getStartDegreesMax. More... | |
virtual | ~ArLaser () |
Destructor. | |
![]() | |
ArRangeDeviceThreaded (size_t currentBufferSize, size_t cumulativeBufferSize, const char *name, unsigned int maxRange, int maxSecondsTokeepCurrent=0, int maxSecondsToKeepCumulative=0, double maxDistToKeepCumulative=0, bool locationDependent=false) | |
Constructor. | |
virtual bool | getRunning (void) |
Get the running status of the thread. | |
virtual bool | getRunningWithLock (void) |
Get the running status of the thread, locking around the variable. | |
virtual int | lockDevice (void) |
virtual void | run (void) |
Run in this thread. | |
virtual void | runAsync (void) |
Run in its own thread. | |
virtual void * | runThread (void *arg)=0 |
The functor you need to implement that will be the one executed by the thread. | |
virtual void | stopRunning (void) |
Stop the thread. | |
virtual int | tryLockDevice (void) |
virtual int | unlockDevice (void) |
virtual | ~ArRangeDeviceThreaded () |
Destructor. | |
![]() | |
virtual void | addReading (double x, double y, bool *wasAdded=NULL) |
Adds a reading to the buffer. | |
ArRangeDevice (size_t currentBufferSize, size_t cumulativeBufferSize, const char *name, unsigned int maxRange, int maxSecondsToKeepCurrent=0, int maxSecondsToKeepCumulative=0, double maxDistToKeepCumulative=0, bool locationDependent=false) | |
Constructor. More... | |
virtual void | clearCumulativeOlderThan (int milliSeconds) |
Clears all the cumulative readings older than this number of milliseconds. | |
virtual void | clearCumulativeOlderThanSeconds (int seconds) |
Clears all the cumulative readings older than this number of seconds. | |
virtual void | clearCumulativeReadings (void) |
Clears all the cumulative readings. | |
virtual void | clearCurrentReadings (void) |
Clears all the current readings. | |
virtual double | cumulativeReadingBox (double x1, double y1, double x2, double y2, ArPose *readingPos=NULL) const |
Gets the closest current reading from the given box region. More... | |
virtual double | cumulativeReadingPolar (double startAngle, double endAngle, double *angle=NULL) const |
Gets the closest cumulative reading in the given polar region. More... | |
virtual double | currentReadingBox (double x1, double y1, double x2, double y2, ArPose *readingPos=NULL) const |
Gets the closest current reading from the given box region. More... | |
virtual double | currentReadingPolar (double startAngle, double endAngle, double *angle=NULL) const |
Gets the closest current reading in the given polar region. More... | |
void | filterCallback (void) |
Internal function to filter the readings based on age and distance. | |
virtual const std::list< ArSensorReading * > * | getAdjustedRawReadings (void) const |
Gets the raw unfiltered readings from the device (but pose takens are corrected) More... | |
virtual std::vector< ArSensorReading > * | getAdjustedRawReadingsAsVector (void) |
Gets the raw adjusted readings from the device into a vector. More... | |
virtual const std::list< ArPoseWithTime * > * | getCumulativeBuffer (void) const |
Gets the current buffer of readings. More... | |
virtual std::list< ArPoseWithTime * > * | getCumulativeBuffer (void) |
Gets the current buffer of readings. | |
virtual std::vector< ArPoseWithTime > * | getCumulativeBufferAsVector (void) |
Gets the cumulative buffer of readings as a vector. More... | |
virtual size_t | getCumulativeBufferSize (void) const |
Sets the maximum size of the buffer for cumulative readings. | |
virtual ArDrawingData * | getCumulativeDrawingData (void) |
Gets data used for visualizing the cumulative buffer (see ArNetworking) | |
virtual const ArRangeBuffer * | getCumulativeRangeBuffer (void) const |
Gets the cumulative range buffer. More... | |
virtual ArRangeBuffer * | getCumulativeRangeBuffer (void) |
Gets the cumulative range buffer. | |
virtual const std::list< ArPoseWithTime * > * | getCurrentBuffer (void) const |
Gets the current buffer of readings. More... | |
virtual std::list< ArPoseWithTime * > * | getCurrentBuffer (void) |
Gets the current buffer of readings. | |
virtual std::vector< ArPoseWithTime > * | getCurrentBufferAsVector (void) |
Gets the current buffer of readings as a vector. More... | |
virtual size_t | getCurrentBufferSize (void) const |
Gets the maximum size of the buffer for current readings. | |
virtual ArDrawingData * | getCurrentDrawingData (void) |
Gets data used for visualizing the current buffer (see ArNetworking) | |
virtual const ArRangeBuffer * | getCurrentRangeBuffer (void) const |
Gets the current range buffer. More... | |
virtual ArRangeBuffer * | getCurrentRangeBuffer (void) |
Gets the current range buffer. | |
double | getMaxDistToKeepCumulative (void) |
sets the maximum distance cumulative readings can be from current pose More... | |
double | getMaxInsertDistCumulative (void) |
Gets the maximum distance a cumulative reading can be from the robot and still be inserted. More... | |
virtual unsigned int | getMaxRange (void) const |
Gets the maximum range for this device. | |
int | getMaxSecondsToKeepCumulative (void) |
gets the maximum seconds to keep current readings around More... | |
int | getMaxSecondsToKeepCurrent (void) |
gets the maximum seconds to keep current readings around More... | |
double | getMinDistBetweenCumulative (void) |
Gets the minimum distance between cumulative readings. More... | |
double | getMinDistBetweenCurrent (void) |
Gets the minimum distance between current readings. More... | |
virtual const char * | getName (void) const |
Gets the name of the device. | |
virtual const std::list< ArSensorReading * > * | getRawReadings (void) const |
Gets the raw unfiltered readings from the device. More... | |
virtual std::vector< ArSensorReading > * | getRawReadingsAsVector (void) |
Gets the raw unfiltered readings from the device into a vector. More... | |
virtual ArRobot * | getRobot (void) |
Gets the robot this device is attached to. | |
bool | isLocationDependent (void) |
Gets if this device is location dependent or not. | |
virtual void | setCumulativeDrawingData (ArDrawingData *data, bool takeOwnershipOfData) |
Sets data for visualizing the cumulative buffer (and if we own it) | |
virtual void | setCurrentBufferSize (size_t size) |
Sets the maximum size of the buffer for current readings. More... | |
virtual void | setCurrentDrawingData (ArDrawingData *data, bool takeOwnershipOfData) |
Sets data for visualizing the current buffer (and if we own it) | |
void | setMaxDistToKeepCumulative (double maxDistToKeepCumulative) |
sets the maximum distance cumulative readings can be from current pose More... | |
void | setMaxInsertDistCumulative (double maxInsertDistCumulative) |
Sets the maximum distance a cumulative reading can be from the robot and still be inserted. More... | |
void | setMaxSecondsToKeepCumulative (int maxSecondsToKeepCumulative) |
gets the maximum seconds to keep cumulative readings around More... | |
void | setMaxSecondsToKeepCurrent (int maxSecondsToKeepCurrent) |
Sets the maximum seconds to keep current readings around. More... | |
void | setMinDistBetweenCumulative (double minDistBetweenCumulative) |
Sets the minimum distance between cumulative readings. More... | |
void | setMinDistBetweenCurrent (double minDistBetweenCurrent) |
Sets the minimum distance between current readings. More... | |
virtual void | setRobot (ArRobot *robot) |
Sets the robot this device is attached to. | |
virtual | ~ArRangeDevice () |
Destructor. | |
Static Public Member Functions | |
static void | useSimpleNamingForAllLasers (void) |
Makes it so we'll apply simple naming to all the lasers. | |
Protected Member Functions | |
void | internalBuildChoices (std::map< std::string, double > *choices, std::string *str, std::list< std::string > *choicesList) |
void | internalBuildChoicesString (std::list< std::string > *choices, std::string *str) |
bool | internalCheckChoice (const char *check, const char *choice, std::list< std::string > *choices, const char *choicesStr) |
bool | internalCheckChoice (const char *check, const char *choice, std::map< std::string, double > *choices, const char *choicesStr, double *choiceDouble) |
virtual void | internalGotReading (void) |
void | internalProcessReading (double x, double y, unsigned int range, bool clean, bool onlyClean) |
void | laserAllowAutoBaudChoices (const char *defaultAutoBaudChoice, std::list< std::string > autoBaudChoices) |
Allows setting the auto baud speed to one of a number of choices. More... | |
void | laserAllowDegreesChoices (const char *defaultDegreesChoice, std::map< std::string, double > degreesChoices) |
Allows setting the degrees the laser uses to one of a number of choices. More... | |
void | laserAllowIncrementChoices (const char *defaultIncrementChoice, std::map< std::string, double > incrementChoices) |
Allows setting the increment to one of a number of choices. More... | |
void | laserAllowReflectorBitsChoices (const char *defaultReflectorBitsChoice, std::list< std::string > reflectorBitsChoices) |
Allows setting the reflector bits the laser will use to one of a number of choices. More... | |
void | laserAllowSetDegrees (double defaultStartDegrees, double startDegreesMin, double startDegreesMax, double defaultEndDegrees, double endDegreesMin, double endDegreesMax) |
Allows setting the degrees the laser uses to anything in a range. More... | |
void | laserAllowSetIncrement (double defaultIncrement, double incrementMin, double incrementMax) |
Allows setting the increment the laser uses to anything in a range. More... | |
void | laserAllowSetPowerControlled (bool defaultPowerControlled) |
Allows setting if the power is controlled or not. More... | |
void | laserAllowStartingBaudChoices (const char *defaultStartingBaudChoice, std::list< std::string > startingBaudChoices) |
Allows setting the starting baud to one of a number of choices. More... | |
void | laserAllowUnitsChoices (const char *defaultUnitsChoice, std::list< std::string > unitsChoices) |
Allows setting the units the laser will use to one of a number of choices. More... | |
bool | laserCheckLostConnection (void) |
Returns if the laser has lost connection so that the subclass can do something appropriate. More... | |
virtual void | laserConnect (void) |
Function for a laser to call when it connects. | |
virtual void | laserDisconnectNormally (void) |
Function for a laser to call when it disconnects normally. | |
virtual void | laserDisconnectOnError (void) |
Function for a laser to call when it loses connection. | |
virtual void | laserFailedConnect (void) |
Function for a laser to call when it fails to connects. | |
void | laserProcessReadings (void) |
Converts the raw readings into the buffers (needs to be called by subclasses) More... | |
bool | laserPullUnsetParamsFromRobot (void) |
Pulls the unset params from the robot parameter file. | |
void | laserSetAbsoluteMaxRange (unsigned int absoluteMaxRange) |
Sets the absolute maximum range on the sensor. | |
void | laserSetDefaultPortType (const char *defaultPortType) |
Sets the laser's default connection port type. | |
void | laserSetDefaultTcpPort (int defaultLaserTcpPort) |
Sets the laser's default TCP port. | |
virtual void | laserSetName (const char *name) |
Called when the lasers name is set. More... | |
![]() | |
void | adjustRawReadings (bool interlaced) |
This call should be called by the range device every robot cycle before the range device makes new readings (and even if it isn't adding any that cycle)... More... | |
Protected Attributes | |
unsigned int | myAbsoluteMaxRange |
std::string | myAutoBaudChoice |
std::list< std::string > | myAutoBaudChoices |
bool | myAutoBaudChoiceSet |
std::string | myAutoBaudChoicesString |
bool | myCanChooseAutoBaud |
bool | myCanChooseDegrees |
bool | myCanChooseIncrement |
bool | myCanChooseReflectorBits |
bool | myCanChooseStartingBaud |
bool | myCanChooseUnits |
bool | myCanSetDegrees |
bool | myCanSetIncrement |
bool | myCanSetPowerControlled |
ArDeviceConnection * | myConn |
ArCallbackList | myConnectCBList |
ArMutex | myConnMutex |
bool | myCumulativeBufferSizeSet |
double | myCumulativeCleanDist |
double | myCumulativeCleanDistSquared |
int | myCumulativeCleanInterval |
int | myCumulativeCleanOffset |
ArTime | myCumulativeLastClean |
ArCallbackList | myDataCBList |
std::string | myDefaultPortType |
int | myDefaultTcpPort |
std::string | myDegreesChoice |
double | myDegreesChoiceDouble |
std::map< std::string, double > | myDegreesChoices |
bool | myDegreesChoiceSet |
std::list< std::string > | myDegreesChoicesList |
std::string | myDegreesChoicesString |
ArCallbackList | myDisconnectNormallyCBList |
ArCallbackList | myDisconnectOnErrorCBList |
double | myEndDegrees |
double | myEndDegreesMax |
double | myEndDegreesMin |
bool | myEndDegreesSet |
ArCallbackList | myFailedConnectCBList |
bool | myFlipped |
bool | myFlippedSet |
bool | myHaveSensorPose |
std::set< int > | myIgnoreReadings |
double | myIncrement |
std::string | myIncrementChoice |
double | myIncrementChoiceDouble |
std::map< std::string, double > | myIncrementChoices |
bool | myIncrementChoiceSet |
std::list< std::string > | myIncrementChoicesList |
std::string | myIncrementChoicesString |
double | myIncrementMax |
double | myIncrementMin |
bool | myIncrementSet |
ArLog::LogLevel | myInfoLogLevel |
int | myLaserNumber |
ArTime | myLastReading |
bool | myMaxRangeSet |
bool | myPowerControlled |
bool | myPowerControlledSet |
int | myReadingCount |
int | myReadingCurrentCount |
std::string | myReflectorBitsChoice |
std::list< std::string > | myReflectorBitsChoices |
bool | myReflectorBitsChoiceSet |
std::string | myReflectorBitsChoicesString |
bool | myRobotRunningAndConnected |
ArPose | mySensorPose |
double | mySensorZ |
double | myStartDegrees |
double | myStartDegreesMax |
double | myStartDegreesMin |
bool | myStartDegreesSet |
std::string | myStartingBaudChoice |
std::list< std::string > | myStartingBaudChoices |
bool | myStartingBaudChoiceSet |
std::string | myStartingBaudChoicesString |
time_t | myTimeLastReading |
double | myTimeoutSeconds |
std::string | myUnitsChoice |
std::list< std::string > | myUnitsChoices |
bool | myUnitsChoiceSet |
std::string | myUnitsChoicesString |
![]() | |
ArRetFunctor1C< void *, ArRangeDeviceThreaded, void * > | myRunThreadCB |
ArFunctorASyncTask | myTask |
![]() | |
std::list< ArSensorReading * > * | myAdjustedRawReadings |
std::vector< ArSensorReading > | myAdjustedRawReadingsVector |
ArRangeBuffer | myCumulativeBuffer |
ArDrawingData * | myCumulativeDrawingData |
ArRangeBuffer | myCurrentBuffer |
ArDrawingData * | myCurrentDrawingData |
ArMutex | myDeviceMutex |
ArFunctorC< ArRangeDevice > | myFilterCB |
bool | myIsLocationDependent |
double | myMaxDistToKeepCumulative |
double | myMaxDistToKeepCumulativeSquared |
double | myMaxInsertDistCumulative |
ArPose | myMaxInsertDistCumulativePose |
double | myMaxInsertDistCumulativeSquared |
unsigned int | myMaxRange |
int | myMaxSecondsToKeepCumulative |
int | myMaxSecondsToKeepCurrent |
double | myMinDistBetweenCumulative |
double | myMinDistBetweenCumulativeSquared |
double | myMinDistBetweenCurrent |
double | myMinDistBetweenCurrentSquared |
std::string | myName |
bool | myOwnCumulativeDrawingData |
bool | myOwnCurrentDrawingData |
std::list< ArSensorReading * > * | myRawReadings |
std::vector< ArSensorReading > | myRawReadingsVector |
ArRobot * | myRobot |
Static Protected Attributes | |
static bool | ourUseSimpleNaming = false |
Range device interface specialized for laser rangefinder sensors.
This class is a subclass of ArRangeDeviceThreaded meant for any planar scanning lasers, like the SICK lasers, Hokoyo URG series lasers, etc. Unlike other base classes this contains the superset of everything that may need to be configured on any of the sensors, even though some subclasses may only provide some of those parameters and features. (This allows the configuration interfaces and parameter files to work for any laser type.)
Normally, a program does not define or create any ArLaser objects directly. Instead, objects (device-specific subclasses of ArLaser) are created by ArLaserConnector::connectLasers() based on the robot parameter file and command line arguments, and the resulting ArLaser objects are stored in the ArRobot object Use ArRobot::getLaserMap() or ArRobot::findLaser() to access the ArLaser objects after calling ArLaserConnector::connectLasers().
The canSetDegrees(), canChooseRange(), canSetIncrement(), canChooseIncrement(), canChooseUnits(), canChooseReflectorBits(), canSetPowerControlled(), canChooseStartBaud(), and canChooseAutoBaud() and other similar functions are used by ArLaserConnector to test if a parameter is relevant to a specific laser type.
|
virtual |
Applies a transform to the buffers.
this is mostly useful for translating to/from local/global coordinates, but may have other uses. This is different from the class because it also transforms the raw readings.
trans | the transform to apply to the data |
doCumulative | whether to transform the cumulative buffer or not |
Reimplemented from ArRangeDevice.
|
inline |
Gets if you can choose autoBaud for the laser.
If so, call chooseAutoBaud with one of the choices in getAutoBaudChoices, and see what the choice was with getAutoBaudChoice.
|
inline |
Gets if you can choose the number of degrees.
If so, you can call chooseDegrees with one of the strings from getDegreesChoices, and get the degrees chosen as a string with getDegreesChoice or get the degrees chosen as a double with getDegreesChoiceDouble.
|
inline |
Gets if you can choose an increment.
If so, call chooseIncrement with one of the choices in getIncrementChoices, and get the choice as a string with getIncrementChoice or the choice as a string with getIncrementChoiceDouble.
|
inline |
Gets if you can choose reflectorBits for the laser.
If so, call chooseReflectorBits with one of the choices in getReflectorBitsChoices, and see what the choice was with getReflectorBitsChoice.
|
inline |
Gets if you can choose startingBaud for the laser.
If so, call chooseStartingBaud with one of the choices in getStartingBaudChoices, and see what the choice was with getStartingBaudChoice.
|
inline |
Gets if you can choose units for the laser.
If so, call chooseUnits with one of the choices in getUnitsChoices, and see what the choice was with getUnitsChoice.
|
inline |
Sees if this class can set the degrees with doubles or not.
Gets if this class can set the start and end degrees with doubles.
If so, you can use getStartDegreesMin and getStartDegreesMax to see the valid values that you can use with setStartDegrees (and see what was set with getStartDegrees), and getEndDegreesMin and getEndDegreesMax to see the valid values that you can use with setEndDegrees (and see what was set with getEndDegrees).
|
inline |
Gets if you can set an increment.
|
inline |
Gets if you can set powerControlled for the laser.
If so, call setPowerControlled to set if the power is being controlled or not, and see what the setting is with getPowerControlled.
bool ArLaser::chooseAutoBaud | ( | const char * | reflectorBits | ) |
Sets the reflectorBits to one of the choices from getAutoBaudChoices.
bool ArLaser::chooseDegrees | ( | const char * | range | ) |
Sets the range to one of the choices from getDegreesChoices.
bool ArLaser::chooseIncrement | ( | const char * | increment | ) |
Sets the increment to one of the choices from getIncrementChoices.
bool ArLaser::chooseReflectorBits | ( | const char * | reflectorBits | ) |
Sets the reflectorBits to one of the choices from getReflectorBitsChoices.
bool ArLaser::chooseStartingBaud | ( | const char * | reflectorBits | ) |
Sets the reflectorBits to one of the choices from getStartingBaudChoices.
bool ArLaser::chooseUnits | ( | const char * | units | ) |
Sets the units to one of the choices from getUnitsChoices.
|
inline |
Gets the reflectorBits that was chosen.
|
inline |
Gets the list of reflectorBits choices.
|
inline |
Gets a string with the list of reflectorBits choices seperated by |s.
|
virtual |
Gets the number of seconds without a response until connection assumed lost.
Gets the time (miliseconds) to go without response from the laser until it is assumed that the connection with the laser has been broken and the disconnect on error events will happen.
If 0, then the timeout is disabled.
If there is no robot then there is a straightforward check of last reading time against this value. If there is a robot then it will not start the check until the laser is running and connected.
|
inline |
Gets the range that was chosen.
|
inline |
Gets the range that was chosen as a double.
|
inline |
Gets the list of range choices.
|
inline |
Gets the map of degrees choices to what they mean.
This is mostly for the simulated laser
|
inline |
Gets a string with the list of degrees choices seperated by |s.
|
inline |
|
inline |
Gets the maximum value for the end angle.
|
inline |
Gets the minimum value for the end angle.
|
inline |
Gets the increment.
|
inline |
Gets the increment that was chosen.
|
inline |
Gets the increment that was chosen as a double.
|
inline |
Gets the list of increment choices.
|
inline |
Gets the map of increment choices to what they mean.
This is mostly for the simulated laser
|
inline |
Gets a string with the list of increment choices seperated by |s.
|
inline |
Gets the increment maximum.
|
inline |
Gets the increment minimum.
|
inline |
Gets if the power is controlled.
|
inline |
Gets the reflectorBits that was chosen.
|
inline |
Gets the list of reflectorBits choices.
|
inline |
Gets a string with the list of reflectorBits choices seperated by |s.
|
inline |
|
inline |
Gets the maximum value for the start angle.
|
inline |
Gets the minimum value for the start angle.
|
inline |
Gets the reflectorBits that was chosen.
|
inline |
Gets the list of reflectorBits choices.
|
inline |
Gets a string with the list of reflectorBits choices seperated by |s.
|
inline |
Gets the units that was chosen.
|
inline |
Gets the list of units choices.
|
inline |
Gets a string with the list of units choices seperated by |s.
|
protected |
Allows setting the auto baud speed to one of a number of choices.
defaultAutoBaudChoice | Default auto baud choice. This should probably be the maximum reasonable reliable robust rate that the laser supports. The laser should autobaud up to this choice after it connects. |
autoBaudChoices | The available choices for auto baud |
|
protected |
Allows setting the degrees the laser uses to one of a number of choices.
Allows the choice of the laser degrees from one of a number of choices, only one of this and laserAllowSetDegrees should be used.
defaultDegreesChoice | The default degrees, this should be the largest value. |
degreesChoices | this is a mapping of std::strings to doubles, the strings should be the actual available choices, and the doubles should be the numerical representation... this is so the simulated laser can behave more easily like the real lasers... and because the original sick driver used words typed out (to make problems more obvious). |
|
protected |
Allows setting the increment to one of a number of choices.
Allows the choice of increment from a limited set of values, only one of this and laserAllowSetIncrement should be used.
defaultIncrementChoice | The default increment, this should be a reasonable value. |
incrementChoices | this is a mapping of std::strings to doubles, the strings should be the actual available choices, and the doubles should be the numerical representation... this is so the simulated laser can behave more easily like the real lasers... and because the original sick driver used words typed out (to make problems more obvious). |
|
protected |
Allows setting the reflector bits the laser will use to one of a number of choices.
defaultReflectorBitsChoice | The default choice for reflector bits, should be a reasonable value. |
reflectorBitsChoices | The possible choices for reflector bits |
|
protected |
Allows setting the degrees the laser uses to anything in a range.
This allows the setting of the degrees the laser will use from a range for both starting and ending degrees.
Only one of this and laserAllowDegreesChoices should be used.
defaultStartDegrees | The default start degrees to use, this default should probably be for the max range. |
startDegreesMin | The minimum value for start degrees |
startDegreesMax | The maximum value for start degrees |
defaultEndDegrees | The default end degrees to use, this default should probably be for the max range. |
endDegreesMin | The minimum value for end degrees |
endDegreesMax | The maximum value for end degrees |
|
protected |
Allows setting the increment the laser uses to anything in a range.
Allows the choice of increment from a range, only one of this and laserAllowIncrementChoices should be used.
defaultIncrement | The default increment to use, this default should be a reasonable value. |
incrementMin | The minimum value for the increment |
incrementMax | The maximum value for the increment |
|
protected |
Allows setting if the power is controlled or not.
Allows settings of whether the power can be controlled or not.
This is mostly for devices that respond differently at power up than they do if they are already on (ie the lms2xx where it doesn't respond at all while powering up). If the communication is the same either way, you can just not set this.
defaultPowerControlled | The default value for power controlled. |
|
protected |
Allows setting the starting baud to one of a number of choices.
defaultStartingBaudChoice | Default starting baud choice. This should probably stay the same as what the sensor ships with. |
startingBaudChoices | The available choices for starting baud |
|
protected |
Allows setting the units the laser will use to one of a number of choices.
defaultUnitsChoice | This is the default units choice, it should be a reasonable value. |
unitsChoices | The possible choices for units. |
|
protected |
Returns if the laser has lost connection so that the subclass can do something appropriate.
This will check if the laser has lost connection.
If there is no robot it is a straightforward check of last reading time against getConnectionTimeoutSeconds. If there is a robot then it will not start the check until the laser is running and connected.
|
inlinevirtual |
Call the laser can implement to make sure the parameters are all okay or set the maximum range (based on the params)
The base laser should make sure all the parameters make sense according to what was set up as allowed.
This is here for two purposes. The first is to check for parameters that aren't valid because of something the base class can't check for. The second is to recalculate whatever the maximum range of the sensor is based on those settings, and call setAbsoluteMaxRange if the maximum range has changed based on the settings.
This is strictly an internal call, mostly for the simulated laser so that it can more closely match the real laser on complicated things like the LMS2xx where the settings for the units and bits affect what the maximum range is.
|
protected |
Converts the raw readings into the buffers (needs to be called by subclasses)
Filter readings, moving them from the raw current buffer to filtered current buffer (see ArRangeDevice), and then also to the cumulative buffer.
This must be called for the laser subclass to work right.
This also calls the reading callbacks.
|
protectedvirtual |
Called when the lasers name is set.
This can be used to set the name on mutexes and such to match the laser's new name.
|
virtual |
Sets the numter of seconds without a response until connection assumed lost.
Sets the time to go without a response from the laser until it is assumed that the connection with the laser has been broken and the disconnect on error events will happen.
If there is no robot then there is a straightforward check of last reading time against this value. If there is a robot then it will not start the check until the laser is running and connected.
seconds | if 0 or less then the connection timeout feature will be disabled, otherwise disconnect on error will be triggered after this number of miliseconds... |
bool ArLaser::setEndDegrees | ( | double | endDegrees | ) |
Sets the end angle, it must be between getEndDegreesMin and getEndDegreesMax.
bool ArLaser::setIncrement | ( | double | increment | ) |
Sets the increment.
bool ArLaser::setPowerControlled | ( | bool | powerControlled | ) |
Sets if the power is controlled.
bool ArLaser::setStartDegrees | ( | double | startDegrees | ) |
Sets the start angle, it must be between getStartDegreesMin and getStartDegreesMax.