MPU-6050 Daten auslesen mit Interrupt

Hallo!

Ich bin Einsteiger in Sachen Arduino, und würde gerne für einen Quadrokopter den MPU-6050, mithilfe des MPU6050-Libarys auslesen.
Bei dem Libary gibt es zwei Beispiel-Codes (“MPU6050_raw” und “MPU6050_DMP6”). Das “_raw”-Beispiel habe ich verstanden, das andere aber nicht, insbesondere:

  1. Die Verschiedenen Output-Möglichkeiten (also was was liefert)
  2. Wieso das von Gimbal-Lock betroffen sein soll (der Sensor bewegt sich ja mit, also auch alle Achsen)
  3. Wo die Zeile ist die den Interrupt zuordnet

So wie ich das Verstanden habe wird da ein Interrupt erzeugt wenn neue Daten vom Sensor da sind, und die Daten werden dann in der loop()-Funktion ausgelesen, oder?

Für den Kopter bräuchte ich optimalerweise nicht nur die Drehrate, sondern auch noch die Lage. Kann man die dierekt aus der MPU-6050 holen oder muss man die erst selbst berechnen. Wie ginge das dann am genauesten? (Ich benutze einen Arduino Uno und habe noch einen freien Interrupt-Pin)

Es wäre super wenn mir den Code jemand erklären könnte!
Die Englischen Kommentare verstehe ich leider nicht immer ganz, bzw. kann damit nichts anfangen.

Hier ist er (leider zu lang um ihn hier rein zu schreiben):
https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/Examples/MPU6050_DMP6/MPU6050_DMP6.ino

Vielen Dank schonmal im Voraus!