环境因素导致激光雷达只能面对面安装
方案1:两个激光雷达都设为 315°
可以看到,这种方案在黑色阴影区域的感知效果较好,最大时延为 25ms。但是在非阴影区的时延非常大(时延大于 50ms,并需要针对性裁剪区域)
方案2:相位设为 90°和 270°
存在的问题:
机械式激光每秒旋转 10 次,旋转一次 100ms,假设 Lidar1 和 lidar2 同步的情况下,对射情况。从 tt0-tt3 和 t0-t3 的时间可以看到 tt3 与 t0 的最大时差为 100ms。同样的,t3 和tt0 的最大时差也为 100ms。这就导致标注数据时同一个目标的两帧点云有较多部分点云不重合,导致检测性能大幅度下降。
解决方案:错位拼接技术
原理:
1、因为机械式激光雷达旋转一周需要耗时100ms,两个雷达拼接存在目标错位的情况较为严重
2、通过相邻帧的错位拼接,可以有效降低目标错位的情况。(时延降低到25ms内)
3、为了尽可能减少对感知侧的代码修改,本方案只在驱动侧进行代码修改,这样感知侧无需修改代码。
4、正常一帧点云复制数据需要耗时3-5ms(一个点一个点进行复制),拼接耗时应该在10ms内完成。
如何做?
1、确定好主激光雷达,假设left为主,相位为90°,right为辅,相位为270°
2、假设t=0ms时,left已成像,记录 left 270°~360°的激光雷达点云
3、假设t=50ms时,right已成像,记录right整个帧数据,与之前代码保持不变
4、假设t=100ms时,left完成成像,分别记录left 270°~360°的激光雷达点云和left 0°~270°的激光雷达点云
5、此时需要做错帧拼接,将t=0ms时刻的left 270°~360°的激光雷达点云与t=100ms时刻 left 0°~270°的激光雷达点云合并
6、采用方法为创建一个队列,维持两个时刻的left激光雷达270°~360° 的数据,通过进队和出队的方式存取数据。
7、这样就完成的错位拼帧,但是为了后续的感知模块对齐时间戳,还需要将原本的时间戳进行修改。(因为同步后的错帧相差50ms)
可优化代码:
1、目前点云的存储是一个一个点进行复制的,所以速度较慢。可以考虑利用成块的点云进行复制操作,效率更高。
2、利用全局定义加速代码效率