AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kompass mit Android

Ein Thema von Ralphi · begonnen am 13. Dez 2013 · letzter Beitrag vom 19. Dez 2013
Antwort Antwort
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

AW: Kompass mit Android

  Alt 14. Dez 2013, 12:56
Wie bekomme ich aus den Headingwerten die Himmelsrichtung bestimmt?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#2

AW: Kompass mit Android

  Alt 14. Dez 2013, 13:08
Die Achse mit dem größten Wert zeigt am meisten in Richtung des Nordpols eines Magnetes.

Wenn du es dir einfach machen willst, dann nimmst du nur X und Y (also wenn das Handy flach da liegt, wobei Z nach unten zeigt)
und schon kannst du das wie eine Kreisfunktion ansehen, also via Cosinus und Sinus die Werte der Achsen in den Winkel umrechnen.


PS: Wie du vielleicht weißt,ist der "echte" Nordpol nicht genau da, wo der magnetische Nordpol ist.
Aber das kannst du erstmal ignorieren, und zeigst einfach nur zum magnetischen Nordpol.
Denn um den Fehler rausrechnen zu können, müsstest du wissen, wo sich das Handy grade befindet.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Dez 2013 um 13:15 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Kompass mit Android

  Alt 14. Dez 2013, 14:49
der "echte" geografische Nordpol nicht genau da, wo der magnetische Nordpol ist.
Beide sind echt, und es ist gleichermaßen legitim nach beiden zu suchen. Bei einem Kompass würde ich aber stets die Anzeige des magnetischen erwarten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#4

AW: Kompass mit Android

  Alt 14. Dez 2013, 17:46
Dann würdest du dich in 5000 Jahren eventuell verlaufen, dern de magnetische wandert und angeblich sind wir grade mitten in einer Polumkehr, wo du danach vielleicht am Südpol landen könntest.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#5

AW: Kompass mit Android

  Alt 14. Dez 2013, 17:47
Also irgendwie bekomme ich aus den Werten wohl nicht die korrekten Daten hergeleitet. Zur Berechnung nutze ich das hier:

Delphi-Quellcode:
function Heading: single;
  begin
    if (FHeadingY > 0) then
      result := 90.0 - arcTan(FHeadingX / FHeadingY) * 180 / PI
    else if (FHeadingY < 0) then
      result := 270.0 - arcTan(FHeadingX / FHeadingY) * 180 / PI
    else if (FHeadingY = 0) and (FHeadingX < 0) then
      result := 180
    else if (FHeadingY = 0) and (FHeadingX > 0) then
      result := 0;
  end;
Ich sollte eventuell erwähnen, dass ich das von hier her habe: http://www51.honeywell.com/aero/comm...netometers.pdf.

Geändert von Peter666 (14. Dez 2013 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Kompass mit Android

  Alt 14. Dez 2013, 18:26
Dann würdest du dich in 5000 Jahren eventuell verlaufen, dern de magnetische wandert und angeblich sind wir grade mitten in einer Polumkehr, wo du danach vielleicht am Südpol landen könntest.
Das schien die Segler in hunderten von Jahren nicht wirklich davon abzuhalten Dinge zu entdecken. Kompass ==> Magnetisch. Da beisst die Maus kein Faden ab. Und das ist, was ich von einem Kompass eben erwarte. Zumindest wenn einfach nur von "Kompass" die Rede ist. Wenn dieser mir etwas anderes als den magnetischen Nordpol zeigt, erwarte ich die Erwähnung im Namen (oder muss ihn als kaputt ansehen). Zum Beispiel "Geografischer Kompass". Aber nur Kompass, da wäre es schlicht und ergreifend falsch den geografischen anzuzeigen. Zumindest, wenn dies nicht explizit als Option AUCH wählbar ist, sondern die Hauptfunktion oder Voreinstellung.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Ralphi

Registriert seit: 11. Okt 2005
Ort: Neuss
19 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: Kompass mit Android

  Alt 15. Dez 2013, 11:36
Danke für die vielen Hinweise.

Besonderen Dank an Peter666, das war die Lösung!

Der Wertebereich von 0-360 stimmte schon mit der Funktion, die Richtung war nur um 90 Grad verschoben.
Eventuell waren die Konstanten für andere Magnetfeld-Sensoren.
Ich habe nur die Konstanten um 90 geändert und die Himmelsrichtung war ok.
Die Deklination kann man falls gewünscht glaube ich mit den Tilt-Werten des Sensors berechnen und berücksichtigen.
Das werde ich mal probieren und das Ergebnis hier posten.

Hier die entsprechend geänderte Funktion von Peter666, die ursptünglichen Zeilen habe ich belassen und auskommentiert:
Code:
function Heading: single;
  begin
    if (OrientationSensor1.Sensor.HeadingY > 0) then
      //result := 90.0 - arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
      result := arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
    else if (OrientationSensor1.Sensor.HeadingY < 0) then
      //result := 270 - arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
      result := 180 - arcTan(OrientationSensor1.Sensor.HeadingX / OrientationSensor1.Sensor.HeadingY) * 180 / PI
    else if (OrientationSensor1.Sensor.HeadingY = 0) and (OrientationSensor1.Sensor.HeadingX < 0) then
      result := 180
    else if (OrientationSensor1.Sensor.HeadingY = 0) and (OrientationSensor1.Sensor.HeadingX > 0) then
      result := 0;
  end;

Geändert von Ralphi (15. Dez 2013 um 11:49 Uhr)
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#8

AW: Kompass mit Android

  Alt 15. Dez 2013, 13:46
Sicher? Also ich kriege da nur "Mist" raus und es scheint ja auch Abhängig, wie das Telefon gehalten wird, oder?

Was mir auch aufgefallen ist, ist das ich die MagHeading und TrueHeading Daten überhaupt nicht geliefert bekomme. Ich habe das eine Androidbeispiel (mit dem Gyrothread) mal in abgewandelter Form umgesetzt und da kriege ich nur Heading und Tiltwerte.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz