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/40680Einfach 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): HierJetzt 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
|
|
|
|
|
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. :-) HierWobei 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) HierSehr 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: 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: // 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=ccea78fb9f6bf8bf8482e04ea307f815oder hier: http://www.varesano.net/blog/fabio/initial-tests-freeimu-v04-and-mpu6050Die 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
|
|
|
|
|
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
|
|
|
|
|
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: /* 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
|
|
|
|
|