Autor Beitrag
Vitalic
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: Mo 17.05.10 17:37 
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:

wiki.fse.uni-due.de/wiki/Trilateration


Danke für die Mühe!!!

Grüße Vitalic
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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 user profile iconBenBE an dieser Stelle)

wie das in delphi geht kannst du hier mal ansehen. Für Schnittpunkte musst du halt vorher n bisschen umformen aber das kannst du ja schon im code, denk ich.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Vitalic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.