Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Trilateration
Vitalic - Mo 17.05.10 17:37
Titel: Trilateration
Hallo alle zusammen,
ich bin neu hier und habe paar Fragen bezüglich eines Algorithmus, welchen ich schreiben muss.
Wie der Titel es bereits sagt, handelt es sich hierbei um das LokalisierungsVerfahren Trilateration.
Kurze Info für die, die es noch nicht kennen, oder sich nichts dadrunter vorstellen können.
Ich muss mit Hilfe von AccesPoints BluetoothGeräte lokalisieren.
Dabei bekomme ich von meinen AccessPoints, welche im Raum verteilt aufgestellt sind RSSI Werte von dem zu lokalisierendem Bluetoothgerät.
Diese RSSI Werte soll ich zur Positionsbestimmung nutzen.
Nun zu der eigentlichen Frage:
Auf dem unten angegebenen Link ist mathematisch dargestellt, wie man die Schnittpunkte berechnen, die Frage ist nur, wie ich das "Ersetzungsverfahren" programmiertechnisch umsetzen könnte?
LINK:
http://wiki.fse.uni-due.de/wiki/Trilateration
Danke für die Mühe!!!
Grüße Vitalic
BenBE - Mo 17.05.10 22:43
Hi und :welcome: im Delphi/C#-Forum.
Dein Link ist leider extern nicht erreichbar.
In der Regel gibt es auber auch für Eliminationsverfahren entsprechende Alternativen. Ggf. das Ganze als LGS via GAUSS suchen.
elundril - Mo 17.05.10 23:22
Da Gauss nur für lineare Gleichungssysteme geht und du aber quadratische hast, funktioniert der leider nicht.
Aber: Du hast ja eigentlich mind. 3 Kreisgleichungen. Da heißt du berechnest dir den Schnittpunkt von 2 Gleichungen (gleichsetzen und so) und dann bekommst du jeweils 2 lösungen (wegen der wurzel). Dann setzt du beide Lösungen in die dritte Gleichung bzw. in eine dritte gleichung. Wenn jetzt auf der linken Seite das gleiche steht wie auf der rechten seite hast du deine koordinate. wenn die seiten nicht übereinstimmen, solltest du mal die andere lösung einsetzen. ;)
(ehre wem ehre gebührt: danke an
BenBE an dieser Stelle)
wie das in delphi geht kannst du
hier [
http://www.delphipraxis.net/topic161948_tutorial+quadratische+gleichungen+vollstaendig+loesen.html&highlight=quadratische] mal ansehen. Für Schnittpunkte musst du halt vorher n bisschen umformen aber das kannst du ja schon im code, denk ich.
lg elundril
Vitalic - Di 18.05.10 11:48
Hallo und Danke schon mal für die Hilfe.
Das kleine Problem was ich noch habe:
Ich habe 3 Access Points mit folgenden x,y-Koordinaten:
AP1( 0,0 )
AP2( 15,0 )
AP3( 15,8 )
Und für die Schnittpunkten Berechnung gibt es folgende Gleichung:
(x0-x1)²+(y0-y1)²=r1²
(x0-x2)²+(y0-y2)²=r2²
(x0-x3)²+(y0-y3)²=r3²
Dabei ist:
x1-x3: X-Koordinaten von APs
y1-y3: Y-Koordinaten von APs
r1-r3: Radius
Wie kann ich das nun alles in Programmiersprache ausdrücken, es ist kein Problem das rechnerisch zu lösen.
Also ich benötige 2 Gleichungen.
x0 = ...
y0 = ...
Danke für die Mühe!
Grüße
Vitalic
BenBE - Di 18.05.10 14:08
Die Lösung in Programmiersprache erfolgt im Wesentlichen analog zur Lösung auf Papier. Sprich, du rechnest dir jegliche Zwischenergebnisse aus und suchst dann aus den Zwischenergebnissen die richtigen raus. Schau Dir dazu ggf. mal Arrays an. Dort kannst Du das recht effektiv abspeichern.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!