发明名称 一种电子罗盘的标定方法
摘要 本发明公开了一种电子罗盘的标定方法,该方法基于自适应差分进化算法和傅里叶神经网络原理,用于提高电子罗盘的测量精度,特别适用于要求低成本、精度较高的定向系统中。本发明采用傅立叶神经网络对电子罗盘误差建模,并采用改进的自适应差分进化算法对神经网络的权值进行优化,从而得到较为精确的误差模型来补偿电子罗盘测量值。该方法建立的误差模型能实现样本空间的精确映射,具有较高的非线性逼近能力,且该方法避免陷入局部最小,克服了神经网络的收敛速度过慢,振荡等缺点,有效补偿外界磁场对电子罗盘输出的影响,因此能大大提高了电子罗盘的测量精度。
申请公布号 CN102297687A 申请公布日期 2011.12.28
申请号 CN201110124791.5 申请日期 2011.05.13
申请人 北京理工大学 发明人 邓方;陈杰;龚鹍;窦丽华
分类号 G01C17/38(2006.01)I;G06N3/08(2006.01)I 主分类号 G01C17/38(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 李爱英;郭德忠
主权项 一种电子罗盘的标定方法,其特征在于,该方法实现的具体步骤如下:步骤一、获取训练样本;将一款普通的二维固态磁阻电子罗盘在不对外界磁场做任何处理的室内环境下,随手动转台水平非匀速旋转一圈,获取电子罗盘的测量值及其对应的转台转角作为训练样本;其中,电子罗盘测量值作为需要补偿的值x,实际转台转角作为理想值Y;步骤二、确定神经网络结构;采用单输入单输出三层前向傅立叶神经网络SISO‑FNN对电子罗盘方向角建立误差补偿模型,隐含层各神经元的激发函数为:S1=1,...,S2i=cos(2iπx/T),S2i+1=sin(2iπx/T),i=1,2,…,n    (2)其中,T为测量周期;选择傅立叶系数a0,...,ai,bi,i=1,2,3,…,n <mrow> <msub> <mi>a</mi> <mi>i</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <msubsup> <mo>&Integral;</mo> <mn>0</mn> <mi>T</mi> </msubsup> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>i&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mi>dx</mi> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>0,1,2</mn> <mo>,</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>,</mo> <mi>n</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>b</mi> <mi>i</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <msubsup> <mo>&Integral;</mo> <mn>0</mn> <mi>T</mi> </msubsup> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>i&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mi>dx</mi> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1,2</mn> <mo>,</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>,</mo> <mi>n</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>作为隐含层各神经元至输出层的连接权值,其中f(x)为神经网络的输出;则隐含层各神经元至输出层的连接权值w1,...,w2i,w2i+1为:w1=a0,...,w2i=ai,w2i+1=bi,i=1,2,…,n    (5)此外,神经网络输入层到隐含层各神经元的连接权值为1;隐含层各神经元的输出为:Oj=Sjwj  j=1,2,L,2n+1    (6)输出层采用线性神经元,则输出层的输出为: <mrow> <mi>y</mi> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>O</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>=</mo> <msub> <mi>w</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>w</mi> <mn>2</mn> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>w</mi> <mn>3</mn> </msub> <mi>sin</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msub> <mi>w</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>n&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>w</mi> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mi>sin</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>n&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow>(7) <mrow> <mo>=</mo> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>b</mi> <mn>1</mn> </msub> <mi>sin</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>+</mo> <msub> <mi>a</mi> <mi>n</mi> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>n&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>b</mi> <mi>n</mi> </msub> <mi>sin</mi> <mrow> <mo>(</mo> <mn>2</mn> <mi>n&pi;x</mi> <mo>/</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mo>=</mo> <msub> <mi>a</mi> <mn>0</mn> </msub> <mo>/</mo> <mn>2</mn> <mo>+</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>n</mi> </msub> <mi>cos</mi> <mrow> <mo>(</mo> <mi>j&omega;x</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>b</mi> <mi>n</mi> </msub> <mi>sin</mi> <mrow> <mo>(</mo> <mi>j&omega;x</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mrow>其中,y为电子罗盘补偿后的输出;步骤三、建立电子罗盘误差模型并选择训练指标;定义电子罗盘的误差ei为神经网络输出值yi与理想值Yi的差,即ei=Yi‑yi=Yi‑f(xi),i=1,2,…,M    (8)其中,M为训练样本维数;并选择训练指标J为: <mrow> <mi>J</mi> <mo>=</mo> <mn>0.5</mn> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>M</mi> </munderover> <msubsup> <mi>e</mi> <mi>i</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>步骤四:根据训练样本采用改进的自适应差分进化算法训练神经网络;采用步骤一获取的训练样本,引入改进的自适应差分进化算法训练神经网络,优化神经网络隐含层各神经元至输出层的连接权值;所述的改进的自适应差分进化算法采用的自适应参数CRk由下式得到:CRk=CRmin+(CRmax‑CRmin)(f1‑fmin)/(f1‑fmax)    (10)其中,CRk为当前第k个体的交叉算子CR的值,CRmin、CRmax分别为设置好的交叉算子的最小值和最大值;fk为第k个体的适应度值,fmin、fmax分别为当前种群中适应度最优和最差的个体适应度值;其中,改进的自适应差分进化算法需要初始化的参数包括变量个数D、变异算子F、交叉算子CR、种群个数NP以及最大进化代数G;具体的初始化参数选择原则如下:(1)变量个数D变量个数D即为傅立叶神经网络隐含层各神经元至输出层的连接权值的个数;(2)变异算子F变异算子F取值范围为[0,2];(3)交叉算子CRCR∈[0,1];(4)种群个数NP种群规模NP取5D~10D,其中变量个数D不少于4;(5)最大进化代数G最大进化代数G的选取根据神经网络训练指标和训练时间来综合选择;步骤五、将优化后得到的神经网络权值代入神经网络,得到较为精确的补偿模型;步骤六、标定时,将电子罗盘输出的测量值输入神经网络,神经网络输出值即为补偿后的值。
地址 100081 北京市海淀区中关村南大街5号