【定位问题】基于RSSI均值的等边三角形定位算法matlab系统

236 阅读3分钟

1 简介

  为了提高无线传感网络的定位精度从提高测量精度、改善信标N点分布的角度提出了一种基于RSSI均值的等边三角形定位算法.该算法引入信号强指( RSSI)敏感区和非敏感区概念采用高斯模型对非敏感区的RSSI数据进行处理解了RSSI易受干扰的问题.采用等边三角形分布模型处理信标节点的分布保证未知节点运动轨迹始终在信标节点的非敏感区内从而在定位算法上使测量精度得到提高.研究表明高斯模型可以很好地筛选出RSSI较优值;等边三角形分布模型可以提高RSSI的采集优度.这种定位算法训一算简单定位过程中节点间无通讯开销无需硬件扩展.

 若末知节点在信标节点的敏感区内则只要RSSI值一次小小的随机变化就会造成测距结果的偏差.为了确保定位精度,本文提出等边三角形定位算法,保证了未知节点运动轨迹始终在信标节点的非敏感区内,从而在定位算法上使测量精度得到提高.

2 部分代码

   %%

    %

    %三边测量的定位算法

    %dA,dB,dC为A,B,C到未知节点(假定坐标[x,y]未知)的模拟测量距离

    function [P] = Triangle(A,B,C,dA,dB,dC)

    

    %A,B,C为三个选定的信标节点,节点坐标已知(为便于防真及验证,代码中采用的等边三角形)

    %A = [0,0];

    %B = [25,25*sqrt(3)];

    %C = [50,0];

    

    %定义未知坐标x,y为符号变量

    syms x y;

    %syms表示定义一个符号变量,符号变量区别于数值型的那些变量,用于进行公式的化简和计算。

    

    %%

    %

    %画圆,求交点

    %距离方程,以信标节点为圆心,信标节点到未知节点的测量距离为半径作三个圆

    f1 = (A(1)-x)^2+(A(2)-y)^2-dA^2;

    f2 = (B(1)-x)^2+(B(2)-y)^2-dB^2;

    f3 = (C(1)-x)^2+(C(2)-y)^2-dC^2;

    

    %任两个方程联立,求任两圆交点

    %solve(x,y)求x,y组成等式的根

    s1 = solve(f1,f2); %求A,B两圆的交点

    s2 = solve(f2,f3); %求B,C两圆的交点

    s3 = solve(f1,f3); %求A,C两圆的交点

    

    %将结果(符号变量)转换为双精度数值

    x1 = double(s1.x);

    y1 = double(s1.y);

    x2 = double(s2.x);

    y2 = double(s2.y);

    x3 = double(s3.x);

    y3 = double(s3.y);

    

    %%

    %

    %选择内侧的三个交点

    %两圆相交于两点,距第三个圆心近的为选定交点Pab,Pbc,Pac

    d1(1) = sqrt(((C(1)-x1(1))^2+(C(2)-y1(1))^2));

    d1(2) = sqrt(((C(1)-x1(2))^2+(C(2)-y1(2))^2));

    if d1(1) <= d1(2)

        Pab(1) = x1(1);

        Pab(2) = y1(1);

    else

        Pab(1) = x1(2);

        Pab(2) = y1(2);

    end

    d2(1) = sqrt(((A(1)-x2(1))^2+(A(2)-y2(1))^2));

    d2(2) = sqrt(((A(1)-x2(2))^2+(A(2)-y2(2))^2));

    if d2(1) <= d2(2)

        Pbc(1) = x2(1);

        Pbc(2) = y2(1);

    else

        Pbc(1) = x2(2);

        Pbc(2) = y2(2);

    end

    d3(1) = sqrt(((B(1)-x3(1))^2+(B(2)-y3(1))^2));

    d3(2) = sqrt(((B(1)-x3(2))^2+(B(2)-y3(2))^2));

    if d3(1) <= d3(2)

        Pac(1) = x3(1);

        Pac(2) = y3(1);

    else

        Pac(1) = x3(2);

        Pac(2) = y3(2);

    end

    

    %Pab

    %Pbc

    %Pac

    

    %%

    %求质心坐标

    %求三个圆内侧三个交点Pab,Pbc,Pac的质心,即为未知节点P,完成定位

    P(1) = (Pab(1)+Pbc(1)+Pac(1))/3;

    P(2) = (Pab(2)+Pbc(2)+Pac(2))/3; 

3 仿真结果

4 参考文献

[1]朱剑, 赵海, 孙佩刚,等. 基于RSSI均值的等边三角形定位算法[J]. 东北大学学报:自然科学版, 2007, 28(8):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。