MRPT logo

mrpt::hwdrivers::CHokuyoURG Class Reference

This software driver implements the protocol SCIP-2.0 for interfacing HOKUYO URG and UTM laser scanners. More...

#include <mrpt/hwdrivers/CHokuyoURG.h>

Inheritance diagram for mrpt::hwdrivers::CHokuyoURG:

mrpt::hwdrivers::C2DRangeFinderAbstract mrpt::utils::CDebugOutputCapable mrpt::hwdrivers::CGenericSensor mrpt::utils::CUncopiable

List of all members.

Classes

struct  TSensorInfo
 Used in CHokuyoURG::displayVersionInfo. More...

Public Member Functions

 CHokuyoURG ()
 Constructor.
virtual ~CHokuyoURG ()
 Destructor: turns the laser off.
void doProcessSimple (bool &outThereIsObservation, mrpt::slam::CObservation2DRangeScan &outObservation, bool &hardwareError)
 Specific laser scanner "software drivers" must process here new data from the I/O stream, and, if a whole scan has arrived, return it.
void loadConfig (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::CHokuyoURG for the possible parameters.
bool turnOn ()
 Enables the scanning mode (which may depend on the specific laser device); this must be called before asking for observations to assure that the protocol has been initializated.
bool turnOff ()
 Disables the scanning mode (this can be used to turn the device in low energy mode, if available).
void purgeBuffers ()
 Empties the RX buffers of the serial port.

Public Attributes

std::string m_com_port
 If set to non-empty, the serial port will be attempted to be opened automatically when this class is first used to request data from the laser.

Protected Member Functions

bool checkCOMisOpen ()
 Returns true if there is a valid stream bound to the laser scanner, otherwise it first try to open the serial port "m_com_port".

Protected Attributes

TSensorInfo m_sensor_info
 The information gathered when the laser is first open.
bool m_I_am_owner_serial_port
uint32_t m_timeStartUI
 Time of the first data packet, for synchronization purposes.
mrpt::system::TTimeStamp m_timeStartTT
std::string m_sensorLabel

Private Member Functions

bool enableSCIP20 ()
 Enables the SCIP2.0 protocol (this must be called at the very begining!).
bool setHighBaudrate ()
 Passes to 115200bps bitrate.
bool switchLaserOn ()
 Switchs the laser on.
bool switchLaserOff ()
 Switchs the laser off.
bool setMotorSpeed (int motoSpeed_rpm)
 Changes the motor speed in rpm's (default 600rpm).
bool displayVersionInfo ()
 Ask to the device, and print to the debug stream, details about the firmware version,serial number,.
bool displaySensorInfo (CHokuyoURG::TSensorInfo *out_data=NULL)
 Ask to the device, and print to the debug stream, details about the sensor model.
bool startScanningMode ()
 Start the scanning mode, using parameters stored in the object (loaded from the .ini file) After this command the device will start to send scans until "switchLaserOff" is called.
void initialize ()
 Turns the laser on.
bool receiveResponse (const char *sentCmd_forEchoVerification, char &rcv_status0, char &rcv_status1, char *rcv_data, int &rcv_dataLength)
 Waits for a response from the device.
bool assureBufferHasBytes (const int &nDesiredBytes)
 Assures a minimum number of bytes in the input buffer, reading from the serial port only if required.

Private Attributes

int m_firstRange
 The first and last ranges to consider from the scan.
int m_lastRange
int m_motorSpeed_rpm
 The motor speed (default=600rpm).
poses::CPose3D m_sensorPose
 The sensor 6D pose:.
std::vector< char > m_rx_buffer
 Temporal incomming buffer.
int m_rx_idx
int m_wr_idx
 Read pointers within m_rx_buffer.
std::string m_lastSentMeasCmd
 The last sent measurement command (MDXXX), including the last 0x0A.


Detailed Description

This software driver implements the protocol SCIP-2.0 for interfacing HOKUYO URG and UTM laser scanners.

Refer to the wiki page for more details: http://babel.isa.uma.es/mrpt/index.php/Example:HOKUYO_URG/UTM_Laser_Scanner

See also the application "RawLogGrabber" for a ready-to-use application to gather data from the scanner.

  PARAMETERS IN THE ".INI"-LIKE CONFIGURATION STRINGS:
 -------------------------------------------------------
   [supplied_section_name]
    HOKUYO_motorSpeed_rpm=600
    COM_port_WIN = COM3
    COM_port_LIN = ttyS0
    pose_x=0.21 ; Laser range scaner 3D position in the robot (meters)
    pose_y=0
    pose_z=0.34
    pose_yaw=0  ; Angles in degrees
    pose_pitch=0
    pose_roll=0

Definition at line 60 of file CHokuyoURG.h.


Constructor & Destructor Documentation

mrpt::hwdrivers::CHokuyoURG::CHokuyoURG (  ) 

Constructor.

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

Destructor: turns the laser off.


Member Function Documentation

bool mrpt::hwdrivers::CHokuyoURG::assureBufferHasBytes ( const int &  nDesiredBytes  )  [private]

Assures a minimum number of bytes in the input buffer, reading from the serial port only if required.

Returns:
false if the number of bytes are not available, even after trying to fetch more data from the serial port.

bool mrpt::hwdrivers::CHokuyoURG::checkCOMisOpen (  )  [protected]

Returns true if there is a valid stream bound to the laser scanner, otherwise it first try to open the serial port "m_com_port".

bool mrpt::hwdrivers::CHokuyoURG::displaySensorInfo ( CHokuyoURG::TSensorInfo out_data = NULL  )  [private]

Ask to the device, and print to the debug stream, details about the sensor model.

It also optionally saves all the information in an user supplied data structure "out_data".

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::displayVersionInfo (  )  [private]

Ask to the device, and print to the debug stream, details about the firmware version,serial number,.

..

Returns:
false on any error

void mrpt::hwdrivers::CHokuyoURG::doProcessSimple ( bool &  outThereIsObservation,
mrpt::slam::CObservation2DRangeScan outObservation,
bool &  hardwareError 
) [virtual]

Specific laser scanner "software drivers" must process here new data from the I/O stream, and, if a whole scan has arrived, return it.

This method will be typically called in a different thread than other methods, and will be called in a timely fashion.

Implements mrpt::hwdrivers::C2DRangeFinderAbstract.

bool mrpt::hwdrivers::CHokuyoURG::enableSCIP20 (  )  [private]

Enables the SCIP2.0 protocol (this must be called at the very begining!).

Returns:
false on any error

void mrpt::hwdrivers::CHokuyoURG::initialize (  )  [private, virtual]

Turns the laser on.

Reimplemented from mrpt::hwdrivers::CGenericSensor.

void mrpt::hwdrivers::CHokuyoURG::loadConfig ( const mrpt::utils::CConfigFileBase configSource,
const std::string &  iniSection 
) [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::CHokuyoURG for the possible parameters.

Implements mrpt::hwdrivers::CGenericSensor.

void mrpt::hwdrivers::CHokuyoURG::purgeBuffers (  ) 

Empties the RX buffers of the serial port.

bool mrpt::hwdrivers::CHokuyoURG::receiveResponse ( const char *  sentCmd_forEchoVerification,
char &  rcv_status0,
char &  rcv_status1,
char *  rcv_data,
int &  rcv_dataLength 
) [private]

Waits for a response from the device.

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::setHighBaudrate (  )  [private]

Passes to 115200bps bitrate.

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::setMotorSpeed ( int  motoSpeed_rpm  )  [private]

Changes the motor speed in rpm's (default 600rpm).

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::startScanningMode (  )  [private]

Start the scanning mode, using parameters stored in the object (loaded from the .ini file) After this command the device will start to send scans until "switchLaserOff" is called.

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::switchLaserOff (  )  [private]

Switchs the laser off.

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::switchLaserOn (  )  [private]

Switchs the laser on.

Returns:
false on any error

bool mrpt::hwdrivers::CHokuyoURG::turnOff (  )  [virtual]

Disables the scanning mode (this can be used to turn the device in low energy mode, if available).

Returns:
If everything works "true", or "false" if there is any error.

Implements mrpt::hwdrivers::C2DRangeFinderAbstract.

bool mrpt::hwdrivers::CHokuyoURG::turnOn (  )  [virtual]

Enables the scanning mode (which may depend on the specific laser device); this must be called before asking for observations to assure that the protocol has been initializated.

Returns:
If everything works "true", or "false" if there is any error.

Implements mrpt::hwdrivers::C2DRangeFinderAbstract.


Member Data Documentation

If set to non-empty, the serial port will be attempted to be opened automatically when this class is first used to request data from the laser.

Definition at line 191 of file CHokuyoURG.h.

The first and last ranges to consider from the scan.

Definition at line 78 of file CHokuyoURG.h.

Definition at line 202 of file CHokuyoURG.h.

Definition at line 78 of file CHokuyoURG.h.

The last sent measurement command (MDXXX), including the last 0x0A.

Definition at line 91 of file CHokuyoURG.h.

The motor speed (default=600rpm).

Definition at line 82 of file CHokuyoURG.h.

std::vector<char> mrpt::hwdrivers::CHokuyoURG::m_rx_buffer [private]

Temporal incomming buffer.

Definition at line 88 of file CHokuyoURG.h.

Definition at line 89 of file CHokuyoURG.h.

The information gathered when the laser is first open.

Definition at line 200 of file CHokuyoURG.h.

Definition at line 207 of file CHokuyoURG.h.

The sensor 6D pose:.

Definition at line 86 of file CHokuyoURG.h.

Definition at line 205 of file CHokuyoURG.h.

Time of the first data packet, for synchronization purposes.

Definition at line 204 of file CHokuyoURG.h.

Read pointers within m_rx_buffer.

Definition at line 89 of file CHokuyoURG.h.




Page generated by Doxygen 1.5.8 for MRPT 0.6.5 SVN:exported at Mon Jan 12 13:00:16 UTC 2009