N BLE オブジェクトで動作する屋内三辺測量プログラムを作成しようとしています。部屋にビーコンがいくつあっても、ipad はその場所を 1 メートル以下の精度で追跡できます (希望します)。
元の三辺測量プログラムをチェックするために、GIS オーバーフロー ボード(ここにもこの質問を配置します) でこの質問をしました。私が受け取った唯一のコメントは、私をこの論文に連れて行った
現在、反復的な三辺測量の計算をコードに実装しようとしています。彼らの公式は次のとおりです(本当に申し訳ありませんが、適切な数式を立てる方法がわかりません):
基準点 = Xi、Yi
距離 = ディ
自明な初期推定値 = 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 方程式を次のように変更しました。
|フィ| = 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;
}
Unity シーンでは、上記のコードを 3 つの球のそれぞれに 2 回配置して、各球が他の 2 つの球を参照できるようにしました。しかし、これを実行xe, ye and f1
すると、成長し続けます。
私は何か間違ったことをしたのではないかと思っています。これに関する洞察は、ありがたく受け取られます。