Trilateration数学检查
本文关键字:检查 Trilateration | 更新日期: 2023-09-27 17:57:49
我正在尝试装箱一个使用N个BLE对象的室内三边测量程序。如果我在一个房间里有任何数量的信标,我的ipad可以跟踪它在其中的位置,精度达到亚米(我希望)。
我在GIS溢流板上问了这个问题(我也会在这里提出这个问题),以检查我最初的Trilateration程序。我得到的唯一评论是这篇论文
现在我正试图在我的代码中实现他们的迭代三边测量数学。他们的公式如下(我真的很抱歉,我不知道如何给出正确的数学公式):
参考点=Xi、易
距离=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
有了这个新的德尔塔,他们修改了原来的fi方程,看起来像这样:
|fi |=di−数学平方根((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
会不断增长。
我只是想知道我是否做错了什么,也许误解了一些我不该做的事情?如对此有任何见解,我们将不胜感激。
他们首先使用绝对误差来详细描述方法(高斯-牛顿)。然后他们暗示,他们使用相对误差来进行论文中提出的实际计算,由于未知原因,他们称之为分数误差。
表示
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。