YDLIDAR-GS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-传感器-LOGO

YDLIDAR GS2 DEVELOPMENT 线阵固体激光雷达传感器

YDLIDARGS2-研发-线阵-固体-激光雷达-传感器-产品

工作机制

模式
YDLIDAR GS2(以下简称GS2)系统有3种工作模式:空闲模式、扫描模式、停止模式。

  • 空闲模式: GS2 开机时,默认模式为空闲模式。 在空闲模式下,GS2 的测距单元不工作,激光也不亮。
  • 扫描方式: 当 GS2 处于扫描模式时,测距单元打开激光。 当 GS2 开始工作时,它会持续发出amp对外界环境进行采样,经过后台处理后实时输出。
  • 停止模式: 当GS2运行出现错误时,如扫描仪开启、激光关闭、电机不转等,GS2会自动关闭测距单元并反馈错误代码。

测量原理YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-1
GS2 是一种短程固态激光雷达,范围为 25-300 毫米。 它主要由一个线激光器和一个摄像头组成。 单线激光器发出激光后,被摄像头捕捉到。 根据激光器和摄像头的固定结构,结合三角测距原理,我们可以计算出物体到GS2的距离。 根据相机的标定参数,可知被测物体在激光雷达坐标系中的角度值。 由此,我们获得了被测对象的完整测量数据。

O点为坐标原点,紫色区域为角度 view 右侧相机的角度,橙色区域是 view 左边的相机。

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-2

以mod标点为坐标原点,前方为坐标系0度方向,角度顺时针递增。 输出点云时,数据(S1~S160)的顺序为L1~L80,R1~R80。 SDK计算出来的角度和距离都是在坐标系中顺时针表示的。

系统通讯

通讯机制
GS2 通过串行端口与外部设备通信命令和数据。 当外部设备向GS2发送系统命令时,GS2解析系统命令并返回相应的回复信息。 GS2根据指令内容切换相应的工作状态。 外部系统可以根据消息的内容解析消息并获取响应数据。YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-3

系统命令
外部系统可以通过发送相关的系统命令来设置GS2相应的工作状态,发送相应的数据。 GS2下发的系统命令如下:

图 1 YDLIDAR GS2 系统命令

系统命令 描述 模式切换 应答模式
0×60 获取设备地址 停止模式 单一回应
0×61 获取设备参数 停止模式 单一回应
0×62 获取版本信息 停止模式 单一回应
0×63 开始扫描并输出点云数据 扫描模式 持续响应
0x64 停止设备,停止扫描 停止模式 单一回应
0x67 软重启 / 单一回应
0×68 设置串口波特率 停止模式 单一回应
0×69 设置边缘模式(抗噪模式) 停止模式 单一回应

系统消息
系统消息是系统根据接收到的系统命令反馈的响应消息。 根据不同的系统命令,系统消息的回复方式和回复内容也不同。 响应模式有无响应、单次响应、连续响应三种。
无响应表示系统没有返回任何消息。 单次回复表示系统消息长度有限,一次回复结束。 当系统与多台GS2设备级联时,部分命令会连续收到多台GS2设备的响应。 连续响应是指系统的报文长度是无限的,需要连续发送数据,比如进入扫描模式时。

单响应、多响应和连续响应消息使用相同的数据协议。 协议内容为:包头、设备地址、包类型、数据长度、数据段和校验码,通过串口十六进制输出。

图 2 YDLIDAR GS2 系统消息数据协议示意图

包头 设备地址 数据包类型 响应长度 数据段 检查代码
4 字节 1 字节 1 字节 2 字节 N 字节 1 字节

字节偏移量YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-4

  • 包头: GS2 的消息包标头标记为 0xA5A5A5A5。
  • 设备地址: GS2设备地址,根据级联数分为:0x01、0x02、0x04;
  • 数据包类型: 系统命令类型见表1。
  • 响应长度: 表示响应的长度
  • 数据段: 不同的系统命令响应不同的数据内容,其数据协议也不同。
  • 检查代码: 检查代码。

笔记: GS2数据通信采用小端模式,低位在前。

数据协议

获取设备地址命令
当外部设备向GS2发送该命令时,GS2返回一个设备地址包,报文为:

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-5

级联时,如果串接N个设备(最多支持3个),则返回0x01、0x02、0x04处的N个应答,分别对应1-3个模块。

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-6

定义: 模块1的地址为0x01,模块2的地址为0x02,模块3的地址为0x04。

获取版本信息命令
当外部设备向 GS2 发送扫描命令时,GS2 返回其版本信息。 回复信息是:

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-7

在级联的情况下,如果串联了 N(最多 3)台设备,则该命令将返回 N 条响应,其中地址为最后一台设备的地址。
版本号是3字节长,SN号是16字节长。

获取设备参数命令
当外部设备向GS2发送该命令时,GS2会返回其设备参数,报文为:

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-8 YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-9

级联时,如果串接N个设备(最多支持3个),命令返回N个应答,对应每个设备的参数。
协议接收到的K和B是uint16类型,需要转成float类型再除以10000代入计算函数。

  • d_compensateK0 = (浮动)K0/10000.0f;
  • d_compensateB0 = (浮动)B0/10000.0f;
  • d_compensateK1 = (浮动)K1/10000.0f;
  • d_compensateB1 = (浮动)B1/10000.0f;

bias是int8类型,代入计算函数前需要转成float类型除以10。

  • bias = (float)偏差/10;

命令

扫描指令

当外部设备向GS2发送扫描命令时,GS2进入扫描模式并不断反馈点云数据。 消息是:命令发送:(发送地址0x00,级联与否,将启动所有设备)

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-10

命令收到: (在级联情况下,该命令只返回一个响应,地址为最大地址,例如ample:3号设备级联,地址为0x04。)

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-11

数据段为系统扫描得到的点云数据,按照如下数据结构,以十六进制形式通过串口发送给外接设备。 整个数据包的数据长度为322 Bytes,包括2 Bytes环境数据和160个测距点(S1-S160),每个2 Bytes,高7位为强度数据,低9位为距离数据. 单位是毫米。YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-12

停止命令

当系统处于扫描状态时,GS2一直在向外界发送点云数据。 此时要禁用扫描,发送此命令停止扫描。 发送停止命令后,模块会回复响应命令,系统立即进入待机休眠状态。 此时设备的测距单元处于低功耗模式,激光器关闭。

  • 命令发送: (发送地址0x00,无论是否级联,所有设备都会关闭)。

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-16

在级联的情况下,如果串联了N(最多3个)设备,该命令只会返回一个响应,其中地址为最后一个设备的地址,例如ample:如果3台设备级联,地址为0x04。

设置波特率命令

当外部设备向GS2发送该命令时,可以设置GS2的输出波特率。

  • 命令发送: (发送地址0x00,只支持设置所有级联设备波特率相同),报文为:

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-11

其中数据段为波特率参数,包括四种波特率(bps),分别为:230400、512000、921600、1500000对应code 0-3(注意:三模块串口必须≥921600,默认为 921600)。

在级联的情况下,如果串联N台(最多支持3台)设备,则该命令将返回N个响应,对应每个设备的参数,地址分别为:0x01、0x02、0x04。

  • 设置好波特率后,需要软重启设备。

设置边缘模式(强抗干扰模式)
当外部设备向GS2发送该命令时,可以设置GS2的抗干扰模式。

  • 命令发送:(发送地址,级联地址),报文为:

命令接收

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-15

Address为级联链路中需要配置的模块地址。 Mode=0对应标准模式,Mode=1对应边缘模式(插座朝上),Mode=2对应边缘模式(插座朝下)。 边缘模式下,激光雷达固定输出10HZ,增强对环境光的过滤效果。 Mode=0XFF表示读取,激光雷达会回到当前模式。 激光雷达默认工作在标准模式。

  • 设置模块 1: 地址=0x01
  • 设置模块 2: 地址=0x02
  • 设置模块 3: 地址=0x04

系统重置命令
当外部设备向GS2发送此命令时,GS2将进入软重启,系统将复位并重启。
命令发送:(发送地址,只能是准确的拼接地址:0x01/0x02/0x04)

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-16

Address为级联链路中需要配置的模块地址。

  • 重置模块 1: 地址=0x01
  • 重置模块 2: 地址=0x02
  • 重置模块 3: 地址=0x04

数据分析

图 3 数据结构说明

内容 姓名 描述
K0(2B) 设备参数 (uint16) 左摄像头角度参数k0系数(见3.3节)
B0(2B) 设备参数 (uint16) 左摄像头角度参数k0系数(见3.3节)
K1(2B) 设备参数 (uint16) 右摄像头角度参数k1系数(见3.3节)
B1(2B) 设备参数 (uint16) 右摄像头角度参数b1系数(见3.3节)
比亚斯 设备参数 (int8) 当前相机角度参数偏置系数(见3.3节)
环境(2B) 环境数据 环境光强度
硅(2B) 测距数据 低9位为距离,高7位为强度值
  • 距离分析
    距离计算公式: 距离 = (_ ≪ 8|_) &0x01ff,单位为毫米。
    强度计算: 质量 = _ ≫ 1
  • 角度分析
    以激光发射方向为传感器正面,以激光圆心在PCB平面上的投影为坐标原点,以PCB平面法线为坐标系建立极坐标系0 度方向。 按照顺时针方向,角度逐渐增加。 YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-17

要将激光雷达传输的原始数据转换到上图中的坐标系中,需要进行一系列的计算。 转换函数如下(详见SDK):

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-28 YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-29

检查代码分析
校验码采用单字节累加方式对当前数据包进行校验。 四字节包头和校验码本身不参与校验操作。 校验码解算公式为:

  • 校验和 = ADD1()
  • = 1,2, … ,

ADD1是累加公式,表示累加元素中从下标1到末尾的数。

在线升级

升级工作流程

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-19

发送协议

图 4 OTA 数据协议格式(小端)

范围 长度(字节) 描述
包头 4 数据包头,固定为A5A5A5A5
设备地址 1 指定设备地址
包ID 1 数据包ID(数据类型)
数据长度 2 数据段的数据长度,0-82
数据 n 数据,n = Data_Len
校验和 1 Checksum,去掉header后剩余字节的校验和

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-21

图 5 OTA 升级说明

指令类型 包ID 描述
开始_IAP 0x0A 上电后发送此命令启动IAP
正在运行_IAP 0x0B 运行 IAP,传输数据包
完成_IAP 0x0C 内购结束
ACK_IAP 0x20 内购回复
重置系统 0x67 在指定地址复位并重启模块

Start_IAP指令

命令发送

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-20

  • 数据段数据格式:
  • 数据[0~1]: 默认为0x00;
  • 数据[2~17]: 是固定字符验证码:
  • 0x73 0x74 0x61 0x72 0x74 0x20 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x00 0x00
  • 参考发送消息
  • A5 A5 A5 A5 01 0A 12 00 00 00 73 74 61 72 74 20 64 6F 77 6E 6C 6F 61 64 00 00 C3

命令接收: 由于FLASH扇区操作,返回延时较长,波动在80ms到700ms之间)

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-23

接收数据格式

  • 地址: 模块地址;
  • 确认: 默认为0x20,表示该数据包为确认包; Data[0~1]:默认为0x00;
  • 资料[2]: 0x0A表示响应命令为0x0A;
  • 资料[3]: 0x01表示正常接收,0表示接收异常;
  • 领取参考:
    A5 A5 A5 A5 01 20 04 00 00 00 0A 01 30
Running_IAP指令

命令发送

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-24

固件在升级过程中会被拆分,数据段(Data)的前两个字节表示该段数据相对于固件第一个字节的偏移量。

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-25

  • 数据[0~1]:Package_Shift = 数据[0]+ 数据[1]*256;
  • 数据[2]~数据[17]: 是固定字符串验证码:
  • 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x69 0x6E 0x67 0x00 0x00 0x00 0x00 0x00 Data[18]~Data[81]: 固件数据;
  • 参考发送消息
  • A5 A5 A5 A5 01 0B 52 00 00 00 64 6F 77 6E 6C 6F 61 64 69 6E 67 00 00 00 00 00 +
    (数据[18]~数据[81]) + Check_Sum

命令接收

  • 地址:我s 模块地址;
  • 确认: 默认为0x20,表示该数据包为确认包;

数据[0~1] : Package_Shift = Data[0]+ Data[1]*256 表示响应的固件数据偏移量。 建议在升级过程中检测响应时判断offset作为一种保护机制。

  • Data[2]=0x0B表示响应命令为0x0B;
  • Data[3]=0x01表示正常接收,0表示接收异常;

参考接收
A5 A5 A5 A5 01 20 04 00 00 00 0B 01 31

Complete_IAP 指令

命令发送

YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-26

  • 数据[0~1]: 默认为0x00;
  • 数据[2]~数据[17]: 是固定字符串验证码:
    0x63 0x6F 0x6D 0x70 0x6C 0x65 0x74 0x65 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

数据[18]~数据[21]: 加密标志,uint32_t类型,加密固件为1,非加密固件为0;

参考发送消息:
A5 A5 A5 A5 01 0C 16 00 00 00 63 6F 6D 70 6C 65 74 65 00 00 00 00 00 00 00 00 + (uint32_t 加密标志) + Check_Sum

命令接收YDLIDARGS2-DEVELOPMENT-Linear-Array-Solid-LiDAR-Sensor-FIG-27

  • 接收数据格式:
  • 地址: 是模块地址;
  • 确认: 默认为0x20,表示该数据包为确认包;
  • 数据[0~1]: 默认为0x00;
  • 资料[2]: 0x0C表示响应命令为0x0C;
  • 资料[3]: 0x01表示正常接收,0表示接收异常;
  • 参考收到的消息:
    A5 A5 A5 A5 01 20 04 00 00 00 0C 01 32

RESET_SYSTEM 指令
详见章节 3.8 系统复位命令。

问答

  • Q:发送复位命令后如何判断复位成功? 是否需要延迟?
    • A: 可以根据reset命令的响应包来判断是否执行成功; 建议在收到响应后增加500ms的延时,再进行后续操作。
  • Q:模块4复位后收到一些不符合协议的串口数据,如何处理?
    • A: 模块上电日志是一串带4个0x3E头的ASCII数据,不影响正常解析带4个0xA5头的数据,可以忽略。 由于物理链路原因,无法接收到1号和2号模块的日志。
  • Q:升级过程断电重启中断怎么处理?
    • A: 重新发送 Start_IAP 命令重新升级。
  • Q:级联状态下升级功能异常的可能原因是什么?
    • A: 确认物理链接是否正确,比如三个模块的点云数据是否可以接收;
    • 确认三个模块的地址不冲突,可以尝试重新分配地址;
    • 重置待升级模块,然后重启试试;
  • Q: 为什么级联升级后读取的版本号为0?
    • A: 表示模块升级不成功,用户需要重新设置模块后再升级。

注意力

  1. 与GS2进行命令交互时,除了stop scan命令外,scan模式下不能交互其他命令,容易导致报文解析错误。
  2. GS2 不会在开机时自动开始测距。 需要发送开始扫描命令进入扫描模式。 当需要停止测距时,发送停止扫描命令停止扫描并进入休眠模式。
  3. 正常启动GS2,我们推荐的流程是:
    第一步:
    发送Get Device Address命令获取当前设备的地址和级联数,并配置地址;
    第二步:
    发送get version 命令获取版本号;
    第三步:
    发送获取设备参数命令获取设备的角度参数进行数据分析;
    第四步:
    发送开始扫描命令获取点云数据。
  4. GS2透视窗透光材料设计建议:
    如果前盖透视窗是为GS2设计的,建议使用透红外线的PC作为其透光材料,透光区域要求是平整的(平面度≤0.05mm),所有区域都在平面在 780nm 到 1000nm 波段应该是透明的。 出光率大于90%。
  5. GS2导航板反复开关机推荐操作流程:
    为了降低导航板的功耗,如果GS2需要反复开关机,建议在关机前先发送停止扫描命令(见3.5节),然后配置好导航板的TX和RX导航板为高阻抗。 然后将 VCC 拉低以将其关闭。 下次上电时,先拉高VCC,然后配置TX和RX为正常输出和输入状态,再延时300ms后,与线激光器进行命令交互。
  6. 关于每条GS2命令发送后的最大等待时间:
    • 获取地址:延时800ms,获取版本:延时100ms;
    • 获取参数:延时100ms,开始扫描:延时400ms;
    • 停止扫描:延时100ms,设置波特率:延时800ms;
    • 设置边沿模式:延时800ms,启动OTA:延时800ms;

修改

日期 版本 内容
2019-04-24 1.0 撰写初稿
 

2021-11-08

 

1.1

修改(修改协议框架合并左右摄像头数据;建议添加透视窗材质;添加波特率

设置命令)

2022-01-05 1.2 修改获取设备地址命令的接收说明,以及左右摄像头的说明
2022-01-12 1.3 添加边缘模式,补充K、B、BIAS计算说明
2022-04-29 1.4 修改章节3.2:获取版本信息命令的描述
2022-05-01 1.5 修改软重启命令的地址配置方式
 

2022-05-31

 

1.6

1)更新第3.7节

2) Section 3.8 RESET命令增加了一个回复

3) 新增第5章OTA升级

2022-06-02 1.6.1 1)修改OTA升级流程

2)修改OTA问答

www.ydlidar.com

文件/资源

YDLIDAR GS2 DEVELOPMENT 线阵固体激光雷达传感器 [pdf] 用户手册
GS2 DEVELOPMENT 线阵固体激光雷达传感器, GS2 DEVELOPMENT, 线阵固体激光雷达传感器, 阵列固体激光雷达传感器, 固体激光雷达传感器, 激光雷达传感器, 传感器

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *