人工蜂群算法在螺丝内纹偏转角度计算中的应用

2021-06-17 07:56姜金华姜景科
自动化仪表 2021年5期
关键词:曲线拟合螺丝蜂群

姜金华,王 倩,姜景科

(1.上海第二工业大学智能制造与控制工程学院,上海 201209;2.上海大学机电工程与自动化学院,上海 200444)

0 引言

近年来,智能制造以飞跃式的跨度在制造业的各个维度得到了体现。螺丝作为零部件中重要的连接器件,在各类设备中都有广泛的应用。而在拆解设备的过程,如果不能有效地对螺丝进行拆解,则会造成设备的暴力拆解。这将大大降低拆解的效率与废旧材料的回收利用率。

机器视觉在当前的工业应用非常广泛,包括视觉测量、产品分拣、视觉定位等[1-4]。本文中,机器视觉主要应用到拆解流水线的螺丝拆解中,主要用于获取目标测量物的特征点,并对其进行相应的处理转换,从而获得所需的物理量[5-6]。

人工蜂群(artificial colony algorithm,ABC)算法是一种元启发式群体智能优化算法[7],由土耳其学者 Karaboga 在2005年提出。该算法是一种模拟蜜蜂群体寻找优良蜜源的仿生类智能计算方法[8-9]。人工蜂群算法的主要特点是不需要了解问题的特殊信息,只需要对问题的寻优结果进行优劣的比较[10-11]。通过蜂群个体在局部的寻优行为,最终在群体中使全局最优值凸显出来,使得整个算法具有较好的全局搜索能力。这是一种广义的邻域搜索算法,有着较快的收敛速度,具有较强的通用性,能够很好地与实际问题相结合,应用方向较为广泛[12]。

1 系统结构设计

基于图像处理的螺丝内纹偏转角度测量的程序设计结构流程如图1所示。

图1 程序设计结构流程图

首先,需要对原始图像进行灰度化、滤波和二值化处理,从而将原始的彩色图像转换为理想的二值化图像。对获得的二值化图像进行滤波、填充,然后将螺丝内纹的图像剪裁,并获内纹的轮廓图像。将轮廓的像素信息转换为坐标信息,对轮廓的坐标进行转换、分割,并对分割的各部分数据进行曲线拟合。最后,应用人工蜂群算法对每条拟合曲线求最大值并计算各部分的偏转角度,利用均值滤波减小各部分偏转角度在求解中造成的误差。

2 图像处理

2.1 图像预处理

在获取螺丝的原始图像后,首先将彩色图像转换为灰度图像,从而降低图像的数据量,减小后续图像的计算量。灰度化处理一般有:平均值法、最大值法和加权平均值法。这里采用R(0.30)、G(0.59)、B(0.11)的加权平均值法。对转换后的图像进行均值滤波,从而对图像中的高频噪点进行处理。为了更进一步降低图像数据量,以减小后续图像处理的计算量,需要对滤波后的图像进行二值化处理。图像的二值化处理不仅减小了图像数据的大小,也使得图像的边缘信息更加清晰。在此采用阈值变化法实现图像的二值化处理。图2为螺丝的原始图像。图3为二值化图像。

图2 原始图像

图3 二值化图像

从图3可以看出,螺丝内纹的二值化图像中存在孔洞,会对后续的轮廓提取造成影响。为了避免二值化图像中存在的噪点,在填充孔洞之前使用中值滤波再进行一次滤波。首先,对处理后的图像进行取反操作,并对螺丝内纹中的孔洞区域进行填充操作。然后,对填充后的图像进行边缘特征的提取,获取螺丝内纹的边缘轮廓。最后,将螺丝内纹的轮廓图从处理后的图像中剪裁下来并求内纹区域的中心坐标。螺丝內纹轮廓如图4所示。

图4 螺丝内纹轮廓图

2.2 坐标转换

将图像的原点平移至内纹的中心坐标以建立新的坐标系,计算当前坐标系下轮廓各像素点的新坐标值。将直角坐标系下的坐标转换为相对应的极坐标值,得到齿轮轮廓的极坐标集合C(i为坐标点个数)。

C={(r1,θ1),(r2,θ2),...,(ri,θi)}

(1)

极坐标系下的轮廓如图5所示。将集合C中的坐标序列根据角度ri进行从小到大的排序,获得新的坐标集合C′。将新的坐标集合C′映射到直角坐标系中,得到如图6所示的直角坐标系下的轮廓。

图5 极坐标系下的轮廓图

图6 直角坐标系下的轮廓图

2.3 坐标数据分割与曲线拟合

本次使用十字形螺丝,内纹的轮廓在直角坐标系中呈现四个波峰。但图像不符合标准的周期函数图像,所以采用将坐标数据分割的方法将坐标数据分割为四个单峰波形。单峰波形在曲线拟合中可以采用高斯曲线拟合。

坐标数据的分割中,四个波峰的大致相位差为90°。所以在数据的分割中,首先需要找到一个合适的分割原点。在此,对所有坐标的幅值寻找最小值,将幅值最小值rmin的坐标作为坐标数据的分割原点,将坐标轴上该点左边的数据平移至数据的末尾,得到新的坐标集合A。

A={(rmin,θmin),(rmin+1,θmin+1),...,(ri,θi),...,

(ri+min-1,θi+min-1)}

(2)

以每90°为一个范围,将集合A的数据根据角度值进行四等分,得到{A1,A2,A3,A4}。由于每一组数据都是根据角度值进行均分,会导致每一组数据的首个数据或者最后一个数不为最小值的情况。为了保证拟合曲线的二阶导数始终小于零,需要对分割后的四个集合进行数据调整,确保拟合出的曲线均为单一的凸函数。

数据调整的主要步骤为:将每一组数据根据角度值分为两部分,分别求这两部分幅值的最小值。将前半部分数据中幅值最小值左边的数据调整至前一个数据集合的尾部,将后半部分数据中最小值右边的数据调整至下一个数据集合的头部。

每一组数据呈高斯曲线形式,故在曲线拟合部分采用高斯曲线拟合。为简化程序设计中初始参数的选取,将四组数据分别平移至第一象限,使每组数据均能使用同一组初始参数进行曲线拟合。本文在将各组数据平移至第一象限内时,将每组数据的第一个数据平移至0°处、同组其余数据平移相同的相位角度,并记录下每组数据的平移角度(θ1,θ2,θ3,θ4)。调整后的坐标数据如图7所示。

图7 调整后的坐标数据图

根据图7的数据可以看出,每个波峰部分的数据在幅值上有较大波动。在使用传统的方法时,需要截取波峰部分的数据,选择出其最大值或这部分波峰数据的中间数值作为波峰峰值点。截取波峰数据对波峰极值点的选择有较大的影响,会造成最终得到的偏转角度有较大的误差。本文采用了曲线拟合的方法获取每个波峰的极值点,根据数据的分布选择高斯曲线拟合,对比一阶、二阶及高阶高斯曲线的效果,在保证曲线的拟合度的情况下选择三阶高斯曲线拟合。拟合函数为:

(3)

分别对四组数据进行三阶高斯曲线拟合,得到的数据拟合曲线如图8所示。

图8 数据拟合曲线图

3 人工蜂群算法设计

在人工蜂群算法中,蜂群由观察蜂、采蜜蜂和侦查蜂组成,每个蜜源只对应一个采蜜蜂。当蜜源被采蜜蜂和观察蜂耗尽时,即在最大搜索次数内无法在找到更优解,采蜜蜂变为侦查蜂,随机寻找新的蜜源。在人工蜂群算法中主要有三个控制参数:蜜源的数目(采蜜蜂的数量)、最大搜索次数Limit和最大迭代次数maxCycle。

初始时刻所有蜜蜂没有先验知识,所有蜜蜂的角色全部为侦查蜂。全局随机搜索蜜源,得出各自的“收益度”。根据蜜源“收益度”对比,将蜜蜂转为采蜜蜂和观察蜂两类。其中,“收益度”较高的一半转为采蜜蜂。

①初始时刻,随机生成N个可行解(X1,X2,...,XNs)。具体随机产生的可行解Xi为:

(4)

式中:j∈{1,2,…,D},j为D维解向量的某个分量。

通过分别计算各个向量的适应度函数值并进行排序,适应度值较高的一半作为初始采蜜蜂种群X(0)。

②第n步的采蜜蜂X(n)在当前位置附近的领域范围内搜索新的蜜源位置。搜索公式为:

(5)

式中:j∈{1,2,…,D},k∈{1,2,…,N},N为采蜜蜂个体数量,i≠k,j和k均为随机生成。

③在采蜜搜索到的新位置向量new_Xi和原位置向量Xi中,采用贪婪选择算子选取更优适应度的继承给下一代种群,保证种群进化方向不会后退。其概率分布为:

P{Ts(Xi,new_Xi)=new_Xi=

(6)

④观察蜂依照采蜜蜂种群适应度值,采用选择算子计算选择一个采蜜蜂,并在其领域内进行新位置的搜索。选择概率为:

(7)

⑤同步骤②和步骤③,记录下更新后达到的最优适应度值及其相应参数。

⑥当个体采蜜蜂在蜜源周围搜索次数s达到最大搜索次数,但仍未获得到更优解,则重新初始化该采蜜蜂的位置。初始化公式为:

Xi(n)=Xmin+rand()(Xmax-Xmin)

(8)

⑦满足停止条件(iter>maxCycle),则停止计算并输出最优解及其相应的参数,否则转向步骤②。

本文设置初始种群总数30,采蜜蜂数量15,侦查蜂5,最大迭代次数100,最大搜索次数3。根据采蜜蜂数来初始随机解的数量,通过随机生成15个角度值,计算得到15个幅值并记录下其中最大的幅值与角度值。然后计算观察蜂跟随采蜜蜂的概率,判断观察蜂是否在采蜜蜂所在解的邻域内寻找新的解求幅值,侦查蜂则在角度值的范围内随机生成新的角度值求解幅值。如果求出的幅值为当前最优解,则侦查蜂转换为采蜜蜂。采蜜蜂在各自当前解的邻域内搜索新的解,判断得到的幅值是否更优。当循环三次不能得到更优解时,则采蜜蜂放弃当前解并成为侦查蜂寻找新解。寻找新解的最大迭代次数,即采蜜蜂、观察蜂、侦查蜂寻找新解的总次数。函数优化曲线如图9所示。

图9 函数优化曲线图

4 试验分析

通过人工蜂群算法,能够快速求得函数的最大值。在对四个函数的最大值求解过程中,在算法迭代到40次左右就能够获取各个拟合函数的最大值。

通过获取每一部分拟合函数的最大值,确定其相对应的内纹轮廓的峰值位置,即每一部分内纹轮廓的中心点。该中心点与整个螺丝内纹的中心点相连的轴线与X轴正方向所构成的夹角,即为当前内纹的偏转角度。通过前文中对图像轮廓进行坐标系的转换,其相对应的偏转角度即为幅值最大值相对应的角度值。

φi=θi+ri±90k

(9)

(10)

式中:k的取值根据φi决定。

将φi的取值范围控制在±45°范围内,使得偏转角度控制在最小范围内,后期在旋转螺丝刀的姿态中实现最优化。最后通过对获得的四个偏转角度进行均值处理。本文测试图像最终获得的偏转角度为38.08°。旋转效果图如图10所示。对原始图像进行所求偏转角度的旋转,可以看出效果较为理想。

图10 旋转效果图

5 结论

本文通过使用图像处理与人工蜂群算法相结合的方法来实现螺丝当前姿态下的偏转角度计算:使用图像处理技术,获取螺丝内纹的轮廓,并将轮廓数据进行转换与函数拟合;利用人工蜂群算法,对拟合出的函数进行寻优,最终获取当前姿态下的偏转角度。本方法结合了图像处理的精度高与人工蜂群算法计算量小、快速获取全局最优的特点,计算出精度较高的偏转角度。同时,该方法有较好的拓展性,适用于各种类型的螺丝内纹的偏转角度计算。

猜你喜欢
曲线拟合螺丝蜂群
丢失的螺丝
治理“吃心不改”需要拧紧螺丝
叶轮类零件多轴数控机床加工的误差控制与优化——基于NURBS曲线拟合优化方案
不同阶曲线拟合扰动场对下平流层重力波气候特征影响研究*
“蜂群”席卷天下
浅谈Lingo 软件求解非线性曲线拟合
罕见的螺丝
曲线拟合的方法
改进gbest引导的人工蜂群算法
蜂群夏季高产管理