ydlidar_01.cpp
#include "CYdLidar.h" #include <string> using namespace std; using namespace ydlidar; #if defined(_MSC_VER) #pragma comment(lib, "ydlidar_sdk.lib") #endif int main(int argc, char *argv[]) { // init system signal ydlidar::os_init(); CYdLidar laser; //////////////////////string property///////////////// /// Lidar ports std::map<std::string, std::string> ports = ydlidar::lidarPortList(); std::string port = "/dev/ydlidar"; if(!ports.empty()) { port = ports.begin()->second; } /// lidar port laser.setlidaropt(LidarPropSerialPort, port.c_str(), port.size()); /// ignore array std::string ignore_array; ignore_array.clear(); laser.setlidaropt(LidarPropIgnoreArray, ignore_array.c_str(), ignore_array.size()); //////////////////////int property///////////////// /// lidar baudrate int optval = 128000; laser.setlidaropt(LidarPropSerialBaudrate, &optval, sizeof(int)); /// tof lidar optval = TYPE_TRIANGLE; laser.setlidaropt(LidarPropLidarType, &optval, sizeof(int)); /// device type optval = YDLIDAR_TYPE_SERIAL; laser.setlidaropt(LidarPropDeviceType, &optval, sizeof(int)); /// sample rate optval = 5; laser.setlidaropt(LidarPropSampleRate, &optval, sizeof(int)); /// abnormal count optval = 4; laser.setlidaropt(LidarPropAbnormalCheckCount, &optval, sizeof(int)); //////////////////////bool property///////////////// /// fixed angle resolution bool b_optvalue = false; laser.setlidaropt(LidarPropFixedResolution, &b_optvalue, sizeof(bool)); /// rotate 180 b_optvalue = true; laser.setlidaropt(LidarPropReversion, &b_optvalue, sizeof(bool)); /// Counterclockwise b_optvalue = false; laser.setlidaropt(LidarPropInverted, &b_optvalue, sizeof(bool)); b_optvalue = true; laser.setlidaropt(LidarPropAutoReconnect, &b_optvalue, sizeof(bool)); /// one-way communication b_optvalue = false; laser.setlidaropt(LidarPropSingleChannel, &b_optvalue, sizeof(bool)); /// intensity b_optvalue = false; laser.setlidaropt(LidarPropIntenstiy, &b_optvalue, sizeof(bool)); /// Motor DTR b_optvalue = true; laser.setlidaropt(LidarPropSupportMotorDtrCtrl, &b_optvalue, sizeof(bool)); //////////////////////float property///////////////// /// unit: ° float f_optvalue = 180.0f; laser.setlidaropt(LidarPropMaxAngle, &f_optvalue, sizeof(float)); f_optvalue = -180.0f; laser.setlidaropt(LidarPropMinAngle, &f_optvalue, sizeof(float)); /// unit: m f_optvalue = 10.f; laser.setlidaropt(LidarPropMaxRange, &f_optvalue, sizeof(float)); f_optvalue = 0.12f; laser.setlidaropt(LidarPropMinRange, &f_optvalue, sizeof(float)); /// unit: Hz f_optvalue = 7.f; laser.setlidaropt(LidarPropScanFrequency, &f_optvalue, sizeof(float)); // initialize SDK and LiDAR bool ret = laser.initialize(); if (ret) {//success //Start the device scanning routine which runs on a separate thread and enable motor. ret = laser.turnOn(); } else { fprintf(stderr, "%s\n", laser.DescribeError()); fflush(stderr); } // Turn On success and loop while (ret && ydlidar::os_isOk()) { LaserScan scan; if (laser.doProcessSimple(scan)) { fprintf(stdout, "Scan received[%llu]: %u ranges is [%f]Hz\n", scan.stamp, (unsigned int)scan.points.size(), 1.0 / scan.config.scan_time); fflush(stdout); } else { fprintf(stderr, "Failed to get Lidar Data\n"); fflush(stderr); } } // Stop the device scanning thread and disable motor. laser.turnOff(); // Uninitialize the SDK and Disconnect the LiDAR. laser.disconnecting(); return 0; } |
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) PROJECT(P_ydlidar_01) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") add_definitions(-std=c++11) # Use C++11 #Include directories include_directories( ${CMAKE_SOURCE_DIR} ) ############## YDLIDAR SDK START##################################### #find ydlidar_sdk package find_package(ydlidar_sdk REQUIRED) #Include directories include_directories( ${YDLIDAR_SDK_INCLUDE_DIRS} ) #link library directories link_directories(${YDLIDAR_SDK_LIBRARY_DIRS}) add_executable(${PROJECT_NAME} ydlidar_01.cpp) #Link your project to ydlidar_sdk library. target_link_libraries(${PROJECT_NAME} ${YDLIDAR_SDK_LIBRARIES}) ############## YDLIDAR SDK END##################################### |
mkdir build
cd build
cmake ..
make
./P_ydlidar_01
[Reference]
[1] https://github.com/YDLIDAR/YDLidar-SDK/blob/master/doc/Tutorials.md
'IOT > Lidar' 카테고리의 다른 글
YDLidar X4 Tutorial on RPi4B Ubuntu 20.04 by Python (0) | 2022.05.26 |
---|