YDLIDAR X2 SDK  V1.4.1
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | List of all members
ydlidar::YDlidarDriver Class Reference
Collaboration diagram for ydlidar::YDlidarDriver:
Collaboration graph
[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]payloadpayload
[in]payloadsizepayloadsize
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: