一种在Unity中高效模拟激光雷达的方法技术

技术编号:21548321 阅读:218 留言:0更新日期:2019-07-06 21:41
本发明专利技术属于自动驾驶与数据处理技术领域,是一种在Unity中高效模拟激光雷达的方法,包括激光雷达数据初始化、更新射线指令、批量射线检测、筛选有效射线和变换输出数据等步骤。本发明专利技术为自动驾驶仿真领域的激光雷达模拟提供了计算耗时短、可定制程度高的解决方案。

An Efficient Method for Simulating Lidar in Unity

【技术实现步骤摘要】
一种在Unity中高效模拟激光雷达的方法
本专利技术涉及一种计算机模拟激光雷达的方法,具体而言是一种在Unity中高效模拟激光雷达的方法,属于自动驾驶与数据处理

技术介绍
激光雷达(Lidar)是一种向指定方向发射激光束并检测返回光束来获取目标位置等数据的装置。自动驾驶领域常用的激光雷达为多线束机械旋转式激光雷达,由于其定位精准,算法实现难度低,不受昼夜影响等诸多优点,成为自动驾驶核心定位与检测设备之一。在自动驾驶汽车的开发过程中,需要在各种行驶条件下,对无人驾驶技术进行不断的验证测试,从确保无人驾驶技术的安全程度能够高于人类驾驶员的操作,有时候还需要在实际道路上对自动驾驶汽车进行测试。但现阶段激光雷达制造难度较大,无法实现自动化生产,随着线束的增多,雷达的价格也呈指数增长。同时机械式激光雷达有高速旋转的机械结构,长时间工作势必导致设备过度损耗。在这种环境下,通过计算机模拟激光雷达,成为自动驾驶仿真领域一项刚需。另外,虚拟道路测试也是积累无人驾驶汽车测试里程的重要手段之一。虚拟道路测试能够有效对危险或不常见的驾驶场景进行测试,其灵活性和多用性,使其在自动驾驶技术开发中发挥着重要作用。在虚拟道路测试中,无法或者不便利用激光雷达传感器进行探测。然而,激光雷达传感器的点云数据又对自动驾驶汽车系统的研究具有重要的意义。目前常见的模拟激光雷达的方法,是在渲染过程中取深度数据,再通过深度数据计算出各个点的位置信息。然而这样做存在不少问题,比较明显的有:1)相机视角最高不能超过180度,而机械式激光雷达的扫描范围为360度,这样在一帧之内,只渲染一次将无法得到完整的激光雷达数据,要获得完整的数据又得在一帧内渲染多次画面,显著增大了性能压力。2)深度数据位于显存中,每次渲染后均需要从显存中读取数据到内存,这种回读的行为不仅打断正常的渲染流程,还存在无法消除的时间损耗。
技术实现思路
专利技术目的:为了克服现有深度渲染法所存在的不足,结合Unity引擎的优势,本专利技术提供一种在Unity引擎中高效模拟激光雷达的方法。技术方案:为解决上述技术问题,本专利技术提供的模拟方法,包括以下步骤:步骤1、数据初始化首先对激光雷达在世界坐标系中的位置lidarPosition、激光雷达在世界坐标系中的朝向lidarDirection以及激光雷达射线扫描距离scaneRage进行初始化;然后对激光雷达的每条射线建立以下数组,包括射线端点数组rayLocalStarts、射线方向数组rayLocalDirections、射线指令数组raycastCommands和射线返回值数组raycastHits,其中射线指令数组raycastCommands用于存放Unity引擎中批量射线检测方法RaycastCommand.ScheduleBatch需要的射线指令,射线返回值数组raycastHits用于存放Unity引擎中批量射线检测方法RaycastCommand.ScheduleBatch的直接返回值;步骤2、更新射线指令依次向raycastCommands数组中更新当前射线在世界坐标系中的端点位置与朝向;步骤3、批量射线检测调用Unity批量射线检测方法RaycastCommand.ScheduleBatch进行碰撞检测,碰撞检测时传入raycastCommands数组的数据,将碰撞检测的结果distance依次返回到raycastHits数组中;步骤4、筛选有效射线找到raycastHits数组中distance大于0的射线作为有效射线;步骤5、变换输出数据将所有有效射线的位置从世界坐标系转换到LiDAR坐标系下,即得到当前所需的激光雷达数据;步骤6、返回执行步骤2,直到进入预设的结束流程释放资源。需要说明的是,Unity引擎是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity引擎为开发者提供了便捷的图像与物理接口,可以方便地创建各种视觉与物理模拟环境并进行各种自定义拓展,在自动驾驶仿真领域有广泛应用。本专利技术提供了一种针对Unity引擎模拟车载激光雷达的实现方案,充分利用Unity引擎中的优化特性高速生成射线数据流,在低碰撞数目环境下,处理流程在1ms以内,远低于采用深度法过程中渲染多帧图像的开销,在高碰撞开销的耗时亦低于现有技术。由于数据来源是碰撞器可与图形数据分离,可定制程度更高,为自动驾驶仿真试验平台提供了高效费比的解决方案。上述技术方案的进一步改进是:步骤2中使用继承于JobSystem中的IJobParallelFor接口的并行处理方法更新射线指令。JobSystem允许采用多线程处理任务,从而实现高性能体验,它不仅能改善帧率,而且特别适合用来处理多个需要长时间运行的任务。上述技术方案的再进一步改进是:步骤4中筛选有效射线时,采用基于NativeList的并行索引插入方法ScheduleAppend在多线程中进行有效射线的判断,并将有效射线的索引插入NativeList中。NativeLis为Unity引擎中的一个Collection,能够在并行计算时充分利用cpu的cache命中率提高局部代码执行速度。除以上所述的本专利技术解决的技术问题、构成技术方案的技术特征以及由这些技术方案的技术特征所带来的优点外。为使本专利技术目的、技术方案和有益效果更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术所能解决的其他技术问题、技术方案中包含的其他技术特征以及这些技术特征带来的优点做更为清楚、完整的描述。附图说明图1是本专利技术实施例的流程图;图2是本专利技术实施例的算法示意流程;图3是本专利技术实施例中模拟低碰撞开销的处理时间示意;图4是本专利技术实施例中模拟高碰撞开销的处理时间示意。具体实施方式实施例:Unity作为通用图形引擎,内部集成了第三方物理引擎,能够满足自动驾驶领域的物理与图像仿真需求。近年来的Unity更是通过面向数据流计算的优化补丁,性能进一步提高。比如在Unity2018版本中,新增了一些功能增补丁,主要包括:1)Collections,在C#中创建类似C++中数组结构的原生容器,将有效数据连续紧密排列,在并行计算时充分利用cpu的cache命中率提高局部代码执行速度。以下方法将使用到其中的NativeArray、NativeList、NativeQueue、NativeHashMaps、NativeMutiHashMaps等。2)Jobs,独立封装的代码块结构,通过预先设计数据排列方式,其中的代码可以并行在多个线程上处理,手法上类似OpenMP。以下方法将使用到IJobParallelFor、IJobParallelForFilter、IJobNativeMultiHashMapMergedSharedKeyIndices格式的Jobs并行代码。3)Mathematics,在C#中提供SIMD数学库的支持,使用向量指令集加速矩阵的计算。4)Brust,提供以上三者的编译器级支持,对Jobs中代码编译成非托管高速代码。得益于这些优势,我们可以在较新版本的Unity中实现高效获取激光雷达点云的新方法,其实本文档来自技高网
...

【技术保护点】
1.一种在Unity中高效模拟激光雷达的方法,包括以下步骤:步骤1、数据初始化首先对激光雷达在世界坐标系中的位置、激光雷达在世界坐标系中的朝向以及激光雷达射线扫描距离进行初始化;然后对激光雷达的每条射线建立以下数组,包括射线端点数组、射线方向数组、射线指令数组和射线返回值数组;其中,射线指令数组用于存放Unity引擎中批量射线检测方法需要的射线指令,射线返回值数组用于存放Unity引擎中批量射线检测方法的直接返回值;步骤2、更新射线指令依次向射线指令数组中更新当前射线在世界坐标系中的端点位置与朝向;步骤3、批量射线检测调用Unity批量射线检测方法进行碰撞检测,碰撞检测时传入射线指令数组的数据,将碰撞检测的结果distance依次返回到射线返回值数组中,distance为从射线起点到射线与碰撞器的交点的距离;步骤4、筛选有效射线找到射线返回值数组中distance大于0的射线作为有效射线;步骤5、变换输出数据将所有有效射线的位置从世界坐标系转换到Lidar坐标系下,得到当前所需的激光雷达数据;步骤6、返回执行步骤2,直到进入预设的结束流程释放资源。

【技术特征摘要】
1.一种在Unity中高效模拟激光雷达的方法,包括以下步骤:步骤1、数据初始化首先对激光雷达在世界坐标系中的位置、激光雷达在世界坐标系中的朝向以及激光雷达射线扫描距离进行初始化;然后对激光雷达的每条射线建立以下数组,包括射线端点数组、射线方向数组、射线指令数组和射线返回值数组;其中,射线指令数组用于存放Unity引擎中批量射线检测方法需要的射线指令,射线返回值数组用于存放Unity引擎中批量射线检测方法的直接返回值;步骤2、更新射线指令依次向射线指令数组中更新当前射线在世界坐标系中的端点位置与朝向;步骤3、批量射线检测调用Unity批量射线检测方法进行碰撞检测,碰撞检测时传入射线指令数组的数据,将碰撞检测的结果distance依次返回到射线返回值数组中,distance为从射线起...

【专利技术属性】
技术研发人员:周路翔陈诚张旸
申请(专利权)人:奥特酷智能科技南京有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1