激光雷达YDLIDAR X2 SDK安装
- 陈拓 2024/12/15-2024/12/19
1. 简介
- YDLIDAR X2官方网址
- https://ydlidar.cn/index.html
- YDLIDAR X2

YDLIDAR X2是一款高性能的激光雷达传感器,具有以下主要特点和规格参数:
测距频率:3000Hz
扫描频率:5-8Hz
测距半径:0.12-8m
扫描角度:360°
角度分辨率:0.6-0.96°
外观尺寸:Φ60.550.396mm
YDLIDAR X2采用红外点状脉冲式激光器,符合FDA Class I激光安全标准,保护儿童及宠物的眼睛健康。其机械结构设计为360°旋转,能够全方位扫描测距,稳定输出点云数据。此外,X2自带电机调速功能的电机驱动器,可以自行调制扫描频率,满足不同的应用需求。
应用领域方面,YDLIDAR X2广泛应用于创客教育、科学研究、算法验证、小车避障等场景。其小尺寸、低功耗、高性能的特点,使得在机器人小车的建图、导航、避障方面表现出色。此外,YDLIDAR X2还适用于智能扫地机器人,优化了扫地机的空间结构,提升了其建图、导航和避障的能力。
2. 构建和安装SDK
https://ydlidar.cn/service_support/download.html
2.1 GitHub仓库
https://github.com/YDLIDAR/YDLidar-SDK
2.2 YDLidar SDK
YDLidar SDK是为所有YDLidar产品设计的软件开发工具包。它是基于C/C++开发的,遵循YDLidar SDK通信协议,并提供易于使用的C/C++、Python、C#风格的API。使用YDLidar SDK,用户可以快速连接YDLidar产品并接收激光扫描数据。
YDLidar SDK由YDLidar-SDK通信协议、YDLidar SDK内核、YDLidar SDK API、Linux/windows示例和Python演示组成。
2.2.1 支持的操作系统
- Linux
- Windows 7/10,Visual Studio 2015/2017
- C++11编译器
2.2.2 支持的语言
- C/C++
- Python
- C#
2.2.3 YDLidar SDK通信协议
YDLidar SDK通信协议对所有用户开放。它是用户程序与YDLIDAR产品之间的通信协议。该协议由控制命令和数据格式组成。有关详细信息,请参阅YDLidar SDK通信协议:
https://github.com/YDLIDAR/YDLidar-SDK/blob/master/doc/YDLidar-SDK-Communication-Protocol.md
2.2.4 架构(Architecture)
YDLidar SDK提供了控制命令和激光扫描数据传输的实现,,以及C/C++、Python API。YDLidar SDK的基本结构如下所示

串口或网络用于YDLidar SDK和LiDAR传感器之间的通信。有关详细信息,请参阅YDLidar SDK通信协议。LaserScan支持激光扫描数据传输,而命令处理程序接收和发送控制命令。C++ API基于Command和LaserScan Hander。
YDLidar LiDAR传感器可以通过串口或通过YDLidar适配器板直接连接到主机。YDLidar SDK支持这两种连接方式。当激光雷达单元通过串口直接连接到主机时,主机将单独与每个激光雷达单元建立通信。如果激光雷达单元通过转接板连接到主机,则主机仅与YDLidar转接板通信,而转接板与每个激光雷达单元通信。
2.3 我的系统
- 硬件系统架构
arch

- 操作系统版本
lsb_release -a
2.4 克隆代码
- 克隆YDLidar SDK的GitHub代码
git clone https://github.com/YDLIDAR/YDLidar-SDK.git

2.5 安装CMake
- 安装CMake

- 如果要使用python API,需要安装python和swig(3.0或更高版本)

SWIG(Simplified Wrapper and Interface Generator)是一个软件开发工具,主要用于将C和C++编写的程序与各种高级编程语言连接起来。它支持多种目标语言,包括常见的脚本语言如Javascript、Perl、PHP、Python、Tcl和Ruby,以及非脚本语言如C#、D、Go、Java(包括Android)、Lua、OCaml、Octave、Scilab和R等。
sudo apt install swig
2.6 构建YDLidar-SDK(C++)
- 官方文档
https://github.com/YDLIDAR/YDLidar-SDK/blob/master/doc/howto/how_to_build_and_install.md
- 构建
mkdir YDLidar-SDK/build
cd YDLidar-SDK/build
cmake ..
生成可执行文件:
make
安装SDK:
sudo make install
3. 运行YDLidar SDK示例
3.1 将YDLIDAR X2通过串口连接到
我使用CH340G,USB-串口转换器

转换器的RX的YDLIDAR X2的TX。
3.2 Ubuntu22.04安装CH340驱动
见《Ubuntu22.04安装CH340和CH341驱动》。
Ubuntu22.04安装CH340/CH341驱动_ubuntu ch340驱动-CSDN博客
- 插上USB串口转换器
用dmesg命令查看:
sudo dmesg | grep ch341-uart

ch341 uart转换器现在连接到ttyUSB0。
- 在/dev目录查看tty设备
ls -l /dev/ttyUSB0

- 修改/dev/ ttyUSB0设备权限
sudo chmod 777 /dev/ttyUSB0
3.2 运行示例
examples中提供了三个示例,分别演示了如何配置YDLidar LiDAR单元以及如何在直接连接YDLidar SDK和使用YDLidar Adapter板的情况下接收激光扫描数据。
3.2.1 运行tri_test连接三角激光雷达单元
- 进入SDK目录
cd ~/YDLidar-SDK/build

- 运行tri_test
./tri_test



"Scan received [494] points scanFreq [6.00]" 的意思是:
扫描收到了494个数据点,扫描频率为6.00Hz,即设备每秒钟会采集6次数据。
如果扫描频率是6.00Hz,那么采集494个数据点所需的时间为:

也就是说,设备在82秒内采集了494个数据点。