87 std::vector<float>& ranges,
unsigned char& LMS_status,
133 const std::string& iniSection)
override;
188 bool& outThereIsObservation,
190 bool& hardwareError)
override;
void setMillimeterMode(bool mm_mode=true)
Enables/Disables the millimeter mode, with a greater accuracy but a shorter range (default=false) (ca...
std::shared_ptr< mrpt::comms::CSerialPort > m_mySerialPort
Will be !=nullptr only if I created it, so I must destroy it at the end.
bool LMS_startContinuousMode()
int m_scans_FOV
100 or 180 deg
bool LMS_sendMeasuringMode_cm_mm()
Returns false on error.
void setSerialPort(const std::string &port)
Changes the serial port to connect to (call prior to 'doProcess'), for example "COM1" or "ttyS0"...
void initialize() override
Set-up communication with the laser.
std::string getSerialPort() const
bool LMS_statusQuery()
Send a status query and wait for the answer.
Contains classes for various device interfaces.
void loadConfig_sensorSpecific(const mrpt::config::CConfigFileBase &configSource, const std::string &iniSection) override
See the class documentation at the top for expected parameters.
int m_com_baudRate
Baudrate: 9600, 38400, 500000.
bool turnOn() override
Enables the scanning mode (in this class this has no effect).
bool LMS_setupSerialComms()
Assures laser is connected and operating at 38400, in its case returns true.
void setScanFOV(int fov_degrees)
Set the scanning field of view - possible values are 100 or 180 (default) (call prior to 'doProcess')...
uint8_t m_received_frame_buffer[2000]
bool LMS_setupBaudrate(int baud)
Send a command to change the LMS comms baudrate, return true if ACK is OK.
CSickLaserSerial()
Constructor.
std::string m_com_port
If set to non-empty, the serial port will be attempted to be opened automatically when this class is ...
This class allows loading and storing values and vectors of different types from a configuration text...
bool m_skip_laser_config
If true, doesn't send the initialization commands to the laser and go straight to capturing...
bool waitContinuousSampleFrame(std::vector< float > &ranges, unsigned char &LMS_status, bool &is_mm_mode)
unsigned int m_nTries_current
bool tryToOpenComms(std::string *err_msg=nullptr)
Tries to open the com port and setup all the LMS protocol.
bool LMS_waitIncomingFrame(uint16_t timeout)
Returns false if timeout.
void setScanResolution(int res_1_100th_degree)
Set the scanning resolution, in units of 1/100 degree - Possible values are 25, 50 and 100...
mrpt::math::TPose3D m_sensorPose
The sensor 6D pose:
#define DEFINE_GENERIC_SENSOR(class_name)
This declaration must be inserted in all CGenericSensor classes definition, within the class declarat...
int m_scans_res
1/100th of deg: 100, 50 or 25
This is the base, abstract class for "software drivers" interfaces to 2D scanners (laser range finder...
void setBaudRate(int baud)
Changes the serial port baud rate (call prior to 'doProcess'); valid values are 9600,38400 and 500000.
bool SendCommandToSICK(const uint8_t *cmd, const uint16_t cmd_len)
Send header+command-data+crc and waits for ACK.
A "CObservation"-derived class that represents a 2D range scan measurement (typically from a laser sc...
This "software driver" implements the communication protocol for interfacing a SICK LMS 2XX laser sca...
bool turnOff() override
Disables the scanning mode (in this class this has no effect).
Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).
unsigned int m_nTries_connect
Default = 1.
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...
int getScanResolution() const
bool LMS_waitACK(uint16_t timeout_ms)
Returns false if timeout.
~CSickLaserSerial() override
Destructor.
unsigned int getCurrentConnectTry() const
If performing several tries in initialize(), this is the current try loop number. ...
bool LMS_endContinuousMode()