- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: für Arduino / Due: Empfehlung für IMU / I2C Gyro Sensor

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast

    für Arduino / Due: Empfehlung für IMU / I2C Gyro Sensor

    hallo,
    wer hier hat eine gute Empfehlung für eine IMU, die man mit einem Arduino Due und einem Breadboard betreiben kann ?

    Es sollte ein I2C Gyro Sensor sein, der intern durch eigene Filter (Kalman etc.) stabilisiert ist, evtl. durch Verwendung zusätzlicher weiterer Sensoren (wie z.B. Accelerometer und/oder Kompass).

    Der Gyrowert (wenigstens die Winkelgeschwindigkeit - oder möglicherweise auch bereits der Winkel) sollte also stabilisiert und gefiltert ausgegeben werden, indem man einfach I2C Register ausliest (z.B. 3x 16 oder 3x 24 bit für die 3 dim.), ohne dass weitere Berechnungen notwendig sind. Insb. muss der Sensor auch für den Due geeignet sein.

    MPU6050 u.ä. scheiden also aus, weil man zum Einen viel zu viel selber rechnen muss um zu verwertbaren Werten zu kommen, zum anderen oft AVR Timer verwendet werden, was die Sache unglaublich verkompliziert und gerade auch für den Due unbrauchbar macht. Außerdem hat er offenbar keine eingebauten Kalman-Filter, wie es nötig wäre. Ein einfaches selbst ausgelöstes I2C -read für devaddr + regaddr muss also reichen.

    Eine grundsätzliche Idee wäre z.B. dieser Chip als 1D-Gyro hier, leider ist der aber eben 1D und nicht direkt anschließbar und steuerbar mit Arduinos/Breadboards, außerdem scheint er auch UART/SPI zu haben und kein I2C:
    http://www.minfinity.com/eng/page.ph...=1&sub=1&tab=2

    Wer kennt was?
    Geändert von HaWe (06.03.2015 um 16:52 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hi,

    also der MPUxxxx scheidet eigentlich nicht aus (also nicht wegen dem o.g. Argument). Den gibts in der 6xxx Version mit Gyro + Acc und in der 9xxx Version mit Gyro + Acc + Compass.
    Er lässt sich einfach konfigurieren (DLPF, Scaling, etc) und beinhaltet einen DMP, der dir Quaterionen ausgibt.
    Musst mal danach googln, einige Projekte verwenden die DMP Daten.

    Gruß
    Chris

  3. #3
    HaWe
    Gast
    hallo,
    das wäre schön, wenn du Recht hast!
    Was jetzt Quaternionen sind, weiß ich nicht, bei allem was ich aber gefunden habe, muss man aber selber Kalman-Filter programmieren und Timer-Interrupts für I2C verwenden:
    http://playground.arduino.cc/Main/MPU-6050#sketch
    https://github.com/jrowberg/i2cdevli...rduino/MPU6050
    https://github.com/TKJElectronics/Ka...amples/MPU6050

    Ich Suche etwas, wo die Winkelgeschwindigkeit oder sogar der Winkel bereits intern durch Kalman berichtigt sind und man nur noch die gefilterten Werte auslesen muss (z.B. als 16- oder 24-bit Werte)

    Der Cruizcore-IMU legt sie z.B. als (edit: KALMAN-) gefilterte 16-bit-Werte in insg. 2 Bytes ab und man muss die 2 Bytes nur noch zu ints zusammensetzen (LoByte + 8x HiByte): die muss man dann noch über die Zeit integrieren um den Drehwinkel zu erhalten, das ist ntl. ok.

    Ich kenne diesen IMU im Prinzip sogar schon von Lego (als XG1300L): mehr als 2 Register-Bytes auslesen braucht man da also prinzipiell wirklich nicht zu machen, anschließend nur noch eben integrieren. Genau so soll es sein, also keine Riesen-libs etc., wozu auch, wenn die gefilterten Werte schon fertig in den Registern abgelegt sind?
    Geändert von HaWe (06.03.2015 um 16:53 Uhr)

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Der MPUxxxx gibt dir Winkelgeschwindigkeit, Beschleunigung und Temperatur aus (alles mit max. 8kHz), der DMP gibt Quaternionen mit 200Hz aus.
    Quaternionen findet man mit Google beim ersten Treffer, das ist eine andere Art der Darstellung der Orientierung im Raum, weil Euler zb das Problem mit dem Gimbal Lock hat, sie lassen sich aber relativ einfach in Euler-Winkel überführen.
    Winkelgeschwindigkeit, Temperatur und Beschleunigung liegen jeweils als 16Bit vor, ist also auch kein Aufwand das auszulesen! Mit dem DMP kenn ich mich nicht so aus.

  5. #5
    HaWe
    Gast
    für den MPU werden aber irgendwelche seltsamen AVR-I2C-libs mit AVR-IRQs verwendet, die für den Due nicht funktionieren, und ein Kalman ist eben nicht eingebaut, daher sind die abgelegten Werte für Winkelgeschwindigkeit, Temperatur und Beschleunigung höchstens ungefilterte raw-Werte.
    Damit ist es aber keine IMU, die selber bereits intern die Werte Kalman-bereinigt anbietet: darum geht es aber.
    Aus der bereinigten 3D-Winkelgeschwindigkeiten dann in einen 3D-Vektor zu berechnen, ist dann aber doch absolut kein Problem mehr, wozu brauche ich da Quaternionen?
    Andererseits, wenn der Kalman integriert wäre, warum würde sich dann jemand die Mühe machen, ein externes Kalman Programm dafür zu schreiben? ich glaube also kaum, dass der MPUxxxx das bereits integriert hat - darum geht es aber.

    (Der XG1300L bzw. R1350 hat den Kalman aber bereits integriert und legt die gefilterten 1D-Werte dann in 2 Registern ab, fertig, und so etwas Suche ich - nur eben 3D und per I2C.)

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hm, ich habs mir schonmal gedacht, entweder du liest nicht richtig oder bist beratungsresistent!
    Man braucht für den MPU WEDER eine spezielle Library NOCH muss man die Werte (Winkel als Quat.) selbst errechnen, den die WERDEN ausgegeben!!!!!!!

    EDIT:
    Achja, ob da drinnen ein Kalman am Werkeln ist oder nicht, weiß ich nicht, aber es gibt auch noch andere Filter, die sehr gut arbeiten. Außerdem warum sollte man, nur weil man die Daten schon fusioniert bekommt, nicht mal selbst einen Kalman schreiben? So schwierig ist das nicht und stell dir vor: man lernt dabei sogar noch was

  7. #7
    HaWe
    Gast
    Zitat Zitat von HaWe Beitrag anzeigen
    hallo,
    wer hier hat eine gute Empfehlung für eine IMU, die man mit einem Arduino Due und einem Breadboard betreiben kann ?

    Es sollte ein I2C Gyro Sensor sein, der intern durch eigene Filter (Kalman etc.) stabilisiert ist, evtl. durch Verwendung zusätzlicher weiterer Sensoren (wie z.B. Accelerometer und/oder Kompass).

    Der Gyrowert (wenigstens die Winkelgeschwindigkeit - oder möglicherweise auch bereits der Winkel) sollte also stabilisiert und gefiltert ausgegeben werden, indem man einfach I2C Register ausliest (z.B. 3x 16 oder 3x 24 bit für die 3 dim.), ohne dass weitere Berechnungen notwendig sind. Insb. muss der Sensor auch für den Due geeignet sein.

    MPU6050 u.ä. scheiden also aus, weil man zum Einen viel zu viel selber rechnen muss um zu verwertbaren Werten zu kommen, zum anderen oft AVR Timer verwendet werden, was die Sache unglaublich verkompliziert und gerade auch für den Due unbrauchbar macht. Außerdem hat er offenbar keine eingebauten Kalman-Filter, wie es nötig wäre. Ein einfaches selbst ausgelöstes I2C -read für devaddr + regaddr muss also reichen.

    Eine grundsätzliche Idee wäre z.B. dieser Chip als 1D-Gyro hier, leider ist der aber eben 1D und nicht direkt anschließbar und steuerbar mit Arduinos/Breadboards, außerdem scheint er auch UART/SPI zu haben und kein I2C:
    http://www.minfinity.com/eng/page.ph...=1&sub=1&tab=2

    Wer kennt was?
    bitte nur direkt auf diese TOP-Fage antworten. Danke.

  8. #8
    HaWe
    Gast
    ps,

    mich interessieren auch keine Quaternionen, alleine bei der Vorstellung, damit rechnen zu müssen, kriege ich Gehirnkrämpfe.
    Ich brauche einzig und allein die ganz simplen isolierten Dreh-Bewegungsrichtungen in den 3 Raumrichtungen/Ebenen, vergleichbar mit Kompassgraden, nur eben nicht alleine in der Ebene (wie beim Kompass, d.h. um die Hochachse) sondern auch in den Ebenen um die Quer- und um die Längsachse. Das Bezugssystem ist dabei (wie beim Kompass) das irdische (echte, absolute) Raumkoordinatensystem.
    Geändert von HaWe (07.03.2015 um 10:10 Uhr)

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Beim Lesen dieses Threads habe ich mir mehrfach an den Kopf gefasst.
    Daher hier ein weiteres Plädoyer für den MPU6050:
    MPU6050 u.ä. scheiden also aus, weil man zum Einen viel zu viel selber rechnen muss um zu verwertbaren Werten zu kommen,
    - Falsch! Sehr einfach auszulesen. Siehe MPU6050_raw.ino: 1 Befehl -> 3 Winkel, 3 Beschleunigungen!

    zum anderen oft AVR Timer verwendet werden, was die Sache unglaublich verkompliziert und gerade auch für den Due unbrauchbar macht.
    - Falsch! Der MPU6050 hat ein Interrupt-Pin. Wenn Daten da sind, meldet er sich -> Kein Timer nötig.

    Außerdem hat er offenbar keine eingebauten Kalman-Filter, wie es nötig wäre.
    - Stimmt, aber ein LowPassFilter ist integriert, das von 260Hz - 5Hz einstellbar ist.

    Ein Magnetometer ist direkt anschließbar.

    Das Teil wird nicht ohne Grund in unzähligen Anwendungen verwendet.

    PS: Die Daten schon als eine Quaternion vorliegen zu haben, bietet die Möglichkeit, eine Rotation im Raum sehr effizient zu berechnen. Für 3dimensionale Anwendungen ein sehr schönes Feature.

  10. #10
    HaWe
    Gast
    Sisor, ich kann mir nach deinem Post langsam auch an den Kopf fassen -

    welchen Teil von

    "ich will keinen MPU verwenden und Suche daher eine Alternative"

    hast du nicht verstanden?


    Das Gleiche gilt auch für die Quaternionen, und auch für die ganzen libs, die man braucht, um erstmal überhaupt die stabilisierten Quaternionen auslesen zu können, und dann die ganzen Rechenoperationen, um rumrechnen zu müssen, um dann erst die gewünschten durch Sensorfusion und Kalman gefilterten Winkel zu erhalten. Ich will weder #include "I2Cdev.h" noch #include "MPU6050.h" noch #include "MPU6000.h" o.ä. einschließen müssen - wire.h muss ausreichen: Ich kümmere mich selber um meine I2C Steuerung. Im Übrigen war von deinem MPU6050_raw.ino hier noch nie die Rede gewesen, ganz unabhängig von den Monsterlibs, die man auch dafür zusätzlich bräuchte (und einen IRQ-Pin will ich übrigens auch nicht auslesen müssen).


    Welchen Teil von

    "Ich möchte die 3D Winkel direkt auslesen können ohne zusätzliche Libs und ohne erst rumrechnen zu müssen"

    hast du also hier nicht verstanden?


    Also verarsch mich du jetzt nicht auch noch, einer reicht.
    Geändert von HaWe (07.03.2015 um 15:58 Uhr) Grund: wesentliche Kernpunkte farblich hervorgehoben

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. RN-Vorschlag: 3D-Gyro + G-Sensoren (IMU)
    Von Reinald im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 30
    Letzter Beitrag: 17.10.2014, 14:15
  2. Suche i2c Gyro-Sensor
    Von Blimpiander im Forum Sensoren / Sensorik
    Antworten: 26
    Letzter Beitrag: 13.10.2010, 20:23
  3. suche software für IMU-5 Sensor
    Von avoid im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 28.09.2009, 00:39
  4. Empfehlung für einen Sensor
    Von Sergius im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 27.04.2008, 01:28
  5. Antworten: 0
    Letzter Beitrag: 21.11.2005, 14:11

Berechtigungen

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

LiFePO4 Speicher Test