This software driver implements the communications (and some rudimentary control) for ActivMedia robotic bases (Pioneer DX/AT, PeopleBot, etc).
There is implemented access to robot odometry, ticks counts, velocities, battery charge status, and sonar readings, as well as basic velocity control.
It is required to check MRPT_BUILD_ARIA in the cmake configuration to enable this class to work properly.
See also the application "rawlog-grabber" for a ready-to-use application to gather data from the robot base. Through that "common sensor interface", this object can collect these kinds of observations:
To use this class out of rawlog-grabber, "initialize" must be called to connect to the robot. Before that, set the serial port with setSerialPortConfig.
Example .ini block for rawlog-grabber (format used in "loadConfig"):
Definition at line 57 of file CActivMediaRobotBase.h.
#include <mrpt/hwdrivers/CActivMediaRobotBase.h>
Classes | |
struct | TRobotDescription |
A structure describing the robot. More... | |
Public Types | |
enum | TSensorState { ssInitializing = 0 , ssWorking , ssError } |
The current state of the sensor. More... | |
typedef std::multimap< mrpt::system::TTimeStamp, mrpt::utils::CSerializablePtr > | TListObservations |
typedef std::pair< mrpt::system::TTimeStamp, mrpt::utils::CSerializablePtr > | TListObsPair |
Public Member Functions | |
void | initialize () |
Connects to the robot. More... | |
CActivMediaRobotBase () | |
Constructor. More... | |
virtual | ~CActivMediaRobotBase () |
Destructor: turns off communications. More... | |
void | setSerialPortConfig (const std::string &portName, int portBaudRate) |
Manually sets the serial port configuration. More... | |
std::string | getSerialPort () const |
Returns the current value of the serial port. More... | |
int | getSerialPortBaudRate () const |
Returns the current value of the serial port baudrate. More... | |
void | doProcess () |
Collect odometry readings and put them in the "observations" queue: DO NOT call this normally, it's useful only for the application rawloggrabber. More... | |
void | changeOdometry (const mrpt::poses::CPose2D &newOdometry) |
Change the current robot odometry pose. More... | |
void | getOdometry (poses::CPose2D &out_odom) |
Get the current robot's odometry. More... | |
void | getOdometryFull (poses::CPose2D &out_odom, double &out_lin_vel, double &out_ang_vel, int64_t &out_left_encoder_ticks, int64_t &out_right_encoder_ticks) |
Get the current robot's odometry. More... | |
void | getOdometryIncrement (poses::CPose2D &out_incr_odom, double &out_lin_vel, double &out_ang_vel, int64_t &out_incr_left_encoder_ticks, int64_t &out_incr_right_encoder_ticks) |
Get the robot's odometry increment since the last call to this method (the first time the increments are always fixed to zero). More... | |
void | getSonarsReadings (bool &thereIsObservation, mrpt::obs::CObservationRange &obs) |
Get the readings from the sonars, only if the observations are new. More... | |
void | getBatteryCharge (double &out_batery_volts) |
Get the robot battery charge - normalized to 12V. More... | |
void | getRealBatteryCharge (double &out_batery_volts) |
Get the robot real battery charge. More... | |
void | setVelocities (const double lin_vel, const double ang_vel) |
Set the robot linear and angular velocities. More... | |
void | enableSonars () |
Enable sonars. More... | |
void | disableSonars () |
Disable sonars. More... | |
void | getBumpers (vector_bool &bumper_state) |
Get state of bumpers: at output, the vector will be resized to the number of bumpers, and elements with "true" means bumper is pressed. More... | |
void | getRobotInformation (TRobotDescription &info) |
Get information about the robot and its sensors. More... | |
void | enableJoystickControl (bool enable=true) |
Enable/disable manual control of the robot with a Joystick. More... | |
bool | isJoystickControlEnabled () const |
Get state of manual control with a joystick. More... | |
void | DisableMotors () |
Disable motors but keeps the connection with ARIA. More... | |
void | EnableMotors () |
Enable motors after a call to DisableMotors() More... | |
bool | areMotorsEnabled () const |
Get the motors state. More... | |
virtual const mrpt::hwdrivers::TSensorClassId * | GetRuntimeClass () const =0 |
TSensorState | getState () const |
The current state of the sensor More... | |
double | getProcessRate () const |
std::string | getSensorLabel () const |
void | setSensorLabel (const std::string &sensorLabel) |
void | enableVerbose (bool enabled=true) |
Enable or disable extra debug info dumped to std::cout during sensor operation. More... | |
bool | isVerboseEnabled () const |
void | loadConfig (const mrpt::utils::CConfigFileBase &configSource, const std::string §ion) |
Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific". More... | |
void | getObservations (TListObservations &lstObjects) |
Returns a list of enqueued objects, emptying it (thread-safe). More... | |
virtual void | setPathForExternalImages (const std::string &directory) |
Set the path where to save off-rawlog image files (will be ignored in those sensors where this is not applicable). More... | |
void | setExternalImageFormat (const std::string &ext) |
Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg". More... | |
void | setExternalImageJPEGQuality (const unsigned int quality) |
The quality of JPEG compression, when external images is enabled and the format is "jpg". More... | |
unsigned int | getExternalImageJPEGQuality () const |
Static Public Member Functions | |
static void | registerClass (const TSensorClassId *pNewClass) |
Register a class into the internal list of "CGenericSensor" descendents. More... | |
static CGenericSensor * | createSensor (const std::string &className) |
Creates a sensor by a name of the class. More... | |
static CGenericSensorPtr | createSensorPtr (const std::string &className) |
Just like createSensor, but returning a smart pointer to the newly created sensor object. More... | |
Protected Member Functions | |
void | disconnectAndDisableMotors () |
void | connectAndEnableMotors () |
void | loadConfig_sensorSpecific (const mrpt::utils::CConfigFileBase &configSource, const std::string &iniSection) |
See the class documentation at the top for expected parameters. More... | |
void | appendObservations (const std::vector< mrpt::utils::CSerializablePtr > &obj) |
This method must be called by derived classes to enqueue a new observation in the list to be returned by getObservations. More... | |
void | appendObservation (const mrpt::utils::CSerializablePtr &obj) |
Like appendObservations() but for just one observation. More... | |
Protected Attributes | |
std::string | m_com_port |
The serial port name to use for communications (COM1, ttyS1,...) More... | |
int | m_robotBaud |
The bauds for ARIA communications to the robot. More... | |
bool | m_firstIncreOdometry |
Used in getOdometryIncrement. More... | |
bool | m_enableSonars |
void * | m_robot |
void * | m_sonarDev |
void * | m_simpleConnector |
The connection to the robot. More... | |
unsigned int | m_lastTimeSonars |
bool | m_enableJoyControl |
For use with rawlog-grabber. More... | |
float | m_joy_max_v |
float | m_joy_max_w |
CJoystick | m_joystick |
The joystick opened at first usage. More... | |
mrpt::system::TTimeStamp | m_last_do_process |
double | m_capture_rate |
In Hz, the rate at which sonars & odometry are gathered (default=10Hz) More... | |
size_t | m_grab_decimation_counter |
Used when "m_grab_decimation" is enabled. More... | |
TSensorState | m_state |
bool | m_verbose |
std::string | m_path_for_external_images |
The path where to save off-rawlog images: empty means save images embedded in the rawlog. More... | |
std::string | m_external_images_format |
The extension ("jpg","gif","png",...) that determines the format of images saved externally. More... | |
unsigned int | m_external_images_jpeg_quality |
For JPEG images, the quality (default=95%). More... | |
Common settings to any sensor, loaded in "loadConfig" | |
double | m_process_rate |
See CGenericSensor. More... | |
size_t | m_max_queue_len |
See CGenericSensor. More... | |
size_t | m_grab_decimation |
If set to N>=2, only 1 out of N observations will be saved to m_objList. More... | |
std::string | m_sensorLabel |
See CGenericSensor. More... | |
Private Attributes | |
synch::CCriticalSection | m_csObjList |
The critical section for m_objList. More... | |
TListObservations | m_objList |
The queue of objects to be returned by getObservations. More... | |
Static Private Attributes | |
static std::map< std::string, const TSensorClassId * > | m_knownClasses |
Used in registerClass. More... | |
|
inherited |
Definition at line 68 of file CGenericSensor.h.
|
inherited |
Definition at line 69 of file CGenericSensor.h.
|
inherited |
The current state of the sensor.
Enumerator | |
---|---|
ssInitializing | |
ssWorking | |
ssError |
Definition at line 74 of file CGenericSensor.h.
mrpt::hwdrivers::CActivMediaRobotBase::CActivMediaRobotBase | ( | ) |
Constructor.
|
virtual |
Destructor: turns off communications.
|
inlineprotectedinherited |
Like appendObservations() but for just one observation.
Definition at line 146 of file CGenericSensor.h.
|
protectedinherited |
This method must be called by derived classes to enqueue a new observation in the list to be returned by getObservations.
Passed objects must be created in dynamic memory and a smart pointer passed. Example of creation:
If several observations are passed at once in the vector, they'll be considered as a block regarding the grabbing decimation factor.
bool mrpt::hwdrivers::CActivMediaRobotBase::areMotorsEnabled | ( | ) | const |
Get the motors state.
void mrpt::hwdrivers::CActivMediaRobotBase::changeOdometry | ( | const mrpt::poses::CPose2D & | newOdometry | ) |
Change the current robot odometry pose.
|
protected |
|
staticinherited |
Creates a sensor by a name of the class.
Typically the user may want to create a smart pointer around the returned pointer, whis is made with:
|
inlinestaticinherited |
Just like createSensor, but returning a smart pointer to the newly created sensor object.
Definition at line 179 of file CGenericSensor.h.
void mrpt::hwdrivers::CActivMediaRobotBase::DisableMotors | ( | ) |
Disable motors but keeps the connection with ARIA.
void mrpt::hwdrivers::CActivMediaRobotBase::disableSonars | ( | ) |
Disable sonars.
|
protected |
|
virtual |
Collect odometry readings and put them in the "observations" queue: DO NOT call this normally, it's useful only for the application rawloggrabber.
Implements mrpt::hwdrivers::CGenericSensor.
|
inline |
Enable/disable manual control of the robot with a Joystick.
Definition at line 168 of file CActivMediaRobotBase.h.
void mrpt::hwdrivers::CActivMediaRobotBase::EnableMotors | ( | ) |
Enable motors after a call to DisableMotors()
void mrpt::hwdrivers::CActivMediaRobotBase::enableSonars | ( | ) |
Enable sonars.
|
inlineinherited |
Enable or disable extra debug info dumped to std::cout during sensor operation.
Default: disabled unless the environment variable "MRPT_HWDRIVERS_VERBOSE" is set to "1" during object creation.
Definition at line 92 of file CGenericSensor.h.
void mrpt::hwdrivers::CActivMediaRobotBase::getBatteryCharge | ( | double & | out_batery_volts | ) |
Get the robot battery charge - normalized to 12V.
void mrpt::hwdrivers::CActivMediaRobotBase::getBumpers | ( | vector_bool & | bumper_state | ) |
Get state of bumpers: at output, the vector will be resized to the number of bumpers, and elements with "true" means bumper is pressed.
|
inlineinherited |
Definition at line 233 of file CGenericSensor.h.
|
inherited |
Returns a list of enqueued objects, emptying it (thread-safe).
The objects must be freed by the invoker.
void mrpt::hwdrivers::CActivMediaRobotBase::getOdometry | ( | poses::CPose2D & | out_odom | ) |
Get the current robot's odometry.
out_odom | The odometry will be returned here. |
void mrpt::hwdrivers::CActivMediaRobotBase::getOdometryFull | ( | poses::CPose2D & | out_odom, |
double & | out_lin_vel, | ||
double & | out_ang_vel, | ||
int64_t & | out_left_encoder_ticks, | ||
int64_t & | out_right_encoder_ticks | ||
) |
Get the current robot's odometry.
out_odom | The odometry will be returned here. |
out_lin_vel | The linear speed, in m/s, positive is forward. |
out_ang_vel | The angular speed, in rad/s, positive is anticlockwise. |
out_left_encoder_ticks | The current overall count of ticks for the left wheel encoder. |
out_right_encoder_ticks | The current overall count of ticks for the right wheel encoder. |
void mrpt::hwdrivers::CActivMediaRobotBase::getOdometryIncrement | ( | poses::CPose2D & | out_incr_odom, |
double & | out_lin_vel, | ||
double & | out_ang_vel, | ||
int64_t & | out_incr_left_encoder_ticks, | ||
int64_t & | out_incr_right_encoder_ticks | ||
) |
Get the robot's odometry increment since the last call to this method (the first time the increments are always fixed to zero).
out_odom | The odometry increment. |
out_lin_vel | The current linear speed, in m/s, positive is forward (Absolute values, not increments) |
out_ang_vel | The angular speed, in rad/s, positive is anticlockwise (Absolute values, not increments). |
out_left_encoder_ticks | The increment in ticks for the left wheel encoder. |
out_right_encoder_ticks | The increment in ticks for the right wheel encoder. |
|
inlineinherited |
Definition at line 84 of file CGenericSensor.h.
void mrpt::hwdrivers::CActivMediaRobotBase::getRealBatteryCharge | ( | double & | out_batery_volts | ) |
Get the robot real battery charge.
void mrpt::hwdrivers::CActivMediaRobotBase::getRobotInformation | ( | TRobotDescription & | info | ) |
Get information about the robot and its sensors.
|
pure virtualinherited |
|
inlineinherited |
Definition at line 86 of file CGenericSensor.h.
|
inline |
Returns the current value of the serial port.
Definition at line 92 of file CActivMediaRobotBase.h.
|
inline |
Returns the current value of the serial port baudrate.
Definition at line 95 of file CActivMediaRobotBase.h.
void mrpt::hwdrivers::CActivMediaRobotBase::getSonarsReadings | ( | bool & | thereIsObservation, |
mrpt::obs::CObservationRange & | obs | ||
) |
Get the readings from the sonars, only if the observations are new.
|
inlineinherited |
The current state of the sensor
Definition at line 82 of file CGenericSensor.h.
|
virtual |
Connects to the robot.
Reimplemented from mrpt::hwdrivers::CGenericSensor.
|
inline |
Get state of manual control with a joystick.
Definition at line 171 of file CActivMediaRobotBase.h.
|
inlineinherited |
Definition at line 93 of file CGenericSensor.h.
|
inherited |
Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific".
This | method throws an exception with a descriptive message if some critical parameter is missing or has an invalid value. |
|
protectedvirtual |
See the class documentation at the top for expected parameters.
Implements mrpt::hwdrivers::CGenericSensor.
|
staticinherited |
Register a class into the internal list of "CGenericSensor" descendents.
Used internally in the macros DEFINE_GENERIC_SENSOR, etc...
Can be used as "CGenericSensor::registerClass( SENSOR_CLASS_ID(CMySensor) );" if building custom sensors outside mrpt libraries in user code.
Referenced by mrpt::hwdrivers::CGenericSensor::CLASSINIT_GENERIC_SENSOR::CLASSINIT_GENERIC_SENSOR().
|
inlineinherited |
Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg".
Definition at line 225 of file CGenericSensor.h.
|
inlineinherited |
The quality of JPEG compression, when external images is enabled and the format is "jpg".
Definition at line 230 of file CGenericSensor.h.
|
inlinevirtualinherited |
Set the path where to save off-rawlog image files (will be ignored in those sensors where this is not applicable).
An empty string (the default value at construction) means to save images embedded in the rawlog, instead of on separate files.
std::exception | If the directory doesn't exists and cannot be created. |
Reimplemented in mrpt::hwdrivers::CCameraSensor, mrpt::hwdrivers::CKinect, mrpt::hwdrivers::COpenNI2_RGBD360, mrpt::hwdrivers::COpenNI2Sensor, and mrpt::hwdrivers::CSwissRanger3DCamera.
Definition at line 216 of file CGenericSensor.h.
References MRPT_UNUSED_PARAM.
|
inlineinherited |
Definition at line 87 of file CGenericSensor.h.
void mrpt::hwdrivers::CActivMediaRobotBase::setSerialPortConfig | ( | const std::string & | portName, |
int | portBaudRate | ||
) |
Manually sets the serial port configuration.
portName | Examples: Windows: "COM1" , Linux: "/dev/ttyUSB0" |
portBaudRate | 9600, 115200, etc.. |
void mrpt::hwdrivers::CActivMediaRobotBase::setVelocities | ( | const double | lin_vel, |
const double | ang_vel | ||
) |
Set the robot linear and angular velocities.
lin_vel | Linear speed, in m/s. |
ang_vel | Angular speed, in rad/s. |
|
protected |
In Hz, the rate at which sonars & odometry are gathered (default=10Hz)
Definition at line 202 of file CActivMediaRobotBase.h.
|
protected |
The serial port name to use for communications (COM1, ttyS1,...)
Definition at line 183 of file CActivMediaRobotBase.h.
|
privateinherited |
The critical section for m_objList.
Definition at line 104 of file CGenericSensor.h.
|
protected |
For use with rawlog-grabber.
Definition at line 196 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 187 of file CActivMediaRobotBase.h.
|
protectedinherited |
The extension ("jpg","gif","png",...) that determines the format of images saved externally.
Definition at line 130 of file CGenericSensor.h.
|
protectedinherited |
For JPEG images, the quality (default=95%).
Definition at line 131 of file CGenericSensor.h.
|
protected |
Used in getOdometryIncrement.
Definition at line 186 of file CActivMediaRobotBase.h.
|
protectedinherited |
If set to N>=2, only 1 out of N observations will be saved to m_objList.
Definition at line 117 of file CGenericSensor.h.
|
protectedinherited |
Used when "m_grab_decimation" is enabled.
Definition at line 122 of file CGenericSensor.h.
|
protected |
Definition at line 197 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 197 of file CActivMediaRobotBase.h.
|
protected |
The joystick opened at first usage.
Definition at line 199 of file CActivMediaRobotBase.h.
|
staticprivateinherited |
Used in registerClass.
Definition at line 108 of file CGenericSensor.h.
|
protected |
Definition at line 201 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 194 of file CActivMediaRobotBase.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 116 of file CGenericSensor.h.
|
privateinherited |
The queue of objects to be returned by getObservations.
Definition at line 105 of file CGenericSensor.h.
|
protectedinherited |
The path where to save off-rawlog images: empty means save images embedded in the rawlog.
Definition at line 129 of file CGenericSensor.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 115 of file CGenericSensor.h.
|
protected |
Definition at line 190 of file CActivMediaRobotBase.h.
|
protected |
The bauds for ARIA communications to the robot.
Definition at line 184 of file CActivMediaRobotBase.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 118 of file CGenericSensor.h.
|
protected |
The connection to the robot.
Definition at line 192 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 191 of file CActivMediaRobotBase.h.
|
protectedinherited |
Definition at line 124 of file CGenericSensor.h.
|
protectedinherited |
Definition at line 125 of file CGenericSensor.h.
Page generated by Doxygen 1.9.2 for MRPT 1.4.0 SVN: at Mon Sep 20 00:21:40 UTC 2021 |