我正在尝试使用 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
只是继续成长和成长。
我只是想知道我是否做错了什么,也许误解了我不应该做的事情?对此的任何见解将不胜感激。