1.一种带约束条件的UKF的WSN节点定位方法,UKF是无迹卡尔曼滤波,WSN是无线传感器网络,其工作步骤是:
1)测距模型有理论模型和经验模型两种,测距模型采用理论模型中的对数-常态分布模型,使用高斯滤波技术和曲线拟合技术对实验环境中测试获得的数据进行处理确定模型中的未知参数,建立接收的信号强度指示RSSI与距离之间的关系;
2)使用测距模型将RSSI转换为距离值;使用极大似然估计MLE法求得坐标PMLE,坐标值为(xMLE,yMLE);设未知节点相邻两时刻中前一时刻的坐标为P0,坐标值为(x0,y0);以R为半径,P0为圆心,作一约束圆;选取当前时刻RSSI值中最大的两个信标节点设为A和B,其坐标分别为(x1,y1)和(x2,y2);作直线AP0和BP0,与约束圆的交点分别为M和N,则扇形MP0N构成一个坐标约束区域;使用下面公式分别求出点M和N的坐标值为(xM,yM)和(xN,yN);
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<mo>)</mo>
<mo>=</mo>
<mi>k</mi>
<mo>(</mo>
<mi>y</mi>
<mo>-</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<mo>)</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>y</mi>
<mo>-</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<mo>=</mo>
<msup>
<mi>R</mi>
<mn>2</mn>
</msup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
式中:k为直线的斜率值;
以M、PMLE、N、P0四点为顶点构成一个四边形,求得四边形的质心坐标即为初始定位所得的坐标(x',y');
<mrow>
<msup>
<mi>x</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<mo>+</mo>
<msub>
<mi>x</mi>
<mi>M</mi>
</msub>
<mo>+</mo>
<msub>
<mi>x</mi>
<mrow>
<mi>M</mi>
<mi>L</mi>
<mi>E</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>x</mi>
<mi>N</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msup>
<mi>y</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mi>M</mi>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>M</mi>
<mi>L</mi>
<mi>E</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mi>N</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
3)以未知节点的坐标作为***的状态变量,用RSSI值作为观测值,以测距模型为观测方程,建立自适应UKF滤波***;
3.1)状态方程:
Xk+1=f(Xk)+wk=AXk+wk
式中:f(·)为非线性函数,为状态转移矩阵,Xk=[xk,yk]Τ表示第k时刻的***状态随机变量,wk为***过程噪声,其均值为零,协方差为Qk;
3.2)观测方程:
Yk,i=h(Xk)+vk=Pr(dk,i)
Pr(dk,i)=Pr(d0)-10·θ·log(dk,i)+vk
式中:h(·)为非线性函数,表示未知节点与第i个信标节点之间的距离,Pr(dk,i)为第i个信标节点的接收RSSI值,Pr(d0)为d0=1m时的接收RSSI值,Yk,i为***观测量即信标节点的接收RSSI值,vk为观测噪声,协方差为Rk,θ为路径损耗因子;
4)标准UKF算法实现:
4.1)初始化:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mn>0</mn>
</msub>
<mo>=</mo>
<mi>E</mi>
<mo>&lsqb;</mo>
<msub>
<mi>X</mi>
<mn>0</mn>
</msub>
<mo>&rsqb;</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
<mo>=</mo>
<mi>E</mi>
<mo>&lsqb;</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>X</mi>
<mn>0</mn>
</msub>
<mo>-</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mn>0</mn>
</msub>
<mo>)</mo>
</mrow>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mi>X</mi>
<mn>0</mn>
</msub>
<mo>-</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mn>0</mn>
</msub>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<mo>&rsqb;</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
4.2)样点计算:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>(</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow></mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msqrt>
<mrow>
<mo>(</mo>
<mi>L</mi>
<mo>+</mo>
<mi>&lambda;</mi>
<mo>)</mo>
</mrow>
</msqrt>
<msub>
<mrow>
<mo>(</mo>
<msqrt>
<msub>
<mi>P</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</msqrt>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>,</mo>
<mn>...</mn>
<mo>,</mo>
<mi>L</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msqrt>
<mrow>
<mo>(</mo>
<mi>L</mi>
<mo>+</mo>
<mi>&lambda;</mi>
<mo>)</mo>
</mrow>
</msqrt>
<msub>
<mrow>
<mo>(</mo>
<msqrt>
<msub>
<mi>P</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</msqrt>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>-</mo>
<mi>L</mi>
<mo>)</mo>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mi>L</mi>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
<mi>L</mi>
<mo>+</mo>
<mn>2</mn>
<mo>,</mo>
<mn>...</mn>
<mo>,</mo>
<mn>2</mn>
<mi>L</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
4.3)时间更新:
<mrow>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>L</mi>
</mrow>
</munderover>
<msubsup>
<mi>&omega;</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>m</mi>
<mo>)</mo>
</mrow>
</msubsup>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
</mrow>
<mrow>
<msub>
<mover>
<mi>P</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>L</mi>
</mrow>
</munderover>
<msubsup>
<mi>&omega;</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>c</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>&lsqb;</mo>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
<mo>-</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
<msup>
<mrow>
<mo>&lsqb;</mo>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
<mo>-</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
</mrow>
<mi>T</mi>
</msup>
<mo>+</mo>
<msub>
<mi>Q</mi>
<mrow>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
<mrow>
<msub>
<mi>Y</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mi>h</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mover>
<mi>Y</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>L</mi>
</mrow>
</munderover>
<msubsup>
<mi>&omega;</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>m</mi>
<mo>)</mo>
</mrow>
</msubsup>
<msub>
<mi>Y</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
4.4)量测更新:
<mrow>
<msub>
<mi>P</mi>
<mrow>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>L</mi>
</mrow>
</munderover>
<msubsup>
<mi>&omega;</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>c</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>&lsqb;</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mover>
<mi>Y</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
<msup>
<mrow>
<mo>&lsqb;</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mover>
<mi>Y</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
</mrow>
<mi>T</mi>
</msup>
<mo>+</mo>
<msub>
<mi>R</mi>
<mi>k</mi>
</msub>
</mrow>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<msub>
<mi>x</mi>
<mi>k</mi>
</msub>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>L</mi>
</mrow>
</munderover>
<msubsup>
<mi>&omega;</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>c</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>&lsqb;</mo>
<msubsup>
<mi>&chi;</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
<mi>x</mi>
</msubsup>
<mo>-</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
<msup>
<mrow>
<mo>&lsqb;</mo>
<msub>
<mi>Y</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mover>
<mi>Y</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
</mrow>
<mi>T</mi>
</msup>
</mrow>
<mrow>
<msub>
<mi>K</mi>
<mi>k</mi>
</msub>
<mo>=</mo>
<msub>
<mi>P</mi>
<mrow>
<msub>
<mi>x</mi>
<mi>k</mi>
</msub>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
</mrow>
</msub>
<msubsup>
<mi>P</mi>
<mrow>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
</mrow>
<mrow>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mi>k</mi>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>X</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>K</mi>
<mi>k</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>Y</mi>
<mi>k</mi>
</msub>
<mo>-</mo>
<msub>
<mover>
<mi>Y</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>P</mi>
<mi>k</mi>
</msub>
<mo>=</mo>
<msub>
<mover>
<mi>P</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>k</mi>
<mo>|</mo>
<mi>k</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>K</mi>
<mi>k</mi>
</msub>
<msub>
<mi>P</mi>
<mrow>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
<msub>
<mi>y</mi>
<mi>k</mi>
</msub>
</mrow>
</msub>
<msubsup>
<mi>K</mi>
<mi>k</mi>
<mi>T</mi>
</msubsup>
</mrow>
式中:λ=α2(L-κ)-L,i=1,2,....,2L,α为正常数,β表示样本点的分布信息,κ为控制权值分布的参数,L为随机变量X的维数,分别为第i个样本点所对应的均值和方差统计特性的权系数;X0为***随机变量的初始值,即步骤2)所得的结果,P0为协方差初始值,为k-1时刻的样本点集,Yi,k|k-1为变换点集,为随机变量的一步***值,为观测量的一步***值,Yk为k时刻的***观测量,为一步***协方差矩阵,和为协方差矩阵,Pk为k时刻的协方差矩阵估计值,Kk为k时刻的滤波增益值,为k时刻的随机变量估计值,即所求节点坐标值。