#include <mrpt/hwdrivers/CHokuyoURG.h>
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. |
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.
mrpt::hwdrivers::CHokuyoURG::CHokuyoURG | ( | ) |
Constructor.
virtual mrpt::hwdrivers::CHokuyoURG::~CHokuyoURG | ( | ) | [virtual] |
Destructor: turns the laser off.
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.
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".
bool mrpt::hwdrivers::CHokuyoURG::displayVersionInfo | ( | ) | [private] |
Ask to the device, and print to the debug stream, details about the firmware version,serial number,.
..
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!).
void mrpt::hwdrivers::CHokuyoURG::initialize | ( | ) | [private, virtual] |
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.
bool mrpt::hwdrivers::CHokuyoURG::setHighBaudrate | ( | ) | [private] |
Passes to 115200bps bitrate.
bool mrpt::hwdrivers::CHokuyoURG::setMotorSpeed | ( | int | motoSpeed_rpm | ) | [private] |
Changes the motor speed in rpm's (default 600rpm).
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.
bool mrpt::hwdrivers::CHokuyoURG::switchLaserOff | ( | ) | [private] |
Switchs the laser off.
bool mrpt::hwdrivers::CHokuyoURG::switchLaserOn | ( | ) | [private] |
Switchs the laser on.
bool mrpt::hwdrivers::CHokuyoURG::turnOff | ( | ) | [virtual] |
Disables the scanning mode (this can be used to turn the device in low energy mode, if available).
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.
Implements mrpt::hwdrivers::C2DRangeFinderAbstract.
std::string mrpt::hwdrivers::CHokuyoURG::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.
Definition at line 191 of file CHokuyoURG.h.
int mrpt::hwdrivers::CHokuyoURG::m_firstRange [private] |
bool mrpt::hwdrivers::CHokuyoURG::m_I_am_owner_serial_port [protected] |
Definition at line 202 of file CHokuyoURG.h.
int mrpt::hwdrivers::CHokuyoURG::m_lastRange [private] |
Definition at line 78 of file CHokuyoURG.h.
std::string mrpt::hwdrivers::CHokuyoURG::m_lastSentMeasCmd [private] |
The last sent measurement command (MDXXX), including the last 0x0A.
Definition at line 91 of file CHokuyoURG.h.
int mrpt::hwdrivers::CHokuyoURG::m_motorSpeed_rpm [private] |
std::vector<char> mrpt::hwdrivers::CHokuyoURG::m_rx_buffer [private] |
int mrpt::hwdrivers::CHokuyoURG::m_rx_idx [private] |
Definition at line 89 of file CHokuyoURG.h.
std::string mrpt::hwdrivers::CHokuyoURG::m_sensorLabel [protected] |
Definition at line 207 of file CHokuyoURG.h.
Definition at line 205 of file CHokuyoURG.h.
uint32_t mrpt::hwdrivers::CHokuyoURG::m_timeStartUI [protected] |
Time of the first data packet, for synchronization purposes.
Definition at line 204 of file CHokuyoURG.h.
int mrpt::hwdrivers::CHokuyoURG::m_wr_idx [private] |
Page generated by Doxygen 1.5.9 for MRPT 0.6.5 SVN: at Sun Aug 2 11:41:17 CDT 2009 |