Main MRPT website > C++ reference
MRPT logo
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
mrpt::hwdrivers::CActivMediaRobotBase Class Reference

Detailed Description

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"):

  PARAMETERS IN THE ".INI"-LIKE CONFIGURATION STRINGS:
 -------------------------------------------------------
   [supplied_section_name]
    robotPort_WIN               = COM1
    robotPort_LIN               = /dev/ttyUSB0
    robotBaud                   = 115200
    enableSonars         = 0     ; 0:Disabled (default), 1: Enabled
    capture_rate         = 10.0  ; In Hz, the rate at which sonars & odometry are gathered (default=10Hz)

    joystick_control            = 0             ; 0:Disabled (default), 1: Enabled
    joystick_max_v              = 0.1   ; Max joystick control speed (m/s)
           joystick_max_w_degps = 20    ; Max joystick control speed (deg/s)

#include <mrpt/hwdrivers/CActivMediaRobotBase.h>

Inheritance diagram for mrpt::hwdrivers::CActivMediaRobotBase:
Inheritance graph
[legend]

List of all members.

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.
 CActivMediaRobotBase ()
 Constructor.
virtual ~CActivMediaRobotBase ()
 Destructor: turns off communications.
void setSerialPortConfig (const std::string &portName, int portBaudRate)
 Manually sets the serial port configuration.
std::string getSerialPort () const
 Returns the current value of the serial port.
int getSerialPortBaudRate () const
 Returns the current value of the serial port baudrate.
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.
void changeOdometry (const mrpt::poses::CPose2D &newOdometry)
 Change the current robot odometry pose.
void getOdometry (poses::CPose2D &out_odom)
 Get the current robot's odometry.
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.
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).
void getSonarsReadings (bool &thereIsObservation, mrpt::slam::CObservationRange &obs)
 Get the readings from the sonars, only if the observations are new.
void getBatteryCharge (double &out_batery_volts)
 Get the robot battery charge.
void setVelocities (const double lin_vel, const double ang_vel)
 Set the robot linear and angular velocities.
void enableSonars ()
 Enable sonars.
void disableSonars ()
 Disable sonars.
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.
void getRobotInformation (TRobotDescription &info)
 Get information about the robot and its sensors.
void enableJoystickControl (bool enable=true)
 Enable/disable manual control of the robot with a Joystick.
bool isJoystickControlEnabled () const
 Get state of manual control with a joystick.
virtual const
mrpt::hwdrivers::TSensorClassId
GetRuntimeClass () const =0
TSensorState getState () const
 The current state of the sensor.
double getProcessRate () const
std::string getSensorLabel () const
void setSensorLabel (const std::string &sensorLabel)
void loadConfig (const mrpt::utils::CConfigFileBase &configSource, const std::string &section)
 Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"

Exceptions:
Thismethod throws an exception with a descriptive message if some critical parameter is missing or has an invalid value.

void getObservations (TListObservations &lstObjects)
 Returns a list of enqueued objects, emptying it (thread-safe).
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).
void setExternalImageFormat (const std::string &ext)
 Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg".
void setExternalImageJPEGQuality (const unsigned int quality)
 The quality of JPEG compression, when external images is enabled and the format is "jpg".
unsigned int getExternalImageJPEGQuality () const

Static Public Member Functions

static void registerClass (const TSensorClassId *pNewClass)
 Register a class into the internal list of "CGenericSensor" descendents.
static CGenericSensorcreateSensor (const std::string &className)
 Creates a sensor by a name of the class.
static CGenericSensorPtr createSensorPtr (const std::string &className)
 Just like createSensor, but returning a smart pointer to the newly created sensor object.

Protected Member Functions

void disconnectAndDisableMotors ()
void connectAndEnableMotors ()
void loadConfig_sensorSpecific (const mrpt::utils::CConfigFileBase &configSource, const std::string &iniSection)
 Loads specific configuration for the device from a given source of configuration parameters, for example, an ".ini" file, loading from the section "[iniSection]" (see utils::CConfigFileBase and derived classes) See hwdrivers::CActivMediaRobotBase for the possible parameters.
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.
void appendObservation (const mrpt::utils::CSerializablePtr &obj)
 Like appendObservations() but for just one observation.

Protected Attributes

std::string m_com_port
 The serial port name to use for communications (COM1, ttyS1,...)
int m_robotBaud
 The bauds for ARIA communications to the robot.
bool m_firstIncreOdometry
 Used in getOdometryIncrement.
bool m_enableSonars
void * m_robot
void * m_sonarDev
void * m_simpleConnector
 The connection to the robot.
unsigned int m_lastTimeSonars
bool m_enableJoyControl
 For use with rawlog-grabber.
float m_joy_max_v
float m_joy_max_w
CJoystick m_joystick
 The joystick opened at first usage.
mrpt::system::TTimeStamp m_last_do_process
double m_capture_rate
 In Hz, the rate at which sonars & odometry are gathered (default=10Hz)
size_t m_grab_decimation_counter
 Used when "m_grab_decimation" is enabled.
TSensorState m_state
std::string m_path_for_external_images
 The path where to save off-rawlog images: empty means save images embedded in the rawlog.
std::string m_external_images_format
 The extension ("jpg","gif","png",...) that determines the format of images saved externally.
unsigned int m_external_images_jpeg_quality
 For JPEG images, the quality (default=95%).
Common settings to any sensor, loaded in "loadConfig"
double m_process_rate
 See CGenericSensor.
size_t m_max_queue_len
 See CGenericSensor.
size_t m_grab_decimation
 If set to N>=2, only 1 out of N observations will be saved to m_objList.
std::string m_sensorLabel
 See CGenericSensor.

Member Typedef Documentation

Definition at line 84 of file CGenericSensor.h.

Definition at line 85 of file CGenericSensor.h.


Member Enumeration Documentation

The current state of the sensor.

See also:
CGenericSensor::getState
Enumerator:
ssInitializing 
ssWorking 
ssError 

Definition at line 90 of file CGenericSensor.h.


Constructor & Destructor Documentation

mrpt::hwdrivers::CActivMediaRobotBase::CActivMediaRobotBase ( )

Constructor.

virtual mrpt::hwdrivers::CActivMediaRobotBase::~CActivMediaRobotBase ( ) [virtual]

Destructor: turns off communications.


Member Function Documentation

void mrpt::hwdrivers::CGenericSensor::appendObservation ( const mrpt::utils::CSerializablePtr obj) [inline, protected, inherited]

Like appendObservations() but for just one observation.

Definition at line 155 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::appendObservations ( const std::vector< mrpt::utils::CSerializablePtr > &  obj) [protected, inherited]

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:

                                CObservationGPSPtr  o = CObservationGPSPtr( new CObservationGPS() );
                                o-> .... // Set data
                                appendObservation(o);

If several observations are passed at once in the vector, they'll be considered as a block regarding the grabbing decimation factor.

void mrpt::hwdrivers::CActivMediaRobotBase::changeOdometry ( const mrpt::poses::CPose2D newOdometry)

Change the current robot odometry pose.

void mrpt::hwdrivers::CActivMediaRobotBase::connectAndEnableMotors ( ) [protected]
static CGenericSensor* mrpt::hwdrivers::CGenericSensor::createSensor ( const std::string className) [static, inherited]

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:

Returns:
A pointer to a new class, or NULL if class name is unknown.
static CGenericSensorPtr mrpt::hwdrivers::CGenericSensor::createSensorPtr ( const std::string className) [inline, static, inherited]

Just like createSensor, but returning a smart pointer to the newly created sensor object.

Definition at line 188 of file CGenericSensor.h.

void mrpt::hwdrivers::CActivMediaRobotBase::disableSonars ( )

Disable sonars.

void mrpt::hwdrivers::CActivMediaRobotBase::disconnectAndDisableMotors ( ) [protected]
void mrpt::hwdrivers::CActivMediaRobotBase::doProcess ( ) [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.

void mrpt::hwdrivers::CActivMediaRobotBase::enableJoystickControl ( bool  enable = true) [inline]

Enable/disable manual control of the robot with a Joystick.

Definition at line 185 of file CActivMediaRobotBase.h.

void mrpt::hwdrivers::CActivMediaRobotBase::enableSonars ( )

Enable sonars.

void mrpt::hwdrivers::CActivMediaRobotBase::getBatteryCharge ( double &  out_batery_volts)

Get the robot battery charge.

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.

unsigned int mrpt::hwdrivers::CGenericSensor::getExternalImageJPEGQuality ( ) const [inline, inherited]

Definition at line 241 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::getObservations ( TListObservations lstObjects) [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.

Parameters:
out_odomThe odometry will be returned here.
See also:
getOdometryFull, getOdometryIncrement
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.

Parameters:
out_odomThe odometry will be returned here.
out_lin_velThe linear speed, in m/s, positive is forward.
out_ang_velThe angular speed, in rad/s, positive is anticlockwise.
out_left_encoder_ticksThe current overall count of ticks for the left wheel encoder.
out_right_encoder_ticksThe current overall count of ticks for the right wheel encoder.
See also:
getOdometry, getOdometryIncrement
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).

Parameters:
out_odomThe odometry increment.
out_lin_velThe current linear speed, in m/s, positive is forward (Absolute values, not increments)
out_ang_velThe angular speed, in rad/s, positive is anticlockwise (Absolute values, not increments).
out_left_encoder_ticksThe increment in ticks for the left wheel encoder.
out_right_encoder_ticksThe increment in ticks for the right wheel encoder.
See also:
getOdometry, getOdometryFull
double mrpt::hwdrivers::CGenericSensor::getProcessRate ( ) const [inline, inherited]

Definition at line 100 of file CGenericSensor.h.

void mrpt::hwdrivers::CActivMediaRobotBase::getRobotInformation ( TRobotDescription info)

Get information about the robot and its sensors.

virtual const mrpt::hwdrivers::TSensorClassId* mrpt::hwdrivers::CGenericSensor::GetRuntimeClass ( ) const [pure virtual, inherited]
std::string mrpt::hwdrivers::CGenericSensor::getSensorLabel ( ) const [inline, inherited]

Definition at line 102 of file CGenericSensor.h.

std::string mrpt::hwdrivers::CActivMediaRobotBase::getSerialPort ( ) const [inline]

Returns the current value of the serial port.

Definition at line 111 of file CActivMediaRobotBase.h.

int mrpt::hwdrivers::CActivMediaRobotBase::getSerialPortBaudRate ( ) const [inline]

Returns the current value of the serial port baudrate.

Definition at line 114 of file CActivMediaRobotBase.h.

void mrpt::hwdrivers::CActivMediaRobotBase::getSonarsReadings ( bool &  thereIsObservation,
mrpt::slam::CObservationRange obs 
)

Get the readings from the sonars, only if the observations are new.

TSensorState mrpt::hwdrivers::CGenericSensor::getState ( ) const [inline, inherited]

The current state of the sensor.

Definition at line 98 of file CGenericSensor.h.

void mrpt::hwdrivers::CActivMediaRobotBase::initialize ( ) [virtual]

Connects to the robot.

Reimplemented from mrpt::hwdrivers::CGenericSensor.

bool mrpt::hwdrivers::CActivMediaRobotBase::isJoystickControlEnabled ( ) const [inline]

Get state of manual control with a joystick.

Definition at line 188 of file CActivMediaRobotBase.h.

void mrpt::hwdrivers::CGenericSensor::loadConfig ( const mrpt::utils::CConfigFileBase configSource,
const std::string section 
) [inherited]

Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"

Exceptions:
Thismethod throws an exception with a descriptive message if some critical parameter is missing or has an invalid value.

void mrpt::hwdrivers::CActivMediaRobotBase::loadConfig_sensorSpecific ( const mrpt::utils::CConfigFileBase configSource,
const std::string iniSection 
) [protected, virtual]

Loads specific configuration for the device from a given source of configuration parameters, for example, an ".ini" file, loading from the section "[iniSection]" (see utils::CConfigFileBase and derived classes) See hwdrivers::CActivMediaRobotBase for the possible parameters.

See also:
setSerialPortConfig

Implements mrpt::hwdrivers::CGenericSensor.

static void mrpt::hwdrivers::CGenericSensor::registerClass ( const TSensorClassId pNewClass) [static, inherited]

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.

void mrpt::hwdrivers::CGenericSensor::setExternalImageFormat ( const std::string ext) [inline, inherited]

Set the extension ("jpg","gif","png",...) that determines the format of images saved externally The default is "jpg".

See also:
setPathForExternalImages, setExternalImageJPEGQuality

Definition at line 233 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::setExternalImageJPEGQuality ( const unsigned int  quality) [inline, inherited]

The quality of JPEG compression, when external images is enabled and the format is "jpg".

See also:
setExternalImageFormat

Definition at line 238 of file CGenericSensor.h.

virtual void mrpt::hwdrivers::CGenericSensor::setPathForExternalImages ( const std::string directory) [inline, virtual, inherited]

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.

Exceptions:
std::exceptionIf the directory doesn't exists and cannot be created.

Reimplemented in mrpt::hwdrivers::CKinect, mrpt::hwdrivers::CCameraSensor, and mrpt::hwdrivers::CSwissRanger3DCamera.

Definition at line 225 of file CGenericSensor.h.

void mrpt::hwdrivers::CGenericSensor::setSensorLabel ( const std::string sensorLabel) [inline, inherited]

Definition at line 103 of file CGenericSensor.h.

void mrpt::hwdrivers::CActivMediaRobotBase::setSerialPortConfig ( const std::string portName,
int  portBaudRate 
)

Manually sets the serial port configuration.

Parameters:
portNameExamples: Windows: "COM1" , Linux: "/dev/ttyUSB0"
portBaudRate9600, 115200, etc..
See also:
loadConfig
void mrpt::hwdrivers::CActivMediaRobotBase::setVelocities ( const double  lin_vel,
const double  ang_vel 
)

Set the robot linear and angular velocities.

Parameters:
lin_velLinear speed, in m/s.
ang_velAngular speed, in rad/s.

Member Data Documentation

In Hz, the rate at which sonars & odometry are gathered (default=10Hz)

Definition at line 209 of file CActivMediaRobotBase.h.

The serial port name to use for communications (COM1, ttyS1,...)

Definition at line 191 of file CActivMediaRobotBase.h.

For use with rawlog-grabber.

Definition at line 203 of file CActivMediaRobotBase.h.

Definition at line 195 of file CActivMediaRobotBase.h.

The extension ("jpg","gif","png",...) that determines the format of images saved externally.

See also:
setPathForExternalImages

Definition at line 139 of file CGenericSensor.h.

For JPEG images, the quality (default=95%).

Definition at line 140 of file CGenericSensor.h.

Used in getOdometryIncrement.

Definition at line 194 of file CActivMediaRobotBase.h.

If set to N>=2, only 1 out of N observations will be saved to m_objList.

Definition at line 127 of file CGenericSensor.h.

Used when "m_grab_decimation" is enabled.

Definition at line 132 of file CGenericSensor.h.

Definition at line 204 of file CActivMediaRobotBase.h.

Definition at line 204 of file CActivMediaRobotBase.h.

The joystick opened at first usage.

Definition at line 206 of file CActivMediaRobotBase.h.

Definition at line 208 of file CActivMediaRobotBase.h.

Definition at line 201 of file CActivMediaRobotBase.h.

size_t mrpt::hwdrivers::CGenericSensor::m_max_queue_len [protected, inherited]

See CGenericSensor.

Definition at line 126 of file CGenericSensor.h.

The path where to save off-rawlog images: empty means save images embedded in the rawlog.

Definition at line 138 of file CGenericSensor.h.

double mrpt::hwdrivers::CGenericSensor::m_process_rate [protected, inherited]

See CGenericSensor.

Definition at line 125 of file CGenericSensor.h.

Definition at line 197 of file CActivMediaRobotBase.h.

The bauds for ARIA communications to the robot.

Definition at line 192 of file CActivMediaRobotBase.h.

See CGenericSensor.

Definition at line 128 of file CGenericSensor.h.

The connection to the robot.

Definition at line 199 of file CActivMediaRobotBase.h.

Definition at line 198 of file CActivMediaRobotBase.h.

Definition at line 134 of file CGenericSensor.h.




Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011