ETLIDAR(https://www.ydlidar.com/) series is a set of high-performance and low-cost TOF LIDAR sensors, which is the perfect sensor of 2D SLAM, 3D reconstruction, multi-touch, and safety applications.
If you are using ROS (Robot Operating System), please use our open-source ROS Driver .
Title | Version | Data |
---|---|---|
SDK | 1.0.2 | 2019-04-13 |
$ git clone https://github.com/ydlidar/etlidar_sdk
$ cd etlidar_sdk
$ git checkout master
$ cd ..
Linux:
$ mkdir build
$ cd build
$ cmake ../etlidar_sdk ##windows: cmake -G "Visual Studio 14 2017 Win64" ../etlidar_sdk
$ make
Windows: $ mkdir build
$ cd build
$ cmake -G "Visual Studio 14 2017 Win64" ../etlidar_sdk
$ make
Compile wth Qt: 1). Qt configuration cmake 2). Open the CmakeLists.txt project file with Qt.
linux:
$ ./ydlidar_test
Please enter the lidar IP[192.168.0.11](yes):yse
[YDLidar]: SDK Version: 1.1
[YDLidar]: LIDAR Version: 1.1
[YDLidar]: Opening scan and checking whether Lidar is abnormal.........
[YDLidar]: [YDLIDAR INFO] Now YDLIDAR is scanning ......
windows:
$ ydlidar_test.exe
Please enter the lidar IP[192.168.0.11](yes):yse
[YDLidar]: SDK Version: 1.1
[YDLidar]: LIDAR Version: 1.1
[YDLidar]: Opening scan and checking whether Lidar is abnormal.........
[YDLidar]: [YDLIDAR INFO] Now YDLIDAR is scanning ......
data structure:
typedef struct _lidarPot {
/**
* @brief range
*/
float range;
/**
* @brief angle
*/
float angle;
/**
* @brief intensity
*/
int intensity;
}lidarPot;
typedef struct _lidarData {
/**
* @brief ranges.
*/
std::vector<lidarPot> data;
/**
* @brief headFrameFlag.
*/
int headFrameFlag;
/**
* @brief frame timestamp in nanoseconds.
*/
uint64_t self_timestamp;
/**
* @brief system time.
*/
uint64_t system_timestamp;
/**
* @brief scan_time
*/
uint64_t scan_time;
} lidarData;
example parsing:
for(size_t i =0; i < scan.data.size(); i++) {
// current angle
float angle = scan.data[i].angle ;// radian format
//current distance
float angle = scan.data[i].range ;//meters
//current intensity
int intensity = scan.data[i].intensity;
}
laser callback function code :
The best way to learn how to use sdk is to follow the tutorials in our sdk guide:
https://github.com/yangfuyuan/etlidar_sdk/Samples
If you want to learn from code examples, take a look at the examples in the Samples directory.
#include "ETLidarDriver.h"
#include <config.h>
#define DEVICE_IP "192.168.0.11"
int main(int argc, char **argv) {
char* lidarIp = DEVICE_IP;
if (argc > 1) {
lidarIp = argv[1];
}
ydlidar::init(argc, argv);
ydlidar::ETLidarDriver lidar;
result_t ans = lidar.connect(lidarIp);
if(!IS_OK(ans)) {
ydlidar::console.error("Failed to connecting lidar...");
return 0;
}
bool rs = lidar.turnOn();
while (rs && ydlidar::ok()) {
lidarData scan;
ans = lidar.grabScanData(scan);
if(IS_OK(ans)) {
ydlidar::console.message("scan recevied[%llu]: %d ranges",scan.system_timestamp, scan.data.size());
} else {
ydlidar::console.warning("Failed to get scan data");
}
}
lidar.turnOff();
lidar.disconnect();
return 0;
}
Note: Use sdk to be a "try catch" syntax to do exception handling.
If you have any extra questions, please feel free to contact us