遮挡判断方法及相关装置、剔除方法、模块、仿真平台与流程
未命名
08-15
阅读:155
评论:0
1.本发明属于一种模拟仿真平台中的遮挡计算和判断方法,具体涉及一种遮挡判断方法及相关装置、剔除方法、模块、仿真平台。
背景技术:
2.在图形学的应用开发中,例如,在游戏应用中,遮挡剔除是非常重要的技术手段,能够辅助识别不需要渲染的物体,进而降低开销。
3.目前,基于游戏引擎开发的自动驾驶仿真平台中,一般采用以下方法进行遮挡计算和判断:
4.(1)预计算可见性。先将场景划分为多个cell,然后预计算出摄影机在每个cell区域范围内所有可能看到的物体,并将信息保存下来。在后续运行时就可以直接通过查表得到所有静态物体的可见信息。
5.(2)software-culling(软件选择)。手动标记大型的用于遮挡的物体,在运行时,将遮挡物的包围盒软光栅到cpu内存中的z-buffer(z缓存)上,然后根据z-buffer中的深度信息,按照需要剔除物体的包围盒,实时计算遮挡信息。
6.(3)遮挡查询。首先使用一个depth-only的pass(动作)将深度写入到z-buffer中,然后使用物体的包围盒传入到gpu进行遮挡测试,若测试发现所有像素均被遮挡,则说明该物体是被遮挡的物体,否则,认为是可见的。
7.(4)hzb(hierarchical z-buffer,分层z缓存)。hzb是多层级的z-buffer,每个更高级别的buffer记录上一级别周围四点中最远处的深度值。hzb生成后,可以将待剔除物体的包围盒信息传入到computer shader(计算机着色器)中进行计算,计算时选择最适合的级别进行遮挡测试。屏幕中占比更大的物体将选择更高级别的深度进行测试,能够降低计算量。
8.但是,上述方法仍然存在以下缺点:
9.(1)预计算可见性时,无法剔除动态物体,且静态物体的可见性是不可变的;
10.(2)software-culling在cpu侧计算消耗大,需要深度信息;
11.(3)遮挡查询和hzb依赖gpu,也需要深度信息。
技术实现要素:
12.本发明为了解决目前基于虚幻引擎开发的自动驾驶仿真平台中,采用的遮挡计算和判断方法存在无法剔除动态物体、cpu侧计算消耗大、依赖gpu和需要深度信息的技术问题,提供一种遮挡判断方法及相关装置、剔除方法、模块、仿真平台。
13.为了实现上述目的,本发明采用以下技术方案予以实现:
14.第一方面,本发明提供一种遮挡判断方法,包括以下步骤:
15.在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线;
16.获取所有被射线击中物体的被击中次数;
17.对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡;所述理论被击中次数结合射线数目确定。
18.优选地,所述理论被击中次数,具体是结合射线数目、被射线击中物体所在击中面和被射线击中物体包围盒在击中面上的投影确定的;
19.所述击中面为,以击中被射线击中物体的射线发射方向为法向量的平面。
20.优选地,所述理论被击中次数通过下式得到:
[0021][0022]
其中,a为理论被击中次数,p为被射线击中物体包围盒在击中面上的投影面积,s为被射线击中物体所在击中面的面积,n为射线数目。
[0023]
优选地,所述根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡具体为:
[0024]
通过下式计算被射线击中物体的被遮挡比例b:
[0025][0026]
其中,h为被射线击中物体的被击中次数;
[0027]
若被射线击中物体的被遮挡比例b大于预设值,则判断被射线击中物体被遮挡,否则,判断被射线击中物体未被遮挡。
[0028]
第二方面,本发明提供一种遮挡判断系统,包括射线模块、统计模块和判断模块:
[0029]
所述射线模块,用于在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线;
[0030]
所述统计模块,用于获取所有被射线击中物体的被击中次数;
[0031]
所述判断模块,用于对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡;所述理论被击中次数结合射线数目确定。
[0032]
第三方面,本发明提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0033]
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
[0034]
第五方面,本发明提供一种遮挡剔除方法,包括以下步骤:
[0035]
采用上述遮挡判断方法进行判断,若被射线击中物体被遮挡,则剔除被射线击中物体,否则,保留被射线击中物体。
[0036]
第六方面,本发明提供一种遮挡剔除模块,所述遮挡剔除模块在计算遮挡剔除后的目标信息时,采用上述遮挡剔除方法剔除或保留被射线击中物体。
[0037]
第七方面,本发明提供一种仿真平台,包括虚幻引擎、服务端和用户端,其特征在于:所述服务端中设置有上述的遮挡剔除模块。
[0038]
与现有技术相比,本发明具有以下有益效果:
[0039]
本发明的遮挡判断方法,判断是否被遮挡时,将面积计算转换为射线发射数目的比例计算,大幅降低了计算的复杂度,使得本发明的判断方法不用依赖于硬件资源gpu和对
深度信息的使用,处理耗时短且判断准确度高,对硬件资源基本没有要求,不需要占用模拟仿真平台的算力资源,还可以同时处理动态物体和静态物体。另外,可实时进行判断,实时性高,适用于模拟仿真平台的应用环境,不影响整体仿真测试的时间延迟。
[0040]
进一步地,本发明在计算理论被击中次数时,结合射线数目、被射线击中物体所在击中面面积和被射线击中物体包围盒在击中面上的投影面积得到,计算方法简单,容易实现。
[0041]
本发明的遮挡判断系统,可通过模块化的形式,实现上述遮挡判断方法,并与应用推广。
[0042]
本发明的遮挡剔除方法,通过上述遮挡判断方法进行判断,若被射线击中物体被遮挡,则剔除被射线击中物体,否则,保留被射线击中物体,能够对虚拟世界中的场景进行优化,使其与现实世界更加接近,提高了用户体验感。
[0043]
本发明的仿真平台,使服务端中的遮挡剔除模块通过上述遮挡剔除方法,计算遮挡剔除后的目标信息,提升了仿真平台目标检测传感器的效果和下游功能模块的性能,有效增强了仿真平台的整体竞争力。
附图说明
[0044]
为了更清楚的说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0045]
图1为自动驾驶仿真平台carla的结构框架图;
[0046]
图2为本发明实施例一的流程示意图;
[0047]
图3为本发明实施例二的流程示意图;
[0048]
图4为本发明实施例二中被射线击中物体的包围盒在击中面上的投影面积和被射线击中物体所在击中面的面积示意图;
[0049]
图5为本发明实施例三的示意图;
[0050]
图6为本发明实施例四的示意图。
具体实施方式
[0051]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0052]
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053]
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0054]
在本发明实施例的描述中,需要说明的是,若出现术语“上”、“下”、“水平”、“内”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0055]
此外,若出现术语“水平”,并不表示要求部件绝对水平,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
[0056]
在本发明实施例的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0057]
在自动驾驶仿真测试领域,仿真模拟软件可以为软件的使用者提供模拟世界所有元素的完整信息,包括模拟世界所有元素的坐标、朝向和尺寸等。和真实的传感器类似,当使用者在仿真模拟世界中使用虚拟传感器进行测试,虚拟传感器也具有一定的成像距离和视角范围限制,是对真实世界传感器的一比一克隆。类似的,在真实相机视角下被遮挡的物体,在虚拟相机中也不应该被显示。
[0058]
如图1所示,为一种典型的自动驾驶仿真平台carla的结构框架图。基于虚幻引擎提供场景渲染功能,使用网络通信和调用协议建立server-client的机制,实现3d世界的仿真模拟。主要分为服务端和用户端。服务端负责与仿真本身相关的内容,还可以根据用户端的外来指令更新仿真的虚拟世界,服务端内设有各种各样模拟真实世界的传感器模型,包括相机、激光雷达、声波雷达、imu、gnss等。而虚拟世界在不同时刻应当如何运转,则有用户端控制,用户可通过书写python脚本向服务端输送指令,指导虚拟世界变化,服务端再根据用户的指令去执行。同时,用户端也可以接受服务端的信息,如虚拟世界中某个相机拍到的照片等。
[0059]
从数据流向来看,虚幻引擎使用gpu完成渲染管线计算流程,仿真平台通过插件的形式获取到渲染结果后,通过网络通讯协议发送到用户端。carla框架中,仿真平台服务端建立的传感器调用射线发射函数,获取由底层虚幻引擎计算出来的射线击中结果,作为结果的击中信息通过函数调用方式被获取到之后,在服务端经遮挡剔除模块,计算出遮挡剔除后的目标信息,然后通过通信模块将最终计算出来的目标检测信息发送到测试用户一端,用于下游测试、预测、规划和控制等。
[0060]
为了保证仿真测试的高保真性,需要结合传感器的实际视场范围对元素进行筛选。对于虚拟世界的元素成像进行遮挡剔除,即在和真实相机相同参数配置下,虚拟相机也具有实际的可见范围,那么在可见范围之外的物体需要被剔除掉,这是自动驾驶感知测试中一个重要的物体检测任务,即识别物体的包围盒。包围盒在虚幻引擎中的生成和元素三维模型的骨骼有直接关系,虚幻引擎自有的遮挡剔除无法完成对骨骼的筛选,导致在仿真环境下,被遮挡物体的包围盒仍旧会被显示出来。本发明也正是基于该问题,提出了一种遮挡剔除方法。
[0061]
如下是本发明的实施例,用以对本发明进行详细说明:
[0062]
实施例一
[0063]
如图2所示,是本发明一种遮挡剔除方法的一个基础实施例,具体步骤如下:
[0064]
s101,在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线。预置传感器设置在仿真模拟世界,是一个模拟真实的传感器,能够向外发射射线。
[0065]
s102,获取所有被射线击中物体的被击中次数。
[0066]
s103,对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡。且本发明中的理论被击中次数是结合射线数目确定的。
[0067]
实施例二
[0068]
如图3所示,是本发明一种遮挡剔除方法的一个具体实施例,具体步骤如下:
[0069]
s201,在仿真模拟世界,架设一个可以发射射线的预置传感器。
[0070]
s202,在仿真过程中的每一个时刻,通过预置传感器向外一定视场角内发射一定数量的射线。视场角的范围和射线的数量可根据仿真模拟世界的情况进行调整,如射线数量越高计算精度越高,但还要考虑预置传感器的设置难度和仿真虚拟世界的设置情况等。
[0071]
s203,统计所有发射射线的击中情况,如果某一条射线击中了物体,记录被射线击中物体的标识符,最终获得每一个被射线击中物体的被击中次数h。关于物体的标识符,由于仿真虚拟世界为构建的虚拟世界,仿真虚拟世界中的所有物体在构建过程中,均有用于与其他物体区分的标识符,记录该标识符,即是将该物体记录为被射线击中物体,进而获得所有被射线击中物体的被击中次数。
[0072]
s204,确定击中面和击中面的面积。
[0073]
如图4,对于每一个被射线击中物体,射线发射时,以预置传感器所在位置为初始点,所有射线从初始点发射,共同形成类似圆锥体的范围,获取被击中时被射线击中物体与传感器的距离,再以击中被射线击中物体的射线发射方向为法向量,能够确定该圆锥体的一个垂直于轴向的截面,将该截面记作击中面,此击中面的面积为s。图4中c表示被击中物,实施例二中以汽车为例,d表示该被击中物的包围盒。
[0074]
s205,获取被射线击中物体的包围盒在击中面上的投影面积,则该被射线击中物体在无遮挡时的理论被击中次数为:
[0075][0076]
其中,a为理论被击中次数,p为被射线击中物体包围盒在击中面上的投影面积,s为被射线击中物体所在击中面的面积,n为射线数目。
[0077]
s206,最终可以通过下式计算被射线击中物体的被遮挡比例b:
[0078][0079]
若被射线击中物体的被遮挡比例b大于预设值,则判断被射线击中物体被遮挡,否则,判断被射线击中物体未被遮挡。
[0080]
此处的预设值可以根据需要的判断标准进行设定。
[0081]
本发明首先在一定视角范围内发射射线,获取射线的击中信息,进而统计出每一个可见物体的被击中次数,然后通过物体包围盒在射线法向量平面的投影面积和当前位置
的视角截面面积的比例关系,计算出理论被击中次数,最后使用实际被击中次数和理论被击中次数,计算出物体的被遮挡比例。
[0082]
实施例三
[0083]
如图5所示,为了实现上述遮挡判断方法,本发明还提出一种遮挡判断系统,包括射线模块、统计模块和判断模块。
[0084]
所述射线模块,用于在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线;
[0085]
所述统计模块,用于获取所有被射线击中物体的被击中次数;
[0086]
所述判断模块,用于对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡;所述理论被击中次数结合射线数目确定。
[0087]
作为实施例三的优选方案,射线模块、统计模块和判断模块,具体还可以根据实施例二中的优选方案具体实现。
[0088]
在本发明的其他实施例中,射线模块、统计模块和判断模块既可以进行相应组合,也可以进行进一步拆分,通过更多子模块分别实现每一模块中的各子功能。
[0089]
本发明一实施例提供的计算机设备。该实施例的计算机设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
[0090]
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。
[0091]
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。
[0092]
所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
[0093]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机设备的各种功能。
[0094]
所述计算机设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的
是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0095]
实施例四
[0096]
如图6所示,基于上述遮挡判断方法,本发明还提出了一种遮挡剔除方法:
[0097]
s301,采用前述遮挡判断方法的任一实施例进行判断,判断被射线击中物体是否被遮挡;
[0098]
s302,若被射线击中物体被遮挡,则剔除被射线击中物体,否则,保留被射线击中物体。
[0099]
在仿真模拟中,遮挡剔除功能,提高了仿真测试平台目标检测传感器的输出结果精度和合理性,被遮挡比例小于设置的阈值的物体才会被显示出来,在自动驾驶测试流程中,目标检测结果(包围盒的位置,尺寸)是测试链条中感知模块的重要输出,是下游路径规划、运动预测、碰撞避免等功能的前提和依赖,遮挡剔除功能优化了目标检测传感器的输出结果,提高整体自动驾驶仿真测试的性能。
[0100]
相应的,采用本发明的遮挡剔除方法,对应能够得到遮挡剔除模块,遮挡剔除模块在计算遮挡剔除后的目标信息时,采用上述遮挡剔除方法剔除或保留被射线击中物体。
[0101]
将本发明的遮挡剔除模块用于仿真平台,得到本发明提出的一种仿真平台,包括虚幻引擎、服务端和用户端,所述服务端中设置有本发明提出的遮挡剔除模块。
[0102]
本发明使用射线发射的相关概念,结合立体几何知识,计算过程比较简单,处理耗时很小,能够保证实时性。在产品中部署不影响整体仿真测试的时间延迟,叶不依赖gpu,对硬件资源几乎没有要求,不需要占用仿真平台的算力资源,可以同时处理动态和静态物体,满足了大部分测试场景。综上所述,本发明基于实时性、硬件无关性和动态静态兼容性,提升了仿真平台目标检测传感器的效果和下游功能模块的性能,增强了产品的竞争力。
[0103]
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种遮挡判断方法,其特征在于,包括以下步骤:在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线;获取所有被射线击中物体的被击中次数;对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡;所述理论被击中次数结合射线数目确定。2.根据权利要求1所述遮挡判断方法,其特征在于:所述理论被击中次数,具体是结合射线数目、被射线击中物体所在击中面和被射线击中物体包围盒在击中面上的投影确定的;所述击中面为,以击中被射线击中物体的射线发射方向为法向量的平面。3.根据权利要求2所述遮挡判断方法,其特征在于:所述理论被击中次数通过下式得到:其中,a为理论被击中次数,p为被射线击中物体包围盒在击中面上的投影面积,s为被射线击中物体所在击中面的面积,n为射线数目。4.根据权利要求3所述遮挡判断方法,其特征在于:所述根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡具体为:通过下式计算被射线击中物体的被遮挡比例b:其中,h为被射线击中物体的被击中次数;若被射线击中物体的被遮挡比例b大于预设值,则判断被射线击中物体被遮挡,否则,判断被射线击中物体未被遮挡。5.一种遮挡判断系统,其特征在于:包括射线模块、统计模块和判断模块:所述射线模块,用于在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线;所述统计模块,用于获取所有被射线击中物体的被击中次数;所述判断模块,用于对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡;所述理论被击中次数结合射线数目确定。6.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4任一项所述方法的步骤。7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述方法的步骤。8.一种遮挡剔除方法,其特征在于,包括以下步骤:采用权利要求1至4任一所述遮挡判断方法进行判断,若被射线击中物体被遮挡,则剔除被射线击中物体,否则,保留被射线击中物体。9.一种遮挡剔除模块,其特征在于:所述遮挡剔除模块在计算遮挡剔除后的目标信息
时,采用权利要求8所述遮挡剔除方法剔除或保留被射线击中物体。10.一种仿真平台,包括虚幻引擎、服务端和用户端,其特征在于:所述服务端中设置有权利要求9所述的遮挡剔除模块。
技术总结
本发明属于一种模拟仿真平台中的遮挡计算和判断方法,为了解决目前基于虚幻引擎开发的自动驾驶仿真平台中,采用的遮挡计算和判断方法存在无法剔除动态物体、CPU侧计算消耗大、依赖GPU和需要深度信息的技术问题,提供一种遮挡判断方法及相关装置、剔除方法、模块、仿真平台,先在仿真过程中,通过位于仿真模拟世界的预置传感器持续向外发射多条射线,再获取所有被射线击中物体的被击中次数,最后,对于每个被射线击中物体,根据被击中次数和理论被击中次数的比例,判断被射线击中物体是否被遮挡。大幅降低了计算的复杂度,不用依赖于硬件资源GPU和对深度信息的使用,处理耗时短且判断准确度高,还可以同时处理动态物体和静态物体。体。体。
技术研发人员:袁浩然 蒋泽锟 刘佳浩 任鹏飞 杨子江 潘余曦
受保护的技术使用者:西安深信科创信息技术有限公司
技术研发日:2023.06.29
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
