Forum: Mikrocontroller und Digitale Elektronik Gyrosensor Abweichungen


von Lukas S. (luke1996i)


Lesenswert?

Hallo zusammen,

ich habe aktuell eine Projektarbeit an der Technikerschule am laufen. 
Die Aufgabe ist ein Fahrzeug mit einem Gyro-Sensor zu entwickeln, das 
eine Modellanlage mit Teilen beliefert.

Das Fahrzeug muss aus einem Lager rückwärts herausfahren, sich um 
180°-Drehen, ca. 1m geradeaus fahren, sich dann um 90° Drehen und 
anschließend ca 0,5m geradeaus in die Station fahren.

Der verwendete Chip ist: 
https://www.robot-electronics.co.uk/htm/cmps11i2c.htm

Aktuell wird der Wert des Gyro-Sensors ausgelesen und die errechnete 
Nullwertabweichung abgezogen, das ganze wird dann Tiefpass gefiltert und 
an einen PID-Regler übergeben. Zudem wird noch ein Wert für die 
Abweichung des Gyronullwerts bei ansteigender Temperatur mit 
eingerechnet.

Es wurde eine Zeit lang probiert das Fahrzeug rein über das Integral des 
Sensors, also den Winkel, zu steuern. Dazu musste ich den errechneten 
Gyrowert durch einen Faktor teilen, damit mir des Integral nicht im 
stehen schon durch die Decke schoss und selbst dann zog das Auto während 
der kompletten fahrt immer nach links oder rechts, je nach dem, ob die 
errechnete Gyronullabweichung im Schnitt leicht über den Messewerten 
oder leicht drunter lag. Dieses Verhalten konnte ich auch im stehen 
aufzeichnen. Dann wurde mit den gefilterten Signal versucht das Integral 
zu bilden. Das Problem dabei ist, dass die Antriebseinheit des Fahrzeugs 
einen leichten Verzug hat und diese durch den Gyrosensor nicht mehr 
erkannt wird.

Anschließend haben wir probiert nur die Drehregelung mit dem Integral zu 
steuern und den Rest über die Winkelgeschwindigkeit. Dies funktioniert 
leider alles auch nur so mäßig.

Ich hab leider immer wieder Probleme, dass vor allem die Drehung nicht 
immer ausreichend genau funktioniert und bei der Geradeausfahrt auch oft 
leichte Abweichungen stattfinden.

Kann mir jemand weiterhelfen? Weiß jemand, wie man das Gyrosignal 
optimal in den Begriff bekommt, vielleicht durch irgendeine Berechnung 
oder ähnliches?

Besten Dank schonmal für die Antworten!

von Cyblord -. (cyblord)


Lesenswert?

Lukas S. schrieb:
> Kann mir jemand weiterhelfen? Weiß jemand, wie man das Gyrosignal
> optimal in den Begriff bekommt, vielleicht durch irgendeine Berechnung
> oder ähnliches?

Das geht mit einem Gyro allein nicht gut. Arbeite mit Drehencodern an 
den Rädern und/oder direkt mit Schrittmotoren. Das ist deutlich genauer.

Schau doch mal wie Saugroboter z.B. das machen. In 1. Linie Drehencoder 
dann Optischer Sensor an die Decke und für die Basisstation gibts 
trotzdem noch ne Leuchtbake.

von Bernd K. (prof7bit)


Lesenswert?

Du könntest mit einer Kamera auf den Boden schauen und dadurch die 
gewünschten Werte extrem präzise ermitteln.

von donvido (Gast)


Lesenswert?

Der von dir genannte Sensor ist eine Kombination aus Kompass, Gyro und 
Beschleunigungssensor. Du könntest Kompass und Gyro fusionieren und 
somit die Integratordrift des Gyros kompensieren.

von Lukas S. (luke1996i)


Lesenswert?

Viele Dank für die schnellen Antworten!

@Cyblord

Ich hab es bereits direkt mit den Schrittmotoren probiert, leider 
funktioniert dieses aufgrund von mechanischem Verzug nicht...
Das ganze wird über ein Arduino gesteuert und wir nutzen dafür die 
Standard Arduino Steppermotoren, welche leider ein nicht all zu geringes 
Spiel haben.

@Bernd K.
Das Ziel der Projektarbeit wäre es erst einmal das Fahrzeug allein mit 
dem IMU-Sensor und der Odometrie zu steuern, deshalb kommt eine Kamera 
erst mal nicht in Frage.

@donvido
Wir haben bereits versucht den Kompass mit einzubinden, leider wird das 
Magnetfeld durch den Unter- und Aufbau der Modellanlage so stark 
gestört, dass hier absolut keine Möglichkeit besteht den Sensor sinnvoll 
einzubinden...

von Cyblord -. (cyblord)


Lesenswert?

Lukas S. schrieb:
> Viele Dank für die schnellen Antworten!
>
> @Cyblord
>
> Ich hab es bereits direkt mit den Schrittmotoren probiert, leider
> funktioniert dieses aufgrund von mechanischem Verzug nicht...
> Das ganze wird über ein Arduino gesteuert und wir nutzen dafür die
> Standard Arduino Steppermotoren, welche leider ein nicht all zu geringes
> Spiel haben.

Präzision steht und fällt hier als erstes mit der Mechanik. Was bedeutet 
"Verzug"? Wo ist der genau?
Wenn das schon mechanisch Murks ist, dann bekommst du das elektronisch 
nicht mehr ausgebügelt.

Vielleicht auch mal raus aus der Arduino Welt. Nicht alles kann man aus 
fertigen Komponenten zusammenstecken. Sonst wäre es Lego.

von donvido (Gast)


Lesenswert?

Lukas S. schrieb:
> @donvido
> Wir haben bereits versucht den Kompass mit einzubinden, leider wird das
> Magnetfeld durch den Unter- und Aufbau der Modellanlage so stark
> gestört, dass hier absolut keine Möglichkeit besteht den Sensor sinnvoll
> einzubinden...

Dann weg mit dem Sensor von der Elektronik.
Setze den Kompass auf einen Stab ca. 20cm über der Fahrzeugmitte.
Wird bei Multicoptern auch so gemacht, Stichwort "gps antenna mount".

von Bernd K. (prof7bit)


Lesenswert?

Cyblord -. schrieb:
> Präzision steht und fällt hier als erstes mit der Mechanik. Was bedeutet
> "Verzug"? Wo ist der genau?

Vermutlich meint er Schlupf

von Stephan (Gast)


Lesenswert?

Lukas S. schrieb:
> Es wurde eine Zeit lang probiert das Fahrzeug rein über das Integral des
> Sensors, also den Winkel, zu steuern.

Lukas S. schrieb:
> Kann mir jemand weiterhelfen? Weiß jemand, wie man das Gyrosignal
> optimal in den Begriff bekommt, vielleicht durch irgendeine Berechnung
> oder ähnliches?

Das einzige was du machen kannst ist den Sensor so oft wie möglich neu 
zu kalibrieren.
Offset ist einfach: stehen bleiben und den aktuellen Offset ermitteln.
Verstärkung ist kompliziert. Um einen definierten Winkel hin- und 
zurückdrehen (Servo??) könntest du versuchen. Aus dem Max-Wert des 
Integrals im Testlauf dann einen neuen Korrekturwert ermitteln.

Insgesamt ist es aber eher hoffnungslos bei den billigen Gyros aus dem 
Integral der Drehrate die Orientierung zu ermitteln.
Mit den Kreiselinstrumente in Flugzeugen  U-Booten  Raketen klappts 
aber.

von Lukas S. (luke1996i)


Lesenswert?

Ich denk, dass die Motoren Schrott sind. Die Welle der Motoren lässt 
sich hin und her wackeln und Schlupf ist ebenfalls vorhanden.
Wenn der Gyro sauber funktionieren würde, sollte er die Mechanik 
eigentlich ausgleichen können...
Ich hab bereits geschaut, ob es alternative 5V Motoren gibt, aber leider 
hab ich da nicht wirklich was brauchbares gefunden.

Das mit dem Stab ist eine Gute Idee, das geht aber leider aus Grund von 
Maßvorgaben nicht und dann würde der Sensor trotzdem noch an Störquellen 
vorbei fahren.

Das Problem ist, dass das Integral immer völlig unterschiedlich 
ansteigt. Manchmal ins positive, manchmal ins negative. Die 
Geschwindigkeit des ansteigens variiert ebenfalls.
Okay dann werde ich mir wahrscheinlich eine alterantive suchen müssen...

von Lukas S. (luke1996i)


Lesenswert?

Weiß jemand wie das bei Modellhubschraubern gemacht wird?
Mein Lehrer meinte, dass die teilweise auch mit Gyros arbeiten und 2 
unterschiedliche Methoden haben, um den Rumpf gerade zu halten

von Bernd K. (prof7bit)


Lesenswert?

Lukas S. schrieb:
> Weiß jemand wie das bei Modellhubschraubern gemacht wird?
> Mein Lehrer meinte, dass die teilweise auch mit Gyros arbeiten

Die haben entweder einen Gyro für den Heckrotor und eine rein 
mechanische Stabilisierungsstange für die zyklische Blattverstellung 
oder keine Stabilisierungsstange und dafür einen Piloten mit sehr viel 
Gefühl oder einen 3-Achs-Gyro für alles.

Gesteuert wird indem Du mit den Sticks die gewünschte 
Winkelgeschwindigkeit um die 3 Achsen vorgibst, der Flightcontroller im 
Heli hat für jede Achse eine Regelschleife (PID) und steuert die Servos 
(oder die Motoren beim Multirotor) so an daß die Winkelgeschwindigkeit 
des Helikopters der gewünschten Winkelgeschwindigkeit entspricht. Lässt 
Du die Sticks los dann bleibt er exakt in der Lage in der er gerade ist 
(Winkelgeschwindigkeit um alle Achsen genau 0).

Wenn alles richtig eingestellt und getrimmt ist ist hält der mit den 
Gyros die Orientierung minutenlang ohne merkliche Drift. Natürlich kann 
er dabei schon kilometerweit weggeflogen sein wenn Du ihn etwas schräg 
stehen hattest, deshalb kann man das minutenlange Halten nur mit dem 
Gierwinkel beobachten, die anderen beiden Achsen korrigierst Du ja 
permanent um ihn überhaupt auf der Stelle zu halten. Die Gyros werden 
mit mehreren kHz Samplerate abgefragt und aufwendig gefiltert 
(Vibrationen) bevor es in die Regelschleifen gefüttert wird (die 
ebenfalls mit einigen kHz durchlaufen) um das stabil zu bekommen.

: Bearbeitet durch User
von Lukas S. (luke1996i)


Lesenswert?

Wow da steckt ja einiges dahinter.

Dann werde ich da nochmal mit meinem Lehrer sprechen müssen, ob wir 
irgendeine Referenzierhilfe nutzen können.
Ich denke wenn die Drehung immer optimal ausgeführt wird oder das 
Fahrzeug danach kurz ausgerichtet wird sollte die restliche Fahrt mit 
dem Gyro für unsere Zwecke genau genug funktionieren.

Vielen Dank an alle für die schnellen und guten Antworten, ihr habt mir 
echt weiter geholfen!

von Stephan (Gast)


Lesenswert?

Lukas S. schrieb:
> Das Problem ist, dass das Integral immer völlig unterschiedlich
> ansteigt. Manchmal ins positive, manchmal ins negative. Die
> Geschwindigkeit des ansteigens variiert ebenfalls.

Das ist der Offset. Der ist bei jedem Start des Gyros etwas anders.
Und der ändert sich auch im Betrieb vor allem mit der Temperatur des 
Sensors.
Darum: gelegentlich anhalten und aktuellen Offset-Wert ermitteln.

Damit das ganze für längere Zeit (> 50 Fahrten) funktioniert brauchst du 
einen hinreichend genauen Sensor für die absolute Position (möglichst 
zusätzlich noch einen für die absolute Fahrtrichtung).
Ohne kann das nichts werden. (s.u.)

Lukas S. schrieb:
> Weiß jemand wie das bei Modellhubschraubern gemacht wird?
> Mein Lehrer meinte, dass die teilweise auch mit Gyros arbeiten und 2
> unterschiedliche Methoden haben, um den Rumpf gerade zu halten

Wie Bernd schon schrieb auch über Gyros.
Genauigkeit ist da aber nur für die Null-Stellung relevant. Bei Start 
des Fluggeräts (also noch am Boden) wird der Offset des Gyros ermittelt 
und dann nachfolgend bei der Auswertung berücksichtigt.

Während des Fluges fängt der Copter dann oft an sich langsam zu drehen 
oder zu kippen, trotz Null-Stellung (Offset-Drift der Gyros). Dann 
ändert man an der Fernsteuerung die Null-Stellung minimal und korrigiert 
den Offsetwert so.
Da ist die 2. Regelmethode der Pilot, der den Offset manuell korrigiert.

Sobald aktiv gesteuert ist es relativ egal ob der Gyro bei einem 
Sollwert von 20°/s dann auf 19°/s oder 21°/s regelt 
(Verstärkungsfehler).
Bei dir führt dieser Fehler halt dazu, dass das Fahrzeug bei einer 
Soll-Drehung um 180° nur 175° oder 185° macht ...

Interessanter für deine Anwendung sind Multicopter die Kunststückchen 
auf Knopfdruck machen oder autonom eine Route abfliegen. Vereinfacht:

Kunststückchen (z.B. Flip = Drehung um 360° um die Nick-Achse)
- Action-Phase: Hauptsächlich über Gyro gesteuert, Copter steht am Ende 
+-10° wieder waagerecht
- Beruhigungs-Phase: Ausregelung in die Waagerechte über 
Beschleunigungssensor
- Idealerweise: Auswertung und Korrektur der Gyroparameter aus den Daten 
des Kunststückchens

Route abfliegen (Richtungsänderung zu neuem Wegpunkt)
- Drehung in neue Flugrichtung (grob) über Gyro
- Korrektur der Flugrichtung über Kompass
- Laufende Prüfung der Position und Flugrichtung zum Ziel über GPS und 
Korrektur (wie Richtungsänderung)

Der Gyro-Sensor ist immer nur für die schnellen Bewegungen relevant. 
Ausgeregelt wird über Sensoren, die die Orientierung direkt messen. Eben 
gerade weil das Integral wegläuft und die Verstärkung nicht sonders 
genau ist (360° sind 355°..365°).

In der praktischen Realisierung gibt es in der Regel keine getrennten 
Phasen für Action, Beruhigung, ...
Läuft über interne Schätzwerte und Korrektur dieser Schätzwerte je nach 
(dynamischer) Verlässlichkeit der Messwerte (oft Kalman-Filter).
(Im Tunnel ist die Verlässligkeit des GPS 0 und das Auto fährt nur auf 
Basis der Richtungs- und Geschwindigkeitsdaten weiter. Nach 1km fährt's 
dann aber gegen die Tunnelwand.)

Auch eine - fast unerreichbar - präzise Mechanik (dann ganz ohne Sensor, 
oder Sensoren nur um Fehler zu erkennen) reicht nicht.
Stepper bei denen praktisch kein Schrittverlust denkbar ist, exakt 
identisch große sehr schmale Räder (1mm breite Auflage), kein Spiel bei 
der Achsbreite (200mm), kein Schlupf, ...
Und auch dann noch: 0.1° Weisungsfehler sind nach 1m Fahrt 1,7mm 
Abweichung; nach 100 Fahrten steht das Fahrzeug irgendwo.
Und die 0.1° überschreitest du schon wenn der Radurchmesser sich um mehr 
als 0.04% (bei 200mm Achsbreite) unterscheidet oder durch die 
Unsicherheit auf welchem 1/10 mm der Radauflage sich die Drehung jetzt 
genau abspielt.

Diese ganzen inkrementellen Fehler sind unvermeidbar; auch Gyros in der 
1.000€-Klasse sind nicht sooo genau.

von Bernd K. (prof7bit)


Lesenswert?

Stephan schrieb:
> Der Gyro-Sensor ist immer nur für die schnellen Bewegungen relevant.
> Ausgeregelt wird über Sensoren, die die Orientierung direkt messen.

Multikopter für Kunstflug oder Rennen haben keine weiteren Sensoren 
außer den Gyros. Die können (und sollen) dann aber auch nicht die 
Horizontale feststellen und die Gyros werden nur benötigt um die vom 
Piloten gewünschte Soll-Drehung herzustellen und zu stabilisieren und 
Störungen durch Turbulenzen blitzschnell auszuregeln. Wenn die 
Regelschleifen sorgfältig getuned sind fühlt es sich an als würde das 
Ding auf Schienen fliegen und klebt am Stick wie angenagelt! Du kannst 
ne Kamera ohne Gimbal fest montieren und bekommst Aufnahmen die so 
stabil sind wie von einem Kamerakran, so gut können die 
Gyro-Regelschleifen das Flugzeug stabilisieren.

https://www.youtube.com/watch?v=3V0oqnrml0o

: Bearbeitet durch User
von Stephan (Gast)


Lesenswert?

Bernd K. schrieb:
>> Der Gyro-Sensor ist immer nur für die schnellen Bewegungen relevant.
>> Ausgeregelt wird über Sensoren, die die Orientierung direkt messen.
>
> Multikopter für Kunstflug oder Rennen haben keine weiteren Sensoren
> außer den Gyros.

Logisch. Das Ausregeln bezog sich auch nur auf die Copter mit Flip/Rolle 
auf Knopfdruck bzw. bei den meisten Steuerungen lässt sich das Ausregeln 
auch als ATTI-/ANGLE-/...-Mode aktivieren.

von Lukas S. (luke1996i)


Lesenswert?

Mein Lehrer ist davon ausgegangen, dass der Gyro für die Aufgabe genau 
genug sein sollte und wollte dies eben ausprobieren.
Nach euren Antworten kann ich Ihn wohl eines besseren belehren :D
Vielen, vielen Dank nochmal für die sehr ausführliche Antworten, ihr 
habt mir echt unglaublich weiter geholfen und ich konnte wieder was 
neues lernen!
DANKE!!!

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.