薛定谔的猫

介绍一款激光雷达的通信协议解析1

0
阅读(5202)

通信协议总体设计

1 数据报文结构

 

1 byte

2 byte

1 byte

N bytes

1 byte

报文头

传输方向/长度

雷达ID

报文数据

校验和

报文头:0xef

传输方向/长度:第一字节的bit7:报文传输方向(1-从主机到雷达,0-从雷达到主机)

第一字节的bit6~bit0和第二字节(15位二进制数):报文数据的长度,即N

雷达ID:标识雷达设备的编号

报文数据:最长32767个字节

校验和:将报文该字节前所有字节相加所得

 

2 报文数据

 

1 byte

N bytes

报文类型

报文内容

报文类型:1个字节

报文内容:最长32766个字节

 

具体报文格式

1 PCàRadar的命令报文

 

报文类型

报文内容

0x01:雷达开启命令

0x02:雷达停止命令

0x03:索要背景地图命令

0x04:索要检测结果命令

0x05:索要参数命令

0x06:状态查询命令

0x08:雷达信息查询命令

 

2 PCàRadar 设置参数命令

报文类型:0x07

报文内容:

 

ByteID

解释

0

背景偏移量(单位:cm)

1

检测物体宽度阈值(单位:cm)

2

同物体距离阈值(单位:cm)

3

建立地图周期(单位:分钟)

4

融合时间(单位:分钟)

5

融合步数

6~9

IP地址

10,11

端口号:字节10-低8位;字节11-高8位

12

其他设置:

bit0:0-雷达工作于上传处理结果模式;1-雷达工作于上传原始数据模式

bit1:雷达是否自动上传新建地图数据,1为自动上传

bit2:雷达是否自动上传检测结果,1为自动上传

   【注】bit0设置为0时,bit1和bit2的设置才有意义

 

13

雷达ID号

14~17

雷达工作扫描起始角(float型数,单位:弧度)

18~21

雷达工作扫描结束角(float型数,单位:弧度)

 

3 RadaràPC 雷达应答报文

 

报文类型

报文内容

0x01

0x01:雷达开启成功

0x02:雷达开启失败

0x03:雷达停止成功

0x04:雷达新参数设置成功

0x05:雷达新参数设置失败

0x06:雷达地图尚未准备好(用于主机发送“索要地图命令”后的否定应答)

0x07:当前状态正常(作为对“状态查询命令”的应答)

0x08:没有新报警结果(作为对“索要检测结果命令”的否定应答)

0x09:模式错误(例如,当雷达处于上传原始数据命令时,主机发送命令索要地图或报警结果,雷达就会以此应答)

0x0a:雷达电压不足

 

4 RadaràPC 雷达上报的自身参数报文

报文类型:0x07

报文内容:(与前述PCàRadar的参数设置命令的报文内容格式相同)

 

5 RadaràPC 雷达上报的自身信息报文

报文类型:0x08

报文内容结构:

 

ByteID

解释

0

版本号

 

6 RadatràPC 处理结果及原始数据报文

 

报文类型

报文内容

0x02:背景地图数据报文

见后

0x03:检测报警结果数据报文

见后

0x04:原始扫描数据报文

见后

 

下面描述各种数据报文的“报文内容”结构:

 

背景地图数据和原始扫描数据的“报文内容”结构相同,如下:

 

ByteID

解释

0~3

开始角度(float型数,单位:弧度)

4~7

结束角度(float型数,单位:弧度)

8,9

测距值个数(小端模式)

10,11

测距值1(单位:cm,小端模式)

12,13

测距值2(单位:cm,小端模式)

14,15

测距值3(单位:cm,小端模式)

。。。

测距值。。。

 

报警结果数据结构:

 

ByteID

解释

0~15

时间(SYSTEMTIME结构体)

16,17

目标个数(小端模式)

18~21

目标1角度(float型数,单位:弧度)

22,23

目标1距离(单位:cm,小端模式)

24

目标1宽度(单位:cm)

25~28

目标2角度(float型数,单位:弧度)

29,30

目标2距离(单位:cm,小端模式)

31

目标2宽度(单位:cm)

。。。

目标3角度。。。