Forum: Mikrocontroller und Digitale Elektronik Neigungswinkel während Beschleunigung


von Mirco Gemmeke (Gast)


Lesenswert?

Habe mir als erstes Projekt eine Anzeige für das Motorrad ausgesucht die 
mir Roll und Pitch Winkel ausgibt. Also für Schräglagen- und 
Wheeliewinkel.

Nun stellt sich das Ganze doch als ultra kompliziert heraus und ich bin 
kurz davor das ganze sein zu lassen........... Sad

Habe das ganze mit dem MPU6050 halbwegs hinbekommen allerdings sehr 
ungenau über die Integration der Winkelgeschwindigkeit vom Gyroskop. Da 
das ganze aber schon ne Stunde genau laufen soll war das nix weil der 
Drift schon sehr sehr sehr groß ist (Bei mir zumindest).

JETZT DIE EIGENTLICH FRAGE:

Gibt es wirklich keinen Sensor auf diesem Planeten der mir den Roll und 
Pitch Angle/Neigung um X und Y Achse WÄHREND EINER BESCHLEUNIGUNG 
ausgeben kann?

Muss das immer über IMU geschehen? Wenn ja hat jemand vlt ein komplettes 
Beispiel wie das mit einem MPU6050 genau gemacht wird? Bei mir Driftet 
das ganze viel zu stark. Und für die den Wheeliewinkel weiß ich 
überhaupt nicht wie ich das ganze machen soll...

Wie wird das denn bei Dronen gemacht? Die Beschleunigen doch noch viel 
stärker und brauchen doch auch diese Daten oder nicht? Verstehe nicht 
warum es dazu keine Beispiele gibt ... Versuche schon seit 5 Tagen das 
Problem zu lösen und drehe bald durch :D

Vielen Dank!

Mirco

von Klaus (Gast)


Lesenswert?

Dein Code?

von MiMa (Gast)


Lesenswert?

Hallo,

den Winkel misst man auch nicht über die Integration von dem Gyro 
sondern über die (Erd)beschleunigungsmessung. Aus den drei 
Beschleunigungen kann man mit Winkelfunktionen den Winkel von dem 
Motorrad berechnen.

Dieser wird jedoch durch das Beschleunigen und Abbremsen von dem 
Motorrad verfälscht. Das kann man jedoch mehr oder weniger gut 
kompensieren indem man Gyro&Beschleunigungswerte verwendet und diese in 
einem Kalman-Filter fusioniert.

Klingt kompliziert? -> gibt eine fertige Arduino Library dazu :-)

von Mirco Gemmeke (Gast)


Lesenswert?


von Mirco Gemmeke (Gast)


Lesenswert?

Meinen Code brauche ich glaube ich nicht hochladen :D. Wie gesagt ist 
wirklich sehr ungenau...

Wo finde ich solche Libarys den? Ich benutze übrigens einen Arduino

von Der Andere (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> Nun stellt sich das Ganze doch als ultra kompliziert heraus und ich bin
> kurz davor das ganze sein zu lassen........... Sad

Ja sad, Physik lässt sich nicht überlisten
Siehe:
https://de.wikipedia.org/wiki/%C3%84quivalenzprinzip_(Physik)

von MiMa (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> Wo finde ich solche Libarys den? Ich benutze übrigens einen Arduino

https://github.com/TKJElectronics/KalmanFilter/tree/master/examples/MPU6050

von Mirco Gemmeke (Gast)


Lesenswert?

TOP DANKE MiMa

und in dem Sketch ist dann der Karma Filter angewendet und das ganze 
sollte dann auch während der Beschleunigung genau sein?

von Mirco Gemmeke (Gast)


Lesenswert?

Kann es sein das ich da noch irgendwas einbinden muss? Eine die 
Kalman.lib hab ich aber er sagt das er i2C.write nicht kennt. Im 
gleichen Ordner "Examples" findet man auch noch das hier


https://github.com/TKJElectronics/KalmanFilter/blob/master/examples/MPU6050/I2C.ino

Muss ich das irgendwie einbinden?

von Wolfgang (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> und in dem Sketch ist dann der Karma Filter angewendet ...

Mit Karma Filter kommst du da nicht weiter.
https://de.wikipedia.org/wiki/Karma_(Begriffskl%C3%A4rung)

Was du suchst, ist ein Filter, dass maßgeblich von Rudolf E. Kálmán 
entwickelt wurde.
https://de.wikipedia.org/wiki/Kalman-Filter

Das Prinzip der Sensorfusion wird hier erklärt (Part 2):
http://www.brokking.net/imu.html

von MiMa (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> und in dem Sketch ist dann der Karma Filter angewendet und das ganze
> sollte dann auch während der Beschleunigung genau sein?

Du hast nie gesagt wie genau es sein muss ;-)
Das kann ich dir leider nicht sagen. Musst du einfach probieren. Das 
Programm ist ja in kurzer Zeit geschrieben und eine Runde fahren zählt 
ja nicht als Arbeit


Wolfgang schrieb:
> Mit Karma Filter kommst du da nicht weiter.

Mit gutem Karma findet er auch Leute in dem Forum hier die ihm helfen.

von A. S. (Gast)


Lesenswert?

So rein klassisch, wenn man grade auf dem Motorrad sitzt: mit y> 0 
beschleunigen, z quer zur Fahrtrichtung, X= 1g

z bleibt immer 0, sonst würde man umkippen.

X vergrößert sich bei Kurvenfahrten

Beim beschleunigen/bremsen ist x 1g und y > bzw< 0.

Bergauf und bergab ist y auch > bzw < 0, aber x entsprechend kleiner, 
die Quadrate in Summe 1.

So kann man indirekt diese Fälle unterscheiden.

Beschleunigungen am Berg sehen jedoch teilweise ähnlich aus ... Und wenn 
ich die Maschine neige (mit mir als Gegengewicht), z.b. bei 
Geradeausfahrt, dann muss ich z auch berücksichtigen ...

von Purzel H. (hacky)


Lesenswert?

Ein Winkelsensor, der nicht auf einer IMU beruht ?

Ja, das Winkelmass. Also Stuetzrollen (oder so) flexibel montieren, und 
den Winkel messen...

von RP6conrad (Gast)


Lesenswert?

Sensor fusion ist das Stichwort ! Mit den gyro haben sie schon die 
Basis, nur das driften muss du noch kompensieren. Das geht einfach ueber 
die acc-sensoren : arctg(acc-x,acc-y) gibt auch die Neigungswinkel aus. 
Diese wird naturlich beinflusst durch der Beschleunigung, aber die 
Mittelwerte ueber langere Zeit ist richtig ! Beide zusammen gibt dan die 
Losung :
Neigungswinkel = 0.99*(Gyro-Integration)+0.01 Arctg(Acc-x,Acc-y)
Grosse von 0.99/0.01 bestimmt die Menge von driftcompensation.
Wie immer steckt den Teufel in detail : gans wichtig ist die 
offset-compensation : Beim Stillstand gibt den gyro immer noch eine 
offset an. Diese muss vermessen werden und compensiert. Auch die acc hat 
einen offset, diese muss auch kompensiert werden.

von Purzel H. (hacky)


Lesenswert?

Eigentlich ist die Neigung doch schon ueber Geradeausgeschwindigkeit, 
Geradeausbeschleuningung und Kurvenradius gegeben ..

von Bernd K. (prof7bit)


Lesenswert?

Jetzt ist G. schrieb:
> Eigentlich ist die Neigung doch schon ueber Geradeausgeschwindigkeit,
> Geradeausbeschleuningung und Kurvenradius gegeben ..

Aber nicht der Pitch-Winkel. Wie genau man den Kurvenradius messen kann 
oder müßte anhand der Stellung des Lenkers kann ich jetzt aber schlecht 
abschätzen, vielleicht hilft da aber auch ein Kompass.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

RP6conrad schrieb:
> Acc-y

Mit Y meinst Du sicher quer zur Fahrtrichtung. Wann sollte da jemals 
eine Beschleunigung auftreten bei einem Motorrad? Es würde umkippen. 
Allenfalls wenn der Fahrer ein Gegengewicht aufbaut, also sich seitlich 
ans Motorrad klammert oder extrem seitlich überbeugt. Das kommt aber als 
Messunsicherheit hinzu und ist kein Indiz für irgendwas.

von Rolf M. (rmagnus)


Lesenswert?

Jetzt ist G. schrieb:
> Ja, das Winkelmass. Also Stuetzrollen (oder so) flexibel montieren, und
> den Winkel messen...

Ist aber ein anderer Winkel. Darüber wurde auch noch gar nicht 
gesprochen: Soll der Winkel zur Straße oder zur Horizontalen gemessen 
werden?
Vielleicht ginge statt den Stützrädern ein geschickt angebrachter 
Laser-Entfernungsmesser auf jeder Seite.

Ich kann mich noch daran erinnern, dass es genau so eine Diskusson hier 
schon mal gab. War glaub diese:
Beitrag "Schräglagensensor für's Motorrad: Wie funktioniert so etwas?"

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Man könnte Kameras anbringen und versuchen den Horizont zu erkennen 
und/oder aus Bauwerken horizontale und vertikale Linien zu extrahieren 
(eine Häufung von Linien die alle parallel oder orthogonal zueinander 
verlaufen).

Das wird allerdings schwierig im hügeligen Gelände, aber dann könnte man 
immer noch versuchen Sonne, Mond und Sterne anzupeilen oder bei 
Bewölkung die Richtung mehrere bekannter geostationärer Satelliten.

: Bearbeitet durch User
von Maxx (Gast)


Lesenswert?

Wir schreiben hier über Wheelies: Fahren auf dem Hinterrad.

Kurze Anmerkungen dazu:
# Längsachse des Fahrzeugs != Achse in Fahrtrichtung
# Querachse des Fahrzeugs repäsentiert nicht (allein) die 
Zentripetalkräfte.
# Sagitalachse des Fahrzeugs zeigt auch ohne Umkippen einen Wert != 0 
an, da Zentripetalkräfte auch hier einwirken.
# "Kippen" des Motorrad mit gleichzeitigem Ausgleich durch andere Kräfte 
(z.B. Gewichtsverlagerung) ist ein normaler Betriebszustand beim Wheelie

von Guido Körber (Gast)


Lesenswert?

Tja, wer misst misst Mist…

Metrologie (nicht Meteorologie) ist ein spannender Bereich. Ist halt 
immer alles nicht so einfach. Messen kann man immer nur die 
physikalischen Größen, die einem zur Verfügung stehen und die decken 
sich nicht unbedingt mit der Begriffswelt unseres Alltags.

Also entweder man stellt einen äusseren Bezugsrahmen her zu dem man 
relativ misst, oder man lebt mit den Kräften die bei einer inertialen 
Messung zur Verfügung stehen. Abhängig von der Auflösung kann einem da 
dann auch die Korioliskraft durch die Erddrehung den Messwert versauen…

von MaWin (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> Gibt es wirklich keinen Sensor auf diesem Planeten der mir den Roll und
> Pitch Angle/Neigung um X und Y Achse WÄHREND EINER BESCHLEUNIGUNG
> ausgeben kann?

Na ja, 2 (Laserintertial)gyroskope aka Kreiselkompasse. Muss man nur 
gelegentlich nullen.
Ein normales Gyro (Erd)Beschleunigungsmesser jedenfalls nicht.

von Jan K. (jan_k)


Lesenswert?

Mirco Gemmeke schrieb:
> Gibt es wirklich keinen Sensor auf diesem Planeten der mir den Roll und
> Pitch Angle/Neigung um X und Y Achse WÄHREND EINER BESCHLEUNIGUNG
> ausgeben kann?

Gibt es. Aber nur als IMU mit GPS. In dem Fall hast du nämlich eine 
globale Informationsquelle. Zb die Geradeausgeschwindigkeit und 
Position. In dem Fall macht Dynamik tatsächlich die Winkelbestimmung 
besser. Kostet aber, geht bei 1000 Euro los, zb bei xsens.

von RP6conrad (Gast)


Lesenswert?

Kannst du auch selbst bastelen, mit ein MPU6050 und ein GPS module. 
Kostet < 25€. Aber hier auch gibt ein Problem : diese GPS hat auch ein 
relatif grosse "lag". Mit eine Ublox M8n habe ich ca 400 ms "lag" 
vermessen, selbst bei eine output auf 10 Hz ! Den "lag" erkannt men 
durch die Zeitverschiebung von IMU heading und GPS-heading.
GPS / IMU Versuchen : https://www.youtube.com/watch?v=5vCAOM6f5UE

von Anderer Frank (Gast)


Lesenswert?

Ich werfe Mal den BNO055 in den Raum da ich den vor kurzem Mal gesehen 
habe. Da übernimmt der M0 auf dem Chip die Fusionierung für dich. So wie 
ich das lese bekommt man da auch die bereinigten Winkel.

Ansonsten wurde ja Kalman schon genannt. Direction Cousine Matrix ist 
auch noch ein Stichwort.

von Rolf M. (rmagnus)


Lesenswert?

RP6conrad schrieb:
> Den "lag" erkannt men durch die Zeitverschiebung von IMU heading und GPS-
> heading.

Das GPS-Heading wird immer eine Verzögerung haben, weil es ja gar nicht 
direkt gemessen wird, sondern nur aus der Differenz der aktuellen 
Position und früher gemessenen Positionen berechnet werden kann. Damit 
ist das Heading immer erstens ein veralteter Wert und zweitens kein 
Momentanwert, sondern ein Durchschnitt über eine gewisse Zeit.

von Jan K. (jan_k)


Lesenswert?

Klar kann man das selbst bauen, aber das Zustandsraummodell mit GPS ist 
nicht mehr trivial und die Fusion wird sicher nicht mehr durch 
Komplementärfilter gemacht.

Fürs laggende GPS Signal braucht man einen time delayed Kalman Filter, 
das aktuelle heading wird eh über den Gyro berechnet und ist somit mehr 
oder weniger akkurat.

von Rolf M. (rmagnus)


Lesenswert?

Jan K. schrieb:
> das aktuelle heading wird eh über den Gyro berechnet

Oder über einen Kompass.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Einfach eine Schippe beliebige alte Bauelemente in den Ansaugtrakt 
schütten. Nach einer kurzen Testfahrt ist die Beschleunigung und der 
Wheelie-Winkel (hahahaha, wer will den so'n Scheiß wissen) gleich Null 
und die Berechnung wird viel einfacher.

von Wolfgang (Gast)


Lesenswert?

RP6conrad schrieb:
> Aber hier auch gibt ein Problem : diese GPS hat auch ein
> relatif grosse "lag". Mit eine Ublox M8n habe ich ca 400 ms "lag"
> vermessen, selbst bei eine output auf 10 Hz !

Das dynamische Verhalten hängt natürlich vom beim Navigation Mode 
eingestellten dynamischen Modell ab.
Mit welcher Einstellung hast du die 400ms gemessen?

von RP6conrad (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe das standard eingestellte Platform genutzt (Portable). Ich gehe 
davon aus das "lag" und "genauigkeit" von ein gps stark zusammen hangen 
: Bei kleine "lag" wird die genauigkeit negatif beinflusst. Steht auch 
so in der Manual von Ublox. In meine gps-rover habe ich ein IMU, diese 
ist recht schnell fur die actuelle Heading (lag < 20 ms). Damit kan ich 
leben mit den grosse GPS-lag.

von Markus F. (mfro)


Lesenswert?

So was hier:

http://www.analog.com/media/en/technical-documentation/data-sheets/ADXRS649.pdf

müsste doch können, was Du brauchst?

von Jan K. (jan_k)


Lesenswert?

Rolf M. schrieb:
> Jan K. schrieb:
>> das aktuelle heading wird eh über den Gyro berechnet
>
> Oder über einen Kompass.

Nö, der ist zu langsam und rauscht ordentlich. Der wird normalerweise 
nur benutzt um den Gyro Drift zu kompensieren.

von Mirco Gemmeke (Gast)


Lesenswert?

Ich melde mich mal wieder zurück :D.

Es geht um den Winkel zur horizontalen nicht zur Straße.

Da ich mit dem ganzen Spaß wie gesagt erst angefangen habe schließe ich 
es aus das ich verschiedene Sensorsignale (GPS+Gyro+Acc) selber weiter 
auswerte und verschiedene Filter anwenden gescheit anwenden kann.

Das ist für mich am Anfang noch zu schwierig. Dabei muss ich zu viel 
berücksichtigen da kommt nachher nix gescheites bei rum.

Aber ich habe mich ein wenig schlau gemacht und es gibt (zumindest laut 
Versprechung der Datenblätter) da doch einen "dynamischen 
Neigungssensor".

Allen voran den hier:

https://www.hillcrestlabs.com/downloads/bno080-datasheet

Da steht unter 2.1.1

----------------------------------------------------------------

"2.1.1 Acceleration Outputs
The 3-axis accelerometer measures the acceleration of the device (note 
that the accelerometer will measure
gravity as acceleration). BNO08X calibrates the accelerometer output to 
improve the data reported. BNO08X will
report this acceleration aligned to the coordinate frame of the device. 
BNO08X can (after fusing data with the
gyroscope) separate gravity from this acceleration, thus providing the 
BNO08X with the following acceleration
outputs:
• Calibrated Acceleration (m/s2
). Acceleration of the device including gravity
• Linear acceleration (m/s2
). Acceleration of the device with gravity removed   <------ !!!!!!
• Gravity (m/s2
)
• Raw uncalibrated accelerometer data (ADC units). Used for testing"

------------------------------------------------------------

Damit sollte ich ja in der Lage sein die Einflüsse der Beschleunigung zu 
entfernen und nur mit der Aufteilung der Erdanziehungskraft den Winkel 
auszurechnen.

Allerdings ist es eigenartig das da "Calibrated Acceleration" steht. Die 
Erdanziehungskraft wird ja von jedem Beschleunigungssensor mit erfasst. 
Das ist ja das Problem :D. Das calibrated müsste also eigentlich vor 
Linear acceleration.

Allerdings.... steht da auch immer nur für tragbare Geräte und das macht 
mich ein wenig stutzig ...

Hat schon jemand Erfahrungen mit dem Sensor?

Vielen Dank für eure Beiträge

Mirco

von Purzel H. (hacky)


Lesenswert?

Nein, so einfach ist es nicht. Du hast diesen 3 Achsen sensor auf einem 
Motorrad. Vorwaerts = x, hinauf = y, nach links = z.
Das Motorrad steht. die Erdbeschleunigung erscheint nur auf dem y. x & z 
sind Null.
Du faehrst ohne Beschleunigung im Kreis. Die Beschleunigung in x ist 
Null, der Wert von y etwas groesser wie die Erdbeschleunigung. z ist 
immer noch Null.
Es gibt so keinen Unterschied zwischen einer Links- oder Rechtskurve. 
Und dann gibt's auch noch Bodenwellen. Die wackeln auch an der Y 
Beschleunigung.

: Bearbeitet durch User
von Mirco Gemmeke (Gast)


Lesenswert?

Verstehe nicht so ganz was du meinst ...

sobald mir das Ding relativ genau die Erdbeschleunigung in den 
verschiedenen Achsen während der Bewegung/Beschleunigung ausgeben kann 
und damit nicht mehr von der Beschleunigung in Kurvenfahrten 
beeinträchtigt wird kann ich meinen Winkel ja berechnen dann wäre es ja 
so als würde ich stehen.

Ob ich mich nach links oder rechts lehne ist mir eig egal.

Die Frage ist halt ob er das kann. So wie ich die Beschreibung im 
Datenblatt verstehe schon ... allerdings verstehe ich nicht warum ich 
dazu im Internet kaum was finde... ob es gescheit funktioniert.

Bei dem Vorgänger BNO055 gab es ja zahlreiche Probleme das eben genau 
das nicht funktioniert...

Aber über den BNO080 finde ich halt irgendwie nicht wirklich was außer 
die Versprechung das es geht :D. Aber kaum Erfahrungsberichte.

von Mirco Gemmeke (Gast)


Lesenswert?

Mit den Bodenwellen muss ich dann vermutlich leben... aber zum Glück 
sind die Straßen in Deutschland ja relativ gut ... und bei Bodenwellen 
fahre ich mit dem Motorrad ja eh vorsichtig.

von Rolf M. (rmagnus)


Lesenswert?

Jetzt ist G. schrieb:
> Nein, so einfach ist es nicht.

Deshalb wird ja die Sensorfusion mit dem Gyro und dem Magnetometer 
gemacht.

> Du hast diesen 3 Achsen sensor auf einem Motorrad. Vorwaerts = x, hinauf
> y, nach links = z.

Typisch im Fahrzeugbereich (zumindest beim PKW) ist eher y nach links 
und z nach oben.

> Das Motorrad steht. die Erdbeschleunigung erscheint nur auf dem y. x & z
> sind Null.
> Du faehrst ohne Beschleunigung im Kreis. Die Beschleunigung in x ist
> Null, der Wert von y etwas groesser wie die Erdbeschleunigung. z ist
> immer noch Null.

Das gilt aber nur, wenn der Fahrer auch in der Kurve exakt gerade auf 
dem Motorrad sitzen bleibt und der Reifen eine Breite von 0 hat. Das 
wurde übrigens auch in dem von mir oben verlinkten Thread thematisiert.

> Es gibt so keinen Unterschied zwischen einer Links- oder Rechtskurve.

Für den Accelerometer nicht, aber für den Gyro und den Magnetometer 
schon.

: Bearbeitet durch User
von Jan K. (jan_k)


Lesenswert?

Mirco Gemmeke schrieb:
>
> Die Frage ist halt ob er das kann. So wie ich die Beschreibung im
> Datenblatt verstehe schon ... allerdings verstehe ich nicht warum ich
> dazu im Internet kaum was finde... ob es gescheit funktioniert.
>
> Bei dem Vorgänger BNO055 gab es ja zahlreiche Probleme das eben genau
> das nicht funktioniert...
>
> Aber über den BNO080 finde ich halt irgendwie nicht wirklich was außer
> die Versprechung das es geht :D. Aber kaum Erfahrungsberichte.

Der kann das nicht perfekt. Um die Gravitation abzuziehen brauchst du 
die Lage im Raum, relativ zur Gravitation. Das ist ein Henne Ei Problem. 
Das versucht jede andere IMU genauso mehr oder weniger gut. Wie gesagt, 
ohne GPS ist es nicht möglich, beliebig lange eine korrekte Orientierung 
zu berechnen.

von MiMa (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> Das ist für mich am Anfang noch zu schwierig. Dabei muss ich zu viel
> berücksichtigen da kommt nachher nix gescheites bei rum.

Die Idee mit dem MPU nicht umgesetzt?

Die Arduino Lib macht alle. Sensor auslesen, kalibrieren, fusionieren,..
Du musst den Sensor nur anstecken (4 Kabel. Noch nicht mal Widerstände 
oder dergleichen) und das Testprogramm downloaden -> Fertig.

von Mirco Gemmeke (Gast)


Lesenswert?

Guten Tag,

erstmal wieder vielen Dank für eure Beiträge.

Seid wirklich eine fleißige Community :). Und vielen Dank das ihr so 
geduldig mit mir Greenhorn seid :).

@MiMa:

leider nicht... habe mir die Sachen runtergeladen die du gepostet hast.
Aber so komplett plug & play ist es irgendwie nicht. Vermutlich bin ich 
einfach ein wenig zu blöd :D.

Waren ja der Link hier:

https://github.com/TKJElectronics/KalmanFilter/tree/master/examples/MPU6050

Generell finde ich es bei den Libarys und Sketches von Github ein wenig 
komisch. Die Leute schreiben so schöne Programme aber es gibt dann keine 
gescheite Datein über z.B. die Befehle die man aus der Libary verwenden 
kann :D.

Liegt wahrscheinlich an mir da ja anscheinend sonst keiner Probleme 
damit hat aber z.B. bei dem Link oben.... Wo sehe ich quasi was ich 
machen muss damit das Ding läuft?.

Muss doch irgendwie ne Anleitung geben. Zum Beispiel finde ich auch nix 
zu dem Testprogramm was du meintest. Außerdem weiß ich nicht was das 
i2c.ino sein soll....

Und welches Testprogramm?

Nochmal zum BNO080: So wie ich das bis jetzt verstanden haben kann er 
das auch nicht soooo super gut richtig? Weil dann will ich die 30 Euro 
auch nicht einfach so verpulvern.

von Mirco Gemmeke (Gast)


Lesenswert?

Habe mich jetzt mal durch alle Links von dem Github link durchgeklickt 
und schließlich noch das hier gefunden.

http://arduino.cc/forum/index.php/topic,58048.0.html

Dort verwendet er aber ein anderes Board. Ich nehme das GY-521. Ist das 
egal?

Auch schreibt er das 3,3V angeschlossen werden müssen sonst wird es 
zerstört. Ich habe an Vcc einfach die 5v angeschlossen. Habe ich in 
einigen Videos aber auch so gesehen.

von MiMa (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> leider nicht... habe mir die Sachen runtergeladen die du gepostet hast.
> Aber so komplett plug & play ist es irgendwie nicht. Vermutlich bin ich
> einfach ein wenig zu blöd :D.

Einfacher/schneller als mit diesem Sensor und der Lib wirst du es nicht 
schaffen.

Öffne die Arduino IDE (Die hast du hoffentlich schon heruntergeladen und 
installiert?). Dann gibt es irgendwo Add lib oder so ähnlich. Dann 
einfach die verlinkte MPU lib nehmen und unter examples das Testprogramm 
öffnen.

Das sollte, selbst für absolute Neulinge in einer halben Stunde machbar 
sein :-)

von Mirco Gemmeke (Gast)


Lesenswert?

Ja klar hab ich Arduino installiert ... habe es ja auch schon getestet 
und auch schon das ein oder andere gemacht :D.

Versteh das folgende bitte nicht falsch :). Ich fasse mich nur kurz. 
Nicht das du denkst das ich eingeschnappt bin oder so.

 Bin sehr froh das du/ihr mir helft.

Also:

Das hier war dein Link:

https://github.com/TKJElectronics/KalmanFilter/tree/master/examples/MPU6050

1. Wo ist da eine MPU.h?

Das ist doch nur ein Beispielsketch. Also keine eigene bib oder. Für den 
Sketch allerdings braucht man seine "Kalman.h" Bib. Die hab ich auch 
runtergeladen und installiert.

2. Wenn ich jetzt MPU6050.ino ausführe sagt der mir beim kompilieren das 
er mit i2cwrite nix anfangen kann.

3. Deswegen hab ich den code von i2c.ino einfach vor void.setup gehauen

dann gabs nur kaudawelsch und nach umstellern der Seriellen Konsole auf 
115200 Baud bekomme ich jetzt Werte raus.

Allerdings schmiert mein Arduino(also das Programm am PC, der 
Microcontorller glaube nicht) dann immer nach einer gewissen zeit ab und 
brauch plötzlich 500 mb arbeitsspeicher ist das dann weil die Serielle 
Konsole so schnell "vollläuft".

Also hab ich dann das ganze getrennt ausgeführt erst das i2c.ino dann 
das mpu6050.ino und es klappt!!!!!!!

An dieser Stelle schon mal vielen vielen vielen vielen Dank!!!!!!!!!!!! 
Vor allem an MiMa!

--------------------------------------------------------------------

Jetzt muss ich mich noch ein wenig mit dem Code auseinandersetzen...

Mir werden im Moment 4 Winkel für Roll und 4 Winkel für Pitch ausgegeben 
die alle unterschiedlich berechnet werden.

Gibt es davon jetzt schon einen den ich am besten für meinen Zwecke 
verwende? Vermutlich nicht direkt oder?

Wahrscheinlich muss ich z.B. für die Berechnung im Stand eine andere 
Winkelberechnung verwenden korrekt? In dem Fall reicht ja der 
Beschleunigungsmesser. Das Gyro führt in dem Fall ja nur zu Fehlern.

Aufgabe für mich wäre es also je nach Situation einen der 4 Ausgegebenen 
Winkel pro Achse auszuwählen?!

Dafür muss ich dann wissen wie welcher Winkel berechnet wird ... dafür 
muss ich dann aber die Befehle aus der Kalman.h Bib kennen.
--------------------------------------------------------------------

Das wiederum führt mich zu einer schon oben gestellten Frage.

Wie finde ich jetzt die einzelnen Befehle und deren Funktionsweise 
heraus?
Muss ich mir dafür den Code von der Bib angucken oder gibt es da ein 
Textdokument zu das ich einfach nicht finde....

Nochmal vielen Dank!

von MiMa (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> Das wiederum führt mich zu einer schon oben gestellten Frage.
>
> Wie finde ich jetzt die einzelnen Befehle und deren Funktionsweise
> heraus?
> Muss ich mir dafür den Code von der Bib angucken oder gibt es da ein
> Textdokument zu das ich einfach nicht finde....

Sowohl die Beschleunigungssensoren als auch die Gyros liefern, jeder für 
sich, für deine Anwendung das falsche. Der Kalan Filter kombiniert 
jedoch ALLE! Werte zu drei Winkeln.
Roll und Pitch sind davon brauchbar, yaw nur bedingt.

Soweit ich mich erinnere gibt es ein example welches "plug and play" 
genau diese kombinierten Werte liefert.

Diese kannst du einfach verwenden. Da musst du nichts mehr selber 
berechnen :-)

von Der Andere (Gast)


Lesenswert?


von BB (Gast)


Lesenswert?

Kalman ist nicht das Zauberwort.

Auch Kalman verarbeitet nur Neigung und Rotationsbeschleunigung, wobei 
die Neigung auch als von der Schwerkraft gegeben angesehen wird.

Die einzige wahre Lösung ist ein Kreiselsystem, welches in der Luftfahrt 
als künstlicher Horizont verwendet wird.
Selbst die neusten Urlaubs-Flieger haben dies n och an Bord.

Diese Kreisel gibt es auch mit elektronischem Ausgang, aber das Prinzip 
ist unumgänglich.

BB

von MiMa (Gast)


Lesenswert?

BB schrieb:
> Die einzige wahre Lösung ist ein Kreiselsystem, welches in der Luftfahrt
> als künstlicher Horizont verwendet wird.

Wäre mir da nicht so sicher. Kalman leistet erstaunliches.
Ob der gemessene Winkel nun 45° oder 47° ist doch auch egal. Zumal diese 
Lösung keine 5€ kostet.

Die käuflichen Motorräder mit Wheelie-Control haben doch wohl kaum ein 
Kreiselsystem eingebaut. Diese Aufgabe übernimmt bestimmt ein MPU o.Ä. 
mit entsprechend Software.

von JJ (Gast)


Lesenswert?

Wie wäre es denn mit zwei Abstandssensoren an den Fußrasten?
Die haben keine Probleme mit der Beschleunigung und messen 
ausschließlich die Schräglage.

von Mirco Gemmeke (Gast)


Lesenswert?

Abstandsensor ist raus weil einen die Straße ja nicht interessiert.


Zum Kreiselinstrument: Weiter oben wurde das glaube schon angeführt. Das 
ist doch ne riesen Kiste oder nicht? Glaube auch das das die modernen 
Motorräder irgendwie anders machen.

Oder gibts die Dinger auch in klein ?

Ich werde das ganze mal testen und dann melde ich mich nochmal

von Mirco Gemmeke (Gast)


Lesenswert?

So ich beende das Projekt für mich jetzt...

Ergebnisse waren eine Katastrophe ... mit den Vibrationen geht der 
Winkel im Leerlauf teilweise auf 60°. Man muss auch dazu sagen es ein 
700ccm Einzylinder ist :D der natürlich übel vibriert.

Ich hab das ganze dann nochmal auf dem Fahrrad getestet und selbst da 
sind die Ergebnisse nicht gut..... Wenn man das Ding nur mit der Hand 
ein wenig hin und her bewegt sind die Ergebnisse ganz okay... aber 
ansonsten auch nicht...

Vielleicht lassen sich damit auch ganz gute Ergebnisse erzielen aber ich 
wüsste ehrlich gesagt nicht wo ich da anfangen soll.


Trotzdem vielen Dank für die Beiträge.

von Mirco Gemmeke (Gast)


Lesenswert?

Aber:

https://www.bosch-mobility-solutions.de/de/produkte-und-services/zweiraeder-und-powersports/fahrsicherheitssysteme/motorrad-stabilit%C3%A4tskontrolle/

Hier kann man sehen das kein Kreiselsystem verbaut ist. Es geht über die 
Messung der Beschleunigung und Winkelgeschwindigkeit.

von ÜbermüdeterEntwickler (Gast)


Lesenswert?

Na ja, als erstes machst du vom Signal ein FFT und suchst daraus die 
störenden Frequenzen raus. Diese bedämpfst du dann mit passenden 
Filtern. Das daraus abgeleitete Signal unterziehst du einem Tiefpass.

Schon hast du ein wunderbares Signal mit dem man arbeiten kann :-)

Geht analog wie auch digital...

von Mirco Gemmeke (Gast)


Lesenswert?


von ÜbermüdeterEntwickler (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> Hier kann man sehen das kein Kreiselsystem verbaut ist.

Ohne jetzt das ganze Thread durchgelesen zu haben, aber ich verstehe 
nicht was an einem "Kreiselsystem" so kompliziert sein soll. Im Patent 
steht übrigens auch dass sie ein Drehratensensor ("Giersensor") 
verwenden und die Bremskraft abhängig von der Schräglage regeln (macht 
ja Sinn).

Sowas hier reicht doch dafür voll aus:

http://www.analog.com/media/en/technical-documentation/data-sheets/ADXRS610.pdf

Dann noch die Schräglage mit einem Beschleunigungssensor erfassen (Quer 
zur Fahrtrichtung)

z.B. sowas hier:

http://www.analog.com/en/products/adxl354.html

und der Rest ist - wie oben beschrieben - einfache 
Signalkonditionierung.

Kein Hexenwerk.

von Mirco Gemmeke (Gast)


Lesenswert?

:D.

Für dich vermutlich nicht...

Für mich ist das im Moment noch mehr als Hexenwerk :D

Aber trd danke

von Mirco Gemmeke (Gast)


Lesenswert?

Ich dachte Kreiselsystem und Gyroskop sind was anderes?

von Bernd K. (prof7bit)


Lesenswert?

Mirco Gemmeke schrieb:
> Ich dachte Kreiselsystem und Gyroskop sind was anderes?

Kreiselinstrument ist die deutsche Übersetzung des Fremdwortes. 
Ansonsten identische Bedeutung.

Das ganze gibts dann wahlweise als echten in allen Achsen drehbar 
aufgehängten Kreiselkompass (groß und schwer) oder als winzige 
mikromechanische Apparaturen die mit winzigen zum Schwingenden 
angeregten speziell geformten Strukturen die beim Drehen um ihre Achsen 
von Corioliskräften verformt werden so daß sich darüber die 
Winkelgeschwindigkeit um die jeweilige Achse messen lässt.

von Trembel (Gast)


Lesenswert?

Guten Abend Mirco

Ich habe wollte mir mal vor einiger Zeit dasselbe bauen, hab dann aber 
nie die Zeit gefunden es umzusetzen.

Wie du mittlerweile gemerkt hast (wie ich selber auch), ist dein Projekt 
deutlich anspruchsvoller wie angenommen.

Ich bin bei meiner Suche dann auf folgenden Blog gestossen:

http://www.revenanteagle.org/checksix/gopro-gyrocam/

Der Maker von dieser Gyrocam, hat da ziemlich vieles ausprobiert, und 
ist dann darauf gestossen, dass es fast nicht möglich ist, die Werte des 
Accelerometer sauber zu filtern. Er setzt deshalb auf den Gyroskop 
Sensor. Zur Kalibration nutzt er den Fakt aus (vereinfacht), dass wenn 
keine Rotation um die Z-Achse vorhanden ist, auch keine Neigung 
vorhanden sein darf, weswegen dann eine Kalibrierung vollzogen werden 
kann.

Auf der oben genannten Seite findest du Source-Code, Schematics usw.
Was du suchst ist im Prinzip genau das selbe Problem, wie mit der 
Kamera, ausser dass du den Winkel auslesen möchtest, und nicht die 
Kamera um den genannten Winkel drehen willst (d.h. du musst den Code so 
anpassen, dass die zurückgegebenen Winkeländerungen zusammensummiert 
werden, und nicht als Input für den Servomotor verwendet werden)

Auf dem Video im Blog erkennst du auch, dass das Gane ziemlich gut 
funktioniert. Ich denke, die Ergänzung für die Wheelie-Neigung, sollte 
dann deutlich einfacher sein, da die Zentripetalkräfte um einiges 
kleiner sind.

Gruss,
Trembel

von Trembel (Gast)


Lesenswert?

Ach ja, mehr Informationen findest du im Source-Code in der how-it-works 
Datei. Das ganze macht der mit einem MPU6050 (Code unterstützt aber auch 
andere Sensoren)

von MiMa (Gast)


Lesenswert?

Mirco Gemmeke schrieb:
> So ich beende das Projekt für mich jetzt...

Schade

Mirco Gemmeke schrieb:
> Ergebnisse waren eine Katastrophe ... mit den Vibrationen geht der
> Winkel im Leerlauf teilweise auf 60°.

Dann verwendest du keinen Kalman! Dieser liefert dir selbst bei starken 
Vibrationen brauchbare Ergebnisse.


Mirco Gemmeke schrieb:
> Man muss auch dazu sagen es ein
> 700ccm Einzylinder ist :D der natürlich übel vibriert.

Die neue hat, verglichen mit den älteren Husky`s, nahezu keine 
Vibration. Bei meiner kannst du alle paar Stunden die Schrauben 
nachziehen (Oder eben Loctite verwenden) ;-)

Probier doch mal aus ob das Handy bessere Werte liefert. Die verwenden 
nichts anderes als was der MPU bietet, nur die Software ist besser.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.