一种基于神经网络的光电编码器快速补偿方法转让专利

申请号 : CN201510541067.0

文献号 : CN105043433B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邓方闫宏航陈杰孙健窦丽华马丽秋

申请人 : 北京理工大学

摘要 :

本发明公开了一种基于神经网络的光电编码器快速补偿方法。使用本发明能够提高补偿精度以及补偿速度,并能简化补偿步骤、降低对所需仪器的要求。本发明首先随意转动光电编码器一圈,获取训练样本;然后采用单输入单输出三层前向傅立叶神经网络建立光电编码器误差补偿模型,并通过目标函数的特性估计出隐含层节点的个数;最后根据实际的结果对节点个数进行修正,从而避免了试凑法逐一试凑带来的低效。本发明还针对迭代训练方法收敛速度慢的问题,通过将误差映射到正交三角函数基的隐含层节点,快速地求解隐含层到输出层权值的最小范数解,大幅降低了求解神经网络权值时的时间,最大程度的减少了计算的时间复杂度和空间复杂度。

权利要求 :

1.一种基于神经网络的光电编码器快速补偿方法,其特征在于,包括如下步骤:步骤一、获取训练样本;

非匀速水平转动光电编码器测试台一圈,获取光电编码器的测量值x以及对应的测试台转角Y作为训练样本;其中,x为需要补偿的光电编码器测量值,Y为光电编码器的理想值;

步骤二、采用单输入单输出三层前向傅立叶神经网络建立光电编码器误差补偿模型,其中,傅立叶神经网络的输入为光电编码器的测量值x,输出为经傅立叶神经网络补偿后的补偿输出值y,神经网络隐含层节点数n为其中,Cf为神经网络理想输出函数的傅立叶分布系数; 下标i表示第i个样本;e为光电编码器的最小分辨率;m为训练集样本个数;

步骤三、利用步骤一获得的样本对步骤二建立的傅立叶神经网络进行权值训练,获得隐含层到输出层的权值ω以及傅立叶神经网络的输出值y;计算神经网络输出值y和理想值Y之间的偏差,若不满足标准偏差关系,则在当前的隐含层节点数附近根据经验调整隐层节点个数,然后按本步骤方法对新的傅立叶神经网络进行权值训练,直到傅立叶神经网络的输出值y和理想值Y满足标准偏差关系为止;

步骤四,补偿时,将光电编码器的实际测量值作为输入代入到步骤三最终确定的傅立叶神经网络中,得到补偿后的光电编码器输出方向角。

2.如权利要求1所示的基于神经网络的光电编码器快速补偿方法,其特征在于,所述步骤三中,所述隐含层到输出层的权值ω为:ω=ST(SST)-1y      (1)

其中,S为隐含层各神经元的激发函数;

将步骤一获得的样本量代入式(1)训练获得隐含层到输出层的权值ω。

说明书 :

一种基于神经网络的光电编码器快速补偿方法

技术领域

[0001] 本发明涉及光电编码器测量技术领域,具体涉及一种基于神经网络的光电编码器快速补偿方法。

背景技术

[0002] 光电编码器是一种将测量到的精密角度转换为数字量的装置。它是一种重要的数字式角度传感器,能够实时地测量连接轴所转过的角度,被广泛地运用于移动机器人、车辆、飞行器等的伺服系统中。但是,由于光电编码器制造过程中的工艺精度等因素的影响,光电编码器中存在着非线性误差,如何降低对其输出的精度的影响是工程应用中必须解决的问题。传统的标定与补偿算法仅仅是针对抽样采样点进行标定与补偿,不能做到对全量程非线性误差进行补偿。
[0003] 目前,误差补偿与补偿技术层出不穷,常见方法为BP神经网络以及相关衍生算法。这些算法配合相应的高精度检测仪器,选取几十个点采样并进行标定与补偿。神经网络结构复杂,样本点数增加以至于难以计算,往往采用迭代算法对神经网络权值进行计算。其训练的终止条件难以确定,得到收敛解的训练时间特别长,神经网络节点数量难以确定。因此,难以在短时间内对大量非线性数据进行标定和补偿。

发明内容

[0004] 有鉴于此,本发明提供了一种基于神经网络的光电编码器快速补偿方法,能够提高补偿精度以及补偿速度,并能简化补偿步骤、降低对所需仪器的要求。
[0005] 本发明的基于神经网络的光电编码器快速补偿方法,包括如下步骤:
[0006] 步骤一、获取训练样本;
[0007] 非匀速水平转动光电编码器测试台一圈,获取光电编码器的测量值x以及对应的测试台转角Y作为训练样本;其中,x为需要补偿的光电编码器测量值,Y为光电编码器的理想值;
[0008] 步骤二、采用单输入单输出三层前向傅立叶神经网络建立光电编码器误差补偿模型,其中,傅立叶神经网络的输入为光电编码器的测量值x,输出为经傅立叶神经网络补偿后的补偿输出值y,神经网络隐含层节点数n为
[0009]
[0010] 其中,Cf为神经网络理想输出函数的傅立叶分布系数; 下标i表示第i个样本;e为光电编码器的最小分辨率;m为训练集样本个数;
[0011] 步骤三、利用步骤一获得的样本对步骤二建立的傅立叶神经网络进行权值训练,获得隐含层到输出层的权值ω以及傅立叶神经网络的输出值y;计算神经网络输出值y和理想值Y之间的偏差,若不满足标准偏差关系,则在当前的隐含层节点数附近根据经验调整隐层节点个数,然后按本步骤方法对新的傅立叶神经网络进行权值训练,直到傅立叶神经网络的输出值y和理想值Y满足标准偏差关系为止;
[0012] 步骤四,补偿时,将光电编码器的实际测量值作为输入代入到步骤三最终确定的傅立叶神经网络中,得到补偿后的光电编码器输出方向角。
[0013] 进一步地,所述步骤三中,所述隐含层到输出层的权值ω为:
[0014] ω=ST(SST)-1y  (1)
[0015] 其中,S为隐含层各神经元的激发函数;
[0016] 将步骤一获得的样本量代入式(1)训练获得隐含层到输出层的权值ω。
[0017] 有益效果:
[0018] (1)本发明综合考虑了影响光电编码器测量精度的因素,提出了基于傅立叶神经网络映射标定补偿方法对其进行补偿,一方面简化补偿过程,即只需将光电编码器随着测试台旋转一周获取训练样本和对应的真实值(无须匀速采样);另一方面能够更精确地抵消外界干扰,提高测量精度。该补偿方法具有神经网络结构简单、易于实现,同时能以任意精度逼近非线性函数,具有较好泛化能力的优点。
[0019] (2)本发明采用最小范数计算的方法代替迭代计算的问题,能够将求解神经网络权值的时间降低到最小,最大程度的减少了计算的时间复杂度和空间复杂度。这种方法使得快速求解傅立叶神经网络权值,标定大量数据量传感器数据成为了可能。
[0020] (3)本发明分析了傅立叶神经网络隐含层节点数的构成,隐含层节点数与目标函数特征,以及补偿前补偿后之间的差距有关,并给出了量化的估计公式。有了隐含层节点量化估计公式,就可以对隐含层节点数进行估计,而避免采用逐一试探的方式进行搜索。
[0021] (4)本发明的补偿方法具有神经网络能以任意精度逼近非线性函数和较好泛化能力的优点,且网络结构较简单,易于实现,采用正交的傅立叶指数作为神经网络的激发函数,将非线性优化问题转化为线性优化问题,极大地提高收敛速度,避免陷入局部最小。隐含层节点数根据标定数据的特征,采用傅立叶变换的方法对其特性进行分析,而后根据频域特性和补偿要求对隐含层节点数进行估计。

附图说明

[0022] 图1为本发明原理图。
[0023] 图2为本发明流程图。

具体实施方式

[0024] 下面结合附图并举实施例,对本发明进行详细描述。
[0025] 本发明提供了一种基于神经网络的光电编码器快速补偿方法。该补偿方法基于神经网络隐含层节点估计算法、神经网络权值快速计算方法和傅立叶神经网络,通过傅立叶神经网络对光电编码器误差建模,该神经网络采用正交傅立叶级数作为网络激发函数,采用神经网络隐含层估计算法估计隐含层节点个数,采用神经网络权值快速计算方法计算权值,得到较为精确的误差模型来补偿角传感器的测量值,从而达到改善角传感器精度的目的。
[0026] 基于神经网络隐层节点估计算法、输出层权值快速计算方法和傅立叶神经网络的光电编码器的补偿方法,包括获取训练样本、采用傅立叶神经网络(FNN)建立误差补偿模型以及采用隐含层节点估计方法确定神经网络结构,快速计算权值方法得到神经网络权值几个部分,实现的具体步骤如下:
[0027] 步骤一、获取训练样本;
[0028] 将一款普通的光电编码器在不对外界条件做任何处理的室内环境下,随意手动测试台水平非匀速旋转一圈,获取光电编码器的测量值x及其对应的测试台转角Y作为训练样本;其中,x为需要补偿的光电编码器测量值,Y为光电编码器的理想值。
[0029] 步骤二、采用傅立叶神经网络(FNN)建立误差补偿模型;
[0030] 采用单输入单输出傅立叶神经网络(SISO-FNN)建立光电编码器方向角误差的模型。该网络为三层前向网络,三层分别为输入层、隐含层和输出层。与其他神经网络不同的是,FNN选用正交三角函数系{1,cos2πx/T,sin2πx/T,cos4πx/T,sin4πx/T,…,cos2nπx/T,sin2nπx/T}代替常用的sigmoid函数或者Gaussian函数作为神经网络各隐含层神经元的激发函数。其中,x为每个小样本组相应的测量值(以360°量程的360个点为例,x对应0°,1°……360°)。
[0031] 隐含层各神经元的激发函数为:
[0032] S1=1,...,S2i=cos(2iπx/T),S2i+1=sin(2iπx/T),i=1,2,…,n  (1)[0033] 其中,T为测量周期,n是隐含层的神经节点个数。
[0034] 选择傅立叶系数a0,a1,…,an,b1,b2,…,bn作为隐含层各神经元至输出层的连接权值:
[0035]
[0036]
[0037] 其中f(x)为神经网络的输出。
[0038] 则隐含层各神经元至输出层的连接权值w1,...,w2i,w2i+1为:
[0039] w1=a0,...,w2i=ai,w2i+1=bi,i=1,2,…,n  (4)
[0040] 此外,神经网络输入层到隐含层各神经元的连接权值为1;隐含层各神经元的输出为:
[0041] Oj=Sjwj j=1,2,…,2n+1  (5)
[0042] 输出层采用线性神经元,则输出层的输出为:
[0043]
[0044] 其中,y为光电编码器补偿后的输出。
[0045] 可以看到,式(6)与f(x)的傅立叶级数在形式上是等同的,因此傅立叶神经网络的输出等价于傅立叶级数。
[0046] 步骤三、建立光电编码器误差模型并选择训练指标;
[0047] 定义光电编码器的误差ei为神经网络输出值yi与理想值Yi的差,即
[0048] ei=Yi-yi=Yi-f(xi),i=1,2,…,m  (7)
[0049] 其中,m为训练集样本个数;并选择训练指标J为:
[0050]
[0051] 步骤四、采用傅立叶变化算法分析与计算目标函数对应的隐含层神经节点数。
[0052] 神经网络隐含层节点数决定了神经网络的结构,直接影响补偿效果。目前没有明确的方法确定神经网络隐含层节点数。本发明研究了影响补偿结果的两个因素,提出了一种结构化量化隐层节点数的方法。这种方法为:隐含层节点数与输出函数复杂程度有关,与理想输出函数与实际输出函数的偏离程度有关。
[0053] 理想输出函数结构越复杂,补偿所需的隐含层节点数也多。目前,没有明确的方法度量函数复杂程度,本发明采用一种简单而有物理意义的方法度量。傅立叶变换的意义是分析信号的频域特性。函数越复杂,其频域特征越复杂。因此,采用傅立叶变换对目标函数进行计算,可以提取目标函数的频域特性。
[0054] 定义神经网络理想输出函数为:
[0055] y=f(x)=x  (7)
[0056] 其中x为光电编码器的输入信号,y为输入信号对应的理想输出信号。
[0057] 其傅立叶变化式为:
[0058] f(x)=∫eiωxf(ω)dω  (8)
[0059] 其中,ω为傅立叶积分变量,可以采用频域加权积分的方法计算傅立叶分布系数Cf,这个系数的意义是描述输出函数在傅立叶展开下的复杂程度:
[0060] Cf=∫|ω||f(ω)|dω  (9)
[0061] 隐含层节点采用的是傅立叶正交级数形式,因此,理想输出函数形态越复杂,隐含层节点个数越多。也即:
[0062]
[0063] 隐含层节点数还与理想输出函数与实际输出函数的偏离程度有关:
[0064]
[0065] 即隐含层节点数正比于当前偏差与目标偏差,其中,x为采集到的光电编码器的输出量,Y为理想情况下没有误差的输出量,为在光电编码器误差范围内的,得到满足特定精度要求的目标输出函数(没有误差的补偿是不可实现的)。
[0066] 综合式(10)和式(11),可得:隐含层节点数n为
[0067]
[0068] 其中, 其中,e由光电编码器的最小分辨率确定。例如:采集一个15位光电编码器的360个点,15位光电编码器的分辨率e为0.01°,计算线性目标函数的Cf值为2π,计算||x-Y||=0.015。最终,神经节点数大约为900个。
[0069] 步骤五、计算隐含层到输出层的权值;
[0070] 由图1可知,隐含层到输出层的关系为
[0071] Sω=y  (13)
[0072] 其中, ω(2n+1)×1=[ω0,ω1,...,ω2n+1]T,y=Om×1=[O0,O1,...,On-1]T,其中,n为隐含层节点个数,m为训练集样本个数。
[0073] 本发明要找到一组权值,权值和隐含层的乘积与输出最接近。假设这个解为ω0,这个解满足Sω0=0,且对于所有满足Sω=0,有||ω0||≤||ω||,由于
[0074] ||ω||=||ω0||+||ω-ω0||+2(ω0)T(ω-ω0)  (14)
[0075] 当且仅当2(ω0)T(ω-ω0)=0时,有||ω-ω0||=||ω||-||ω0||≥0,即满足||ω||≥||ω0||。
[0076] 存在性证明:
[0077] 令ω0=ST(SST)-1O,则有:
[0078] 2(ω0)T(ω-ω0)=2[ST(SST)-1O]T[ω-ST(SST)-1O]
[0079] =2OTST(SST)-1S[ω-ST(SST)-1O]
[0080] =2OTST(SST)-1[Sω-SST(SST)-1O]
[0081] =2OTST(SST)-1[Sω-(SST)(SST)-1O]
[0082] =2OTST(SST)-1[O-O]=0
[0083] 即证:||ω-ω0||=||ω||-||ω0||
[0084] 唯一性证明:
[0085] 假设存在ω0≠ω1使得||ω1||≤||ω||也成立,则有
[0086] Sω0=O
[0087] Sω1=O
[0088] 两式作差得:S(ω0-ω1)=0
[0089] 又因为:R(Sm×2n+1)=2n+1,(上文本例中m<2n+1),故有(ω0-ω1)=0,因此,ω0=ω1,唯一性得证。
[0090] 综上,这个权值可以唯一地求得:
[0091] ω0=ST(SST)-1O  (15)
[0092] 因此,将样本集中的所有样本带入式(15)中计算获得的隐含层到输出层的权值ω,然后就可以根据这个权值,计算出补偿后的输出值为:
[0093] y=O=Sω
[0094] 分析补偿输出y和理想值Y之间的标准偏差,若不满足标准偏差关系,则在神经网络隐含层节点数估计值附近调整隐层节点个数,直到满足标准偏差关系为止。训练过程如图2所示。
[0095] 步骤六、将经步骤5训练后得到的神经网络权值代入神经网络,得到较为精确的补偿模型;用于补偿光电编码器的输出方向角,使得光电编码器的输出更加接近理想值的方向角。
[0096] 步骤七、将光电编码器的输入代入到傅立叶神经网络中,得到补偿后的光电编码器输出方向角。
[0097] 本发明针对隐含层节点个数难确定问题,通过目标函数的特性估计隐含层节点的个数,再根据实际的结果对节点个数进行修正,这样可以避免试凑法逐一试凑带来的低效。本发明还针对迭代训练方法收敛速度慢的问题,通过将误差映射到正交三角函数基的隐含层节点,快速地求解隐含层到输出层权值的最小范数解。本发明能够快速得到隐含层节点个数和隐含层到输出层的权值,能够实现对光电编码器的标定,达到改善光电编码器精度的目的。
[0098] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。