Show Posts
Pages: [1] 2 3
1  International / Deutsch / Re: Heaven Star Arduino Quadcopter - Projektvorstellung (In Progress) on: July 05, 2012, 02:39:57 pm
Cool

Ein guter minimalistischer Kopter Code hier als Team zu schreiben wäre doch genau das richtige für dieses Forum.
Da würde ich doch glatt mitmachen.

@Megaionstorm

Benutzt du die Hardware aus dem anderen Thread?
Hast du vor einen guten und einfachen Komplementärfilter mit PID Regler zu schreiben?
So als Dessert wenn alles Funktioniert könnte man ja einen anspruchsvollen Code schreiben der den DMP des MPU6050 benutzen und mit Quaternionen rechnen.
2  International / Deutsch / Re: Neigung messen on: June 12, 2012, 05:29:49 am
Hoi

Als Schweizer würde ich das bestellen:

http://shop.boxtec.ch/product_info.php/cPath/39_74/products_id/40680

Einfach per I2C auslesen, ist viel einfacher als analog.
Die Messgenauigkeit ist einiges genauer als +-1°
Es kommt auch darauf an wie oft du Nullen kannst, und auch auf die Temperaturunterschiede zwischen nullen und messen.

Aber:
Das Funktioniert nur wenn das drehbare Teil absolut stillsteht und absolut keine Vibrationen vorhanden sind.

Der Code selber ist relativ einfach.


3  International / Deutsch / Re: Frage zu ITG3200(Gyro) on: June 11, 2012, 02:43:06 pm
Hallo wikii

Kannst du bitte deinen Code Posten, vor allem wie du die Winkelgeschwindigkeit Integrierst, und du den ACC verrechnest.
Ich denke das mit dem Vorzeichen kann man einfach lösen.
4  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 21, 2012, 01:01:07 pm
So, nun in Winkel (wird natürlich noch weiter aufgeräumt):

Hier

Jetzt kann ich das Ganze mit einem Komplementärfilter vergleichen.

Noch als Info, scheinbar bekommen nur grosse OEM Partner von Invensense die Kompletten Infos bezüglich DMP.
Eigentlich finde ich die Werbung ist somit Bull....!!

Gruss Kay
5  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 20, 2012, 01:26:21 pm
Also mein Kopf ist nun durch, sehe nur noch Sterne.
Muss das Morgen weitermachen.

Razor, du hast wirklich sehr geholfen, vielen Dank dafür.

Gruss Kay

6  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 20, 2012, 01:10:13 pm
So, habe mal nach deinen Vorschlägen grob aufgeräumt.

Es Funktioniert. :-)

Hier

Wobei ich am Ende von Setup die delay(1000) wieder wegnehmen musste, denn damit stockte die ganze Serial Ausgabe, wieso weiss ich nicht.

Vielen Dank Razor, auf diesem Beispiel kann ich nun aufbauen.
Fehlt nur noch die Umrechnung von Bogenmass auf Winkelmass!

Wo kann ich hier ein ein kühles Blondes rüberschieben?

Gruss Kay
7  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 20, 2012, 11:18:46 am
Da hier keiner eine Glaskugel hat wäre es gut wenn Du Deinen vollständigen Code postest.



Das ist der vollständige Code, einfach ein MPU6050 Breadboard an den Arduino anschliessen, die Bibliothek  ist in meinem Post 1 , und nun kannst du das Serial Fenster aufmachen  und die Daten anschauen.

Man sieht aber auch ohne MPU6050 wie ich Razor's Code Implementiert habe, ob nun richtig oder falsch.
Das komische Ausgeben des Print hat nichts mit dem Code von Razor zu tun, nur weiss ich nicht wieso die Funktion Print etwas anderes ausgibt.

Du musst nur im Code schauen das ich als *txt verlinkt habe, falls es dich den wirklich Interessiert.

8  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 20, 2012, 10:20:07 am
Danke für dein Zeitmessungscode, habe es nun (glaub ich) gerafft wie das mit den Werten übergeben geht.

Habe nun versucht das im Beispielsketch das Quaternion ausgibt zu implementieren.
Hier der Code als *txt (ist zu gross für das "code" hier im Forum)

Hier

Sehr komisch ist, das die Ausgabe scheinbar nicht das ist was ich bei Print geschrieben habe, selbst das "Hallo" das ich testhalber im ersten Print geschrieben habe erscheint nicht, stattdessen erscheint im Serial Fenster dies:

"ection to 0...1.54ion to 0...0.78ion to 0...0.11"

Die Werte ändern sich auch wenn ich den MPU6050 schwenke.

Was läuft da falsch?



9  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 20, 2012, 08:01:10 am
Vielen vielen Dank Razor

Zuerst einmal bin ich seit ein paar Stunden dabei das Ganze zu verstehen.
Um dich nicht zu enttäuschen wollte ich ein Beispiel mit deinem Code zum Laufen bringen.
Nun, momentan scheitere ich scheinbar schon an der Programmstruktur.
In den diversen Sketche die ich bis jetzt Programmiert habe, habe ich solche Wertübergabe wie du im ersten Satz noch nicht gebraucht, da ich das so nicht kenne.
Dein Code:
Code:
void quaternion2euler(float* q0,float* q1,float* q2, float* q3,float* phi,float* theta,float* psi)

Sieht so aus als man da gleichzeitig die Quaternion Werte übergibt (q0, q1, q2, q3) aber gleichzeitig die Winkel phi, theta, psi ausliesst.

Ich habe ein kleines Beispiel geschrieben was ich bis jetzt kenne um Werte zu übergeben und zurück lesen:
Code:
//  Test Werte an einem Funktionsblock zu übergeben
//  Test Werte an einem Funktionsblock zu übergeben und danach zurück geben zu lassen

float wert;

void setup()
{
Serial.begin(38400);
}

void loop()
{
 quaternion2euler(-10.23, 55.11, 88.88, 99.99);  // 4 Werte an Funktionsblock "quaternion2euler" übergeben
 wert = rueckgeben(4.5);                         // Wert an Funktionsblock "rückgeben" senden (4.5) und dannach zurück lesen
 Serial.print ("      rueckgegebener Wert  ");  
 Serial.println (wert);                          // Wert von Block "rückgeben" ausdrucken
}

void quaternion2euler(float q0, float q1, float q2, float q3){ // Funktionsblock "quaternion2euler"
 Serial.print ("      Q0  ");                                  // Werte Q0,Q1,Q2,Q3 ausdrucken
  Serial.print (q0);
  Serial.print ("      Q1  ");
  Serial.print (q1);
  Serial.print ("      Q2  ");
  Serial.print (q2);
  Serial.print ("      Q3  ");
  Serial.print (q3);
  
  
  }
  
  float rueckgeben (float x){            // Funktionsblock "rückgeben"
    float ergebnis = x*2;
    return ergebnis;
  }

Was ist mein Denkfehler, wie geht das bei deiner Zeile mit dem übergeben und auslesen?

Das mit dem Pointer und umrechnen bin ich erst noch dabei zu verstehen, ich brauche Zeit, bin aber dabei.

@Udo klein

Diverse Leute wie ich sind dabei bei Invensense die nötigen Infos zu entlocken, momentan ist da nichts zu machen.
Schau mal Hier (leider muss man sich da anmelden):

http://www.invensense.com/developers/forum/viewforum.php?f=3&sid=ccea78fb9f6bf8bf8482e04ea307f815

oder hier:
http://www.varesano.net/blog/fabio/initial-tests-freeimu-v04-and-mpu6050

Die zwei Spezialisten die die beiden Bibliotheken geschrieben haben wissen zur Zeit nicht wie es geht!

Gruss Kay
10  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 19, 2012, 04:49:12 pm
Danke für das Angebot
Ich habe kürzlich  Hier (weit unten) in der Art etwas gefunden.
Ist für mich momentan harter Stoff, ich habe die Logik dahinter noch nicht verstanden.
Wenn du ein Code machen willst da du die Übung brauchen kannst finde ich gut, da ich aber gerne verstehe was da abgeht könnte es sein das ich diesbezüglich sicher noch Fragen haben werde, wenn ich dein Code durchgehe um zu lernen.

Besten Dank

Gruss Kay
11  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 19, 2012, 10:52:06 am
Habe ich schon nachgeschaut

Ich glaube das einzige was man da brauchen könnte ist die Register Map and Descriptions:

http://www.invensense.com/mems/gyro/documents/RM-MPU-6000A.pdf

Eventuell sieht man da wie man was auslesen könnte.
Leider ist das für mich noch zu hoch, als das ich mich da zurechtfinden kann.


Gruss Kay
12  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 18, 2012, 04:03:43 am

Es ist mir unklar was Du meinst. Was wären Deiner Meinung nach die "fusionierten" Daten?

Mit Fusionierten Daten meine ich das was man sonst selber im Atmega machen muss(te).


Ein Gyro liefert sehr gute Winkelgeschwindigkeiten, wenn man diese mit der Zeit Integriert auch die absoluten Winkel.
Leider Triftet so ein Gyro sehr, nach ein paar Sekunden stimmt das Integrieren nicht mehr.
Um einen Absoluten Winkel zu bekommen muss man den Trift der Gyros mit einem Beschleunigungssensor (ACC) raus rechnen.
Ein ACC gibt zwar auch Absolute aus, leider stimmen die nur wenn sich der Sensor in Ruhe befindet.
Man nutzt also von beiden Sensoren (Gyro, ACC) die Daten.

Der ACC wird Tiefbassgefiltert, der Gyro mit einem Hochpass, und mit verschiedener Gewichtung zusammen verrechnet, im Prinzip ist das ein Komplementärfilter.
Manche benutzen zur Fusion auch ein Kalmanfilter, bringt bei einem kleinen Atmega aber nicht bessere Ergebnisse.

Da nun der MPU6050 einen eigenen kleinen Rechner eingebaut hat, und die Daten von ACC und Gyro eigenständig Fusioniert (das nennt sich im Chip DMP, Digital Motion Processor) würde ich gerne an diese Daten ran.

In meinem ersten Post in diesem Thread habe ich zu einer Bibliothek und einem Beispielsketch gelinkt, da Funktioniert das auslesen der Fusionierte Daten vom Chip, leider aber nur als Quaternion.
Nun sind wir wieder am Anfang mit drei Möglichkeiten:

Ich rechne die Quaternion in Euler Winkel um. (Elegant ist was anderes)
Ich finde einen Weg die DMP Daten als Euler Winkel direkt auszulesen (Was laut Werbung auch geht)
Ich benutze einen Komplementärfilter (dafür habe ich den MPU6050 nicht gekauft)

Ist das besser beschrieben?

ich hoffe ja immer noch das es eine elegante Lösung gibt.

Gruss Kay

13  International / Deutsch / Re: Quaternion zu EulerWinkel umrechnen on: May 17, 2012, 07:10:43 am
Der ACC gibt im Beispiel oben nur "seine" Werte wieder, die Winkelgeschwindigkeit der Gyros werden nicht berücksichtigt.
Wiederum sind die Gyro Werte ohne Berücksichtigung des ACC.
Also als ob man zwei einzelne Sensoren ausliest.

Was ich versuche auszulesen sind die Fusionierte Daten, in Euler Winkel.

Ich hoffe Ihr versteht was ich meine.

Gruss Kay
14  International / Deutsch / Re: Einsteigerfrage Example "Blink" on: May 16, 2012, 12:25:17 pm
@Ketchup: Hast du den ersten Blink-Sketch unter Windows oder unter einem Linux ausprobiert?

In Windows.
Linux habe ich nicht zum Testen.

Kay
15  International / Deutsch / Re: Einsteigerfrage Example "Blink" on: May 16, 2012, 12:04:02 pm
mkl0815 hat recht.

Der erste Sketch Funktioniert, habe den Code 1:1 kopiert und kurz auf einen Uno V3 gespielt, die interne LED (Pin 13) blinkt.
Lass Dich nicht von solchen Dingen runterziehen, versuchs doch nochmal.

PS: Dein zweiter Sketch schreibst du besser so, dann stimmt auch der Text zu der LED:

Code:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {                
  Serial.begin(9600);
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);    
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  Serial.println("Eingeschaltet");  
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  Serial.println("Ausgeschaltet");  
  delay(1000);              // wait for a second
}

:-)

Gruss Kay
Pages: [1] 2 3