Forum: Mikrocontroller und Digitale Elektronik Balancierender Roboter


von Chris_Specht (Gast)


Lesenswert?

Hallo,

ich möchte einen balancierenden Roboter bauen. Der Roboter soll auf 2 
Rädern stehen, die natürlich seperat angesteuert werden. Somit kann der 
Roboter nur noch nach vorne oder hinten fallen. Um dies zu messen würde 
ich einen Kreiselsensor (Gyroskop) verwenden. Die Regelung würde ich 
dann über einen Atmega8 machen wollen.
Nun bin ich mir bei 2 Sachen noch unschlüssig. Es wäre doch am 
einfachsten die Räder getrennt über eine H-Brücke anzusteuern? Reicht 
der Kreiselsensor aus um das Kippen zu bemerken? Oder muss ich einen 
Beschleunigungssensor nehmen?

Danke im Voraus.
Gruß Chris

von Micha H. (mlh) Benutzerseite


Lesenswert?

Es gibt im Netz genug Info über Segway-Nachbau zu finden, ich denke da 
wirst Du die besten Antworten dazu erhalten. Auch hier gibt es was dazu 
zu finden.

von Chris_Specht (Gast)


Lesenswert?

Beim Segway verwendet man ja beide Sensoren, da man ja beschleunigen 
möchte wenn man sich weiter vorlegt. Daher kommt ja meine Frage ob der 
Kreiselsensor reicht. Ich habe mir ja auch schon ein paar sachen 
durchgelesen, auch über das inverse Pendel, aber bin mir halt nicht 
sicher.

von Mol (Gast)


Lesenswert?

Du musst ja nicht beide Räder getrennt ansteuern um zu balancieren - 
ausser du willst noch steuern um Kurven zu fahren.

Gibt unzählige solche Projekte im Netz, Google mal wieder.

von Karl H. (kbuchegg)


Lesenswert?

> Beim Segway verwendet man ja beide Sensoren, da man ja
> beschleunigen möchte wenn man sich weiter vorlegt.

Das weißt aber nur du.
Dem Segway ist das egal. Der versucht seinen Fahrer im Gleichgewicht zu 
halten, indem er sich selber unter den Fahrer zu platzieren versucht. 
Stehst du ruhig und aufrecht auf einem Segway, dann macht der genau das, 
was du auch von deinem Roboter haben willst: Er balanziert dich aus.

von Ulrich Radig (Gast)


Lesenswert?

Hallo,

es werden 2 Sensoren benötigt ein Gyro und ein Beschleunigungssensor.
Mit einen Gyro kann ich nicht die Lage erkennen. Natürlich könnte man 
mit dem Gyro ein Integral bilden das läuft aber mit der Zeit weg.


Gruß
Uli

von Lehrmann M. (ubimbo)


Lesenswert?

Hallo Chris,

Chris_Specht schrieb:
> Um dies zu messen würde
> ich einen Kreiselsensor (Gyroskop) verwenden.

Tja das ist so eine Sache. Grundsätzlich kann ich dir verraten, dass ein 
Gyro nicht ausreichend ist. Du benötigst immmer die Kombination aus 
Beschleunigungssensor und Gyroskop. Diese Kombination ist auch als 'IMU' 
bekannt. Geeignete Kombinationen gibt es u.A. auf Sparkfun.de bzw. 
deutschen Vertretern. Zur 'Datenverarbeitung'. Die ist leider alles 
andere als trivial. Fester Bestandteil ist zur korrekten Lageerkennung 
(das komplexeste am ganzen Segway) der sog. Kalmanfilter. 
http://en.wikipedia.org/wiki/Kalman_filter
Leider ist's nicht einfach als es aussieht. Du hast einige 
Grundproblematiken:
1. Gyroskope sind zu unempfindlich, rauschen brutal und verändern ihre 
Werte je nach Temperatur. Auf Grund dieser 'Mängel' brauchst du noch 
einen Beschleunigungssensor. Der misst die Erdbeschleunigung mit - 
daraus kann man auch einen Winkel errechenen. Zur Unterstüzung nimmt man 
aus dem Gyroskop die Integration über die Zeit dazu.

2. Auch der Beschleunigungssensor rauscht ein bisschen und driftet über 
der Temperatur - aber das Hauptproblem ist, dass zwar die gemessenen 
Werte (Winkel) sehr gut sind, aber die Beschleunigung (die 
Ausgleichsbewegung des Roboters) die gewünschte zu messende 
Erdbeschleunigung total verfälschen.

Der Kalmanfilter bekommt das alles glücklicherweise in den Griff. Sowohl 
das Rauschen, als auch das Driften wird gut wegkompensiert. Ist der 
Kalmanfilter gut angepasst kommen da zuverlässige Winkel raus.
Hier is eine Implemention mit Quellcode zu finden 
(http://diydrones.com/profiles/blogs/705844:BlogPost:23188) Hier 
allerdings für noch einige Achsen mehr (Modellflug). Sowas brauchst du 
dringendst auch.

Dein nächstes Problem ist der Regelungsalgorithmus. Auch das ist full 
overdose Mathe: http://de.wikipedia.org/wiki/Regler#PID-Regler
Um den kommt man leider auch nicht herum.

Es ist deutlich komplexer als man annimmt, dass so ein Segway erstmal 
steht geschweige denn in die Richtung fährt die man gerne hätte.

Es sollte definitiv nicht dein erstes Projekt mit AVR sein - ansonsten 
wird das ein ziemlich harter Brocken.

Du brauchst in jedem Fall 2 H-Brücken - ergo für jeden Motor eine 
H-Brücke.


Kann es sein, dass du aus dem Allgäu kommst ?!

von Chris_Specht (Gast)


Lesenswert?

Hallo,

nein ich komme nicht aus dem Allgäu.

Das ist nicht mein erstes Projekt mit AVRs bzw. Regelungstechnik. Die 
Frage mit den Sensoren kam mir, da ich schon beide Varianten gesehen 
habe. Sprich eine mit einem Kreiselsensor und Beschleunigungssensor und 
auch eine nur mit einem Kreiselsensor.

Das mit dem Kalmanfilter oder Komplementärfilter habe ich auch schon 
alles gelesen. Mir ist auch klar, dass dieses Projekt nicht innerhalb 
eines Tages realisierbar ist.

Gut dann werde ich mich mal nach passenden Sensoren umschauen.
Danke schonmal für die Ratschläge!!

Gruß

von Lehrmann M. (ubimbo)


Lesenswert?

Chris_Specht schrieb:
> Die
> Frage mit den Sensoren kam mir, da ich schon beide Varianten gesehen
> habe. Sprich eine mit einem Kreiselsensor und Beschleunigungssensor und
> auch eine nur mit einem Kreiselsensor.

Das kann ich mir beim besten Willen nicht vorstellen. Ich habe mich im 
Rahmen einiger Studienarbeiten sehr intensiv mit Gyroskopen und 
Beschleunigungssensoren und deren Kombinationen im Hinsicht auch eine 
IMU beschäftigt. Ich habe dabei auch die Integration des Gryroskops über 
die Zeit zu filtern und zu verbessern. Es ist trotzdem nicht 
ausreichend. Das Integral rennt dir sofort weg. Ein 
Beschleunigungssensor alleine kann rein physikalisch überhaupts nicht 
funktionieren - nur in einem näherungsweise statischen / ruhenden mit 
reiner Winkeländerung und keiner transversalen Bewegung versehenen 
System (was der Segway beim besten Willen nicht ist) kann man damit 
Winkelmessung betreiben. Beim Segway bilden sich so erfahrungsgemäß sehr 
schnell oszillierende Status (ja das schreibt man so).

Chris_Specht schrieb:
> Das mit dem Kalmanfilter oder Komplementärfilter habe ich auch schon
> alles gelesen.

Ja aber mit Sicherheit nicht verstanden. Du würdest dich wundern, was 
ich schon alles 'gelesen' habe. Glaub mir - das ist nicht so einfach 
(der Kalmanfilter erst recht nicht). Die wenigsten Leute die den 
Kalmanfilter verwenden verstehen ihn auch. Ich kenne viele viele 
Projekte in denen mit Cope 'n Paste gearbeitet wird. Unter anderem 
findet man sehr oft die von mir bereits gelinkte 
Kalmanfilterimplementierung. Ich sage immer - ich darf fremden Code 
verwenden wenn ich ihn selber auch schreiben kann. Das alles gilt auch 
für sämtliche Libraries in C oder Äquivalentes ... Wer nicht mal 'von 
Hand' eine ADC auslesen kann, der darf dann auch nicht adc.h verwenden. 
Derjenige hat weder verstanden wie es geht noch kann er ansatzweise 
Debuggen.

Chris_Specht schrieb:
> Das ist nicht mein erstes Projekt mit AVRs bzw. Regelungstechnik.

Die Sache ist die - was für eine Regelungstechnik. Ich hatte an der Uni 
2 ganze Semester lang Regelungstechnik und hatte gefühlt hinterher ein 
Basis mit der man Arbeiten konnte. Bis man das dann aber umsetzt und für 
den Segway vernünftig aufbaut wird einige Zeit vergehen. Im Internet 
finden sich oft Projekte mit 'interessanter' bis mangelhafter 
Regelungstechnik die dann doch irgendwie funktioniert aber auch 
irgendwie nur so lala und wenn's dann mal kalt wird dannn fällt der 
Segway um ... Nur weil man den Wikipediaartikel gelesen hat kann man 
noch lange keinen PID Regler vernünftig aufbauen. Ich will nicht sagen, 
dass es sonderlich komplex oder unmöglich ist, aber man muss es einfach 
vernünftig realisieren und es bedarf viel Zeit und Geduld um sowas 
ordentlich zu machen.

Chris_Specht schrieb:
> Mir ist auch klar, dass dieses Projekt nicht innerhalb
> eines Tages realisierbar ist.

Das ist schonmal ein sehr guter Ansatz.

Chris_Specht schrieb:
> Gut dann werde ich mich mal nach passenden Sensoren umschauen.

http://www.watterott.com/de/ArduIMU-Sensor-Board-Six-Degrees-of-Freedom-Main

oder

http://www.watterott.com/de/IMU-6DOF-Razor-Ultra-Thin-IMU1

Ersteres ist eher zu empfehlen - hatte ich auch schon zu diesem Zwecke 
im Einsatz (Segway).

Watterott.com hat den Vorteil, dass es Produkte von Sparkfun vertreibt - 
dadurch entfallen hohe Versandkosten und Probleme mit dem Zoll.

Chris_Specht schrieb:
> Danke schonmal für die Ratschläge!!

Sei mir nicht böse - ich habe sicher oft eine recht harsche Meinung aber 
ich möchte Menschen nur vor den Fehlern bewahren die ich teilweise 
selbst gemacht haben. Ich will dich nicht entmutigen oder runter machen 
- ich will dir nur vor Augen führen, dass das kein Nebenbeiwitzprojekt 
ist. Ich kenne es nur allzu gut, dass man sich einen kleinen 'overload' 
aufhalst und sich selbst überfordert. Hinterher ist man nur frustriert, 
das Projekt liegt in der Ecke und die 200€ die man investiert hat auch.

So nebenbei noch ein paar Worte zu den Motoren. Da musst du ein bisschen 
aupassen. Ich hatte damals mit Conrad Getriebemotoren (9€-25€) 
angefangen - das Getriebe ist mir nach ein paar Stunden in einzelteilen 
ins Gesicht geflogen gekommen (obwohl Metallgetriebe). Nur so eine 
kleine Warnung - ich gebe zu unser Segway ware mit knapp 7kg auch ein 
Schwergewicht.

von Chris_Specht (Gast)


Lesenswert?

Hallo Michael,

besten Dank für deine Kommentare, sie send sehr konstruktiv. Natürlich 
habe ich das mit dem Kalmanfilter z.B. nicht 100%ig vertsanden, jedoch 
sehe ich mich in der Lage es zu verstehen. Das nötige Grundwissen und 
den Spaß daran neues zu erlernen habe ich, denke ich mal ;-).
Mir geht es derzeit mehr darum, dieses Projekt einzustufen. Es soll 
nämlich auch eine Art Studienarbeit mit 2 Personen werden. Daher 
informieren wir uns gerade etwas über das ganze, ob es machbar ist in 
einem beschränkten Zeitraum.
Ein "Neubau" eines solchen Roboters fällt da wohl raus, da wir die Sache 
mit den Sensoren und der Software nicht so schwierig eingeschätzt 
hatten.
Daher tendieren wir derzeit für einen NXT von Lego. Dafür gibt es einen 
Kreiselsensor und interaktive Motoren, die einen Rotationssensor haben. 
Damit können wir uns auf die reine Software konzentrieren und ggf. noch 
optionale Funktionen einbauen falls wir rechtzeitig fertig sind.

von Lachsschokolade (Gast)


Lesenswert?

Ein balacierender Roboter auch mit 2 Räder, diesemal ein bisschen anders 
aufgebaut.


Bicycle Robot
http://www.youtube.com/watch?v=BAS0d6nMFnc


Gruss

Lachsschokolade

von John (Gast)


Lesenswert?

Hier auch ein interessantes Video zum Thema Segway Eigenbau: 
http://www.youtube.com/watch?v=zJDp-6wkHtQ

von Quadrocopter (Gast)


Lesenswert?

Tag zusammen,

ich taste mich gerade an einen Quadrocopter. Auch hier werden ja Gyros 
und Beschleunigungssensore benötigt.
Nur mal zum Verständnis: Die Daten vom Gyro summier ich auf und erhalte 
ja dadurch einen Winkel der angibt, wie weit ich von der 
Ausgangsposition weg bin. Natürlich ist dieser Winkel ferhlerbehaftet 
durch numerische Integration und Drift vom Sensor.
Der Beschleunigungssensor gibt mir seinen maximalen Wert, wenn ich 
parallel zur Erdoberfläche bin und dieser Wert wird kleiner, wenn ich 
den Sensor kippe.

Jetzt würde ich einen Komplementärfilter nehmen. Den Gyrowert 
aufsummieren, mit einem Hochpass filtern und zum Beschleunigungssensor 
(durch Tiefpass gefiltert) addiren. Diese Summer wäre dann ja meine 
Winkelabweichung.

Sind grundlegende Fehler in meinem Gedankengang?

Gruß

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Quadrocopter schrieb:
> Sind grundlegende Fehler in meinem Gedankengang?

Ja... was hat ein Quadrokopter mit diesem Thread zu tun? Mach doch bitte 
einen eigenen auf mit passendem Titel..

von Quadrocopter (Gast)


Lesenswert?

Es geht ja weniger um Quadrocopter bzw Roboter sondern mehr um die 
Sensoren. Daher hab ich diesen Thread aufgegriffen.

von Manuel S. (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite auch gerade an einem balancierenden Roboter. Ich nutze einen 
Beschleunigungssensor um die Winkelabweichung zu messen und einen 
Gyro-Sensor um die Winkelgeschwindigkeit zu messen. Die Position, also 
Winkelabweichung, regele ich über einen PD-Regler, was auch soweit 
klappt.

Mein Problem ist das Driften des Gyros. Die Winkelbeschleunigung regele 
ich über einen PI-Regler aber das Integral bzw. die Summe läuft mir 
immer weg wegem dem Rauschen des Gyros. Nun weiss ich nicht so recht wie 
ich das in den Griff bekommen kann.
Ist die Idee mit der Kaskadenregelung, also PD für Winkel und PI für 
Winkelbeschleunigung ok oder sollte ich einen anderen Ansatz wählen?

Gruß Manuel

von Fab (Gast)


Lesenswert?

Hi Manuel,

ich denke das genau für diesen Zweck der oben erwähnte Kalman-Filter 
eine sinnvolle Lösung wäre. Ob deine Regelung auch funktionieren würde 
kann ich dir leider nicht sagen.

Viele Grüße

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.