ydlidar::YDlidarDriver Class Reference
Collaboration diagram for ydlidar::YDlidarDriver:
[legend]

## Public Types

enum | { DEFAULT_TIMEOUT = 2000, DEFAULT_HEART_BEAT = 1000, MAX_SCAN_NODES = 2048, DEFAULT_TIMEOUT_COUNT = 3 }
enum | { YDLIDAR_F4 = 1, YDLIDAR_T1 = 2, YDLIDAR_F2 = 3, YDLIDAR_S4 = 4, YDLIDAR_G4 = 5, YDLIDAR_X4 = 6, YDLIDAR_F4PRO = 6, YDLIDAR_G4C = 9 }

## Public Member Functions

| YDlidarDriver ()
virtual | ~YDlidarDriver ()
result_t | connect (const char *port_path, uint32_t baudrate)
| 连接雷达 连接成功后，必须使用::disconnect函数关闭 More...
void | disconnect ()
| 断开雷达连接
bool | isConnected () const
| 连接雷达状态 More...
bool | isScanning () const
| isScanning More...
uint32_t | getPointTime () const
| getPointTime More...
void | setAutoReconnect (const bool &enable)
| 设置雷达异常自动重新连接 More...
result_t | startScan (bool force=false, uint32_t timeout=DEFAULT_TIMEOUT)
| 开启扫描 More...
result_t | stop ()
| 关闭扫描 More...
result_t | grabScanData (node_info *nodebuffer, size_t &count, uint32_t timeout=DEFAULT_TIMEOUT)
| 获取激光数据 More...
result_t | ascendScanData (node_info *nodebuffer, size_t count)
| 补偿激光角度 把角度限制在0到360度之间 More...
result_t | startMotor ()
| 打开电机 More...
result_t | stopMotor ()
| 关闭电机 More...
void | flush ()
| flush

## Static Public Member Functions

static std::string | getSDKVersion ()
| 获取当前SDK版本号 静态函数 More...
static std::map< std::string, std::string > | lidarPortList ()
| 获取雷达列表 静态函数 More...

## Public Attributes

bool | m_isConnected
| 串口连接状体
bool | m_isScanning
| 扫图状态
bool | isAutoReconnect
| 异常自动从新连接
bool | isAutoconnting
| 是否正在自动连接中
node_info | scan_node_buf [2048]
| 激光点信息
size_t | scan_node_count
| 激光点数
Event | _dataEvent
| 数据同步事件
Locker | _lock
| 线程锁
Locker | _serial_lock
| 串口锁
Thread | _thread
| 线程id

## Protected Member Functions

result_t | createThread ()
| 创建解析雷达数据线程 More...
result_t | startAutoScan (bool force=false, uint32_t timeout=DEFAULT_TIMEOUT)
| 重新连接开启扫描 More...
result_t | waitPackage (node_info *node, uint32_t timeout=DEFAULT_TIMEOUT)
| 解包激光数据 More...
result_t | waitScanData (node_info *nodebuffer, size_t &count, uint32_t timeout=DEFAULT_TIMEOUT)
| 发送数据到雷达 More...
int | cacheScanData ()
| 激光数据解析线程
result_t | sendCommand (uint8_t cmd, const void *payload=NULL, size_t payloadsize=0)
| 发送数据到雷达 More...
result_t | waitResponseHeader (lidar_ans_header *header, uint32_t timeout=DEFAULT_TIMEOUT)
| 等待激光数据包头 More...
result_t | waitForData (size_t data_count, uint32_t timeout=DEFAULT_TIMEOUT, size_t *returned_size=NULL)
| 等待固定数量串口数据 More...
result_t | getData (uint8_t *data, size_t size)
| 获取串口数据 More...
result_t | sendData (const uint8_t *data, size_t size)
| 串口发送数据 More...
void | disableDataGrabbing ()
| 关闭数据获取通道
void | setDTR ()
| 设置串口DTR
void | clearDTR ()
| 清除串口DTR

## Member Enumeration Documentation

anonymous enum

Enumerator
DEFAULT_TIMEOUT | 默认超时时间.
DEFAULT_HEART_BEAT | 默认检测掉电功能时间.
MAX_SCAN_NODES | 最大扫描点数.

anonymous enum

Enumerator
YDLIDAR_F4 | F4雷达型号代号.
YDLIDAR_T1 | T1雷达型号代号.
YDLIDAR_F2 | F2雷达型号代号.
YDLIDAR_S4 | S4雷达型号代号.
YDLIDAR_G4 | G4雷达型号代号.
YDLIDAR_X4 | X4雷达型号代号.
YDLIDAR_F4PRO | F4PRO雷达型号代号.
YDLIDAR_G4C | G4C雷达型号代号.

## Constructor & Destructor Documentation

ydlidar::YDlidarDriver::YDlidarDriver | ( |  | ) |

A constructor. A more elaborate description of the constructor.

ydlidar::YDlidarDriver::~YDlidarDriver | ( |  | ) |

virtual

A destructor. A more elaborate description of the destructor.

## Member Function Documentation

result_t ydlidar::YDlidarDriver::ascendScanData | ( | node_info * | nodebuffer,
|  | size_t | count
| ) |  |

补偿激光角度
把角度限制在0到360度之间

Parameters

  [in] | nodebuffer | 激光点信息
  [in] | count | 一圈激光点数

Returns
  返回执行结果

Return values

  RESULT_OK | 成功
  RESULT_FAILE | 失败

Note
  补偿之前，必须使用::grabScanData函数获取激光数据成功

result_t ydlidar::YDlidarDriver::connect | ( | const char * | port_path,
|  | uint32_t | baudrate
| ) |  |

连接雷达
连接成功后，必须使用::disconnect函数关闭

Parameters

  [in] | port_path | 串口号
  [in] | fileMode | 波特率，YDLIDAR雷达有以下几个波特率： 115200 S2

Returns
  返回连接状态

Return values

  0 | 成功
  < | 0 失败

Note
  连接成功后，必须使用::disconnect函数关闭

See also
  函数::YDlidarDriver::disconnect (“::”是指定有连接功能,可以看文档里的disconnect变成绿,点击它可以跳转到disconnect.)

result_t ydlidar::YDlidarDriver::createThread | ( |  | ) |

protected

创建解析雷达数据线程

Note
  创建解析雷达数据线程之前，必须使用::startScan函数开启扫图成功

result_t ydlidar::YDlidarDriver::getData | ( | uint8_t * | data,
|  | size_t | size
| ) |  |

protected

获取串口数据

Parameters

  [in] | data | 数据指针
  [in] | size | 数据大小

Returns
  返回执行结果

Return values

  RESULT_OK | 获取成功
  RESULT_FAILE | 获取失败

uint32_t ydlidar::YDlidarDriver::getPointTime | ( |  | ) | const

getPointTime

Returns

std::string ydlidar::YDlidarDriver::getSDKVersion | ( |  | ) |

static

获取当前SDK版本号
静态函数

Returns
  返回当前SKD 版本号

result_t ydlidar::YDlidarDriver::grabScanData | ( | node_info * | nodebuffer,
|  | size_t & | count,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`
| ) |  |

获取激光数据

Parameters

  [in] | nodebuffer | 激光点信息
  [in] | count | 一圈激光点数
  [in] | timeout | 超时时间

Returns
  返回执行结果

Return values

  RESULT_OK | 获取成功
  RESULT_FAILE | 获取失败

Note
  获取之前，必须使用::startScan函数开启扫描

bool ydlidar::YDlidarDriver::isConnected | ( |  | ) | const

连接雷达状态

Returns
  返回连接状态

Return values

  true | 成功
  false | 失败

bool ydlidar::YDlidarDriver::isScanning | ( |  | ) | const

isScanning

Returns

std::map< std::string, std::string > ydlidar::YDlidarDriver::lidarPortList | ( |  | ) |

static

获取雷达列表 静态函数

Returns
  map:第一个参数是雷达别名, 第二个参数是当前串口号

result_t ydlidar::YDlidarDriver::sendCommand | ( | uint8_t | cmd,
|  | const void * | payload = `NULL`,
|  | size_t | payloadsize = `0`
| ) |  |

protected

发送数据到雷达

Parameters

  [in] | cmd | 命名码
  [in] | payload | payload
  [in] | payloadsize | payloadsize

Returns
  返回执行结果

Return values

  RESULT_OK | 成功
  RESULT_FAILE | 失败

result_t ydlidar::YDlidarDriver::sendData | ( | const uint8_t * | data,
|  | size_t | size
| ) |  |

protected

串口发送数据

Parameters

  [in] | data | 发送数据指针
  [in] | size | 数据大小

Returns
  返回执行结果

Return values

  RESULT_OK | 发送成功
  RESULT_FAILE | 发送失败

void ydlidar::YDlidarDriver::setAutoReconnect | ( | const bool & | enable | ) |

设置雷达异常自动重新连接

Parameters

  [in] | enable | 是否开启自动重连: true 开启 false 关闭

result_t ydlidar::YDlidarDriver::startAutoScan | ( | bool | force = `false`,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`
| ) |  |

protected

重新连接开启扫描

Parameters

  [in] | force | 扫描模式
  [in] | timeout | 超时时间

Returns
  返回执行结果

Return values

  RESULT_OK | 开启成功
  RESULT_FAILE | 开启失败

Note
  sdk 自动重新连接调用

result_t ydlidar::YDlidarDriver::startMotor | ( |  | ) |

打开电机

Returns
  返回执行结果

Return values

  RESULT_OK | 成功
  RESULT_FAILE | 失败

result_t ydlidar::YDlidarDriver::startScan | ( | bool | force = `false`,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`
| ) |  |

开启扫描

Parameters

  [in] | force | 扫描模式
  [in] | timeout | 超时时间

Returns
  返回执行结果

Return values

  RESULT_OK | 开启成功
  RESULT_FAILE | 开启失败

Note
  只用开启一次成功即可

result_t ydlidar::YDlidarDriver::stop | ( |  | ) |

关闭扫描

Returns
  返回执行结果

Return values

  RESULT_OK | 关闭成功
  RESULT_FAILE | 关闭失败

result_t ydlidar::YDlidarDriver::stopMotor | ( |  | ) |

关闭电机

Returns
  返回执行结果

Return values

  RESULT_OK | 成功
  RESULT_FAILE | 失败

result_t ydlidar::YDlidarDriver::waitForData | ( | size_t | data_count,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`,
|  | size_t * | returned_size = `NULL`
| ) |  |

protected

等待固定数量串口数据

Parameters

  [in] | data_count | 等待数据大小
  [in] | timeout | 等待时间
  [in] | returned_size | 实际数据大小

Returns
  返回执行结果

Return values

  RESULT_OK | 获取成功
  RESULT_TIMEOUT | 等待超时
  RESULT_FAILE | 获取失败

Note
  当timeout = -1 时, 将一直等待

result_t ydlidar::YDlidarDriver::waitPackage | ( | node_info * | node,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`
| ) |  |

protected

解包激光数据

Parameters

  [in] | node | 解包后激光点信息
  [in] | timeout | 超时时间

result_t ydlidar::YDlidarDriver::waitResponseHeader | ( | lidar_ans_header * | header,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`
| ) |  |

protected

等待激光数据包头

Parameters

  [in] | header | 包头
  [in] | timeout | 超时时间

Returns
  返回执行结果

Return values

  RESULT_OK | 获取成功
  RESULT_TIMEOUT | 等待超时
  RESULT_FAILE | 获取失败

Note
  当timeout = -1 时, 将一直等待

result_t ydlidar::YDlidarDriver::waitScanData | ( | node_info * | nodebuffer,
|  | size_t & | count,
|  | uint32_t | timeout = `DEFAULT_TIMEOUT`
| ) |  |

protected

发送数据到雷达

Parameters

  [in] | nodebuffer | 激光信息指针
  [in] | count | 激光点数大小
  [in] | timeout | 超时时间

Returns
  返回执行结果

Return values

  RESULT_OK | 成功
  RESULT_TIMEOUT | 等待超时
  RESULT_FAILE | 失败

The documentation for this class was generated from the following files:

- /home/yang/gitlab/sdk/include/ydlidar_driver.h
- /home/yang/gitlab/sdk/src/ydlidar_driver.cpp