G4激光雷达数据解析以及与单片机的通讯方法

想用单片机直接通过串口连接激光雷达,测障碍物,该激光雷达波特率230400,是arduino的极限115200的两倍,所以要用STM32的芯片了。其数据手册说的还是不清楚,固连接电脑的串口根据测得的数据进行了解析,明白多了。串口扫描得到在数据如图:
在这里插入图片描述
选出其中一段进行解析如下图:
在这里插入图片描述

AA 55 00 28 41 AE 93 B3 EC 5E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 45 90 44 78 43 7C 42 A4 41 B8 40 4C 40 80 3F 00 00 00 00 DC 3E EC 3E E8 3E 58 3F 00 00 18 42 A0 41 14 42 C4 41 A8 41 68 42 A0 42 00 00
其中AA 55 为数据头部,所以单片机只需找AA 55 即可。00 代表是点云数据。 28十进制为40,代表此次的数据包中有40个点的位置数据(一般都是此值,也有其它的值,没有规律,但是此值越大结束角和起始角的角度差值也就约大,平均每个点占约0.27度,这跟设备的角度分辨率正好契合。相当于每0.28度获得一次数据,不管有没有障碍物,没有得到的是0,有的话是距离障碍物的距离值)。 41 AE 代表此包数据的起始角度,低位在前,高位在后,那么值是AE41转成十进制为44609,根据说明书(见后面的说明书图),要右移一位(相当于十进制除以2)然后除以64,那么此角度约为:44609/128=348.508度(这是一级解析的值即错略的,后面要二级解析即精确值见后面说明书的图);B3 EC代表此包数据的结束角度,低位在前,高位在后,此角度约为:45971/128=359.148度(这是一级解析的值即错略的,后面要二级解析即精确值见后面说明书的图);此包数据总共占了10.64度的角度。EC 5E是校验位不用管它。后面的是数据,没两个字节一个点的距离数据,此包是40个点所以80个字节(距离计算简单,见见后面的说明书图)。

AA 55 01 01 1D AE 1D AE AB 54 00 00
紧挨着前面的这包数据比较有意思,这就是说明书中的零位数据,并不是0度角(数据线的方向,见说明书)的位置数值,也不是0距离值(没障碍物,或障碍物距离激光雷达小于300mm)的位置,其它的包你也看到了,0值(没障碍物,或障碍物距离激光雷达小于300mm,俺亲自测得的,要注意这个问题)多的很。至于意义,那就搞不懂了,很少出现,我截图里就一次,反正按说明书说,此种数据就一个值已经用第三个字节01表明(此字节,其它正常的好多点云的是00见上个数据包和说明书)。其中AA 55 为数据头部,所以单片机只需找AA 55 即可。1D AE 1D AE分别代表代表此包数据的起始角度和结束角度,这里都为1D AE即44573/128=348.227度。AB 54代表校验位不用管它。00 00代表此唯一一个点的距离,为0。

其它从前到后的解析计算如下图(15十进制为21个点;16为22个点):
在这里插入图片描述

此雷达公司网址;eaibot.com,说明书如下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
跟单片机的TX和RX对调着接是基本常识,我就不说了。

在这里插入图片描述
我通过电脑的串口发十六进制A560,雷达就转且发送扫描数据到电脑了。我最后又发了A565雷达就停了,不转且停止发数据到电脑。

在这里插入图片描述
这里都不用管,一次开机只发一次,后面就一直是数据包了,所以0XA55A根本就不用监听。
在这里插入图片描述
上表很重要,是单片机需要关心的。
在这里插入图片描述图6不用管它,就是右移一位解决问题的意思。

猜你喜欢

转载自blog.csdn.net/weixin_44345862/article/details/86500349