刘凯,魏双羽,白跃伟
(上海第二工业大学智能制造与控制工程学院,上海 201209)
CMM(Coordinate Measurement Machine)是三坐标测量机的简称,是现代精密测量领域的重要设备,借助测量程序它可以实现自动、复杂、批量的测量任务。合理的测量程序要保证CMM系统在自动测量过程中测量传感器不会与被测工件发生非法碰撞,否则会导致测量任务执行失败,甚至使测量设备受损。所以测量程序中除测量点外还须包含路径控制点(后续简称为GOTO点)信息。
测量路径规划是创建合理测量方案的重要内容,一直是CMM应用领域较热门的研究方向。其中比较有代表性的研究有:AINSWORTH等提出了基于CAD模型的自由曲面测量规划方法,使用CAD模型生成采样点并根据用户设置的默认参数为选定实体生成测量路径。龚玉玲等基于点云和几何特征,优化点云数据后来生成DMIS自动测量程序。周开俊等构建了零件检测特征群,并基于此在整体上对检测路径进行优化。STOJADINOVIC等提出了一种针对棱镜零件模型的智能检测路径规划,对测点分布、碰撞干涉和路径规划做了研究。潘为民等针对叶轮进行了测量路径规划研究。葛科迪等提出了一种虚拟夹具离线构造和在线迭代更新的示教编程策略。王飞等人针对飞机进气管道做了测量路径规划算法研究。王乔等人提出了基于CAD模型和光学成像匹配结合的自动路径规划方法。项目组在这个领域也开展了相关探索,例如文献[9]提出了基于空间约束平面集的自动路径规划方法。
上述文献总的来说大部分都是基于CAD模型来规划和优化测量路径,但示教编程过程中的路径规划鲜有涉及,而且主流CMM测量软件(例如瑞典海克斯康的PC-DMIS等)此功能在某些测量情景下还存在不足。本文作者针对这些应用场景下如何创建合理测量路径的问题进行了相关研究,提出了新的路径规划算法,弥补了现有CMM测量软件在示教编程时自动路径规划方面的欠缺。
示教编程是由CMM测量软件通过记录示教人员的系列操作而自动生成测量程序的一种方法,此过程中主要记录测量点、测头操作、坐标系变换及相关界面操作等。示教完成后测量软件通过执行此测量程序即可实现对该类型零件的自动测量功能。
测量软件在示教过程中无法判断哪些GOTO点是重要的路径拐点,所以不会主动记录此类数据,要使测量程序可正确执行,添加GOTO点方法主要有以下两种。
(1)手动添加
测量人员在示教过程中,利用操作手柄的相关按键,把当前测尖坐标位置作为GOTO点数据插入到测量序列中。但这种方法要求示教人员在示教过程中时刻注意路径拐点,很容易出现错误和遗漏,给程序安全带来隐患。
(2)动态添加
针对方法1操作存在的安全隐患,目前主流测量软件如PC-DMIS、Rational DMIS等都利用安全平面功能来解决此问题。此功能最大优点是不需要在示教过程中添加GOTO点,而是在执行自动测量程序时动态生成GOTO点。
算法逻辑如下:测量任务开始时,暂不执行后续指令,先将测量指令后的第一个点的安全位置点(定义请参考2.1节内容),作为GOTO指令的数据发送给CMM,然后再执行后续指令,以确保在测量开始前,测头停靠在被测几何元素上方的安全位置。测量任务结束后,也暂不执行后续指令,而是将当前测尖位置的安全位置点作为GOTO指令的数据发送给CMM,然后再执行后续指令。
综上,该算法要保证在单个几何元素测量开始前和结束后,测头均位于安全平面上方,从而可保障测头在几何元素间移动时的路径安全,最大可能地避免了测头与工件的非法碰撞,提高了测量程序的安全性,大大减轻了示教编程的工作量。所以安全平面算法在主流测量软件中得到了广泛地应用。
目前该算法将路径规划重点放在了单个几何元素测量开始前和测量结束后。但如果测量需求如图1所示,在测量单个几何元素的过程中必须经过安全平面来避开与工件的碰撞时,主流测量软件都无法自动正确地规划路径,而必须要手动插入GOTO点来解决,从而增加了示教编程的工作量并且给测量程序安全带来了隐患。
如图1(a)所示,要测量一个内部包含柱体的内球,需要依次测量~共4个测量点。为避免与内部结构碰撞,测量完点后需要将测头从安全平面上方绕过柱体后继续测量。测量图1(b)所示的通孔时也必须在测量过程中经过安全平面。
图1 测量过程中要穿过安全平面的情景举例
针对此类测量情景下现有测量软件路径规划算法的不足,设计实现了新的路径规划算法,并将其集成到国产测量软件DirectDMIS中加以验证。
为更方便地阐述此算法,在此先介绍以下几个概念(见图2)。
图2 相关概念说明
安全平面:指此平面上任意一点沿法矢方向都没有实体遮挡,是安全的,一般情况下指经过被测工件的最高位置,且平行于CMM台面的平面。
安全距离:由于安全平面一般是通过测量零件最高位置所在平面生成的,所以它是安全值的下限,为了保证路径足够安全,通常要沿安全平面法矢方向再抬高一段距离,这段距离就称为安全距离。
安全位置点:文中特指将给定点向安全平面投影,并将投影点沿安全平面法矢平移一个安全距离,得到的位置坐标点称为该点的安全位置点。
穿透:文中指测尖从安全平面的一侧移动到另一侧的过程。判断方法是计算两个向量的角度值变化——第一个向量是测尖位置坐标到其投影于安全平面上的点坐标的向量,第二个向量是安全平面的法矢向量。如果这两个向量夹角等于0,则测尖位于安全平面下方,如果该角度等于π则测尖位于安全平面上方。
它包括有效穿透和无效穿透,前者指测尖从安全平面上方穿透到安全平面下方,并在返回安全平面上方之前至少执行了一次测量动作;后者指测尖从安全平面上方穿透到安全平面下方后未进行测量任务,重新返回到安全平面上方的这两次穿透动作集合。限于篇幅,无效穿透和有效穿透的算法判断不在文中阐述。
穿透点:文中指运动路径穿透安全平面时的坐标点,即运动路径与安全平面的交点。文中算法只考虑有效穿产生的穿透点。
穿透线:文中指经过穿透点且矢量方向与安全平面法矢方向相同的直线。
下面结合具体测量案例来阐述此算法的实现。如图3所示,要求测量通孔的两端来确定该通孔的几何尺寸和公差。假设测量过程包含8个测量点,并依次命名为~。要满足上述测量需求,必须在测量完点后将测头从安全平面上方移动到通孔的另一侧,然后再测量剩余的点~,所以此通孔测量过程中必须穿过安全平面。
图3 测量和算法过程示意
算法的设计思路是记录下示教过程中产生的有效穿透点,并将其对应的安全位置点坐标作为GOTO点数据按顺序记录到测量序列中。如果该GOTO点与测量点之间的路径会与CAD模型发生碰撞,则还需要插入其他新的GOTO点指令,用来避开CAD模型。
伪代码实现如图4(a)所示,首先记录下穿透点坐标,如图3所示,设左侧穿透点为,其安全位置点为,穿透线为,右侧穿透点为,其安全位置点为,穿透线为。如果至路径与CAD模型没有碰撞,则直接将作为GOTO点插入到测量序列中;如果有碰撞,则利用“寻找安全路径()”函数寻找一个新的GOTO点M。
函数“寻找安全路径()” 伪代码实现见图4(b)。算法思路是将测量点向穿透线投影,然后利用二分法寻找此投影点到其安全位置点之间的一点,使得该点与测量点之间的路径不与CAD模型发生碰撞。
图4 算法的伪码实现
右侧路径规划算法与左侧基本相同,首先判断路径至是否与CAD模型碰撞,没有碰撞则直接将作为GOTO点插入到测量序列中,再将作为测量点插入序列,完成此次路径规划;如果有碰撞,则利用“寻找安全路径()”函数寻找一个新的GOTO点,然后将、作为GOTO点,作为测量点插入测量序列,至此完成此次路径规划。
将上述算法集成到国产测量软件DirectDMIS中,并通过两个实际测量案例来验证该算法,是否能在前文所述的条件下自动规划正确的测量路径。实验参照对象选择PC-DMIS(V2013版)测量软件,并统一在DMIS标准下来比较两款软件的路径规划结果。
3.1.1 实验内容
实验的测量需求如图5所示,要测量一个包含内部结构的球体,过程中需要测量4个点,分别命名为~。示教过程中要求运动路径如图5所示——在测量完点后,先操作测头向上穿过安全平面(穿透点为),绕过内部的柱体后,再向下穿过安全平面(穿透点为)完成测量任务。
图5 测量内球
在此实验中,DirectDMIS与PC-DMIS两款测量软件都使用如图5所示同一个模型,并且均定义上表面为安全平面,安全距离均为30 mm。两款软件测试过程中软件截屏如图6所示。
图6 两款测量软件测试界面
3.1.2 实验结果
(1)PC-DMIS测量软件。软件导出的DMIS程序如图7所示,其路径仿真如图8所示。可见该软件并未能在测量完点后生成必要的GOTO点,如果自动执行该程序会在测量点时发生非法碰撞,导致测量任务失败。
图7 PC-DMIS测量完成后DMIS程序内容
图8 PC-DMIS路径结果仿真
(2)国产DirectDMIS测量软件。软件导出的DMIS程序如图9所示,其路径仿真如图10所示。可见该软件在测点和之间生成了两个GOTO指令,利用这两个GOTO指令在自动测量过程中可避开球内的柱体,从而保障了测量任务的正确执行。
图9 DirectDMIS测量完成后的DMIS程序内容
图10 DirectDMIS路径结果仿真
3.1.3 实验分析
(1)PC-DMIS测量软件。利用该软件在测量完和后,虽然手动测量过程中从安全平面上方绕过障碍,但因其未考虑测量过程中需要穿过安全平面来避开工件的情况,所以未能在DMIS程序中规划必要GOTO点,所以PC-DMIS此测量情景下需要手动插入GOTO点来解决路径规划问题。
(2)国产DirectDMIS测量软件。在应用了文中算法后,该软件可以实现此测量情景下的自动路径规划。在测量任务开始并收到第一个测量点后,此算法开始启动,当监测到测量点和之间有穿透点,则利用两个安全位置点来自动规划一条安全路径。从最终路径规划结果可以看出此算法自动规划的测量路径是安全、合理的。
3.1.4 实验结论
文中算法在不增加测量软件设置和操作的条件下,实现了测量过程中必须穿透安全平面情景下的自动路径规划功能,并通过与PC-DMIS测量软件在相同情况下的路径规划结果对比,初步验证了该算法的有效性和实用性。
进一步通过测量通孔的实验来验证此算法,参照对象依然选择PC-DMIS测量软件。实验过程是分别利用DirectDMIS和PC-DMIS测量同一个包含通孔的模型,并设置最上端平面为安全平面,如图3所示。
3.2.1 实验内容
首先利用星形测针在通孔的一端取4个测量点,然后驱动测头穿透安全平面到通孔另一侧,更换测针后测量剩余的4个测量点,最后分别将两款软件自动生成的测量程序导出为DMIS标准格式,并利用路径仿真来直观地比较两个结果的优劣。在此需要说明的是,完成此测量任务后,两款软件导出的DMIS程序中都包含更换测头指令如“SNSLCT/S(测头名称)”,但该指令不在文中比较范围,所以作者将其忽略。
3.2.2 实验结果与分析
(1)PC-DMIS测量软件。测量完成后,该软件导出的DMIS程序如图11所示,其路径仿真见图12。可以看出该软件未能生成必要的GOTO指令来规避测量过程中的碰撞。在测量完前4个点后,测量程序会直接驱动CMM从通孔内部运动到另一侧进行测量,从而会造成CMM与工件的非法碰撞,导致测量任务失败甚至是设备的损毁。
图11 PC-DMIS导出的DMIS数据
图12 PC-DMIS路径结果仿真
(2)DirectDMIS测量软件。应用文中算法后,该软件导出的DMIS程序如图13所示,路径仿真如图14所示,可见文中算法在此情景下生成的测量路径是安全的、合理的。
图13 DirectDMIS导出的DMIS数据
图14 DirectDMIS路径结果仿真
通过与PC-DMIS测量软件在相同情况下的自动路径规划对比实验,验证了文中算法的有效性和实用性。
针对主流测量软件示教过程中某些情景下无法自动规划测量路径的问题,提出了新的路径规划算法,并将其集成到了国产测量软件DirectDMIS中。在不增加测量软件任何操作和设置的条件下,实现了特定情景下的自动路径规划,弥补了现在测量软件的不足。相较之前须手动插入GOTO点来说,提升了示教编程的效率并提高了测量程序的安全性。最后通过实际应用并与主流测量软件PC-DMIS比较,验证了文中算法的有效性与实用性。
但文中算法也有其弊端——即在示教编程过程中必须操作测头穿透安全平面来避开工件,如果期间从安全平面下方绕过工件,则文中算法因无法监测到安全平面的穿透事件而不能生成正确的轨迹规划。此情况下的路径规划算法希望能在后续工作中进一步研究后解决。