工业自动化中的碰撞检测
摘要
目前,大多数防碰撞机制使用图形处理器(GPU)进行操作,且对象仿真通常采用多边形网格绘制。然而,其成本往往非常高。因此,我们提出一种新方法以改进机械臂的防碰撞机制。我们应用八叉树算法对对象模型进行分解,并结合包围盒技术将对象构造成覆盖盒。通过这种方式,可减少计算空间并简化碰撞检测的计算。最后,所提出的方法已在犀牛(Rhino)平台上实现,用于构建工业制造生产线的仿真系统。
关键词 —碰撞检测;机械臂;多边形网格;八叉树算法
一、引言
工业革命始于1760年代。随着科学技术的迅速发展,当今制造业已逐渐从过去大量依赖人力转变为自动化生产线机械。如今,机械臂已在各个行业的生产线上得到广泛应用,机械臂在生产线中的作业规划与安全指标显得尤为重要。过去已有许多文献或研究人员对碰撞检测进行了研究,但大多数方法依赖大量图形处理器来支持其复杂计算。在检测软件中,使用了海量的三角网格 [1],[2] 进行计算。以工业中最常用的六轴机械臂 [3] 为例,其三角网格数量至少约20,000个,最多可达300,000个。若采用图形处理器计算六轴机械臂的碰撞检测,将给工厂的生产线带来极高的成本。
此外,如果我们不使用图形处理器,可以通过软件控制让中央处理器进行并行计算,从而将性能提高两到五倍。表I显示了性能比较
| 优势 | 缺点 | |
|---|---|---|
| 图形处理器计算 | 快速且精确 | 高成本 |
| 中央处理器并行计算 | 低成本 | 难以实现 |
中央处理器和图形处理器之间的性能比较。很容易看出,中央处理器的性能实际上无法满足工业需求。
本文的其余部分组织如下。在第2节中,我们将介绍八叉树算法技术、最小包围矩形技术、近年来多边形网格的概述以及机械臂的概述。在第3节中,我们提出了防碰撞机制过程的算法并进行实验。然后展示评估结果,最后对本文进行总结。
II. 相关工作
本节将介绍本文提到的研究工作以及相关算法和数据结构。我们的研究目标是工业自动化中的碰撞检测技术的研发,因此核心技术将是防碰撞机制算法的开发。所涉及的技术包括最小包围矩形技术、八叉树算法、多边形网格以及对六轴机械臂的实验。
A. 机械臂
目前,工业中使用的大多数机器人都是基于机械臂类型的,机械臂在形状和尺寸上各不相同。常见类型包括直线臂、选择性顺应装配机械臂 [4], 和关节多轴机械臂。从关节结构来看,可分为两类:三轴及以下和四轴及以上。分类的原因是这两个方面的市场和供应商互不冲突。机械臂会安装各种夹具或加工工具根据工作类型并且它们被设计用来模拟人手的功能。
机械臂在工业自动化中的应用已经相当广泛,由于各个国家的工业分布不同以及各个行业对机械臂的需求不同。它主要用于无法手动完成或需要耗费更多时间的任务。机械臂的精度和耐久性可以减少由人为因素引起的不可预测的问题。
图1是六轴机械臂的示意图,由6个伺服旋转轴及其之间的刚性连接组成。前三个轴用于支撑和控制机械臂,主要决定手和手腕在空间中的位置。相比之下,后三个轴包含手并构成手腕,主要用于确定手的放置方式。
B. 最小包围矩形
最小包围矩形指的是在二维坐标中表示若干二维形状(如点、线、多边形)的最大范围。即,给定二维形状的每个顶点的最大横坐标、最小横坐标、最大纵坐标和最小纵坐标所定义的矩形边界。该矩形包含给定的二维形状,且其边与坐标轴平行。最小包围矩形是最小外接框的二维形式。
最小包围矩形通常用于地理信息系统中以提供近似值地理要素的位置,如图2[5],所示,这是一个二维的应用示例[6]。使用最小包围矩形的优点在于可以大大简化信息的复杂性,而其最大的缺点是牺牲了精度。
本文所使用的最小外接框是存在于三维中的一个边界矩形。由于我们模拟的生产线文件是一个三维形状,因此所提供的信息也是基于三维空间的。
C. 八叉树算法
八叉树 [7] 是一种用于描述三维空间的数据结构。八叉树的每个节点代表一个立方体的体积单元,且每个节点有八个子节点。这八个子节点所代表的体积单元加起来等于父节点的体积。通常,以中心点作为节点的分叉中心。如图3[8],所示,我们可以清楚地看到八叉树的数据结构模型。该数据结构有利于本研究课题的应用,因为其将数据细分的特点使得后续处理可以采用分治算法 [9], 如图4所示。
D. 多边形网格
多边形网格 [10] 是一组顶点和多边形的集合,用于在三维计算机图形中表示多面体的形状。过去,这种结构常被用来模拟工业机器或机械臂。除了工业用途外,它也广泛应用于其他模拟图形中,如图5所示。这些多边形网格通常由三角形、四边形或其他简单的凸多边形组成,以简化物体的形状。多边形网格还包括由带有孔洞的普通多边形组成的物体。
三、方法设计
A. 实验描述
实验中,首先导入机械臂的STL文件。该文件记录了机械臂的三角网格信息。然后编写一个Robot_Arm_Rotation.cs文件,负责分析导入的机械臂信息,并根据八叉树算法的数据结构对数据进行拆分和分类,按照实验要求将机械臂划分为多个部分。接下来,编写用于最小包围矩形方法的Get_BoundingBox.cs文件,将已分解的机械臂信息封装为盒装操作,并在之前的 Robot_Arm_Rotation.cs文件中调用它。
接下来,我们编写用于机械臂运动学控制的Inverse_Kinematics.cs文件,使用户能够在软件中自由操控机械臂。
然后我们使用碰撞检测.cs文件进行碰撞检测的设计。该文件利用之前的Get_BoundingBox.cs文件,并对完成的包装箱进行检测。当机械臂移动后,将调用碰撞检测.cs文件中的函数。每次机械臂移动时,程序会依次调用每个传入的包围盒进行检测,确保不会遗漏。
实验期间还添加了优先级参数,便于满足工业需求,使整个机械臂的碰撞检测更符合实际情况。最后,防碰撞检测信息返回的内容包括覆盖盒数量、碰撞时间以及检测是否成功。上述信息不仅可为实验人员提供改进代码的依据,还能帮助用户了解模拟工厂的运行情况。最后,我们使用防碰撞检测时间来模拟工厂的流畅性。
B. 实验过程
实验过程分为两个阶段。第一阶段是机械臂分解和覆盖盒制作,第二阶段是机械臂运行过程中覆盖盒的碰撞检测。
1) 第一阶段
在第一阶段,我们按顺序将要进行实验的机械臂数导入到Rhinoceros 3D建模软件中,然后根据条件使用八叉树算法对机械臂进行分解。分解完成后,将所有对象制作成最小包围矩形,称为包围盒。上述算法步骤将持续重复,直到没有新的机械臂需要导入时,再进入第二阶段。
2) 第二阶段
第二阶段是机械臂的操作控制,即防碰撞检测的实际操作。首先,我们使用逆运动学来模拟机械臂的运动。程序将记录机械臂的初始和结束位置。代入逆运动学后,可得到机械臂需要位移的角度。机械臂移动后,将立即执行防碰撞检测。被检测的对象均为包围盒,因此结果可以非常快速地计算出来。
碰撞检测将返回时间和坐标,以供其他实验计算使用。如果包围盒发生碰撞,仿真软件将立即发出警告并停止操作,以实现防碰撞和停止的效果。
IV. 实验结果
实验的对象包括多个机械臂、一个夹爪、一个矩形物体和一台大型机器。我们使用上述物体来模拟工厂的实际操作。
测试过程首先测试仅包含机械臂、夹爪和矩形物体的工厂仿真,并按顺序导入机械臂。这是一个没有大型机器的版本。实验结果如图7所示。
然后我们导入大型机器,并再次导入机械臂数量。实验结果如图8所示。因此,我们在图9中比较了两个版本的碰撞检测时间变化。
如果实验场地中没有大型机器,那么我们只需增加机械臂的数量即可。可以发现,我们的防碰撞检测时间并未显著增加。当实验场地加入大型机器后,平均防碰撞检测时间也仅有轻微上升。由此可见,根据所提出的设计方法,即使工厂中存在多个机械臂和大型机器,防碰撞检测时间仍未显著增加。
V. 结论
本文提出了一种修改机械臂防碰撞的方法。我们解决了最初由三角网格带来的巨大计算量问题。该算法已在犀牛(Rhino)中实现,以便用户能够根据不同的需求导入STL文件。此外,通过我们的防碰撞机制,本工作可以满足工厂生产线的需求,进而增加或减少机械臂的数量,并最终模拟多个机械臂运行时的环境。
2013

被折叠的 条评论
为什么被折叠?



