点云数据UDP数据包解析算法举例
发布网友
发布时间:2022-12-07 22:17
我来回答
共1个回答
热心网友
时间:2023-06-21 16:42
# fill pcl msg
fields = [PointField('x', 0, PointField.FLOAT32, 1),
PointField('y', 4, PointField.FLOAT32, 1),
PointField('z', 8, PointField.FLOAT32, 1),
PointField('intensity', 12, PointField.FLOAT32, 1)]
包括激光点的三维坐标、多次回波信息、强度信息、扫描角度、分类信息、飞行航带信息、飞行姿态信息、项目信息、GPS信息、数据点颜色信息等
C–class(所属类)
F一flight(航线号)
T一time(GPS时间)
I一intensity(回波强度)
R一return(第几次回波)
N一number of return(回波次数)
A一scan angle(扫描角)
RGB一red green blue(RGB颜色值)
点云数据UDP数据包解析算法举例
以某一个UDP数据包中Block 3中的Channel 5为例,具体的线束分布请参考附录I:
1)由附录I可知,Channel 5对应的水平角度偏移量为-1.042°,垂直角度为3.04°。
2)水平角度为转子此时的角度加上水平角度偏移量=(Azimuth Angle 3+(-1.042))度
(注意 我们定义从上往下看时,顺时针为水平角度正方向)。
3)解析UDP包Channel 5 Unit 3的值,其高位2个bytes构成的距离值乘以4mm即可得到以毫米为单位的真实世界的测距值。
至此,这一个测距点表示的测距方向和测距距离都得到了解析,可以在极坐标系或者直角坐标系中画出此次测距对应的障碍物点位置。对每个UDP包中所有的测距数据都做这样的解析,即可画出实时的激光雷达测距点云。
3.2 GPS数据UDP包
每一个GPS数据包都含有42 bytes以太网包头及512 bytes UDP数据。所有的多字节值均为小端字节序Little Endian。GPS数据包每秒被触发一次,端
口10110。
在接收到GPS数据前,激光雷达内部的1Hz的信号上升沿会触发一个GPS数据包。GPS数据包中的初始时间为000101000000(yymmddhhmmss,年,
月,日,时,分,秒)。如果GPRMC信息在开始时没有被提供,此非真实的GPS时间会随着内部1Hz信号更新。如果雷达接收到PPS信号和GPRMC数
据,本地的1Hz信号会被锁定到PPS信号。GPS数据包还是通过内部1Hz信号上升沿触发。同时,GPS数据包中的时间会被更新为GPRMC信息中的真实
时间。
GPS模块首先会发送PPS信号,再发送GPRMC信息。雷达可以从中提取出UTC信息,并把6 bytes的UTC时间(年:月:日:时:分:秒)输入到点云
数据包中。用户可以通过相加点云数据包中4 bytes的时间戳和6 bytes的UTC时间来获得此数据包的绝对时间。
一旦雷达获取到GPS信号,数据包中的GPS时间就会根据接收到的GPRMC信息进行更新。如果GPS模块停止发送数据,雷达依然会根据内部1Hz信号上
升沿触发GPS数据包,并且数据包中GPS时间会根据之前得到的真实GPS时间计时。