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 76 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. | |||
| 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 §ion) | ||
Loads the generic settings common to any sensor (See CGenericSensor), then call to "loadConfig_sensorSpecific"
| |||
| 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 CGenericSensor * | createSensor (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. | |
|
inherited |
Definition at line 84 of file CGenericSensor.h.
|
inherited |
Definition at line 85 of file CGenericSensor.h.
|
inherited |
The current state of the sensor.
| Enumerator | |
|---|---|
| ssInitializing | |
| ssWorking | |
| ssError | |
Definition at line 90 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 155 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.
| 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 188 of file CGenericSensor.h.
| 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 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.
|
inlineinherited |
Definition at line 241 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 100 of file CGenericSensor.h.
| void mrpt::hwdrivers::CActivMediaRobotBase::getRobotInformation | ( | TRobotDescription & | info | ) |
Get information about the robot and its sensors.
|
pure virtualinherited |
|
inlineinherited |
Definition at line 102 of file CGenericSensor.h.
|
inline |
Returns the current value of the serial port.
Definition at line 111 of file CActivMediaRobotBase.h.
|
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.
|
inlineinherited |
The current state of the sensor.
Definition at line 98 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 188 of file CActivMediaRobotBase.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 |
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.
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 233 of file CGenericSensor.h.
|
inlineinherited |
The quality of JPEG compression, when external images is enabled and the format is "jpg".
Definition at line 238 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::CKinect, mrpt::hwdrivers::CCameraSensor, and mrpt::hwdrivers::CSwissRanger3DCamera.
Definition at line 225 of file CGenericSensor.h.
|
inlineinherited |
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.
| 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 209 of file CActivMediaRobotBase.h.
|
protected |
The serial port name to use for communications (COM1, ttyS1,...)
Definition at line 191 of file CActivMediaRobotBase.h.
|
protected |
For use with rawlog-grabber.
Definition at line 203 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 195 of file CActivMediaRobotBase.h.
|
protectedinherited |
The extension ("jpg","gif","png",...) that determines the format of images saved externally.
Definition at line 139 of file CGenericSensor.h.
|
protectedinherited |
For JPEG images, the quality (default=95%).
Definition at line 140 of file CGenericSensor.h.
|
protected |
Used in getOdometryIncrement.
Definition at line 194 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 127 of file CGenericSensor.h.
|
protectedinherited |
Used when "m_grab_decimation" is enabled.
Definition at line 132 of file CGenericSensor.h.
|
protected |
Definition at line 204 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 204 of file CActivMediaRobotBase.h.
|
protected |
The joystick opened at first usage.
Definition at line 206 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 208 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 201 of file CActivMediaRobotBase.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 126 of file CGenericSensor.h.
|
protectedinherited |
The path where to save off-rawlog images: empty means save images embedded in the rawlog.
Definition at line 138 of file CGenericSensor.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 125 of file CGenericSensor.h.
|
protected |
Definition at line 197 of file CActivMediaRobotBase.h.
|
protected |
The bauds for ARIA communications to the robot.
Definition at line 192 of file CActivMediaRobotBase.h.
|
protectedinherited |
See CGenericSensor.
Definition at line 128 of file CGenericSensor.h.
|
protected |
The connection to the robot.
Definition at line 199 of file CActivMediaRobotBase.h.
|
protected |
Definition at line 198 of file CActivMediaRobotBase.h.
|
protectedinherited |
Definition at line 134 of file CGenericSensor.h.
| Page generated by Doxygen 1.8.3 for MRPT 0.9.6 SVN: at Fri Feb 15 22:05:02 EST 2013 |