#include <rplidar_driver_impl.h>
Public Member Functions | |
virtual u_result | ascendScanData (rplidar_response_measurement_node_t *nodebuffer, size_t count) |
virtual u_result | ascendScanData (rplidar_response_measurement_node_hq_t *nodebuffer, size_t count) |
virtual u_result | checkExpressScanSupported (bool &support, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | checkMotorCtrlSupport (bool &support, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | checkSupportConfigCommands (bool &outSupport, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
virtual u_result | clearNetSerialRxCache () |
virtual u_result | getAllSupportedScanModes (std::vector< RplidarScanMode > &outModes, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
Get all scan modes that supported by lidar. More... | |
virtual u_result | getDeviceInfo (rplidar_response_device_info_t &info, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | getFrequency (bool inExpressMode, size_t count, float &frequency, bool &is4kmode) |
virtual u_result | getFrequency (const RplidarScanMode &scanMode, size_t count, float &frequency) |
virtual u_result | getHealth (rplidar_response_device_health_t &health, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | getLidarConf (_u32 type, std::vector< _u8 > &outputBuf, const std::vector< _u8 > &reserve=std::vector< _u8 >(), _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | getLidarSampleDuration (float &sampleDurationRes, _u16 scanModeID, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
virtual u_result | getMaxDistance (float &maxDistance, _u16 scanModeID, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
virtual u_result | getSampleDuration_uS (rplidar_response_sample_rate_t &rateInfo, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | getScanDataWithInterval (rplidar_response_measurement_node_t *nodebuffer, size_t &count) |
virtual u_result | getScanDataWithIntervalHq (rplidar_response_measurement_node_hq_t *nodebuffer, size_t &count) |
virtual u_result | getScanModeAnsType (_u8 &ansType, _u16 scanModeID, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
virtual u_result | getScanModeCount (_u16 &modeCount, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
virtual u_result | getScanModeName (char *modeName, _u16 scanModeID, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
virtual u_result | getTypicalScanMode (_u16 &outMode, _u32 timeoutInMs=DEFAULT_TIMEOUT) |
Get typical scan mode of lidar. More... | |
virtual u_result | grabScanData (rplidar_response_measurement_node_t *nodebuffer, size_t &count, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | grabScanDataHq (rplidar_response_measurement_node_hq_t *nodebuffer, size_t &count, _u32 timeout=DEFAULT_TIMEOUT) |
virtual bool | isConnected () |
Returns TRUE when the connection has been established. More... | |
virtual u_result | reset (_u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | setMotorPWM (_u16 pwm) |
virtual u_result | startMotor () |
Start RPLIDAR's motor when using accessory board. More... | |
virtual u_result | startScan (bool force, bool useTypicalScan, _u32 options=0, RplidarScanMode *outUsedScanMode=NULL) |
virtual u_result | startScanExpress (bool force, _u16 scanMode, _u32 options=0, RplidarScanMode *outUsedScanMode=NULL, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | startScanNormal (bool force, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | stop (_u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | stopMotor () |
Stop RPLIDAR's motor when using accessory board. More... | |
Public Member Functions inherited from rp::standalone::rplidar::RPlidarDriver | |
virtual u_result | connect (const char *, _u32, _u32 flag=0)=0 |
DEPRECATED (virtual u_result getSampleDuration_uS(rplidar_response_sample_rate_t &rateInfo, _u32 timeout=DEFAULT_TIMEOUT))=0 | |
DEPRECATED (virtual u_result getFrequency(bool inExpressMode, size_t count, float &frequency, bool &is4kmode))=0 | |
DEPRECATED (virtual u_result checkExpressScanSupported(bool &support, _u32 timeout=DEFAULT_TIMEOUT))=0 | |
DEPRECATED (virtual u_result grabScanData(rplidar_response_measurement_node_t *nodebuffer, size_t &count, _u32 timeout=DEFAULT_TIMEOUT))=0 | |
DEPRECATED (virtual u_result ascendScanData(rplidar_response_measurement_node_t *nodebuffer, size_t count))=0 | |
DEPRECATED (virtual u_result getScanDataWithInterval(rplidar_response_measurement_node_t *nodebuffer, size_t &count))=0 | |
virtual void | disconnect ()=0 |
Disconnect with the RPLIDAR and close the serial port. More... | |
virtual | ~RPlidarDriver () |
Protected Member Functions | |
virtual u_result | _cacheCapsuledScanData () |
virtual u_result | _cacheHqScanData () |
virtual u_result | _cacheScanData () |
virtual u_result | _cacheUltraCapsuledScanData () |
virtual void | _capsuleToNormal (const rplidar_response_capsule_measurement_nodes_t &capsule, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount) |
virtual void | _dense_capsuleToNormal (const rplidar_response_capsule_measurement_nodes_t &capsule, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount) |
void | _disableDataGrabbing () |
virtual void | _HqToNormal (const rplidar_response_hq_capsule_measurement_nodes_t &node_hq, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount) |
virtual u_result | _sendCommand (_u8 cmd, const void *payload=NULL, size_t payloadsize=0) |
virtual void | _ultraCapsuleToNormal (const rplidar_response_ultra_capsule_measurement_nodes_t &capsule, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount) |
virtual u_result | _waitCapsuledNode (rplidar_response_capsule_measurement_nodes_t &node, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | _waitHqNode (rplidar_response_hq_capsule_measurement_nodes_t &node, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | _waitNode (rplidar_response_measurement_node_t *node, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | _waitResponseHeader (rplidar_ans_header_t *header, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | _waitScanData (rplidar_response_measurement_node_t *nodebuffer, size_t &count, _u32 timeout=DEFAULT_TIMEOUT) |
virtual u_result | _waitUltraCapsuledNode (rplidar_response_ultra_capsule_measurement_nodes_t &node, _u32 timeout=DEFAULT_TIMEOUT) |
RPlidarDriverImplCommon () | |
virtual | ~RPlidarDriverImplCommon () |
Protected Member Functions inherited from rp::standalone::rplidar::RPlidarDriver | |
RPlidarDriver () | |
Protected Attributes | |
_u8 | _cached_express_flag |
rplidar_response_capsule_measurement_nodes_t | _cached_previous_capsuledata |
rplidar_response_dense_capsule_measurement_nodes_t | _cached_previous_dense_capsuledata |
rplidar_response_hq_capsule_measurement_nodes_t | _cached_previous_Hqdata |
rplidar_response_ultra_capsule_measurement_nodes_t | _cached_previous_ultracapsuledata |
_u16 | _cached_sampleduration_express |
_u16 | _cached_sampleduration_std |
rplidar_response_measurement_node_hq_t | _cached_scan_node_hq_buf [8192] |
rplidar_response_measurement_node_hq_t | _cached_scan_node_hq_buf_for_interval_retrieve [8192] |
size_t | _cached_scan_node_hq_count |
size_t | _cached_scan_node_hq_count_for_interval_retrieve |
rp::hal::Thread | _cachethread |
rp::hal::Event | _dataEvt |
bool | _is_previous_capsuledataRdy |
bool | _is_previous_HqdataRdy |
bool | _isConnected |
bool | _isScanning |
bool | _isSupportingMotorCtrl |
rp::hal::Locker | _lock |
Additional Inherited Members | |
Public Types inherited from rp::standalone::rplidar::RPlidarDriver | |
enum | { DEFAULT_TIMEOUT = 2000 } |
enum | { MAX_SCAN_NODES = 8192 } |
enum | { LEGACY_SAMPLE_DURATION = 476 } |
Static Public Member Functions inherited from rp::standalone::rplidar::RPlidarDriver | |
static RPlidarDriver * | CreateDriver (_u32 drivertype=DRIVER_TYPE_SERIALPORT) |
static void | DisposeDriver (RPlidarDriver *drv) |
Public Attributes inherited from rp::standalone::rplidar::RPlidarDriver | |
ChannelDevice * | _chanDev |
Definition at line 38 of file rplidar_driver_impl.h.
|
protected |
Definition at line 104 of file rplidar_driver.cpp.
|
inlineprotectedvirtual |
Definition at line 131 of file rplidar_driver_impl.h.
|
protectedvirtual |
Definition at line 658 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 891 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 543 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 726 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 784 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 842 of file rplidar_driver.cpp.
|
protected |
Definition at line 2171 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 1085 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 1985 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 1137 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 376 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 1013 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 294 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 145 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 349 of file rplidar_driver.cpp.
|
protectedvirtual |
Definition at line 457 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1973 of file rplidar_driver.cpp.
|
virtual |
Ascending the scan data according to the angle value in the scan.
nodebuffer | Buffer provided by the caller application to do the reorder. Should be retrived from the grabScanData |
count | The caller must initialize this parameter to set the max data count of the provided buffer (in unit of rplidar_response_measurement_node_t). Once the interface returns, this parameter will store the actual received data count. The interface will return RESULT_OPERATION_FAIL when all the scan data is invalid. |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1980 of file rplidar_driver.cpp.
|
virtual |
Definition at line 636 of file rplidar_driver.cpp.
|
virtual |
Check whether the device support motor control. Note: this API will disable grab.
support | Return the result. |
timeout | The operation timeout value (in millisecond) for the serial port communication. |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 2079 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1252 of file rplidar_driver.cpp.
|
virtual |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 136 of file rplidar_driver.cpp.
|
virtual |
Get all scan modes that supported by lidar.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1444 of file rplidar_driver.cpp.
|
virtual |
Get the device information of the RPLIDAR include the serial number, firmware version, device model etc.
info | The device information returned from the RPLIDAR |
timeout | The operation timeout value (in millisecond) for the serial port communication |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 233 of file rplidar_driver.cpp.
|
virtual |
Definition at line 271 of file rplidar_driver.cpp.
|
virtual |
Calculate RPLIDAR's current scanning frequency from the given scan data Please refer to the application note doc for details Remark: the calcuation will be incorrect if the specified scan data doesn't contains enough data
scanMode | Lidar's current scan mode |
count | The number of sample nodes inside the given buffer |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 287 of file rplidar_driver.cpp.
|
virtual |
Retrieve the health status of the RPLIDAR The host system can use this operation to check whether RPLIDAR is in the self-protection mode.
health | The health status info returned from the RPLIDAR |
timeout | The operation timeout value (in millisecond) for the serial port communication |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 193 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1267 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1363 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1384 of file rplidar_driver.cpp.
|
virtual |
Definition at line 2027 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1838 of file rplidar_driver.cpp.
|
virtual |
Return received scan points even if it's not complete scan
nodebuffer | Buffer provided by the caller application to store the scan data |
count | Once the interface returns, this parameter will store the actual received data count. |
The interface will return RESULT_OPERATION_TIMEOUT to indicate that not even a single node can be retrieved since last call.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1862 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1405 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1522 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1426 of file rplidar_driver.cpp.
|
virtual |
Get typical scan mode of lidar.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1332 of file rplidar_driver.cpp.
|
virtual |
Definition at line 1780 of file rplidar_driver.cpp.
|
virtual |
Wait and grab a complete 0-360 degree scan data previously received. The grabbed scan data returned by this interface always has the following charactistics:
1) The first node of the grabbed data array (nodebuffer[0]) must be the first sample of a scan, i.e. the start_bit == 1 2) All data nodes are belong to exactly ONE complete 360-degrees's scan 3) Note, the angle data in one scan may not be ascending. You can use API ascendScanData to reorder the nodebuffer.
nodebuffer | Buffer provided by the caller application to store the scan data |
count | The caller must initialize this parameter to set the max data count of the provided buffer (in unit of rplidar_response_measurement_node_t). Once the interface returns, this parameter will store the actual received data count. |
timeout | Max duration allowed to wait for a complete scan data, nothing will be stored to the nodebuffer if a complete 360-degrees' scan data cannot to be ready timely. |
The interface will return RESULT_OPERATION_TIMEOUT to indicate that no complete 360-degrees' scan can be retrieved withing the given timeout duration.
caller application can set the timeout value to Zero(0) to make this interface always returns immediately to achieve non-block operation.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1811 of file rplidar_driver.cpp.
|
virtual |
Returns TRUE when the connection has been established.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 115 of file rplidar_driver.cpp.
|
virtual |
Ask the RPLIDAR core system to reset it self The host system can use the Reset operation to help RPLIDAR escape the self-protection mode.
timeout | The operation timeout value (in millisecond) for the serial port communication |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 121 of file rplidar_driver.cpp.
Set the RPLIDAR's motor pwm when using accessory board, currently valid for A2 only.
pwm | The motor pwm value would like to set |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 2126 of file rplidar_driver.cpp.
|
virtual |
Start RPLIDAR's motor when using accessory board.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 2143 of file rplidar_driver.cpp.
|
virtual |
Start scan
force | Force the core system to output scan data regardless whether the scanning motor is rotating or not. |
useTypicalScan | Use lidar's typical scan mode or use the compatibility mode (2k sps) |
options | Scan options (please use 0) |
outUsedScanMode | The scan mode selected by lidar |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1541 of file rplidar_driver.cpp.
|
virtual |
Start scan in specific mode
force | Force the core system to output scan data regardless whether the scanning motor is rotating or not. |
scanMode | The scan mode id (use getAllSupportedScanModes to get supported modes) |
options | Scan options (please use 0) |
outUsedScanMode | The scan mode selected by lidar |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1624 of file rplidar_driver.cpp.
|
virtual |
Ask the RPLIDAR core system to enter the scan mode(Normal/Express, Express mode is 4k mode) A background thread will be created by the RPLIDAR driver to fetch the scan data continuously. User Application can use the grabScanData() interface to retrieved the scan data cached previous by this background thread.
force | Force the core system to output scan data regardless whether the scanning motor is rotating or not. |
timeout | The operation timeout value (in millisecond) for the serial port communication. |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 596 of file rplidar_driver.cpp.
|
virtual |
Ask the RPLIDAR core system to stop the current scan operation and enter idle state. The background thread will be terminated
timeout | The operation timeout value (in millisecond) for the serial port communication |
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 1764 of file rplidar_driver.cpp.
|
virtual |
Stop RPLIDAR's motor when using accessory board.
Implements rp::standalone::rplidar::RPlidarDriver.
Definition at line 2157 of file rplidar_driver.cpp.
|
protected |
Definition at line 114 of file rplidar_driver_impl.h.
|
protected |
Definition at line 116 of file rplidar_driver_impl.h.
|
protected |
Definition at line 117 of file rplidar_driver_impl.h.
|
protected |
Definition at line 119 of file rplidar_driver_impl.h.
|
protected |
Definition at line 118 of file rplidar_driver_impl.h.
|
protected |
Definition at line 113 of file rplidar_driver_impl.h.
|
protected |
Definition at line 112 of file rplidar_driver_impl.h.
|
protected |
Definition at line 106 of file rplidar_driver_impl.h.
|
protected |
Definition at line 109 of file rplidar_driver_impl.h.
|
protected |
Definition at line 107 of file rplidar_driver_impl.h.
|
protected |
Definition at line 110 of file rplidar_driver_impl.h.
|
protected |
Definition at line 127 of file rplidar_driver_impl.h.
|
protected |
Definition at line 126 of file rplidar_driver_impl.h.
|
protected |
Definition at line 120 of file rplidar_driver_impl.h.
|
protected |
Definition at line 121 of file rplidar_driver_impl.h.
|
protected |
Definition at line 102 of file rplidar_driver_impl.h.
|
protected |
Definition at line 103 of file rplidar_driver_impl.h.
|
protected |
Definition at line 104 of file rplidar_driver_impl.h.
|
protected |
Definition at line 125 of file rplidar_driver_impl.h.