Gyrosensor für absolute Rotation

Hallo Liebe Community,

das ist mein erster Forum Eintrag (jemals), deshalb verzeihe man mir bitte, falls ich die Umgangsart nicht beherrsche: :smiley:

Mein Projekt im ganzen sieht vor, mithilfe von verschiedenen Sensoren (Beschleunigungssensor, Gyrosensor, Magnetometer) die absolute Position im Raum bestimmen kann.
Abgesehen von Ungenauigkeiten der Sensoren, die ich mit Hilfe von Filtern entfernen will, habe ich jedoch das Problem, dass der Gyro bei einer Auslenkung von 90° fast zu 100% replizierbar nur 75° herauskommen. Bei verschiedenen Sensoren das gleiche Ergebnis. Unten findet ihr meinen Code. Die Winkelgeschwindigkeit integriere ich über die Zeit. Auch ist das Ergebnis bei schnellen und langsamen Bewegungen das gleiche. Also ist es nicht die ungenauigkeit des Sensors.

Vielleicht kann mir ja jemand helfen.

Liebe Grüße.

#include <Arduino_LSM6DS3.h>

float rx, ry, rz;

void setup() {
  Serial.begin(9600);
  IMU.begin();

}

void loop() {
  float x, y, z;



  if (IMU.gyroscopeAvailable()) {
    IMU.readGyroscope(x, y, z);


    rx = rx + x * 1 / 104;  //104 Hz Abtastrate
    ry = ry + y * 1 / 104;
    rz = rz + z * 1 / 104;

  }
}

Vermutlich muß man jeden Sensor einzeln kalibrieren. Schon ein kleiner Offset der Winkelgeschwindigkeit kann zu großen Winkelfehlern führen. Das gleiche für Beschleunigungen, Geschwindigkeiten und Wege.

frozenicequeen:

float rx, ry, rz;

float x, y, z;
    IMU.readGyroscope(x, y, z);
    rx = rx + x * 1 / 104;  //104 Hz Abtastrate
    ry = ry + y * 1 / 104;
    rz = rz + z * 1 / 104;

Du arbeitest auf jeder Achse mit 2x float.

Ich würde das schnellstmöglich ändern, indem ich den ausgelesenen Wert in einen anderen Typ schiebe und dann mit dem ganzzahlig weiter rechne.

my_xy_projekt:
Ich würde das schnellstmöglich ändern, indem ich den ausgelesenen Wert in einen anderen Typ schiebe und dann mit dem ganzzahlig weiter rechne.

Wieso? Wenn ich den OP richtig verstehe, geht es nicht um Geschwindigkeit sondern Genauigkeit bzw. Verlässlichkeit.

Gruß

Gregor

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.