介绍一款激光雷达的通信协议解析1
0赞通信协议总体设计
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角度。。。 |
