基于改进粒子群算法的莫尔条纹信号误差补偿方法、系统及存储介质

文档序号:33002828发布日期:2023-01-18 01:49阅读:90来源:国知局
基于改进粒子群算法的莫尔条纹信号误差补偿方法、系统及存储介质

1.本发明属于光电信号转换领域,涉及一种基于改进粒子群算法的莫尔条纹信号误差补偿方法、系统及存储介质。


背景技术:

2.随着光电编码器的不断发展,对光电编码器工作中的实时精度要求越来越高,但在实际使用过程中,由于诸多不确定因素的影响,造成莫尔条纹信号为非理想的正弦信号,导致测量的结果具有很大误差。目前,先通过求解莫尔信号波形参数,再利用相关算法来进行信号误差补偿,是一种较为普遍的方法。其中,波形参数求解算法的复杂性与fpga资源占用量的矛盾关系一直以来是该种方法的一个关键性的问题。
3.国内外学者不断探索,提出了多种方案,但是这些方案大多把研究重点放在了算法的参数上,这些额外的计算增加了算法复杂度,使得定量分析算法的收敛性也变得十分复杂,并且这些参数都位于迭代循环的最深层,在fpga上实现针对这些参数进行计算时会消耗大量额外的资源并且增加了计算时间。
4.本技术发明人发现,现有的基于粒子群优化(pso)算法的光栅莫尔信号正弦性误差补偿方法的计算结果不够精确;同时,莫尔条纹数学模型生成的适应度函数较为复杂,其在运算过程中占用的资源往往高于主体算法,针对光栅莫尔信号补偿计算的粒子群算法在fpga上的应用还并不成熟。另一方面,采用传统粒子群优化算法在迭代过程中容易出现陷入局部极值而无法得到最优解的情况。现有的优化方案一般从惯性权重入手,优化后的惯性权重会根据当前极值和迭代次数做线性或非线性变化,可以有效地提高计算精度。但是这种优化方法在fpga中实现时,会额外增加一个复杂的逻辑电路,并且增强数据间的依赖性,导致相应的循环迭代无法并行执行,无法完全发挥fpga的并行运算优势。不仅增加了大量fpga资源占用,而且延长了计算时间。


技术实现要素:

5.本发明实施例的目的在于提供一种基于改进粒子群算法的莫尔条纹信号误差补偿方法、系统及存储介质,以解决现有的基于粒子群算法的莫尔条纹信号误差补偿方法中存在的莫尔条纹数学模型计算结果不准确、适应度函数复杂、容易陷入局部极值而无法得到最优解、增加了fpga资源占用而且延长了计算时间的问题。
6.本发明实施例所采用的技术方案是:基于改进粒子群算法的莫尔条纹信号误差补偿方法,包括以下步骤:
7.步骤s1:基于莫尔条纹信号的误差来源,建立考虑基波、二次谐波和三次谐波的幅值和相位的莫尔条纹信号数学模型,如式(1)~(2)所示:
8.u
sin(θ)
=a0+a1sin(θ+a1)+a2sin(2θ+a2)+a3sin(3θ+a3);
ꢀꢀꢀꢀ
(1)
9.u
cos(θ)
=b0+b1cos(θ+b1)+b2cos(2θ+b2)+b3cos(3θ+b3);
ꢀꢀꢀꢀ
(2)
10.其中,u
sin(θ)
和u
cos(θ)
表示莫尔条纹的两路信号,θ表示角度值,a0、b0为直流分量,a1、b1为基波幅值,a2、a3、b2、b3为各谐波幅值,a1、b1为基波相位,a2、a3、b2、b3为各谐波相位;
11.步骤s2:基于实际信号采样值与莫尔条纹信号数学模型的计算值,确定适应度函数,如式(3)所示:
[0012][0013]
其中,fitness表示适应度函数,uk为实际信号采样数据,n为采样次数;f(θk,α)表示莫尔条纹信号数学模型计算数据,θk为与uk对应的角度值,α为待求参数,计算正弦信号u
sin(θ)
时α为a0、a1、a2、a3、a1、a2、a3,计算余弦信号u
cos(θ)
时α为b0、b1、b2、b3、b1、b2、b3;
[0014]
步骤s3:建立并存储三角函数查找表,并将建立的适应度函数与存储的三角函数查找表进行关联,获得基于三角函数查找表计算三角函数值的适应度函数;
[0015]
步骤s4:基于改进的粒子群算法,采用基于三角函数查找表计算三角函数值的适应度函数,计算莫尔条纹信号数学模型中的待求参数α并输出计算结果;
[0016]
步骤s5:根据计算的莫尔条纹信号数学模型中的待求参数值,对莫尔条纹信号进行重构,实现莫尔条纹信号的误差补偿。
[0017]
进一步的,改进的粒子群算法的实现过程如下:
[0018]
步骤s41:确定粒子群数量、最大迭代次数和学习因子c1、c2,初始化粒子群,通过给定随机数的方式对所有粒子的位置进行初始化,为每个粒子赋予随机的初始位置;
[0019]
步骤s42:计算和比较所有粒子的适应度值获取第一代个体最优值pbest和群体最优值gbest;
[0020]
步骤s43:判断是否满足终止条件,若达到最大迭代次数,或者适应度值满足要求,则结束迭代,输出计算结果,否则,进入下一步;
[0021]
步骤s44:按照公式(4)或公式(5)更新每个粒子的位置:
[0022]
x
id
(k+1)=wx
id
(k)+c1r1(pbest-x
id
(k))+c2r2(gbest-x
id
(k));
ꢀꢀꢀꢀ
(4)
[0023][0024]
其中,x
id
(k+1)表示在第k+1次迭代中第d个待求参数对应的第i个粒子的位置,x
id
(k)为表示在第k次迭代中第d个待求参数对应的第i个粒子的位置,w为惯性权重;
[0025]
步骤s45:求解每个粒子位置当前对应的适应度值,并与每个粒子的当前个体最优位置pbest进行对比,若当前位置的适应度值更好,则更新个体最优值pbest,否则个体最优值pbest保持不变;同时,与粒子群当前全体最优值gbest进行对比,若当前位置的适应度值更好,则更新全体最优值gbest,否则全体最优值gbest保持不变;
[0026]
步骤s46:返回步骤s43。
[0027]
进一步的,建立三角函数查找表时,将三角函数查找表中角度值的计算范围选取在[0,90
°
],角度值的变化步长控制在0.1
°

[0028]
根据三角函数的对称性,角度值在[90
°
,360
°
]范围时,每个角度值的三角函数值根据[0,90
°
]范围对应的三角函数值获得。
[0029]
进一步的,对莫尔条纹信号进行重构时,舍去莫尔条纹信号的谐波部分和直流分量,幅值均取求解的两路莫尔条纹信号u
sin(θ)
和u
cos(θ)
的基波幅值的平均值,相位均取两路莫尔条纹信号u
sin(θ)
和u
cos(θ)
的基波相位的平均值,利用计算的幅值以及相位输入正余弦信
号生成器中,输出理想的正弦信号和余弦信号,即补偿后的莫尔条纹信号。
[0030]
进一步的,粒子群中所有粒子的适应度值通过并行同步计算得到。
[0031]
本发明实施例所采用的另一技术方案是:基于改进粒子群算法的莫尔条纹信号误差补偿系统,包括:
[0032]
存储器,用于存储可由处理器执行的指令;
[0033]
处理器,用于执行所述指令以实现如上所述的基于改进粒子群算法的莫尔条纹信号误差补偿方法。
[0034]
进一步的,存储器包括:
[0035]
第一存储器,用于存储三角函数查找表;
[0036]
第二存储器,用于存储采样的实际信号数据;
[0037]
第三存储器,用于存储上一次迭代所得粒子群位置;
[0038]
处理器包括:
[0039]
种群粒子初始化模块,用于确定粒子群数量、最大迭代次数和学习因子c1、c2,初始化粒子群,为每个粒子赋予随机的初始位置;
[0040]
随机数生成模块,用于给定两个在(0,1)内的随机数;
[0041]
适应度函数计算模块,用于关联三角函数查找表以及实际信号采样值,通过查表法计算莫尔条纹信号数学模型中的三角函数值,得到莫尔条纹信号数学模型的计算值,基于实际信号采样值与莫尔条纹信号数学模型的计算值,采用适应度函数计算粒子群的适应度值;
[0042]
个体最优值和粒子群最优值生成模块,用于计算和比较所有粒子的适应度值,更新当前的个体最优值和粒子群最优值;
[0043]
位置更新模块,用于根据当前的个体最优值和粒子群最优值,给定的两个在(0,1)内的随机数,以及每个粒子当前的位置,基于改进的粒子群算法,更新每个粒子的位置;
[0044]
终止判决模块,用于判断是否达到改进的粒子群算法的终止条件,如未达到,则将更新的每个粒子的位置输入适应度函数计算模块,计算更新后每个粒子的位置的适应度值,继续迭代执行改进的粒子群算法,直至达到改进的粒子群算法的终止条件。
[0045]
进一步的,所述处理器,还包括:
[0046]
莫尔条纹信号重构模块,用于根据个体最优值和粒子群最优值生成模块计算的参数值,对莫尔条纹信号进行重构,实现莫尔条纹信号的误差补偿。
[0047]
进一步的,处理器包括fpga,通过fpga实现粒子群中每个粒子的适应度值的并行计算;
[0048]
采用fpga的dds ip核实现莫尔条纹信号重构。
[0049]
本发明实施例所采用的另一技术方案是:一种计算机可读介质,存储有计算机程序代码,所述计算机程序代码在由处理器执行时实现如上所述的基于改进粒子群算法的莫尔条纹信号误差补偿方法。
[0050]
本发明实施例的有益效果是:
[0051]
1.对莫尔条纹信号数学模型进行完善,所构建的莫尔条纹信号模型较为全面的包含了对误差影响较大的二次谐波以及三次谐波的幅值和相位参数,计算结果更精确;
[0052]
2.通过fpga对算法进行加速,一方面通过查表法代替三角函数的计算,由于适应
度函数中包含大量正弦函数,在fpga中实现会占用较高的资源和较长的时序,其延时无法满足要求;通过查表法可以有效减少资源占用,缩短计算时间;另一方面利用fpga可以实现并行运算的特点,由于在一次迭代的过程中粒子的适应度值计算没有数据的依赖性,而速度的计算依赖上一次迭代所产生的数据,因此可以通过增加种群数目,减少迭代次数的方式,加快算法的运算速度;
[0053]
3.对pso算法进行改进,传统优化方法把研究重点放在了算法的参数w、c1和c2上,引入了动态变化的w、c1和c2,额外增加的公式使得迭代循环间的数据依赖性增强,并行执行难度增大,fpga实现的复杂度和资源占用均增加。将原粒子群算法进行了一定程度的简化,舍弃了速度概念,并引入均值策略替代pso算法的惯性权重w进行动态调节,有效的解决了pso算法容易陷入局部最优值的问题,同时其资源占用更少。
附图说明
[0054]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0055]
图1是本发明实施例的基于mspso算法的莫尔条纹信号误差补偿方法的流程图。
[0056]
图2是本发明实施例的基于mspso算法的莫尔条纹信号误差补偿系统的结构框图。
[0057]
图3是改进前后的粒子群算法的收敛曲线图。
[0058]
图4是改进前后的粒子群算法运行10000次的正态分布图。
[0059]
图5是模拟原始的莫尔条纹信号波形图。
[0060]
图6是模拟的引入误差后的莫尔条纹信号波形图。
[0061]
图7是进行误差补偿后的莫尔条纹信号波形图。
具体实施方式
[0062]
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0063]
本实施例提供一种基于改进粒子群算法的莫尔条纹信号误差补偿方法,如图1所示,包括以下步骤:
[0064]
步骤s1:基于莫尔条纹信号的误差来源,建立考虑基波、二次谐波和三次谐波的幅值和相位的莫尔条纹信号数学模型:
[0065]
首先分析莫尔条纹信号的误差来源,主要由谐波分量、直流分量、等幅性误差、正交性误差和相位误差构成,其中三次以上的高次谐波对信号影响很小,可忽略不计,由此可搭建莫尔条纹信号数学模型,如式(1)~(2)所示:
[0066]usin(θ)
=a0+a1sin(θ+a1)+a2sin(2θ+a2)+a3sin(3θ+a3);
ꢀꢀꢀꢀ
(1)
[0067]ucos(θ)
=b0+b1cos(θ+b1)+b2cos(2θ+b2)+b3cos(3θ+b3);
ꢀꢀꢀꢀ
(2)
[0068]
其中,u
sin(θ)
和u
cos(θ)
表示莫尔条纹的两路信号,θ表示角度值,a0、b0为直流分量,
a1、b1为基波幅值,a2、a3、b2、b3为各谐波幅值,a1、b1为基波相位,a2、a3、b2、b3为各谐波相位;
[0069]
步骤s2:基于实际信号采样值与莫尔条纹信号数学模型的计算值,确定适应度函数,具体的,以实际信号采样值与莫尔条纹信号数学模型计算值做差并平方,最后累加得到适应度函数,如式(3)所示:
[0070][0071]
其中,fitness表示适应度函数,uk为第k次采样的实际信号数据,n为采样次数;f(θk,α)表示与uk对应的莫尔条纹信号数学模型计算数据,即表示公式(1)~(2),θk为与uk对应的角度值,α为待求参数,计算正弦信号u
sin(θ)
时α为a0、a1、a2、a3、a1、a2、a3,计算余弦信号u
cos(θ)
时α为b0、b1、b2、b3、b1、b2、b3;
[0072]
步骤s3:建立并存储三角函数(sin函数和cos函数)查找表,并将建立的适应度函数与存储的三角函数查找表进行关联,以便采用查表法实现公式(1)~(2)中对应角度的三角函数的运算时,从存储的三角函数查找表中直接调取与计算角度值最接近的角度值所对应的三角函数值,获得基于三角函数查找表计算三角函数值的适应度函数;
[0073]
建立三角函数查找表时,将三角函数查找表中角度值的计算范围选取在[0,90
°
],由于每0.1
°
对应三角函数的差值很小,因此将查找表中角度值的变化步长控制在0.1
°
;根据三角函数的对称性,角度值在[90
°
,360
°
]范围的三角函数值根据[0,90
°
]范围对应的三角函数值获得。以sin信号为例,采用查表法代替公式(1)~(2)中sin函数的直接运算,将三角函数查找表中角度值的计算范围选取在[0,90
°
],根据正弦函数的对称性,当计算角度值∈[90
°
,180
°
]时,用180
°
减去计算角度值后输入查找表,得到对应sin值;当计算角度值∈[180
°
,270
°
]时,将计算角度值减去180
°
后输入查找表,输出结果取负数,得到对应sin值;当计算角度值∈[270
°
,360
°
]时,用360
°
减去计算角度值后输入查找表,输出结果取负数,得到对应sin值。事先计算三角函数的结果并将其存储在存储器中,在进行三角函数的计算时从内存中直接调取对应的三角函数值,有效减少算法计算量,加快算法运行速度。
[0074]
步骤s4:基于改进的粒子群算法,采用基于三角函数查找表计算三角函数值的适应度函数,计算莫尔条纹信号数学模型中的待求参数α并输出计算结果;
[0075]
改进的粒子群算法的实现过程如下:
[0076]
步骤s41:确定粒子群数量、最大迭代次数和学习因子c1、c2,初始化粒子群,通过给定随机数的方式对所有粒子的位置进行初始化,为每个粒子赋予随机的初始位置,本实施例不再需要对速度进行初始化,也无需惯性权重;
[0077]
步骤s42:计算和比较所有粒子的适应度值获取第一代个体最优值pbest和粒子群最优值gbest;
[0078]
步骤s43:判断是否满足终止条件,若达到最大迭代次数,或者适应度值满足要求,则结束迭代,输出计算结果,否则,进入下一步;
[0079]
步骤s44:更新每个粒子的位置:本实施例引入了简化粒子群算法(spso),通过研究发现,速度的更新项并不是算法的必要条件,当我们舍弃粒子的速度更新项,仅由位置更新项的指导进行全局寻优时,算法的稳定性不会受到太大影响,同时由于舍弃速度更新的概念也就避免了人为设置速度范围,一定程度上避免了对收敛性和精度的影响,此时的粒子群算法达到了最简化,如公式(4)所示,粒子群按照公式(4)更新每个粒子的位置:
[0080]
x
id
(k+1)=wx
id
(k)+c1r1(pbest-x
id
(k))+c2r2(gbest-x
id
(k));
ꢀꢀꢀ
(4)
[0081]
其中,x
id
(k+1)表示在第k+1次迭代中第d个待求参数对应的第i个粒子的位置,x
id
(k)为表示在第k次迭代中第d个待求参数对应的第i个粒子的位置,w为惯性权重,c1、c2表示学习因子;
[0082]
步骤s45:求解每个粒子位置当前对应的适应度值,并与每个粒子的当前个体最优位置pbest进行对比,若当前位置的适应度值更好,则更新个体最优值pbest,否则个体最优值pbest保持不变;同时,与粒子群当前全体最优值gbest进行对比,若当前位置的适应度值更好,则更新全体最优值gbest,否则全体最优值gbest保持不变;
[0083]
步骤s46:返回步骤s43。
[0084]
在一些实施例中,取消速度因子的另一个优势在于避免了粒子在收敛后期由于速度更新出现的“发散”现象,导致粒子收敛速度慢、收敛精度低的问题。在求解函数极值的过程中,不同适应度函数的峰值数目不同;在解决单峰值问题时,spso具有更快的收敛速度和更高的收敛精度;但是在解决多峰值问题时,由于没有速度因子的限制,粒子更新幅度大,种群多样性差,全局寻优能力低,更容易陷入局部最优解。为解决这一问题,本实施例进一步引入均值搜索策略,利用粒子的个体最优解和粒子群的全局最优解的线性组合引导位置更新,从而得到了均值简化粒子群算法(mspso),如公式(5)所示:
[0085][0086]
粒子按照公式(5)进行迭代更新位置,可以有效应对函数的多峰值问题。
[0087]
本实施例针对fpga的优化以及在莫尔信号补偿计算中的应用,提出了上述改进的mspso算法,该算法舍弃了惯性权重因子w,利用均值策略代替调节w的方式均衡算法全局寻优和局部寻优的能力,简化了算法操作。相较于传统的pso优化方法,mspso算法在原有算法上进行了一定的简化和优化,算法复杂度相对较低,更适合在硬件平台上运行。在保证结果准确性的前提下增大种群数,减少迭代次数,有效的减少了硬件资源,降低工作时钟,提高了工作效率。
[0088]
步骤s5:根据计算求解的待求参数值(包括莫尔条纹的两路信号的基波幅值a1、b1以及基波相位a1、b1)对莫尔条纹信号进行重构,从而实现莫尔条纹信号的误差补偿。
[0089]
在一些实施例中,对莫尔条纹信号进行重构时,具体重构方式为舍去莫尔条纹信号的谐波部分和直流分量,幅值均取求解的两路莫尔条纹信号u
sin(θ)
和u
cos(θ)
的基波幅值的平均值,相位均取两路莫尔条纹信号u
sin(θ)
和u
cos(θ)
的基波相位的平均值,将计算后的幅值以及相位输入正余弦信号生成器中,本实施例的正余弦信号生成器采用fpga的dds ip核,输出两路理想的正弦信号和余弦信号,即补偿后的莫尔条纹信号。
[0090]
为验证通过查表法计算适应度函数的有效性,在vivado hls环境下分别用直接计算三角函数的方法和查表法对适应度函数进行了编写,其中每个周期的采样点选取128个,综合结果中两种方法的资源占用情况如表1所示,两种方法计算适应度函数所需的时钟周期情况如表2所示。
[0091]
表1两种方法计算适应度函数资源占用比较
[0092][0093]
dsp48e是fpga上重要的资源,宝贵且有限,能够实现加减、累加、乘法和移位等功能,具有强大的逻辑运算能力,同时也可以用作可控制的寄存器,包含独立的时钟使能和复位,具有极高的灵活性。直接计算三角函数对这一资源消耗巨大,通过表1可以看出,改为查表法后对dsp48e的占用明显减少,其他资源的占用也有所减少,从而验证了查表法的有效性。
[0094]
表2两种方法计算适应度函数所需时钟周期比较
[0095]
所需时钟周期直接计算查表法单个点运算时钟周期5726总运算时钟周期709339
[0096]
通过比较两种方法计算适应度函数所需要的时钟周期可以发现,查表法用到的时钟周期明显更少,在整个计算过程中的优势更加明显,可以有效的降低延时。
[0097]
为了进一步对本实施例的mspso算法的有效性进行验证,我们在matlab上分编写pso算法和mspso算法,其中迭代次数均为300次,例子种群数均为30,然后使用模拟的莫尔条纹信号作为输入进行测试,同时记录两个算法的收敛曲线如图3,可以观察到无论是在迭代前期还是后期,改进后的mspso算法的收敛速度都更快,收敛效果更好,为了避免实验的偶然性,在分别进行10000次仿真后得到了优化前后迭代次数的正态分布图,如图4所示。可以明显看出优化前,pso算法的迭代次数集中在120次到180次之间,而优化后的mspso算法迭代次数集中在70次到90次之间,优化效果显著。
[0098]
实施例2
[0099]
本实施例提出一种基于改进粒子群算法的莫尔条纹信号误差补偿系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上实施例1所述的基于改进粒子群算法的莫尔条纹信号误差补偿方法。
[0100]
基于改进粒子群算法的莫尔条纹信号误差补偿系统可包括内部通信总线、处理器(processor)、只读存储器(rom)、随机存取存储器(ram)、通信端口、以及硬盘。内部通信总线可以实现基于改进粒子群算法的莫尔条纹信号误差补偿系统组件间的数据通信。处理器可以进行判断和发出提示。在一些实施例中,处理器可以由一个或多个处理器组成。通信端口可以实现基于改进粒子群算法的莫尔条纹信号误差补偿系统外部的数据通信。在一些实施例中,基于改进粒子群算法的莫尔条纹信号误差补偿系统还可以通过通信端口从网络发送和接受信息及数据。基于改进粒子群算法的莫尔条纹信号误差补偿系统还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘,只读存储器(rom)和随机存取存储器
(ram),能够存储计算机处理和/或通信使用的各种数据文件,以及处理器所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给被试者设备,在被试者界面上显示。
[0101]
具体的,如图2所示,基于改进粒子群算法的莫尔条纹信号误差补偿系统的存储器包括:
[0102]
第一存储器(ram1),用于存储三角函数查找表;
[0103]
第二存储器(ram2),用于存储采样的实际信号数据;
[0104]
第三存储器(ram3),用于存储上一次迭代所得粒子群位置。
[0105]
处理器包括:
[0106]
种群粒子初始化模块,用于确定粒子群数量、最大迭代次数和学习因子c1、c2,初始化粒子群,为每个粒子赋予随机的初始位置;
[0107]
随机数生成模块,用于给定两个在(0,1)内的随机数;
[0108]
适应度函数计算模块,用于关联三角函数查找表以及实际信号采样值,通过查表法计算莫尔条纹信号数学模型中的三角函数值,得到莫尔条纹信号数学模型的计算值,基于实际信号采样值与莫尔条纹信号数学模型的计算值,采用适应度函数计算粒子群的适应度值;
[0109]
个体最优值和粒子群最优值生成模块,用于计算和比较所有粒子的适应度值,更新当前的个体最优值和粒子群最优值;
[0110]
位置更新模块,用于根据当前的个体最优值和粒子群最优值,给定的两个在(0,1)内的随机数,以及每个粒子当前的位置,基于改进的粒子群算法,更新每个粒子的位置;
[0111]
终止判决模块,用于判断是否达到改进的粒子群算法的终止条件,如未达到,则将更新的每个粒子的位置输入适应度函数计算模块,计算更新后每个粒子的位置的适应度值,继续迭代执行改进的粒子群算法,直至达到改进的粒子群算法的终止条件;
[0112]
莫尔条纹信号重构模块,用于根据个体最优值和粒子群最优值生成模块计算的参数值,对莫尔条纹信号进行重构,实现莫尔条纹信号的误差补偿,通过fpga实现粒子群中每个粒子的适应度值的并行计算时,可采用fpga的dds ip核对莫尔条纹信号进行重构。
[0113]
图2中,p1和pk分别是粒子群初始位置和粒子群第k次迭代的位置,与传统方法相比,减少了惯性权重更新模块、学习因子更新模块和速度更新模块,使循环结构更简单。适应度函数计算模块的输入端新增了一个寄存器用以存放三角函数查找表,极大的减小了适应度函数的计算复杂度和硬件资源消耗,降低了计算延时。分析粒子群算法的迭代方式可以发现,每一代的计算都需要用到上一代的数据,这也使得每一代的迭代循环之间的数据产生依赖性,这样的循环无法用fpga实现完全并行执行。而每一个粒子的适应度值计算是独立的,可以通过fpga实现并行执行,本实施例正是采用了并行运算的方案对粒子群的适应度值进行计算,因此,选择在保证结果准确性的前提下增大粒子群的粒子数,减少迭代次数,有效的减少了硬件资源,降低工作时钟,提高了工作效率。
[0114]
实施例1所述的基于改进粒子群算法的莫尔条纹信号误差补偿方法可以实施为计算机程序,保存在硬盘中,并可记载到处理器中执行。因此,本发明实施例还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的基于改进粒子群算法的莫尔条纹信号误差补偿方法。
[0115]
基于改进粒子群算法的莫尔条纹信号误差补偿方法实施为计算机程序时,也可以存储在计算机可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(cd)、数字多功能盘(dvd))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(eprom)、卡、棒、键驱动)。此外,本发明实施例描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
[0116]
实施例3
[0117]
以一组模拟莫尔条纹信号为例,来说明基于mspso算法的莫尔信号误差补偿方法的具体实施步骤。
[0118]
首先通过matlab生成两路理想的正余弦信号作为原始的莫尔条纹信号,如图5所示,再对原始的莫尔条纹信号叠加入包括三次谐波、相位偏差、直流分量和幅值不等误差因子,形成新的信号,如图6所示,再基于实施例1中提出的基于改进粒子群算法的莫尔条纹信号误差补偿方法,对信号进行采样、优化、求解等操作,最终还原原始信号,具体实施方案步骤如下:
[0119]
步骤1:以正弦信号的128个采样点的采样值与相对应的数学模型即公式(1)的计算结果的差值的平方和即公式(3)作为适应度值,公式(3)中的待求参数α的值为粒子的位置,对粒子群位置进行初始化,设置粒子群数为20,最大迭代次数200次;
[0120]
步骤2:建立三角函数查找表,设置三角函数查找表中的角度值范围为[0,90
°
]、步长为0.1
°
,利用matlab计算sin函数和cos函数的900个值并生成mif文件,再通过vivado例化一个ram,再将mif文件导入该ram就得到了sin函数和cos函数的查找表;
[0121]
步骤3:将粒子群的位置与实际采样值输入到适应度函数计算模块,通过查表法计算得到适应度值;
[0122]
步骤4:将适应度值和粒子群位置输入到个体极值pbest和群体极值gbest生成模块,与当前个体最优位置pbest进行对比,若当前位置的适应度值更好,则更新个体最优位置pbest,否则个体最优位置pbest保持不变;同时与种群粒子当前全体最优位置gbest进行对比,若当前位置的适应度值更好,则更新全体最优位置gbest,否则全体最优位置gbest保持不变;
[0123]
步骤5:将个体极值pbest、群体极值gbest和当前粒子群位置pk输入到位置更新模块,同时随机数生成模块生成两个[0,1]的随机数输入到位置更新模块,根据公式(4)或公式(5)更新每一个粒子的位置,并将结果存储到ram存储器,用于下一次迭代中的适应度值计算;
[0124]
步骤6:将群体极值gbest和当前迭代次数输入到终止判定模块,比较群体极值gbest与预先设定的理想适应度值比较,当gbest达到理想适应度值或迭代达到最大次数时,终止迭代,否则继续执行;
[0125]
步骤7:根据最终输出的参数结果,还原得到补偿后的信号,具体的,是将参数输入到信号补偿模块,信号补偿模块的重构方式为舍去谐波部分和直流分量,幅值均取两路信号基波幅值的平均值,相位取两路信号基波相位的平均值,将计算后的幅值相位输入fpga的dds ip核输出两路理想的正余弦信号,即补偿后的莫尔条纹信号,结果如图7所示,补偿
后的信号与原始信号基本一致,验证了本案可以有效补偿多个误差因子对莫尔条纹信号的影响。
[0126]
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1