Class CHokuyoURG
Defined in File CHokuyoURG.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public mrpt::hwdrivers::C2DRangeFinderAbstract(Class C2DRangeFinderAbstract)
Class Documentation
-
class CHokuyoURG : public mrpt::hwdrivers::C2DRangeFinderAbstract
This software driver implements the protocol SCIP-2.0 for interfacing HOKUYO URG/UTM/UXM/UST laser scanners (USB or Ethernet). Refer to the example code HOKUYO_laser_test and to example rawlog-grabber config files
See also the application “rawlog-grabber” 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 #HOKUYO_HS_mode = false // Optional (un-comment line if used): Set/unset the High-sensitivity mode (not on all models/firmwares!) # Uncomment serial port or IP address, depending on the Hokuyo model (serial/USB vs. Ethernet): COM_port_WIN = COM3 // Serial port name in Windows COM_port_LIN = ttyS0 // Serial port name in GNU/Linux #IP_DIR = 192.168.0.10 // Uncommented this and "PORT_DIR" if the used HOKUYO is connected by Ethernet instead of USB #PORT_DIR = 10940 // Default value: 10940 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 #disable_firmware_timestamp = true // Uncomment to use PC time instead of laser time # Optional: reduced FOV: # reduced_fov = 25 // Deg # Sets decimation of scans directly at the Hokuyo scanner. # 0=means send all scans, 1=means send 50% of scans, etc. # scan_interval = 0 # Overrides communication timeout [milliseconds] # comms_timeout_ms = 100 #preview = true // Enable GUI visualization of captured data # Optional: Exclusion zones to avoid the robot seeing itself: #exclusionZone1_x = 0.20 0.30 0.30 0.20 #exclusionZone1_y = 0.20 0.30 0.30 0.20 # Optional: Exclusion zones to avoid the robot seeing itself: #exclusionAngles1_ini = 20 // Deg #exclusionAngles1_end = 25 // Deg
Public Functions
-
CHokuyoURG()
Constructor
-
~CHokuyoURG() override
Destructor: turns the laser off
-
virtual void doProcessSimple(bool &outThereIsObservation, mrpt::obs::CObservation2DRangeScan &outObservation, bool &hardwareError) override
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.
-
virtual bool turnOn() override
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.
-
virtual bool turnOff() override
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.
-
void purgeBuffers()
Empties the RX buffers of the serial port
-
inline void setSerialPort(const std::string &port_name)
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.
-
inline void setIPandPort(const std::string &ip, const unsigned int &port)
Set the ip direction and port to connect using Ethernet communication
-
inline const std::string getSerialPort()
Returns the currently set serial port
See also
-
inline void setReducedFOV(const double fov)
If called (before calling “turnOn”), the field of view of the laser is reduced to the given range (in radians), discarding the rest of measures. Call with “0” to disable this reduction again (the default).
-
bool setHighSensitivityMode(bool enabled)
Changes the high sensitivity mode (HS) (default: false)
- Returns:
false on any error
-
bool setIntensityMode(bool enabled)
If true scans will capture intensity. (default: false) Should not be called while scanning.
- Returns:
false on any error
-
void setScanInterval(unsigned int skipScanCount)
Set the skip scan count (0 means send all scans). Must be set before initialize()
-
unsigned int getScanInterval() const
-
void sendCmd(const char *str)
Protected Functions
-
bool ensureStreamIsOpen()
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”
-
void closeStreamConnection()
Called upon dtor, or when trying to recover from a disconnected sensor
-
virtual void loadConfig_sensorSpecific(const mrpt::config::CConfigFileBase &configSource, const std::string &iniSection) override
See the class documentation at the top for expected parameters
Protected Attributes
-
std::string m_rcv_data
temp buffer for incoming data packets
-
char m_rcv_status0 = '\0'
-
char m_rcv_status1 = '\0'
-
double m_reduced_fov = {0}
Used to reduce artificially the interval of scan ranges.
-
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.
-
std::string m_ip_dir = {}
If set to non-empty and m_port_dir too, the program will try to connect to a Hokuyo using Ethernet communication
-
unsigned int m_port_dir = {10940}
If set to non-empty and m_ip_dir too, the program will try to connect to a Hokuyo using Ethernet communication
-
TSensorInfo m_sensor_info
The information gathered when the laser is first open
-
uint32_t m_timeStartUI = {0}
Time of the first data packet, for synchronization purposes.
-
int m_timeStartSynchDelay = {0}
Counter to discard to first few packets before setting the correspondence between device and computer timestamps.
-
mrpt::system::TTimeStamp m_timeStartTT
-
bool m_disable_firmware_timestamp = {false}
-
bool m_intensity = {false}
Get intensity from lidar scan (default: false)
-
unsigned int m_scan_interval = {0}
-
int m_comms_timeout_ms = 100
-
int m_comms_between_timeout_ms = 1
-
struct TSensorInfo
Used in CHokuyoURG::displayVersionInfo
Public Members
-
std::string model
The sensor model
-
double d_min = {0}
Min/Max ranges, in meters.
-
double d_max = {0}
-
int scans_per_360deg = {0}
Number of measuremens per 360 degrees.
-
int scan_first = {0}
First, last, and front step of the scanner angular span.
-
int scan_last = {0}
-
int scan_front = {0}
-
int motor_speed_rpm = {0}
Standard motor speed, rpm.
-
std::string model
-
CHokuyoURG()