- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Winkelauswertung mit Accelerometer - Wo Werte zum Nullen einrechnen?

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Anzeige

    Praxistest und DIY Projekte
    Ich blick nicht ganz durch, was du da machst. Wenn du die Neigung um 3 Winkel willst, dann bestimmst du den Erdbeschleunigungsvektor in der Nullstellung und in jeder Lage neu. Dann berechnest du die Drehung um jeden Winkel relativ zu diesem Null-Erdbeschleunigungsvektor.

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Nun ja, der erste Sensor hat mir die Rohdaten der drei Achsen geliefert. xAcc_raw, yAcc_raw und zAcc_raw. Damit konnte ich die nötigen Winkel berechnen.

    Der Sensor, den ich jetzt teste, liefert mit einen Winkel, der quasi die Drehung um die Z-Achse bestimmt (Azimuth) und einen Winkel, der den Winkel zur Z-Achse bestimmt (Zenith)

    In dieser Wikipediagrafik entsprechend:
    Azimuth (Sensor) = Azimuth (Grafik)
    Zanith (Sensor) = Meridian (Grafik) = 90° - Höhe

    http://upload.wikimedia.org/wikipedi.../9c/HorSys.svg

    Somit kann die Lage eindeutig bestimmt werden, jedoch im dreidimensionalen Raum.
    Für meine Messung benötige ich jedoch nur die Neigung um eine Achse. Sagen wir den Winkel (Grafik) zwischen Z- und X-Achse.
    Um nun eine Kalibrierung vorzunehmen, richte ich den Sensor an bestimmten Messpunkten aus und errechne mir eine virtuelle Ebene, die quasi die 0°-Stellung des Sensors darstellt (man kann so einen Sensor nie 100% in einem Gehäuse ausrichten...daher ist die Kalibrierung nötig).

    Mit dem alten Sensor habe ich nun den Winkel um die unwichtigere Achse ausgewertet und anhand dieser Winkelbestimmung die Relevante Achse mit meiner virtuellen Ebene verrechnet, um eine kalibrierte Neigung zu bekommen.
    Das funktioniert aber nur, wenn ich die Sensorwerte für alle drei Achsen habe.

    Nun überlege ich, wie ich aus dem Azimuth- und dem Zenith-Winkel des neuen Sensors pseudo-Rohdaten berechnen kann, damit ich diese mit meiner bereits existierenden Kalibrierung nutzen kann.

    Sollte das nicht funktionieren, muss ich versuchen die beiden ausgegebenen Winkel auf eine Ebene zu projezieren.
    Da ich den Winkel X-Z haben möchte:
    Stell dir vor, du schaust entlang der Y-Achse und siehst die Z-Achse senkrecht vor die. Der ausgegebene Vektor stellt nun den gesuchten Winkel auf der X-Z-Ebene dar.
    Ich weiß nur noch nicht, wie ich das projezieren kann und wie ich meine Kalibrierung dahin portieren kann.
    Am einfachsten wäre es, wenn ich die Rohdaten des Sensors auslesen könnte.

    Die Grundlage zur Auswertung des Sensors ist der beispielcode von Toradex:
    http://files.toradex.com/Oak/Linux/O...x_0081.tar.bz2
    im Unterordner src gibts die oaklinux.cpp, welche den Sensor erkennt und die Deviceinfos sowie die Daten ausliest.
    Aber hier steig ich noch nicht so ganz durch. Ich muss gestehen, dass ich jetzt etliche Stunden gebraucht habe, den Code überhaupt so zu kompilieren, dass ich Sensorinfos bekommen habe.

    Die Ausgabe des Beispielcodes sieht dann wie folgt aus:
    Code:
    Device Name: Toradex Inclinometer
    Volatile User Device Name: oaktilt
    Persistent User Device Name: oaktilt
    Serial Number: 08490303
    VendorID: 0x1b67 :: ProductID: 0x4 :: Version 0x104
    Number of channels: 4
    Report mode: 0
    Led Mode: 0
    Report rate: 2000
    Sample rate: 2000
    
    Channel 0:
       Name: Frame Number [s]
       Persistent user channel name: oaktilt
       Volatile user channel name: oaktilt
       Data type: 16 bits (unsigned)
       Unit exponent: -3
       Unit s (USB code 0x1001)
    
    Channel 1:
       Name: Acceleration [m/s2]
       Persistent user channel name: Frame Number
       Volatile user channel name: Frame Number
       Data type: 16 bits (unsigned)
       Unit exponent: -3
       Unit m/s2 (USB code 0xe011)
    
    Channel 2:
       Name: Zenith [rad]
       Persistent user channel name: Acceleration
       Volatile user channel name: Acceleration
       Data type: 16 bits (unsigned)
       Unit exponent: -4
       Unit rad (USB code 0x12)
    
    Channel 3:
       Name: Azimuth [rad]
       Persistent user channel name: Angle from Z axis
       Volatile user channel name: Angle from Z axis
       Data type: 16 bits (unsigned)
       Unit exponent: -4
       Unit rad (USB code 0x12)
    
    Frame Number [s]: 2003x10e-3
    Acceleration [m/s2]: 9717x10e-3
    Zenith [rad]: 37x10e-4
    Azimuth [rad]: 31416x10e-4
    
    Frame Number [s]: 1954x10e-3
    Acceleration [m/s2]: 9768x10e-3
    Zenith [rad]: 117x10e-4
    Azimuth [rad]: 32660x10e-4
    
    Frame Number [s]: 1907x10e-3
    Acceleration [m/s2]: 9717x10e-3
    Zenith [rad]: 30x10e-4
    Azimuth [rad]: 25535x10e-4
    Im Endeffekt geht es um die Messwerte, die in den letzten 3 Codeblocks ausgegeben werden:
    Code:
    Zenith [rad]: 30x10e-4
    Azimuth [rad]: 25535x10e-4
    Diese möchte ich umrechnen, um die Drehung um die Y-(oder X-)Achse zu bestimmen.
    Geändert von Cysign (18.03.2013 um 15:15 Uhr)

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    So, ich bin nun endlich auf die Begriffe gestoßen, die mir weiterhelfen. Ich habe sphärische (Kugel-) Koordinaten und möchte diese umrechnen in kartesische Koordinaten

    Dazu habe ich hier die nötige Formel gefunden: http://wwwex.physik.uni-ulm.de/lehre...09/node56.html

    Um die anzuwenden, muss ich zunächst rausfinden, was für ein Datentyp die Werte im C++-Quellcode haben und wie ich diese abgreife.
    Dann werden die Koordinaten in kartesische Koordinaten umgerechnet und normiert.
    Und dann wiederum hab ich endlich die Form der Koordinaten, die ich an meinen bieherigen Programmcode andocken kann.

    Ich mach mich dann mal ran und hoffe, dass das so richtig ist
    Geändert von Cysign (19.03.2013 um 08:53 Uhr)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Accelerometer mit integrierter Gebärdenerkennung
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 10.11.2011, 14:40
  2. Kollisionsdetektor mit Accelerometer??
    Von nortsys im Forum Sensoren / Sensorik
    Antworten: 10
    Letzter Beitrag: 21.01.2011, 11:14
  3. Integer --> String, mit führenden Nullen
    Von maker7 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 13.07.2010, 19:08
  4. 7 Segmentanzeige führende Nullen ausblenden
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 18
    Letzter Beitrag: 23.08.2008, 17:04
  5. 360° Neigung mit Accelerometer
    Von benson im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 15.01.2006, 09:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests