齐洪方,郭润琪
(1.武汉华夏理工学院 智能制造学院,湖北 武汉 430223;2.武汉理工大学 机电工程学院,湖北 武汉 430070)
随着传统制造业向智能制造升级,其生产过程中常用的离线测量技术已难以满足智能制造的需求。
在线测量技术将加工过程和检测过程相结合,减少了人为检测和重复定位等造成的误差,可以有效提高检测精度和效率。接触式在线检测路径主要由检测点之间的三维路径段组成。因此,研究一种路径规划方法,保证探头与工件之间不发生碰撞,并且探头运行的时间较短,显得尤为重要。
在测量路径规划方法的研究方面,王正春[1]、张虎[2]等人提出了一种方法,即先规划初始测量路径,再进行碰撞检测和碰撞规避;这类方法规划时间较短,但为保证检测过程中的安全性,相关的规避原则通常会规划离工件较远的避障点,导致整体测量路径较长,增加了检测时间;同时,对于较为复杂的结构特征,相关规避原则可能会失效。HAN Zhen-hua等人[3]提出了另外一种方法,即先生成路径矩阵,再规划测量顺序;这类方法在生成路径矩阵时就进行了碰撞检测,且以路径和较短,探头运动轨迹方向和轴线方向变换的次数较少为目标,优化路径矩阵和测量顺序;但其计算量较大,规划时间较长。
基于此,笔者提出一种复杂曲面工件接触式在线测量的路径规划方法。首先规划初始测量路径;然后采用改进的蚁群算法,对初始测量路径中发生碰撞的路径段进行优化。
接触式在线测量过程中,探头将沿规划的测量路径依次获取测点的实际坐标值,测量路径规划的主要目标是在保证检测精度的情况下,缩短检测路径、提高检测效率、避免发生碰撞。
在线检测路径规划过程中,首先根据探头模型几何参数、相关距离参数和测点坐标集,生成初始测量路径。初始测量路径主要由局部测量路径和全局测量路径组成。局部测量路径是指探头遍历特征内部测点的路径,初始局部路径的规划是在不考虑碰撞的前提下,通过模拟退火算法规划生成的路径;全局测量路径是指探头在特征面之间移动的路径,全局测量路径的规划是根据相关需求约束,设计特征分层、分组原则,并借助模拟退火算法确定层级间的优先测量顺序、组内测量顺序和同层级的组间测量顺序;
然后,笔者针对碰撞检测问题,根据探头和工件的结构特征,利用离散法和空间划分将动态碰撞检测转化为几何元素的相交测试,并规定分级碰撞检测原则,简化检测过程;
最后,笔者针对碰撞规避问题,改进蚁群算法,从而对发生碰撞的初始路径段进行重新规划。
复杂曲面工件的测量路径规划流程如图1所示。
图1 复杂曲面工件的在线测量路径规划流程图
在规划测量路径的过程中,需对探头的移动轨迹进行动态碰撞检测,以保证测量路径的安全性。为解决动态碰撞检测问题,一般需将其转化为静态碰撞检测[4],主要方法为连续法和离散法。连续法中应用较多的为扫描体法[5],扫描体法的检测精度较高,但通常生成的扫描体为不规则的几何体,难以实现后续的几何体相交干涉测试;离散法[6,7]可以通过离散运动过程,将动态碰撞检测转为静态碰撞检测,并且可通过调整离散点之间的间距来保证检测精度。
笔者采用离散法将工件与探头之间的动态碰撞检测转换为静态碰撞检测。考虑到工件与探头的安全性,将换速距离设置为离散间距。在线测量过程中,根据不同路径规划段所需的不同碰撞检测精度,将碰撞检测分为粗略碰撞检测和精细碰撞检测。
粗略碰撞检测主要应用在全局测量路径中。探头在全局测量路径上移动的速度较快,可移动的范围较大。为保证安全性,需将探头与待测工件保持一定的距离;所以,在全局测量路径规划过程中进行的碰撞检测只需将探头与空间划分的栅格进行相交测试,保证与探头相交的栅格可行。粗略碰撞检测主要进行两种相交干涉判断:长方体与圆柱体和长方体与球的相交测试。
精细碰撞检测主要应用在局部测量路径中。按照测量要求,探头在局部测量路径上移动时,需与待测工件表面发生接触以获取实际测点坐标;所以,在局部测量路径规划过程中,除了进行粗略碰撞检测快速删除不可能发生碰撞的部分以外,还需将粗略碰撞检测过程中与探头相交且不完全可行的栅格中所包含的三角面片和探头进行相交测试,即进行精细碰撞检测。精细碰撞检测主要进行两种相交干涉判断:三角形与圆柱体和三角形与球的相交测试。
常用的静态碰撞检测方法主要有两类:(1)包围盒法[8-10]。这类方法是根据物体形状,用简单多面体包围物体,通过求取包围盒之间的距离,来判断物体是否发生碰撞,主要针对几何特征较为规则的物体;(2)空间划分法[11-13]。这类方法是提前将需进行碰撞检测的空间划分为均匀的简单几何元素,根据物体是否归属同一个空间元素来判断其是否发生碰撞。
为简化静态碰撞检测,笔者采用各边分别平行于坐标轴的栅格划分空间。在进行空间划分之前,需要确定碰撞检测的空间范围和栅格的尺寸,从而计算栅格的数目,实现空间划分。
因为本文采用的栅格的各边分别平行于坐标轴,且待测工件的长、宽和高也大多平行于坐标轴,因此笔者根据待测工件的AABB(axis-alignedboundingbox)包围盒来确定空间范围。
笔者只考虑待测工件与工作台直接接触的情况,为减少碰撞检测的计算量,将探头运动范围约束在工件与工作台的接触面的上方,所以碰撞检测的空间只考虑接触面上方部分。
为保证测量路径的安全性,笔者将待测工件的AABB包围盒向外拓展至测量所需的预接触距离,得到碰撞检测的空间范围。探头在全局测量路径中的移动速度较快,需保证探头与零件表面有一定的间距。笔者规划的全局测量路径将直接避开包含待测工件模型的栅格,所以该全局测量路径与零件表面的距离及其长度,很大程度上取决于栅格的尺寸;考虑到探头接触测点之前会设置一段预接触距离,为防止探头与零件接触时冲击力过大,对探头和机床造成损坏,笔者选用两倍的预接触距离作为栅格尺寸。
在线检测路径规划方法主要可以分为人工势场法[14,15]、快速随机树算法[16-19]、PSO(particle swarm optimization)算法[20,21]、A*算法[22]和蚁群算法[23-25]等。这些算法具有各自的优缺点和适用条件,基于蚁群算法规划的三维路径的质量通常较好,但算法易陷入局部最优且规划时间较长。
针对这些缺陷,笔者对蚁群算法进行改进,将蚁群算法和A*算法相结合,并将改进的蚁群算法应用到路径规划中。
基于改进蚁群算法的碰撞规避流程如图2所示。
图2 基于改进蚁群算法的碰撞规避流程图
为便于生成避障路径,需将探头运动空间进行离散化。考虑到探头变换移动方向将增加运动时间,为使路径尽量接近直线,笔者将不会采用较小的划分距离。
构建节点的方法如下:(1)确定探头运动空间,与确定碰撞检测空间的方法类似,考虑工件与工作台接触面上方空间,将待测零件的AABB包围盒向外拓展安全距离,得到探头运动空间范围;(2)确定划分距离,考虑到安全性,将预接触距离设置为划分距离;(3)用边长为划分距离的立方体均匀划分探头运动空间,将各立方体的顶点作为节点;(4)删除位于不可行栅格内部的节点。
在探头与工件不发生碰撞的前提下,需通过减少避障路径段的长度来提高测量效率;同时,路径段中各节点段之间方向变换次数越少,整体路径段越接近直线,探头移动方向变换得越少,测量效率越高。
综合考虑节点段的路径长度及节点段之间的方向变换对避障路径段质量的影响,笔者给出的评定路径段的代价函数如下:
(1)
式中:k—组成避障路径段的节点段的个数;li—当前节点段的长度。
经多次实验;此处的ω1取0.8,ω2取1。
(2)
蚁群算法是模拟蚂蚁觅食时在路径上遗留信息素,以便其能按原路返回并帮助其他蚂蚁选择路径。
在原始蚁群算法中,假设蚂蚁的数量为M,则第m个蚂蚁从当前节点i转移到下一个节点j的选择概率函数如下:
(3)
式中:α—信息素启发因子;β—启发函数因子;allowed—节点的搜索节点;ηij(t)—节点i和j之间的启发信息;τij(t)—节点i和j之间的信息素浓度。
节点i和j之间的启发信息ηij(t):
(4)
式中:dij—节点i和j之间的欧式距离。
当所有蚂蚁完成一次路径规划后,笔者根据antcyclesystem模型更新各节点的信息素,模型函数如下:
(5)
式中:ρ—信息素挥发因子。
(6)
式中:Q—信息素强度,是一个常值;Jm—第m只蚂蚁经过的路径的代价。
3.3.1 节点搜索原则
如果当前节点与目标点的连线不发生碰撞,则将目标点设为下一节点,结束搜索,提高算法效率;反之,以当前节点为球心,将半径为预接触距离的球体设为下一节点的搜索范围,简化搜索空间。
节点搜索范围示意图如图3所示。
图3 节点搜索范围示意图
图3中,将当前节点与范围内的节点逐一连线,并在各连线上按照换速距离选取离散点进行碰撞检测,将可达的节点作为搜索点,减少搜索点数量,再根据选择函数从搜索点中选出下一节点,提高蚁群算法的搜索效率;
为避免陷入死循环,如果某个节点已经在该条路径上被经过了4次,则不再将该点设为搜索点。为避免陷入陷阱,如果当前节点没有搜索点,则返回上一节点,并将该点从上一节点的搜索点中删除。
3.3.2 融合A*算法初始化信息素
原始蚁群算法中,信息素通过均匀分配进行初始化,造成了算法前期搜索的盲目性,使得前期搜索时间较长,且规划的路径质量较差。A*算法搜索速度较快,但通常不能获得最优路径。所以笔者借助A*算法规划出一条路径段作为引导路径,同时删除部分发生碰撞的节点,尽量避免前期蚂蚁选择与目标点相反的区域,减少不必要的节点数量,提高蚁群算法的搜索效率。
融合A*算法的初始化信息素函数如下:
(7)
式中:Q—信息素强度,笔者取为起始点和终止点之间的欧式距离;L—引导路径的路径代价。
3.3.3 启发信息函数改进
原始蚁群算法中,启发信息函数仅考虑了当前节点到搜索点间的距离,未考虑搜索点到终止点的距离对整体路径规划的影响。所以,笔者改进的启发信息函数如下:
(8)
式中:dij—节点i和j之间的欧式距离;djt—节点j和终止点之间的欧式距离。
为使规划的避障路径段尽量接近于直线,便于之后精简路径段中的节点,从而减少探头轨迹变换的次数,笔者引入方向偏转评价函数,其表达式如下:
(9)
式中:θij—上一节点到节点的方向向量与节点i到节点j的方向向量较小的夹角,由角度制表示;且当ij为起始节点段时,θij取0。
如果∑s∈allowed|τis(t)α|ηis(t)βξis(t)λ=0,表明此时进入陷阱,根据本文设置的策略跳出陷阱;反之,根据本文改进的概率选择函数选择下一节点,其表达式如下:
(10)
式中:α—信息素启发因子;β—启发函数因子;λ—方向偏转因子。
3.3.5 路径简化策略
为减少探头移动方向变换的次数,此处采用路径简化策略来减少路径中的节点。假设路径段为path=(r1,r2,…,rn),主要方法为:从起点r1开始,依次与rn-1连接,直到找到可直接相连的节点ri(i=2,…,n-1),删除从r1到ri间的节点,再从ri开始进行相同操作,直到遍历到rn-1点为止。
为验证改进蚁群算法对原始蚁群算法的优化效果,笔者在CPU为Inteli7-770HQ、内存为8 G的计算机上进行相关避障路径生成测试,结果如图4所示。
实例中,蚁群算法的相关初始参数为:迭代次数N=100;蚂蚁数量M=30;信息素挥发因子ρ=0.2;信息素启发因子α=0.9;启发函数因子β=4;方向偏转因子λ=0.5。
从图4(a,b)可以看出:对于同一个特征,在未使用该算法中的路径简化策略时,笔者改进算法所规划的路径中,节点段方向变换次数明显较少,路径长度也明显较短,路径质量较优;
从图4(c,d)可以看出:在使用路径简化策略时,该算法改进了蚁群算法的启发信息函数、概率选择函数,设计节点搜索原则和避免死循环、陷阱的策略后,所规划路径质量更优,通过式(1)计算此时的避障路径代价,原始蚁群算法规划的避障路径的代价为101.625,笔者改进算法规划的避障路径的代价为89.108;原始蚁群算法规划时间为7.256 s,笔者改进后的蚁群算法规划时间为3.312 s,说明该算法优化的效果明显。
图4 蚁群算法规划避障路径效果对比图
为进一步说明该算法的优化效果,笔者分别用两种蚁群算法,对3个不同的碰撞路径段进行碰撞规避,并用式(1)计算避障路径代价。
蚁群算法规划避障路径结果对比表如表1所示。
表1 蚁群算法规划避障路径结果对比表
从表1可以看出:与原始算法相比,在3种避障路径中,该改进算法规划路径质量较优,计算时间明显缩短,规划效率较高;同时,与初始路径段发生碰撞的路径段处三角面片数越多,环境越复杂,该算法优化的效果越明显。
为了对该测量路径规划算法进行分析,笔者在CPU为Inteli7-3517U、内存为8 G的计算机上进行相关测量路径规划测试。
采用的方法分别为:根据改进的蚁群算法生成路径矩阵,再规划测量顺序(算法一);根据该方法规划初始路径,再根据文献[26]中的规避原则,进行碰撞规避(算法二);根据该方法规划初始路径,再根据该改进的蚁群算法,进行碰撞规避(笔者算法)。
待测工件结构示意图如图5所示。
图5 待测工件结构示意图
笔者对上述模型进行测量路径规划。其中,碰撞检测均采用笔者设计的算法。实例验证过程中,笔者设置安全距离为50 mm,预接触距离为10 mm,换速距离为6 mm。
在规划效率和规划路径方面,3种规划算法结果对比如表2所示。
表2 3种规划算法结果对比表
从表2可以看出:先生成路径矩阵,再对测量顺序进行规划的方案,花费时间过长;而笔者算法采用的先生成初始路径,再进行碰撞规避的方案,可大大节省规划时间,且二者规划的路径和近似;
笔者算法和算法二的规划时间主要花费在碰撞检测部分,笔者的碰撞规避算法较规避原则的耗时稍长,但相差不大;
笔者算法规划的路径和比算法二的要短,说明采用改进蚁群算法规划的避障路径较避障原则生成的路径要短,有利于提高检测效率;
在算法实现过程中,避障原则依赖于发生碰撞的特征的结构形状,局限性较大;而改进的蚁群算法可借助笔者设计的碰撞检测方法,在无需考虑工件局部特征的情况下,生成避障路径,算法的适用性更高。
综上所述,笔者提出的测量路径规划算法具有较高的规划速度和较好的规划结果,且适用性更强。
针对复杂曲面工件接触式在线检测路径规划规划时间长、效率低和规划路径较长等问题,笔者在分析了传统在线检测路径规划方法基础上,提出了一种接触式在线检测路径规划方法,即采用离散法,将不考虑碰撞情况下生成的初始测量路径中工件与探头之间的动态碰撞检测转换为静态碰撞检测,并根据不同路径规划段所需的不同碰撞检测精度,将碰撞检测分为粗略碰撞检测和精细碰撞检测;在只考虑待测工件与工作台直接接触的情况下,根据待测工件的AABB(axis-aligned bounding box)包围盒,确定了栅格空间范围,简化了检查过程;借助A*算法初始化蚁群算法的信息素,并通过改进蚁群算法的启发信息函数、概率选择函数,设计节点搜索原则和避免死循环、陷阱的策略,优化了测量路径。
研究结果表明:
(1)与先生成路径矩阵、再对测量顺序进行规划的方案相比,该测量路径规划方法采用先生成初始路径,再进行碰撞规避的方案,可大幅缩短路径规划时间;
(2)在相同初始路径情况下,改进的蚁群算法生成路径较短;
(3)该路径规划方法能在较短时间内规划较优的测量路径。
在后续的研究中,笔者将对碰撞检测算法进行优化,进一步缩短路径规划的时间;并对使用夹具的情况下测量路径规划进行研究,进一步提升路径规划的效率、安全性和适应性。