一种多关节模型的快速连续碰撞检测的方法

文档序号:10489779阅读:384来源:国知局
一种多关节模型的快速连续碰撞检测的方法
【专利摘要】本发明提供了一种多关节模型的快速连续碰撞检测方法,运行时阶段包括:对每个关节建立动态轴对称包围盒、对多关节模型建立动态轴对称包围盒的层次包围结构、空间剔除法找出潜在可能碰撞的关节、时间剔除法执行保守前进连续碰撞检测四个步骤。本发明能够更有效的将基于保守前进的快速连续碰撞检测算法扩展到多关节模型,并且可以处理多个关节之间的自碰撞,算法优化地利用泰勒模型计算更紧致的动态轴对称包围盒进行关节级别的空间剔除,利用时间剔除方法大量减少执行保守前进算法的次数,从而显著提高多关节模型连续碰撞检测算法的效率。
【专利说明】
一种多关节模型的快速连续碰撞检测的方法
技术领域
[0001] 本发明涉及计算机图形学以及机器人运动规划领域,尤其涉及一种多关节模型的 快速连续碰撞检测方法。
【背景技术】
[0002] 在计算机图形学领域,避免物体模型之间的相互穿透是使模型具有真实感的重要 因素,碰撞检测被认为是一种成熟的技术用于检测在空间中移动的几何模型之间是否会发 生接触或穿透。然而,大多数碰撞检测技术仅适用于固定配置空间的静止模型,对于动态模 型往往采用在时间间隔内的一些固定时刻进行碰撞检测的方式,因而无法保证运动模型的 非穿透性。
[0003] 连续碰撞检测(Continuous Collision Detection,CCD)方法由于可以鲁棒地处 理刚体模型的非穿透性约束而被广泛研究,包括基于冲量的动力学接触时间计算、基于约 束的动力学、基于God-Object的6-D0F触觉渲染、基于采样的局部运动规划、虚拟现实环境 互动、游戏物理引擎等。尽管连续碰撞检测的需求增加,但是很大程度上受限于通常所需的 较高的计算成本,尤其对于多关节模型。随着多关节模型在计算机图形学和虚拟现实领域 逐渐普及,许多学者试图为多关节模型提供有效的连续碰撞检测算法,然而大多数算法在 实时性应用方面仅能处理简单的模型,尤其处理多关节模型时,其性能相对较慢,且未考虑 同一个模型多个关节之间的自碰撞。

【发明内容】

[0004] 为克服现有技术的不足,本发明为运动的多关节模型提供了一种高效的连续碰撞 检测方法,大大提高算法性能保证连续碰撞检测的实时性,并且可以处理多个关节之间的 自碰撞。该算法将基于保守前进(Conservation Advancement,CA)的连续碰撞检测算法扩 展到多关节模型,检测并报告空间中所有可能的干扰,并在碰撞发生时报告首次碰撞时间 和碰撞特征,碰撞特征可以包括顶点和面接触,也可以包括边和边接触。
[0005] 本发明提供的一种多关节模型的快速连续碰撞检测的方法,分为预处理阶段和运 行时阶段两部分。具体包括以下步骤:
[0006] 运行时阶段:
[0007] 根据每个关节的有向包围盒(Oriented Bounding Box,简称0ΒΒ)建立每个关节的 动态轴对称包围盒(Axis Aligned Bounding Box,简称AABB),包围该关节在时间段[0,1] 内的运动范围;
[0008] 利用每个关节的动态AABB,递归地建立动态AABB的层次包围(Bounding Volume Hierarchy,简称BVH)结构,每个关节的动态AABB均作为叶子节点;
[0009] 利用动态AABB的BVH结构依次地剔除不可能碰撞的关节或关节对,即利用空间剔 除方法识别可能碰撞的关节对(PotentialIy Colliding Links,简称PCLs)作为下一个阶 段的输入;
[0010]利用CA迭代由可能碰撞的关节对计算出首次碰撞时间和接触特征。其中,优选地, 使用时间剔除方法来减少执行CA迭代的次数。
[0011] 优选地,预处理阶段步骤可以如下:
[0012] 根据运动多关节模型的初状态和末状态计算插值运动;
[0013] 对多关节模型的每个关节建立0ΒΒ,用于运行时对多关节模型建立动态AABB的BVH 来执行空间剔除;
[0014] 对每个多关节模型基于表面凸分解建立凸包树BVH结构,用于执行CA的迭代过程 中计算各个可能碰撞的关节对PCLi的最短距离。
[0015] 优选地,为每个关节建立动态的AABB的方法可以如下:
[0016] 利用泰勒模型进行区间运算,减少一般区间运算方法带来的过高估计误差。在时 间段[0,1]内,对每个关节的OBB的8个顶点应用泰勒矩阵,分别得到一个泰勒向量对该点在 时间段[0,1]内的运动进行建模,然后用8个小AABB分别包围各点在时间段[0,1]内的运动 轨迹,然后用8个小AABB分别包围各点在时间段[0,1 ]内的运动轨迹,最后用一个大AABB包 围这8个小包围盒得到一个关节在时间段[0,1]内的动态AABB。
[0017] 优选地,所述建立动态AABB的BVH结构的方法可以如下:
[0018] 对整个多关节模型用自底向上的方式建立动态AABB的BVH结构。
[0019] 优选地,所述空间剔除方法可以如下:
[0020] 利用得到的动态AABB的BVH结构递归地检测环境中的干扰,剔除那些不可能与环 境或其他关节碰撞的关节或关节对,剩余未被剔除的关节作为潜在可能碰撞的关节对 PCLs,被送到下一步用来计算确定首次碰撞时间和接触特征。
[0021 ]优选地,所述在CA迭代过程中计算紧致运动边界,计算方法可以如下:
[0022] 首先推导出关节上的点在世界参考系下的速度,然后将该点在[0,1]时间间隔内 的运动投影到最短距离向量,取所有点中投影最大的值作为紧致运动边界。
[0023] 优选地,所述时间剔除方法用以减少CA迭代次数,步骤可以如下:
[0024] 步骤A:对所有潜在可能碰撞的η个关节对PCLs,分别单独执行一次CA迭代,分别计 算每个可能碰撞的关节对PCL1允许推进的时间步Fi,其中,可能碰撞的关节对表示为= PCL1, i = 0,l,2......η;
[0025] 步骤B:将η个PCLs按照g升序排序表示为,其中,?;表示为第i个可能碰撞的关 节对基于首次CA迭代允许推进的时间步;
[0026] 步骤C:初始化最小可能碰撞时间为tmin= 1.0,按M顺序依次对各关节对进行CA 迭代检索最小tmin:
[0027] 情况1:如果^ > imin,则从雨中移除应,.,7石,.表示瓦I中的第i个可能碰撞的 关节对,考虑M为升序排序,则可同时移除M/,其中j>i ;
[0028] 情况2:如果焉< 4lin,继续按胃顺序依次对下一个关节对执行CA迭代,如果 最终该T^Z的1^_,其中,T1表示第i个可能碰撞的关节对基于CA迭代允许推进的时间步 之和,则令U in= ^;然而,在对某个关节对PCLi进行k次CA迭代后发现目前所有基于CA迭代 允许推进的时间步之^
,则立即停止当前迭代,并从范中移除范,.;
[0029 ]步骤D:最终得到最小的可能碰撞时间tmin,作为首次碰撞时间。
[0030] 优选地,在执行CA迭代过程中计算每个关节对PCL1的最短距离时,作为预处理过 程,为每个?〇^建立凸包树结构,然后基于凸包树迭代地计算其最短距离,从而减少每次CA 迭代的时间。
[0031] 所述CA迭代过程的具体步骤如下:
[0032]步骤a:利用两凸包树结构计算两物体当前的最短距离及最短距离向量;
[0033 ] 步骤b:计算紧致运动边界和当前能推进的时间步;
[0034] 步骤c:找出步骤b中求得的最小时间步,并向前推进一步;
[0035] 步骤d:循环步骤a和步骤c,直到两物体发生碰撞,将当前时间作为首次碰撞时间 并报告此时的接触特征。
[0036] 本发明所述的一种适用于多关节模型的快速的连续碰撞检测方法,旨在将基于CA 的连续碰撞检测算法扩展到多关节模型,算法利用关节级别的空间剔除、计算紧致的运动 上界、基于接触时间排序的时间剔除等方式提高算法效率,保证算法的实时性且能处理同 一模型多个关节之间的自碰撞问题。
【附图说明】
[0037] 图1为本发明实施例中的多关节模型的快速连续碰撞检测算法流程示意图;
[0038]图2为利用顶点运动OBB包围盒生成一个关节的动态AABB包围盒示意图;
[0039] 图3为利用时间剔除方法优化执行CA迭代的过程示意图;
[0040] 图4为本发明两凸体使用基于CA的快速连续碰撞检测算法进行连续碰撞检测示意 图。
【具体实施方式】
[0041] 结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、 条件、试验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发 明没有特别限制内容。
[0042] 在本发明的其中一种优选实施例中,一种多关节模型的快速连续碰撞检测方法分 为预处理阶段和运行时阶段两部分,如图1所示,包括以下步骤:
[0043]预处理阶段:由初状态和末状态计算插值运动、每个关节建立OBB、凸分解并建立 BVH凸包树;
[0044]运行时阶段:每个关节建立AABB、建立动态AABB的BVH结构、空间剔除方法找出潜 在可能碰撞的关节、时间剔除方法执行CA连续碰撞检测。下面分别对每个步骤进行详细说 明。
[0045]预处理步骤1:由初状态和末状态计算插值运动
[0046]在预处理阶段中,给定物体在[0,1]时间段内运动的初状态qo和末状态9:,插值得 到每个关节i的平移和旋转速度常量,形成在配置空间的整个匀速运动如下:
[0047] :.1 M ⑴ 4 M ⑴ _丨 M ⑴…1 M ⑴ U )
[0048]
(2)
[0049] 其中,「卞⑴和为在时间段[0,1]内关节i的参考坐标系{i}相对于关节i-1的 参考坐标系{i-Ι}的位置和方向。
[0050] 预处理步骤2:多关节体的每个关节建立OBB
[0051]在预处理阶段中,对多关节模型的每个关节建立0ΒΒ,用于运行时对多关节模型建 立动态AABB的BVH结构来执行关节级别的空间剔除。
[0052] 预处理步骤3:凸分解并建立凸包树BVH结构
[0053]在预处理阶段中,对每个多关节模型基于表面凸分解方法分解为多个凸体,并迭 代地建立一个凸包的BVH结构,其中每个包围盒节点都对应其孩子结点的凸包,即凸包树结 构,用于在CA迭代中进行各关节对之间距离计算。
[0054] 运行时阶段包括步骤如下:
[0055] 步骤1:每个关节建立动态AABB
[0056]首先,利用三阶的泰勒模型表示在[0,1]时间段内的方向矩阵和平移向量,得到4 X4的齐次泰勒矩阵,如公式(2)所示,然后用公式(1)的方式连接这些矩阵获得整个关节运 动的矩阵表示。在时间段[0,1]内,对每个关节的OBB的8个顶点应用泰勒矩阵,分别得到一 个泰勒向量对该点在时间段[0,1 ]内的运动进行建模,然后用8个小AABB分别包围各点在时 间段[0,1 ]内的运动轨迹,最后用一个大AABB包围这8个小AABB得到一个关节在时间段[0, 1]内的动态AABB。
[0057]图2为利用顶点运动OBB生成一个关节的动态AABB的方法的二维简单示意图。
[0058] 步骤2:建立动态AABB的BVH结构
[0059]在步骤1利用泰勒模型得到每个关节的动态AABB的之后,可以用自底向上的方法 为整个多关节模型有效地构建一个动态AABB的BVH结构。
[0060]步骤3:空间剔除方法识别潜在可能碰撞的关节
[0061]执行关节级别的空间剔除,利用步骤2得到的动态AABB的BVH结构递归地检测环境 中的干扰,剔除那些不可能与环境或者其他关节发生碰撞的关节,最终保留下来的所有潜 在可能碰撞的关节作为PCLs,将这些PCLs作为下一步骤的输入,检测首次发生碰撞的时间 和接触特征。
[0062] 步骤4:时间剔除方法执行CA连续碰撞检测
[0063] 对步骤3中得到的PCLs执行时间剔除方法用以减少CA算法迭代次数,步骤如下:
[0064] 步骤A:对所有η对PCLs单独执行一次CA迭代,分别计算每个可能碰撞的关节对允 许推进的时间步,其中,可能碰撞的关节对表示为:PCLi,i = 0,1,2......η;
[0065] 步骤B:将PCLs按照fi升序排序为;
[0066] 步骤C:初始化最小可能碰撞时间为Uin= 1.0,按顺序依次对各关节对进行CA 迭代检索最小tmin:
[0067] 情况1:如果A >/min,则从中移除表示M中的第i个可能碰撞的 关节对,考虑M为升序排序,则可同时移除其中j>i;
[0068] 情况2:如果f; 继续按M顺序依次对下一个关节对PCLi执行CA迭代,如果 最终该PCLi的基于CA迭代允许推进的时间步之和Ti〈t min,则令Uin= Ti;然而,在对某个关节
对PCL1进行k次CA迭代后发现目前所有基于CA迭代允许推进的时间步之$ ,则立 即停止当前迭代,并从死^中移除瓦无;
[0069] 步骤D:最终得到最小的可能碰撞时间Uin,作为首次碰撞时间,并报告此时的接触 特征。
[0070] 如图3所示,(a)中不同的颜色柱表示一对不同的关节对PCL1; (b)为将PCLs按照?; 升序排序为M ;: (c)表示对两:?执行了 4次CA迭代算法直到找到T1,与当前最小碰撞时间 比较使。1" = 1^11(11,1.0);((1)表示;^1:;进行04迭代的过程中发现目前所有04步之和大于 t_,则立即停止当前迭代,并从M中移除(e)表示M3仅执行了2次CA迭代,得到 丁3〈^ 1,再次设置^1 = !1^11(13,^1);(〇表示^;4和^; 1直接放弃执行04,因为6>^且 6 > Ck ?
[0071] 其中,在执行CA迭代过程中计算每个关节对PCL1的最短距离时,作为预处理过程, 为每个PCLi建立凸包树结构,然后基于凸包树迭代地计算其最短距离,从而减少每次CA迭 代的时间。
[0072] 其中,在执行CA迭代过程中计算紧致的运动上界方法如下:
[0073] 以简单凸体作为示例进行说明,否则对于非凸体可利用步骤3中的方法进行凸分 解并建立BVH凸包树。如图4所示,对运动凸体A和固定凸体B进行连续碰撞检测,凸体A在[0, 1]时间段内作匀速平移和旋转运动,d(A(t),B)为两凸体在t = 0时刻的最短距离,η为相应 的最短距离向量,μ为CA连续碰撞算法需要计算的运动上界。
[0074]计算紧致运动上界μ的方法为投影平移和旋转运动到最短距离向量n,考虑凸体A 第i个关节仏的运动为对于A1上基于世界参考系{0}的一点:>,其相对世界坐标系速 度为tVi,则它的运动上界为:
[0075]
[0076]
[0077]
[0078] 其中,ω」为第j个关节的角速度,Lj为点到旋转中心的距离,通过投影速度V到 最短距离向量并在[0,1]时间段内进行积分得到最终计算表达式:
[0079]
[0080]
[0081 ]其中,>为关节i上相对于参考坐标系{j}的一点。
[0082] 根据以上算法,能够更有效的将基于CA的快速连续碰撞检测算法扩展到多关节模 型,并且可以处理多个关节之间的自碰撞,算法优化地利用泰勒模型计算更紧致的动态 AABB进行关节级别的空间剔除,利用时间剔除方法大量减少执行CA迭代的次数,从而显著 提高多关节模型连续碰撞检测算法的效率。
[0083] 以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限 制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和 替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和 修改,都应涵盖在本发明的范围内。
【主权项】
1. 一种多关节模型的快速连续碰撞检测的方法,其特征在于,分为预处理阶段和运行 时阶段两部分,运行时阶段包括如下步骤: 步骤1:根据每个关节的有向包围盒OBB建立每个关节的动态轴对称包围盒AABB,包围 该关节在时间段[0,1 ]内的运动范围; 步骤2:利用每个关节的动态AABB,递归地建立动态AABB的BVH结构,每个关节的AABB均 作为叶子节点; 步骤3:利用动态AABB的BVH结构依次地剔除那些不可能碰撞关节或关节对,即利用空 间剔除方法识别可能碰撞的关节对PCLs作为下一个阶段的输入; 步骤4:利用CA迭代由可能碰撞的关节对PCLs计算出首次碰撞时间和接触特征。2. 根据权利要求1所述的一种多关节模型的快速连续碰撞检测的方法,其特征在于,所 述的预处理阶段包括如下步骤: 预处理步骤1:根据运动多关节模型的初状态和末状态计算插值运动; 预处理步骤2:对多关节模型的每个关节建立OBB,用于运行时对多关节模型建立动态 AABB的BVH来执行空间剔除; 预处理步骤3:对每个多关节模型基于表面凸分解建立凸包树BVH结构,用于执行CA迭 代计算各个可能碰撞的关节对P化1的最短距离。3. 根据权利要求1所述的一种多关节模型的快速连续碰撞检测的方法,其特征在于,所 述利用CA迭代由可能碰撞的关节快速计算出首次碰撞时间和接触特征的过程中,使用时间 剔除方法来减少执行CA迭代的次数。4. 根据权利要求1所述的一种多关节模型的快速连续碰撞检测的方法,其特征在于,所 述为每个关节建立动态AABB的方法为:利用泰勒模型进行区间运算,包括: 在时间段[〇,1]内,对每个关节的OBB的8个顶点应用泰勒矩阵,分别得到一个泰勒向量 对该点在时间段[〇,1]内的运动进行建模,然后用8个小AABB分别包围各点在时间段[0,1] 内的运动轨迹,最后用一个大AABB包围运8个小AABB得到一个关节在时间段[0,1 ]内的动态 AABBo5. 根据权利要求1或2所述的一种多关节模型的快速连续碰撞检测的方法,其特征在 于,所述建立动态AABB的BVH结构的方法为:对整个多关节模型用自底向上的方式建立动态 AABB的BVH结构。6. 根据权利要求1或2所述的一种多关节模型的快速连续碰撞检测的方法,其特征在 于,所述空间剔除方法具体为: 利用得到的动态AABB的BVH结构递归地检测环境中的干扰,剔除那些不会与环境或其 他关节碰撞的关节,剩余未被剔除的关节作为潜在可能碰撞的关节对PCLs,被送到下一步 用来计算确定首次碰撞时间和接触特征。7. 根据权利要求1或2或3所述的一种多关节模型的快速连续碰撞检测的方法,其特征 在于,所述在CA迭代过程中,需要计算紧致运动边界,计算方法为:首先推导出关节上的点 在世界参考系下的速度,然后将该点在[〇,1]时间间隔内的运动投影到最短距离向量,取所 有点中投影最大的值作为紧致运动边界。8. 根据权利要求3所述一种多关节模型的快速连续碰撞检测的方法,其特征在于,所述 用时间剔除方法用W减少CA迭代次数,步骤如下: 步骤A、对所有潜在可能碰撞的η个关节对PCLs,分别单独执行一次CA迭代,分别计算每 个可能碰撞的关节对P(Xi允许推进的时间步,i = 0,1,2......η;;步骤B、将η个PCLs按照可能 碰撞的关节对基于首次CA迭代允许推进的时间步巧升序排序为只壬; 步骤C、初始化最小可能碰撞时间为tmin=1.0,按瓦封顿序依次对各关节对进行CA迭代 检索最小tmin: 情况1:如果>Ci。,则从掘中移除第i个可能碰撞的关节对雨,.,考虑雨为升序排 序,则可同时移除巧壬/,其中j〉i; 情况2:如果? < i,ui。,继续按巧丞顺序依次对下一个关节对PCLi执行CA迭代,如果最终该 Pai的基于CA迭代允许推进的时间步之和Ti<tmin,则令tmin=Ti;然而,在对某个关节对PCk 进行k次CA迭代后发现目前所有基于CA迭代允许推进的时间步之?W立即停 止当前迭代,并从瓦?中移除巧它 步骤D:最终得到最小的可能碰撞时间tmin,作为首次碰撞时间。9. 根据权利要求2所述的一种多关节模型的快速连续碰撞检测的方法,其特征在于,所 述在CA迭代过程中计算各个可能碰撞的关节对PO^i的最短距离,应先完成预处理步骤:为 每个PO^i建立凸包树结构;然后基于凸包树迭代地计算其最短距离,从而减少每次CA迭代 的时间。10. 根据权利要求1所述的一种多关节模型的快速连续碰撞检测的方法,其特征在于, 所述的发生碰撞即认为是两物体之间的距离小于一个预设的阔值的状态。
【文档编号】G06T7/20GK105844672SQ201610242369
【公开日】2016年8月10日
【申请日】2016年4月19日
【发明人】张新宇, 郭娟
【申请人】华东师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1