0

我正在尝试使用 N 个 BLE 对象创建一个室内三边测量程序。我在一个房间里有任意数量的信标,我的 ipad 可以跟踪它在其中的位置,精确到亚米级(我希望如此)。

在 GIS 溢出板上提出了这个问题(我也会提出这个问题)来检查我原来的三边测量程序。我得到的唯一评论把我带到了这篇论文

现在我正在尝试在我的代码中实现他们的迭代三边测量数学。他们的公式如下(我真的很抱歉,我不知道如何提出正确的数学公式):

参考点 = Xi, Yi

距离 = di

平凡的初始估计 = Xe, Ye

估计距离误差 = |fi | = di - Math.SquareRoot ((xi - xe )^2 + (yi - ye )^2)

接下来,他们将增量应用于 Xe 和 Ye 的初始估计,如下所示:

Xe = Xe + 0.05 增量 x

Ye = Ye + 0.05 增量 y

有了这个新的 Delta,他们将原来的 fi 方程修改为如下所示:

|fi | = di - Math.SquareRoot ((xi - xe )^2 + (yi - ye )^2) / di

现在,阅读我编写的代码如下:

public GameObject refPoint1, refPoint2;
public float d = 0.0f;
public float f1 = 0.0f;
public float xe, ye = 0.0f;
public float multiplier = 0.05f;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () 
{
    xe = xe + multiplier * Math.Abs(refPoint1.transform.position.x);
    ye = ye + multiplier* Math.Abs(refPoint1.transform.position.y);
    d = Vector3.Distance(refPoint1.transform.position, refPoint2.transform.position);
    f1 = d - (Mathf.Sqrt((refPoint1.transform.position.x - xe) * (refPoint1.transform.position.x - xe) + 
                         (refPoint1.transform.position.y - ye) * (refPoint1.transform.position.y - ye))) / d;

}

在我的统一场景中,我将上述代码放置在三个球体中的每一个上两次,以便每个球体都能够引用其他两个球体。然而,当我运行这个时,我的xe, ye and f1只是继续成长和成长。

我只是想知道我是否做错了什么,也许误解了我不应该做的事情?对此的任何见解将不胜感激。

4

1 回答 1

0

他们首先使用绝对误差来详细描述该方法(Gauss-Newton)。然后他们暗示他们使用了相对误差,他们将其称为未知原因的分数误差,来进行论文中提出的实际计算。

表示

gi(x,y)=sqrt(sqr(x-xi)+sqr(y-yi))

那么绝对误差就是

di-gi(x,y)

和相对误差是绝对值

(di-gi(x,y))/di = 1-gi(x,y)/di

在 B 的公式中,如果使用相对误差作为 fi,则必须将每一行除以 di。

于 2014-04-12T06:28:05.373 回答