Hallo liebe Community,
Erstmal zu meinem Wissenstand,
ich hab Grundkenntnisse in C und im Zusammenhang damit grundlegende
Erfahrung mit Sensoren.
D.h. Ich habe mal leds Blinken lassen, 7Seg Anzeigen- und LCDs
beschriftet, Temperaur Sensoren ausgelesen und den ein oder anderen
Taster verwendet. Allerdings stehe ich momentan in meinem Praktikum vor
einer Aufgabe die mich zur weißglut bringt.
Und damit kommen wir zu meinem Problem: Ich habe ein hübsches kleines
9DOF Razor IMU (Arduino). Ich würde jetzt gerne eine Beschleunigung
auslesen. Das Heisst für mich, wnn ich das Board bewege soll die
Beschleunigung zu sehen sein un wenn es wieder da liegt soll der Wert
wieder Richtung 0 gehen.
Ich bin mir nicht sicher ob mein Grundverständnis für
Beschleunigungssensoren richtig ist denn momentan sehe ich nur Werte die
der jeweiligen Rotation der Achse ensprechen(Eine Test Firmware ist
aufgespielt).
Mir geht es hier jetzt garnicht um Codebeispiele oder ähnliches, eher
darum das ich eine Vorstellung habe wie es funktionieren sollte.
Muss ich den Beschleunigungssensor mit zb Gyro in irgendeiner Art
"koppeln" oder ... ich bin einfach ein bisschen verzweifelt....
Ich hoffe ihr lest das hier auch wenn es recht viel Text ist und ich
hoffe, dass ich mein Problem verständlich formuliert habe.
Viele Grüße
jlange
ps.: ich bin auch froh über Stichwörte mit denen ich über Google weiter
komme.
pps/pss.: Das alles soll später mal zur Positionsbestimmung dienen
ähnlich wie hier http://www.youtube.com/watch?v=6ijArKE8vKU (ich hoffe
links sind erlaubt.)
> denn momentan sehe ich nur Werte die> der jeweiligen Rotation der Achse ensprechen
bist du sicher, dass du da nicht den Gyro ausliest? Der Gyro gibt dir
Drehraten zurück.
Gruß
ja soweit die Test Firmware nicht völliger mist ist Sollte es nicht das
gyroskop sein... Das gibt nochmal Andere Werte.
Und das ist ja auch was ich nicht verstehe, ich dachte der
Beschleunigungs Sensor sollte standartmäßig Werte zurück geben wie ich
sie haben möchte.
Vielleicht muss ich in den sauren Apfel beissen und es mal selber
Programmieren...
Ps.: nicht dass es zu verwirrungen kommt ich hab mich hier angemeldet =)
Viele Grüße
also nur für dein Verstädnnis
Beschleunigungssensor (G in m/s²) X Y Z ... im ideal Fall 0 0 -1G
wenn du jetzt in die jeweilige Achse wackelst siehst du den Ausschlag
der einwirkenden Karft. (-1g weil auf die Richtung Boden
gerichtete/entgegengerichtete Achse die Erdbschleunigung von 9,81m/sec
wirkt)
wenn du das Board seitlich hinstellst hast du dann 0 -1G 0
wenn du es schräg hinstellst dann wirkt die Kraft auf mehreren Achsen
und du musst dir ein Raumzeigermodell vorstellen.
Gyroskope messen die Drehrahte (DPS °/sec - degree per second)... also
die Geschwindigkeit der Drehung.
wenn du jetzt das Board kurz umd 90 drehst und dann stehen bleibst, dann
gibts ein ausschlag von bis zu 2000°/s abhängig von deiner in dieser
Bewegung ausgeführten Drehgeschwindgkeit.
ROLL PITCH und YAW sind die Winkel des Körpers, die errechnest du mit
hilfe eines AHRS Algorithmus der entweder das Magnetometer einbezieht
oder nicht.
Was du beschreibst:
>Das Heisst für mich, wnn ich das Board bewege soll die>Beschleunigung zu sehen sein un wenn es wieder da liegt soll der Wert>wieder Richtung 0 gehen.
ist wenn du das board in die hand nimmst und wieder hinlegst so wie es
war, dann müsstee der ausgangszustand normalerweise wieder dargestellt
werden.
Wenn du es aber immernoch in der hand hälst, dann ist ja logisch das die
G-Kraft der Erde immer noch auf die Achsen einwirkt.
wenn du nicht die statische Erdbeschleunigung in deiner Messung haben
willst, kannst du diese rausrechnen (leichte Vektorrechnung). Dann misst
du nur die relative Beschleunigung.
PS. ich hab noch ein razor 9dof Board das ich gerne verkaufen würde :D
www.ccass.h-da.de (ein institut für Inertialnavigation , speziell für
das was du da vor hast. Die helfen dir sicherlich auch kostenlos weiter
bei fragen.) ... ich arbeite ja da :D
schau:
http://www.youtube.com/watch?v=v2h0ySEWCy0
Sven ...
einfach danke scon mal =) deine Definitionen waren super und haben mir
auf jeden fall geholfen. Werd mich morgen mal auf der Seite umschaun =)
vielen dank
edit: eine frage fällt mir da grad noch ein...
in der Arduino Entwicklungsumgebung kann man ja nur .ino und pde oder so
ähnlich öffnen ....
aber es gibt ein par beispiele die sind in .c datein ... wie bring ich
die denn auf das board.....
The board comes programmed with the 8MHz Arduino bootloader (stk500v1)
2
and some example firmware that demos the outputs of all the sensors. Simply
3
connect to the serial TX and RX pins with a 3.3V FTDI Basic Breakout, open a
4
terminal program to 57600bps and a menu will guide you through testing the
5
sensors. You can use the Arduino IDE to program your code onto the 9DOF, just
6
select the 'Arduino Pro or Pro Mini (3.3v, 8mhz) w/ATmega328' as your board.
das ist dass einzige was mir sagen könnte wie das geht allerdings weiß
ichn icht, was sie mit dem terminal programm meinen .... also doch
vielleicht die cmd aber ich weiß nicht wie ich das dann hoch laden
kann....
>... im ideal Fall 0 0 -1G
Wir haben hier mal mit einem I²C Beschleunigungssensor gespielt. Der hat
aber nur auf "echte" Beschleunigungen reagiert. Also in Ruhe auf dem
Tisch:
0, 0, 0 und nicht 0, 0, -1. Irgendwie stand der auf Delta.
dieser war dann wohl g-kompensiert also die erdbeschleunigung
rausgerechnet.
Das macht man folgendermaßen (vereinfacht erklärt)
Man hat eine G-Matrix 3x3
es wird ein Vektor errechnet welcher die einwirkende G-Kraft auf die
einzelnen Achsen darstellt also ohne relativbeschl..
bspw:
0 0 1
0 1 0
1 0 0
Dann eine zweite Matrix wo die Messwerte reinkommen.
G G G
G G G
G G G
Dann wird der Messwertmatrix die Erdbeschleunigungsmatrix rausgerechnet,
so erhält man dann im groben die G-Kompensierte Matrix.
Ich kann für das Tehema folgende Literatur empfehlen :
1) Der Vater der inertial-sensorik:
http://www.verlag.fraunhofer.de/bookshop/artikel.jsp?v=220250
In dem buch sind alle Algorithmen und verfahrensweisen einfach erklärt!
Auch wenn es sich kompliziert anhört :) ... Ein muss für jeden der eine
IMU bauen will und den Algorithmus schreiben möchte samt Kompensierung,
Offset etc...
2) auch ganz cool, einfacher erklärter systemaufbau:
http://www.diplom.de/Entwicklung-Implementierung-Softwareplattform-referenzlose-Low-cost-Indoornavigation-Basis-modularen-Systemarchitektur/16193.html
so ich hab mir jetzt mal nen schlitte gebau um die beschleunigung besser
testen zu können und ich glaube ich habs endlich hinbekommen =)
allerdings wir meine erdbeschleunigung leider mit um die 200 angezeigt
aber das liegt momentan wohl daran dass das die rohdaten sind...
damit bin ich so vorerst zufrieden =)
Damit würde ich hier vorerst schlussmachen und vielleicht auf ein ganz
neues Problem kommen....
Bei meinem Gyroskop veränderns sich die werte nicht egal wie schnell
oder langsam ich es auf nur jede erdenkliche art bewege die werte
bleiben gleich...
gibt es das problem vielleicht heufiger?
... gibts ne möglichkeit das zu testen xD?
Also beim gyro bekomm ich immer diesenoutput:
x= -11823, y= -11823, z= -11823
egal was ich mache...
edit: ok habe grade die selftest funktion gefunden... irgendwas stimmt
mit dem Gyro nicht... muss jetzt mal schaun ob ich rausfinden was...
ps.: hier hab ich mal die werte die ich jeweils bei meinem
Beschleunigungssensor bekomme (in den 3 positionen)
x= 22, y= -28, z= 196
x= -1, y=-277, z= -9
x=-271, y= -13, z= -41
das sieht eigendlich schon gut aus.
Hmm in ruhe bekommst du diese beschleunigungswerte?
Kann es sein das du die Offsettwerte geändert hast?
Accel_X, Accel_y, Accel_z, Gyro_X, Gyro_Y, Gryo_Z
-161 141 1108 -2 5 -3
-172 151 1087 0 3 -3
-156 151 1087 0 3 -3
-156 151 1116 -1 4 -3
-166 134 1116 -2 4 -2
schau mal so siehts bei mir aus.
also das vordere ist dein Beschleunigungssensor?
off set ist nicht in meinem programm... hab jetzt ein bisschen gesucht.
Das heisst wohl das es auch nicht verändert wurde...
das schöne daran das ich in einem Praktikum bin ist, bein chef hat mir
heute ein neues Spielzeug bestellt ArduIMU + V3 hat zwar nur 6dof aber
ist für meine Vorhaben ja völlig ausreichend.
wahrscheinlich melde ich mich dann nochmal ...
der kleine aber feine unterschied sind die 200 dollar mehr die das nette
teil kostet ... es geht hier ja erst mal um nen prototyp bei dem
geschwindigkeit und hohe genauigkeit usw erstmal eine nicht so große
rolle spielen....