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
Seite 2 von 2     12   
Ralphi

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

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
 
#12

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
Benutzerbild von himitsu
himitsu

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

AW: Kompass mit Android

  Alt 15. Dez 2013, 13:57
es scheint ja auch Abhängig, wie das Telefon gehalten wird, oder?
Es ist ein 3-Achsen-Sensor, von dem nur X und Y verwendet wird.
Man hat ja auch nur einen 2-Achsen-Komas in der Anzeige.
Wenn das Handy flach gehalten wird, dann sollten X+Y der Draufsicht entsprechen und Z nach unten.

Also senkrecht sollte man da das Handy nicht halten.
Es sei denn man wertet sie Lage des Handys aus und nimmt bei Senkrecht entsprechend X und Z als Achsen.
Bei Senkrecht muß man die Ansicht dann ja um 90° kippen, aber wer würde denn einen "normalen" Kompas senkrecht halten? (drum hab ich das Nächste wohl noch nie gesehn)

Oder du machst das in 3D, stellst den Kompas als Kugel dar und zeichnest den Pfeil dann in 3 Achsen da rein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

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

AW: Kompass mit Android

  Alt 15. Dez 2013, 15:23
Bei mir passt es. Ich habe zum testen die Beispiel-App Orientation-Sensor aus den Samples verwendet und die Funktion bei der Ausgabe eingebaut.
Wenn es nicht passt ist der Kompass eventuell nicht kalibriert oder der Sesnor nicht aktiviert.
Lade einfach eine Kompass App (Ich habe Kompass3D von gamijo geladen) und vergleiche damit. Die App hat in den Einstellungen die Kalibrier-Funktion, bei der man das Handy in 8er Form bewegen muss. Danach ist es genauer, ich habe ein paar Grad Unterschied zum iPhone-Kompass, das kann evtl. die Deklination sein.

Gehalten werden muss das Handy flach (wie man einen Kompass normalerweise hält wenn man draufguckt), Norden ist "Handy-oben".
  Mit Zitat antworten Zitat
Peter666

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

AW: Kompass mit Android

  Alt 15. Dez 2013, 17:00
@himitsu: Das machst du, wenn du zum Beispiel eine Augmented Reality Anwendung erstellen willst. In meinem Fall wollte ich Azimut, Elevation von Sternen im Ausschnitt darstellen und für die Richtung den Kompass nutzen. Es hapert gefühlt nur an 2 Kleinigkeiten, zum einen weiß ich nicht wie ich den FOV von dem Gerät bestimme, also die Anzahl des sichtbaren Azimut-Winkels, je nachdem ob das Telefon im Portraitmodus gehalten wird und natürlich der Kompass. Irgendwie verzweifel ich ein bisschen daran.

Geändert von Peter666 (15. Dez 2013 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Peter666

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

AW: Kompass mit Android

  Alt 19. Dez 2013, 10:50
Ich werde noch blöde

Auf dem Androiden bekomme ich bei dem Accelerometer3D Motion-Sensor völlig andere Werte als beim IPhone. Die Baseclass is TAndroidNativeAccelerometrSensor und bei iOS TiOSMotionSensor.
Bei Ios Sind das Werte zwischen 0.003 und -1.003 bei Acceleration X-Z und bei den Androiden meist so um die 0.4,0.3,9.81.

Ich könnte das jetzt normalisieren, aber ich hab dennoch das Gefühl das das nicht passt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 07:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz