CN113001551B - 基于八叉树结构分割的快速碰撞检测方法 - Google Patents
基于八叉树结构分割的快速碰撞检测方法 Download PDFInfo
- Publication number
- CN113001551B CN113001551B CN202110288962.1A CN202110288962A CN113001551B CN 113001551 B CN113001551 B CN 113001551B CN 202110288962 A CN202110288962 A CN 202110288962A CN 113001551 B CN113001551 B CN 113001551B
- Authority
- CN
- China
- Prior art keywords
- model
- octree
- index
- box
- leaf node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1664—Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
- B25J9/1666—Avoiding collision or forbidden zones
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于机器人、虚拟现实、计算机图形学等技术领域,具体涉及一种基于八叉树结构分割的快速碰撞检测方法。先按八叉树结构分割大体积模型的包围盒,再验证小体积模型与八叉树中节点立方体盒的相交性,缩小相交面片计算范围,加速碰撞检测。
Description
技术领域:
本发明属于机器人、虚拟现实、计算机图形学等技术领域,具体涉及一种基于八叉树结构分割的快速碰撞检测方法。
背景技术:
碰撞检测是机器人、虚拟现实、计算机图形学等技术领域的一种关键技术,目标是验证多个三维模型之间的空间关系,避免发生碰撞,保证运动轨迹的可行性。
传统碰撞检测方法主要验证不同三维模型包围盒或面片集之间的相交性。基于包围盒的方法过于粗糙,为实现精确的碰撞检测,一般采用基于面片集的方法。但由于三维模型的复杂性,面片集的规模往往很大,这会导致计算量过于庞大,严重降低了检测速度。
发明内容:
本发明要解决的技术问题是在碰撞检测时,由于三维模型的复杂性,传统的面片相交验证方法计算量过于庞大,存在检测速度过慢的问题。
为解决上述问题,本发明提供一种基于八叉树结构分割的快速碰撞检测方法,先按八叉树结构分割大体积模型的包围盒,再验证小体积模型与八叉树中节点立方体盒的相交性,缩小相交面片计算范围,加速碰撞检测。
为达到上述目的,本发明通过以下技术方案实现:一种基于八叉树结构分割的快速碰撞检测方法,包括以下步骤:
(1)根据模型体积先验知识,将三维模型设定为大模型和小模型;
(2)将大模型的包围盒按八叉树结构分割;
(3)归类大模型三角面片;
(4)判断小模型包围盒是否与大模型八叉树结构的第一层立方体盒相交;
(5)如果步骤(4)判定为否,则停止判断;如果判定为是,则继续判断是否与八个子节点的立方体盒相交,同理,自顶向下逐层判断直至叶节点;
(6)将所有判断为相交的叶节点所存储的三角面片索引存储到一个验证集容器中;
(7)判断小模型是否与验证集容器中的三角面片相交;
(8)场景变换,小模型相对于大模型运动,更新小模型的信息,重复步骤(4)~(7)。
进一步的,所述步骤(2)整个八叉树的深度Depth由大模型立方体盒边长Lo和设定的叶节点边长Lleaf决定:
进一步的,所述步骤(3)的归类方法为:如果三角面片包围球与八叉树中某个叶节点的立方体空间相交,则将该三角面片索引存储在该叶节点容器内。
对于第k个叶节点和索引为index的面片,根据以下公式判断是否相交:
其中,pindex和Rindex表示索引为index的面片的包围球的球心和半径,pk和Lleaf表示第k个叶节点的立方体的中心和边长。
将满足上述条件的全部三角面片索引加入到第k个叶节点容器Vk中:
Vk={indexi,i=1,2,...,Nk};
其中,Nk表示第k个叶节点中的三角面片的索引个数。
进一步的,所述步骤(4)中小模型直接用包围盒替代,无需细节三角面片信息,通过验证小模型包围盒中心与第一层八叉树立方体盒中心的距离,根据以下公式判断是否可能存在相交:
其中,pb表示小模型包围盒中心,po1表示大模型第一层八叉树立方体盒中心,Lb表示小模型包围盒边长,Lo1表示第一层八叉树立方体盒边长。若满足上述公式,则判断相交,若不满足,则判断不相交。
进一步的,步骤(6)验证集容器中的Index具有唯一性,不会重复加入。
本发明的有益效果为:
本发明提供一种基于八叉树结构分割的快速碰撞检测方法,先按八叉树结构分割大体积模型的包围盒,再验证小体积模型与八叉树中节点的相交性,缩小相交面片计算范围,加速碰撞检测。
附图说明
图1是本发明的碰撞检测算法流程图;
图2是本发明的场景布局效果图;
图3是本发明的八叉树管理结构示意图。
具体实施方式:
为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
一种基于八叉树结构分割的快速碰撞检测方法,包括以下步骤:
(1)根据模型体积先验知识,将三维模型设定为大模型和小模型;
(2)将大模型的包围盒按八叉树结构分割,整个八叉树的深度由大模型立方体盒边长Lo和设定的叶节点边长Lleaf决定:
(3)如果三角面片包围球与八叉树中某个叶节点的立方体空间相交,则将该三角面片索引存储在该叶节点容器内。对于第k个叶节点和索引为index的面片,根据以下公式判断是否相交:
其中,pindex和Rindex表示索引为index的面片的包围球的球心和半径,pk和Lleaf表示第k个叶节点的立方体的中心和边长。
将满足上述条件的全部面片索引加入到第k个叶节点容器Vk中:
Vk={indexi,i=1,2,...,Nk};
其中,Nk表示第k个叶节点中的三角面片的索引个数。
(4)小模型直接用包围盒替代,无需细节三角面片信息,也不进行八叉树分割;通过验证小模型包围盒中心与第一层八叉树立方体盒中心的距离,判断是否可能存在相交。
其中,pb表示小模型包围盒中心,po1表示大模型第一层八叉树立方体盒中心,Lb表示小模型包围盒边长,Lo1表示第一层八叉树立方体盒边长。
(5)如果步骤(4)判定为否,则停止判断;如果判定为是,则继续判断是否与八个子节点的立方体盒相交,同理,自顶向下逐层判断直至叶节点;
(6)将所有判断为相交的叶节点所存储的三角面片索引Index存储到一个验证集容器中,容器中的Index具有唯一性,不会重复加入。
(7)判断小模型是否与验证集容器中的三角面片相交。
(8)场景变换,小模型相对于大模型运动,更新小模型的信息,重复步骤(4)~(7)。
本实施例的一个具体应用为:
本文算法在Intel E3 3.31GHz的CPU、8G内存的Window10 64位PC机上进行了实现。算法在车辆喷涂场景上进行了应用。在该场景中,机械手根据已规划的路径持续运动,执行喷涂任务,在此过程中检测喷涂对象车辆工件和机械手的碰撞。所用场景数据包含了导轨、机械手和车辆模型,这些模型均由物体表面的三角面片构成,其中机械手和车辆模型用于本实施例的碰撞检测。
车辆喷涂场景如图2所示,采用本文提出的算法,设定车辆为大模型,机械手为小模型,首先求解车辆模型的包围盒,进行八叉树结构划分,将车辆模型的三角面片归类到八叉树叶节点中;然后根据当前时刻机械手的位置,更新机械手模型的包围盒;最后,判断机械手模型包围盒是否与车辆模型的八叉树结构中的叶子节点相交,如果存在相交,再判断是否与叶子节点存储的三角面片相交,从而实现碰撞检测。在机械手运动过程中,更新包围盒和碰撞检测迭代进行,直到完成车辆的喷涂。显然,本文算法在原理上可以实现快速的碰撞检测。
为了验证本文所述检测算法的实际性能,对本文算法和传统算法进行了比较,结果如下表所示:
从上表可见,本文算法具有更快的检测速度,速度提升37倍。因此,本文算法能实现快速碰撞检测。
Claims (2)
1.一种基于八叉树结构分割的快速碰撞检测方法,其特征在于包括以下步骤:
(1)根据模型体积先验知识,将三维模型设定为大模型和小模型;
(2)将大模型的包围盒按八叉树结构分割;
(3)归类大模型三角面片;
(4)判断小模型包围盒是否与大模型八叉树结构的第一层立方体盒相交;
(5)如果步骤(4)判定为否,则停止判断;如果判定为是,则继续判断是否与八个子节点的立方体盒相交,同理,自顶向下逐层判断直至叶节点;
(6)将所有判断为相交的叶节点所存储的三角面片索引Index存储到一个验证集容器中;
(7)判断小模型是否与验证集容器中的三角面片相交;
(8)场景变换,小模型相对于大模型运动,更新小模型的信息,重复步骤(4)~(7);
所述步骤(2)整个八叉树的深度Depth由大模型立方体盒边长Lo和设定的叶节点边长Lleaf决定:
所述步骤(3)的归类方法为:如果三角面片包围球与八叉树中某个叶节点的立方体空间相交,则将该三角面片索引存储在该叶节点的容器内;
对于第k个叶节点和索引为index的面片,根据以下公式判断是否相交:
其中,pindex和Rindex表示索引为index的面片的包围球的球心和半径,pk和Lleaf表示第k个叶节点的立方体的中心和边长;
将满足上述条件的全部面片索引加入到第k个叶节点的容器Vk中:
Vk={indexi,i=1,2,...,Nk};
其中,Nk表示第k个叶节点中的三角面片的索引个数。
所述步骤(4)中小模型直接用包围盒替代,无需细节三角面片信息,通过验证小模型包围盒中心与第一层八叉树立方体盒中心的距离,根据以下公式判断是否可能存在相交:
其中,pb表示小模型包围盒中心,po1表示大模型第一层八叉树立方体盒中心,Lb表示小模型包围盒边长,Lo1表示第一层八叉树立方体盒边长;
若满足上述公式,则判断相交,若不满足,则判断不相交。
2.如权利要求1所述的基于八叉树结构分割的快速碰撞检测方法,其特征在于:步骤(6)验证集容器中的Index具有唯一性,不会重复加入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110288962.1A CN113001551B (zh) | 2021-03-18 | 2021-03-18 | 基于八叉树结构分割的快速碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110288962.1A CN113001551B (zh) | 2021-03-18 | 2021-03-18 | 基于八叉树结构分割的快速碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113001551A CN113001551A (zh) | 2021-06-22 |
CN113001551B true CN113001551B (zh) | 2022-09-23 |
Family
ID=76409511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110288962.1A Active CN113001551B (zh) | 2021-03-18 | 2021-03-18 | 基于八叉树结构分割的快速碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113001551B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113246143A (zh) * | 2021-06-25 | 2021-08-13 | 视比特(长沙)机器人科技有限公司 | 一种机械臂动态避障轨迹规划方法及装置 |
CN113989221A (zh) * | 2021-10-26 | 2022-01-28 | 电子科技大学 | 基于改进八叉树分割法的砂带磨削整体叶盘碰撞检测方法 |
CN115056215A (zh) * | 2022-05-20 | 2022-09-16 | 梅卡曼德(北京)机器人科技有限公司 | 碰撞检测方法、控制方法、抓取系统及计算机存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030117397A1 (en) * | 2001-12-21 | 2003-06-26 | Hubrecht Alain Yves Nestor | Systems and methods for generating virtual reality (VR) file(s) for complex virtual environments |
JP4444725B2 (ja) * | 2004-04-26 | 2010-03-31 | 独立行政法人科学技術振興機構 | 衝突検出方法及び衝突検出システム |
US7928993B2 (en) * | 2006-07-28 | 2011-04-19 | Intel Corporation | Real-time multi-resolution 3D collision detection using cube-maps |
US8760450B2 (en) * | 2007-10-30 | 2014-06-24 | Advanced Micro Devices, Inc. | Real-time mesh simplification using the graphics processing unit |
CN101593364B (zh) * | 2009-06-25 | 2012-02-08 | 北京航空航天大学 | 一种基于椭球体扫描的连续碰撞检测方法 |
CN101593367B (zh) * | 2009-06-25 | 2011-03-23 | 北京航空航天大学 | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 |
CN102368280A (zh) * | 2011-10-21 | 2012-03-07 | 北京航空航天大学 | 一种面向虚拟装配的基于aabb-obb混合包围盒的碰撞检测方法 |
CN103413297A (zh) * | 2013-07-16 | 2013-11-27 | 南京师范大学 | 基于一体化三维gis模型的切割方法 |
CN106780762A (zh) * | 2016-12-20 | 2017-05-31 | 浙江工业大学 | 三维复杂场景基于层次包围盒碰撞检测的路径规划优化方法 |
CN108536880A (zh) * | 2017-03-06 | 2018-09-14 | 上海盟云移软网络科技股份有限公司 | 一种虚拟现实系统的随机碰撞检测算法 |
CN111652908A (zh) * | 2020-04-17 | 2020-09-11 | 国网山西省电力公司晋中供电公司 | 一种虚拟现实场景的操作碰撞检测方法 |
CN112179602B (zh) * | 2020-08-28 | 2021-06-25 | 北京邮电大学 | 一种机械臂碰撞检测方法 |
CN112347546A (zh) * | 2020-11-30 | 2021-02-09 | 久瓴(江苏)数字智能科技有限公司 | 基于轻量级设备的bim渲染方法、设备和计算机可读存储介质 |
-
2021
- 2021-03-18 CN CN202110288962.1A patent/CN113001551B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113001551A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113001551B (zh) | 基于八叉树结构分割的快速碰撞检测方法 | |
CN112613378B (zh) | 3d目标检测方法、系统、介质及终端 | |
CN112669434B (zh) | 一种基于网格与包围盒的碰撞检测方法 | |
CN103236079B (zh) | 一种基于三维模型体素化的内部球改进构造方法 | |
CN107677279A (zh) | 一种定位建图的方法及系统 | |
CN109839935A (zh) | 多agv的路径规划方法及设备 | |
CN108305289B (zh) | 基于最小二乘法的三维模型对称性特征检测方法及系统 | |
CN104200031A (zh) | 一种基于距离优先和时空相关性的碰撞检测方法 | |
CN110349260B (zh) | 一种路面标线自动提取方法及装置 | |
CN105793730A (zh) | 对象运动的基于激光雷达的分类 | |
CN111243094B (zh) | 一种基于点灯法的三维模型精确体素化方法 | |
CN109584357A (zh) | 基于多轮廓线的三维建模方法、装置、系统及存储介质 | |
CN110033519A (zh) | 基于隐式函数的三维建模方法、装置、系统及存储介质 | |
CN116109601A (zh) | 一种基于三维激光雷达点云的实时目标检测方法 | |
CN115880713A (zh) | 一种基于语义改进的自动寻体构建建筑产权体的方法 | |
CN116258822A (zh) | 基于元宇宙的三维引擎边界限定方法、设备及存储介质 | |
CN114494329A (zh) | 用于移动机器人在非平面环境自主探索的导引点选取方法 | |
CN110222447B (zh) | 一种基于八叉树的自适应网格划分方法及系统 | |
CN114325760A (zh) | 基于多线激光雷达的公路隧道质检避障方法及系统 | |
CN117593204B (zh) | 一种基于超体素邻近聚类的点云实例分割方法 | |
Su et al. | Slibo-net: Floorplan reconstruction via slicing box representation with local geometry regularization | |
CN116764225B (zh) | 一种高效寻路的处理方法、装置、设备及介质 | |
CN115908541A (zh) | 针对室内环境基于曲率信息的车载激光雷达点云聚类算法 | |
CN114693943A (zh) | 一种用于目标检测的非极大值抑制加速方法、系统和设备 | |
CN111859612A (zh) | 激光雷达仿真方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |