一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于图像空间碰撞的干涉检测方法及系统

2022-06-05 07:39:31 来源:中国专利 TAG:


1.本发明属于领域,具体属于一种基于图像空间碰撞的干涉检测方法及系统。


背景技术:

2.装配干涉矩阵是基于关系矩阵的装配序列规划的重要信息模型之一,其表达了装配体中零件之间相对的空间位置运动干涉关系,是判定零件装配/拆卸可行性的重要依据。在构建装配干涉矩阵时,需要对每一元素确定所需的装配干涉状态进行判断。通常,主要采用基于层次包围盒的碰撞检测算法面向间隙/干涉分析需求进行多次检测。这类方法,在给定步长下,零件在检测方向上渐次移动,每次移动后通过判断间隙/干涉状态进而得到干涉矩阵相应元素值,但该方法对于零件数量大的复杂系统装配体中干涉检测算法代价和资源耗费大,耗时过长;且该方法无法有效确定合适的步长来确保离散的干涉体与连续干涉体等效;尤其是,受制于模型的表达精度,对于硬干涉和零件接触无法准确区分,往往导致元素状态的识别错误。
3.基于投影的干涉检测方法对零件模型沿装配路径方向进行投影,如能将投影转化为零件之间的干涉检测,则可以大大提高装配干涉的检测效率。特别是随着图形处理器gpu(graphic processing unit,gpu)的快速发展,多种基于图像空间的碰撞检测算法被提出,这类算法主要是利用gpu的加速绘制与计算来提高算法效率,通过降维计算来实现计算效率的显著提升。然而对于复杂机械装备来说,基于图像空间的碰撞检测方法在巨量零件装配干涉分析问题中依然存在计算量过大的问题,无法满足实际工程需要。


技术实现要素:

4.为了解决现有技术中存在的问题,本发明提供一种基于图像空间碰撞的干涉检测方法及系统,将几何空间和基于图像空间方法相结合,在基于几何空间包围盒方法进行装配干涉保守性粗干涉判别的基础上,针对干涉情形,将干涉计算映射为opengl的渲染,借助渲染条件设置、深度测试和模板测试等,实现零件扫掠体与其他零件的干涉计算。
5.为实现上述目的,本发明提供如下技术方案:一种基于图像空间碰撞的干涉检测方法,具体步骤如下:
6.s1设待检测装配体模型中主零件和辅零件在方向d上存在干涉,建立关于主零件,辅零件和方向d的干涉矩阵;
7.s2对主零件与辅零件进行碰撞干涉的初步检测,根据主零件与辅零件之间干涉情况对步骤s1中所述干涉矩阵中的数据进行修正,若主零件与辅零件存在干涉则进入进行步骤s3;
8.s3采用opengl对主零件和辅零件分别进行渲染,获得包括主零件和辅零件存在干涉部分干涉像素点像素值的最终模板缓存,根据最终模板缓存中干涉像素点的像素值确定主零件和辅零件的干涉结果,根据干涉结果对步骤s2中所述干涉矩阵中的数据进行修正,存在干涉则进行步骤s4;
9.s4以最终模板缓存中一干涉像素点为起点分别获取最终模板缓存上x和y方向上连续干涉像素点的像素值,根据像素值大于初始值 1的连续干涉像素点数量进行主零件和辅零件的干涉类型判断,根据干涉类型判断结果对步骤s3中所述干涉矩阵中的数据进行修正,得到最终的干涉矩阵用于精确体现主零件和辅零件的干涉情况。
10.进一步的,所述待检测装配体模型中包括多个零件组,每一零件组中均包括一主零件和一辅零件,重复步骤s1-s4得到待检测装配体模型各个零件组在方向d上的干涉矩阵用于体现各个零件组在方向d上的干涉情况。
11.进一步的,步骤s2中,采用aabb包围盒算法进行主零件与辅零件进行碰撞干涉的初步检测,当主零件完全位于辅零件沿d方向的正方向侧,主零件沿 d方向运动时与辅零件无干涉;当主零件完全位于辅零件沿d方向的负方向侧,主零件沿-d方向运动与辅零件无干涉;当不是上述两种位置和运动关系时,主零件与辅零件之间存在干涉,进入步骤s3。
12.进一步的,步骤s3中,opengl中对主零件与辅零件进行渲染的视角和视景体具体为:
13.1)视角设置包括视点设置和相机位置设置:将主零件与辅零件的包围盒交集的中心作为视点;沿着视线的反方向一直到主零件与辅零件的包围盒的外侧为相机位置,视线方向与方向d平行;
14.2)视景体设置:视景体的深度超出主零件和辅零件在当前方向d的包围盒范围;视景体的高度和宽度为主零件和辅零件包围盒垂直于视线方向的相交区域尺寸。
15.进一步的,步骤s3中,获取最终模板缓存的具体步骤为:
16.1)建立初始模板缓存,令模板缓存中的像素值均为初始值;建立深度缓存,令深度缓存上的深度值均为最大值;
17.2)利用opengl对步骤s2检测出存在干涉的主零件和辅零件分别进行渲染;
18.3)当主零件投影在深度缓存上区域的深度值小于深度缓存上对应区域原始深度值时,主零件投影在模板缓存上对应区域中干涉像素点的像素值均 1,其余区域干涉像素点的像素值不变,得到主零件渲染后的模板缓存;
19.4)当辅零件投影在深度缓存上区域的深度值大于深度缓存上对应区域原始深度值时,辅零件投影在主零件渲染后的模板缓存上对应区域干涉像素点的像素值均 1,得到最终模板缓存。
20.进一步的,所述模板缓存中的初始值为最小像素值。
21.进一步的,步骤s3中,当最终模板缓存中干涉像素点的像素值均为初始值或初始值 1,则主零件和辅零件无干涉;
22.当最终模板缓存中干涉像素点的像素值大于初始值 1,则主零件和辅零件在该区域出现干涉。
23.进一步的,步骤s4中,以最终模板缓存上像素值大于初始值 1的一干涉像素点为起点,在最终模板缓存上沿x和y方向进行连续检索:
24.当x和y方向上连续的像素值大于初始值 1的干涉像素点数量均大于设定公差值时,主零件和辅零件之间为硬干涉;
25.当x和y方向上连续的像素值大于初始值 1的干涉像素点数量小于设定公差值时,则主零件和辅零件之间为接触干涉。
26.进一步的,步骤s4中,所述公差值根据碰撞检测精度要求确定。
27.本发明还一种基于图像空间碰撞的干涉检测系统,包括初步检测模块,opengl渲染模块和干涉类型判断模块,其中,
28.初步检测模块用于利用分离轴原理对主零件与辅零件的干涉情况进行判定,并将判定结果传输至opengl渲染模块;
29.opengl渲染模块用于分别对主零件和辅零件进行渲染,获得包括主零件和辅零件存在干涉部分干涉像素点像素值的最终模板缓存,并根据最终模板缓存中干涉像素点的像素值确定主零件和辅零件的干涉结果,若存在干涉则将干涉结果传输至干涉类型判断模块;
30.干涉类型判断模块用于以最终模板缓存中一干涉像素点为起点分别获取最终模板缓存上x和y方向上连续干涉像素点的像素值,根据像素值大于初始值 1的连续干涉像素点数量进行主零件和辅零件的干涉类型判断。
31.与现有技术相比,本发明至少具有以下有益效果:
32.本发明的一种基于图像空间碰撞的干涉检测方法及系统,是基于opengl的图像碰撞检测计算方法,将装配干涉检测的过程分为由粗到精的多个步骤,通过层次化以及参数化的流程设计实现主零件和辅零件干涉关系的精准识别,并能够对于接触情形进行准确的识别,具有良好的通用性,具体的:
33.第一,传统干涉检测方法采用碰撞检测对零件的离散运动扫掠体进行逐个判定实现,存在零件接触易误判为干涉、过小的扫掠体移动步长导致运算量大等问题。本发明从图形渲染角度出发,使用投影方式构建了等效扫掠体,更加准确,且无需多次碰撞检测,检测一次即可;
34.第二,由于零件建模以及碰撞检测算法在精度方面所存在的问题,使得通过三维模型的碰撞检测方法无法对接触干涉类型做出准确判断,而本发明能够在图形空间内通过像素阈值实现准确的分辨接触干涉和硬干涉;
35.第三,本发明适用于几乎所有类型的复杂装配体,在形状上不受约束,适用性广;
36.第四,本发明基于图像算法,实现简单,无需传统的碰撞检测中需要组织的复杂数据结构。
37.第五,本发明在判断干涉关系上计算速度快,运算效率高。
附图说明
38.图1为零件的深度测试与z-buffer示意图。
39.图2为干涉类别辨识示意图。
40.图3为轴与衬套之间干涉渲染计算对应的图像像素示意图。
具体实施方式
41.下面结合附图和具体实施方式对本发明作进一步的说明。
42.本发明提供一种基于图像空间碰撞的干涉检测方法,具体步骤如下:
43.步骤1:确定待检测装配体模型,设该待检测装配体模型中的零件组在方向d上均存在干涉,每个零件组均包括主零件和辅零件,建立关于主零件,辅零件和方向d的干涉矩
阵,该干涉矩阵中干涉值均设为1;
44.其中,干涉矩阵中1表示主零件与辅零件在方向d上处于干涉状态,0表示处于非干涉状态;
45.优选的,待检测装配体模型需可以进行渲染计算;
46.步骤2:对主零件与辅零件进行碰撞干涉的初步检测,依据分离轴原理判定主零件与辅零件之间是否干涉,具体的:
47.步骤2.1当主零件完全位于辅零件沿d方向的正方向侧,主零件沿 d方向运动时与辅零件必然无干涉,则干涉矩阵中对应位置的内容更改为0,否则保持为1。相似地,当主零件完全位于辅零件沿d方向的负方向侧,主零件沿-d方向运动与辅零件必然无干涉,则干涉矩阵中对应位置的内容更改为0,否则保持为1;
48.步骤2.2若出现步骤2.1以外的位置关系,则主零件与辅零件之间存在干涉,需要进一步进行精确的干涉检测,即进行步骤3;
49.优选的,采用aabb包围盒算法进行主零件与辅零件进行碰撞干涉的初步检测;
50.步骤3,采用opengl对主零件和辅零件分别进行渲染,得到主零件和辅零件的深度数据,根据渲染得到的深度数据获得具有主零件和辅零件存在干涉部分干涉像素点像素值的最终模板缓存:
51.步骤3.1设置opengl进行渲染的视角和视景体,具体的:
52.步骤3.1.1,视角设置包括视点设置和相机位置设置,对步骤2得到的干涉矩阵沿方向d进行视角设置,具体的:将主零件与辅零件的包围盒交集的中心作为视点;沿着视线的反方向一直到两个零件的包围盒的外侧为相机位置,视线方向与方向d是平行关系;步骤3.1.2,视景体设置:视景体的深度超出主零件和辅零件在当前方向d的包围盒范围,并将视景体高度和宽度设置为主零件和辅零件包围盒垂直于视线方向的相交区域尺寸;
53.步骤3.2,如图1所示,建立初始模板缓存,令模板缓存中的像素值均为初始值,初始值为最小值像素值,利用步骤3.1设置好的opengl对步骤2筛选后存在干涉的主零件和辅零件进行渲染,得到最终模板缓存,最终模板缓存中包含主零件和辅零件存在干涉部分干涉像素点的像素值:
54.步骤3.2.1,建立深度缓存,令深度缓存上的深度值均为最大值;
55.步骤3.2.2,根据步骤3.1确定的视点和视线方向对主零件进行渲染,主零件投影在深度缓存上区域的深度值小于深度缓存上对应区域原始深度值时,主零件投影在模板缓存上对应区域中干涉像素点的像素值均 1,其余区域干涉像素点的像素值不变,得到主零件渲染后的模板缓存;
56.步骤3.2.3,根据步骤3.1确定的视点和视线方向对辅零件进行渲染,辅零件投影在深度缓存上区域的深度值大于深度缓存上对应区域原始深度值时,辅零件投影在主零件渲染后的模板缓存上对应区域干涉像素点的像素值均 1,得到最终模板缓存;
57.优选的,最终模板缓存中,像素值为初始值的区域对应的为非主零件渲染区域,像素值大于或等于初始值 1的区域对应的为主零件渲染区域,其中主零件渲染区域中模板缓存值大于初始值 2的区域对应的为辅零件与主零件的遮挡区域;
58.步骤4,对最终模板缓存中干涉像素点的像素值进行查询,得到主零件和辅零件的干涉结果:
59.步骤4.1,若最终模板缓存中干涉像素点的像素值均为初始值或初始值 1,则主零件和辅零件无干涉,则干涉矩阵中对应位置的内容更改为0;
60.步骤4.2,若最终模板缓存中存在干涉像素点的像素值大于初始值 1,则主零件和辅零件在该区域出现干涉,需对干涉类型进行判断;
61.步骤5,若主零件和辅零件之间存在干涉,则获取最终模板缓存中像素值大于初始值 1的干涉像素点,以其中一干涉像素点为起点分别获取x和y方向上连续干涉像素点的像素值,进行干涉类型判断,具体为:
62.步骤5.1,当x和y方向上像素值大于初始值 1的干涉像素点数量均大于设定公差值时,主零件和辅零件之间为硬干涉,硬干涉视为干涉,将干涉矩阵中对应位置的内容更改为1;
63.如图2所示,当设定公差值为2时,x和y两个方向上连续的像素值为2的干涉像素点的数量同时大于公差值2,说明干涉超出公差值范围,属于硬干涉;
64.步骤5.2,当x和y方向上像素值大于初始值 1的干涉像素点数量小于设定公差值时,则主零件和辅零件之间为接触干涉,接触干涉视为不干涉,干涉矩阵中对应位置的内容更改为0。
65.优选的,公差值根据碰撞检测精度要求确定;
66.步骤6,根据步骤1-5得到待检测装配体模型最终的装配干涉矩阵,该装配干涉矩阵可实现零件装配时对某个零件对另一个零件在某个方向上的干涉情况的精确判断。
67.步骤7,重复步骤1-6,确定待检测装配体中每一零件组在空间所有方向上的干涉情况,最终得到针对待检测装配体的精确的干涉矩阵。该干涉矩阵对于装配序列规划、装配路径规划等实际装配场景中的任务都是至关重要的数据基础。
68.本发明还一种基于图像空间碰撞的干涉检测系统,包括初步检测模块,opengl渲染模块和干涉类型判断模块,其中,
69.初步检测模块用于利用分离轴原理对主零件与辅零件的干涉情况进行判定,并将判定结果传输至opengl渲染模块;
70.opengl渲染模块用于分别对主零件和辅零件进行渲染,获得包括主零件和辅零件存在干涉部分干涉像素点像素值的最终模板缓存,并根据最终模板缓存中干涉像素点的像素值确定主零件和辅零件的干涉结果,若存在干涉则将干涉结果传输至干涉类型判断模块;
71.干涉类型判断模块用于以最终模板缓存中一干涉像素点为起点分别获取最终模板缓存上x和y方向上连续干涉像素点的像素值,根据像素值大于初始值 1的连续干涉像素点数量进行主零件和辅零件的干涉类型判断。
72.实施例1
73.下面以轴对衬套沿-x方向的干涉矩阵元素计算为例
74.步骤1,设置轴为主零件,衬套为辅零件,建立轴、衬套和-x方向的干涉矩阵,干涉矩阵中的数据全部初始化为1,即干涉;
75.步骤2,在aabb包围盒的坐标范围下,依据分离轴原理判定轴对衬套沿-x方向存在干涉关系,需要进行精确的干涉检测进行判定;
76.步骤3,结合轴在-x方向上包围盒坐标的最小值e
1,-x
和衬套在-x方向上包围盒坐
标的最小值f
2,-x
,利用glulookat函数进行视角设置,具体为:
77.通过以下函数以及参数进行视角设置:glulookat(min(e
1,-x
,e
2,-x
),0,0,max(f
1,-x
,f
2,-x
),0,0,0,0,1);
78.其中e
i,d
的含义是零件i在方向d上的包围盒坐标的最小值,f
i,d
的含义是零件i在方向d上的包围盒坐标的最大值。这里的1代表第一个零件,指的是轴;2代表第二个零件,指的是衬套)
79.glulookat函数是opengl设置视角的函数,其中前三个参数代表相机在世界坐标的位置的x、y、z坐标,中间三个参数代表相机镜头对准的物体在世界坐标的位置的x、y、z坐标,最后三个参数代表相机向上的方向在世界坐标中沿x、y、z轴的方向分量;
80.步骤4,采用glortho函数进行视景体设置,glortho函数用于创建一个正交平行的视景体,其中的参数依次是:视景体左面的坐标、视景体右面的坐标,视景体下面的坐标,视景体上面的坐标,视景体最近处的坐标,视景体最远处的坐标,具体为:
81.glortho(-p
i,y
,-j
i,y
,j
i,z
,p
i,z
,0,p
o,x
,-j
o,x
)
82.其中,(jo,po)和(ji,pi)分别标识轴和衬套包围盒的外包围盒与相交部分包围盒;j代表包围盒最左、最下、最近的那个点的坐标,p代表包围盒最右、最上、最远的那个点的坐标;下标o代表主零件和辅零件包围盒的外包围盒,下标i代表主零件和辅零件包围盒的相交部分包围盒。所以例如p
i,y
代表的是“主零件和辅零件包围盒的相交部分,包围盒的最右、最上、最远的那个点沿y轴的坐标”。
83.本算例的视景体尺寸为74mm
×
74mm;
84.步骤5,通过opengl对轴和衬套进行潜在相交实体的离散渲染计算;
85.步骤5.1,深度缓存上的深度值设为1.0,模板缓存中像素值设为0;
86.步骤5.2,根据步骤3设置的视角对轴进行渲染,从而获取渲染后的深度缓存。设置深度测试条件为小于则通过,设置模板操作为通过深度测试的像素点的像素值 1,根据以上条件,对模板缓存进行相应的修改;
87.步骤5.3,根据步骤3设置的视角对衬套的背面进行渲染。在渲染过程中,仅对衬套中仅与轴像素重合的点通过模板测试,如存在衬套与轴遮挡时,步骤5.2修改后的模板缓存上对应位置的像素值增加1,其余保持不变,遮挡查询对于通过的像素点进行计数;步骤5.4,函数glreadpixels()读取模板缓存,当模板缓存中像素值为0或1,则轴和衬套无干涉。
88.令模板缓存中像素值大于等于2的像素点为红色时呈现的效果如图3所示,图中存在一圈红色的像素点意味着轴和衬套存在干涉关系,需要进一步判断干涉类型;
89.步骤6,设置公差k=2,如图3所示,本案例计算的边界像素为1*1个,模板缓存中沿x和y方向出现连续像素值大于等于2的干涉像素点数量小于阈值2,所以本实施例中轴和衬套的干涉类型为接触干涉;干涉矩阵中相应位置的内容修改为0,得到轴和衬套的干涉矩阵,该干涉矩阵中的内容作为数据基础可应用于很多实际工程场景中。例如在装配序列规划中,本案例的计算结果表明,轴相对于衬套是可以沿着-x方向进行拆卸操作的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献