0 Daumen
411 Aufrufe

Aufgabe:

Der Roboter sieht ungefähr so aus:

blob.png

CC: Lego-Mindstorms-Ev3-Car-Number-1-Robot-Fllcasts Quelle


Er hat zwei Getriebe. Ein Getriebe lässt die Räder auf der linken Seite drehen und das andere die Räder auf der rechten Seite. Die Räder selbst sind ungelenkt. Nun ist am Roboter ein Sensor befestigt, der Helligkeitswerte erfasst mit Werten zwischen 0 (schwarz) und 100 (weiß). Der Roboter soll nun auf der linken Kante einer schwarzen Strecke fahren, indem man die Räder mit richtiger Geschwindigkeit bewegt werden. Die Geschwindigkeit kann Werte im Intervall [-100,100] annehmen, wobei eine negative Geschwindigkeit bedeutet, dass sich die Räder rückwärts bewegen. Bevor der Roboter sich fortbewegt, schwenkt er erstmal nach links um die Helligkeit außerhalb der Strecke zu messen, und dann nach rechts um die Helligkeit der Stecke zu messen. Danach begibt er sich wieder in die Ausgangslage (Sensor auf der Kante, also ca. 50% der Fläche außerhalb der Strecke (hell) und 50% innerhalb der Strecke (dunkel)). Basierend auf dem Mittelwert der gemessenen Helligkeitswerte, erkennt der Roboter, ob er sich immer noch auf der Kante befindet. Folgender Regelkreis ist gegeben

blob.png

wobei w die Führungsgröße (Mittelwert der beiden Helligkeitswerte), x die Regelgröße (der momentan gemessene Helligkeitswert) und e die Abweichung von x zu w darstellen.

Der Regler (PI-Regler) berechnet folgenden Wert

\( y(t)=K_{p} \cdot e(t)+K_{i} \cdot \int \limits_{0}^{t} e(\tau) d \tau \)

e(t) gibt die Abweichung zum Zeitpunkt t an

wobei Ki und Kp Konstante sind, die passend gewählt werden müssen. Mithilfe von y gilt es nun die Räder korrekt anzusteuern, sodass die Kante ruckelfrei (ohne zu stark zu oszillieren) verfolgt wird.


Problem/Ansatz:

Ich bin mir noch nicht sicher, wie ich die Konstanten wählen soll bzw. wie ich den y Wert generell verwenden soll um z.B. die Basis-Geschwindigkeit von xx% (ca. 20) für die Räder auf der jeweiligen Seite zu verändern. Generell könnte man eine Seite schneller drehen lassen um einzulenken. Hier hätte man das Problem, dass der Roboter bei sehr scharfen Kurven diese nicht korrekt entlang fahren kann. Hättet ihr eine Idee, wie ich die Konstanten wählen könnte und wie ich den y Wert verwenden könnte, um den Roboter ruckelfrei entlang der Kante fahren lassen zu können, auch bei schärferen Kurven.

Avatar von

Für so was solltest du ein Technikerforum suchen, kein Physikerforum. oder sogar ein Roboter forum, das das Problem schon sehr oft gelöst wurde.

Danke für die Antwort. Ich habe leider nichts im Web gefunden. Könntest du vielleicht einen Link bereitstellen?

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Lösungsansatz für Regler-Implementierung

Um eine ruckelfreie Verfolgung einer Kante zu erreichen und dabei auf verschiedene Kurvenradien adäquat reagieren zu können, ist es wichtig, die Werte von \(K_p\) (Proportional) und \(K_i\) (Integral) im PI-Regler richtig einzustellen. Die Auswahl der richtigen Konstanten und die Anwendung des berechneten Reglerausgangs \(y(t)\) sind entscheidend.

1. Konstanten \(K_p\) und \(K_i\) wählen

- \(K_p\) (Proportional-Teil): Der \(K_p\)-Wert bestimmt, wie stark der Roboter auf die momentane Abweichung \(e(t)\) reagiert. Ein zu hoher \(K_p\)-Wert kann zu einer Überreaktion auf kleine Fehler führen und den Roboter zu stark oszillieren lassen. Ein zu niedriger \(K_p\)-Wert könnte dazu führen, dass der Roboter nicht ausreichend schnell korrigiert und die Kante verliert.
- \(K_i\) (Integral-Teil): Der \(K_i\)-Wert hilft, bleibende Fehler über die Zeit zu korrigieren. Er summiert die Fehler, die über die Zeit aufgelaufen sind, und führt eine korrigierende Aktion durch. Ein zu hoher \(K_i\)-Wert kann jedoch zu einer zu starken Korrektur führen und die Stabilität beeinträchtigen, während ein zu niedriger Wert eventuell nicht ausreichend gegen bleibende Fehler wirkt.

2. Konstanten einstellen

Für ein ruckelfreies Fahren entlang der Kante könnten Sie mit einem moderaten \(K_p\)-Wert beginnen und \(K_i\) zunächst niedrig halten. Ein typischer Startpunkt könnte sein:

- \(K_p = 0.5\)
- \(K_i = 0.01\)

Diese Werte sind hypothetisch und müssten durch Tests und Anpassungen auf Ihre spezifische Situation zugeschnitten werden.

3. Anwendung des Reglerausgangs \(y(t)\) zur Steuerung der Räder

Die Ausgabe des PI-Reglers, \(y(t)\), sollte verwendet werden, um die Differenzgeschwindigkeit zwischen den beiden Rädern zu steuern. Der Grundansatz könnte sein:

- Basis-Geschwindigkeit: Setzen Sie eine Basis-Geschwindigkeit für beide Räder, sagen wir 20% der maximalen Geschwindigkeit.
- Differenzial-Steuerung: Verwenden Sie \(y(t)\), um die Geschwindigkeit eines Rads zu erhöhen und die des anderen entsprechend zu verringern. Zum Beispiel könnte eine positive \(y(t)\) bedeuten, dass der Roboter nach rechts driftet und daher die Geschwindigkeit des linken Rades erhöht werden muss, um nach links zu korrigieren.

\(Geschwindigkeit_{Links} = Basis + y(t)\)
\(Geschwindigkeit_{Rechts} = Basis - y(t)\)

Achten Sie darauf, die Ausgabe von \(y(t)\) zu begrenzen, um sicherzustellen, dass die Geschwindigkeiten nicht außerhalb des erlaubten Bereichs [-100, 100] liegen.

4. Feinabstimmung und Tests

- Beginnen Sie mit geraden Linien und einfachen Kurven, um \(K_p\) und \(K_i\) fein abzustimmen.
- Beobachten Sie das Verhalten des Roboters und passen Sie \(K_p\) und \(K_i\) an, um die beste Leistung zu erreichen.
- Führen Sie schließlich Tests mit komplexeren Pfaden durch und passen Sie die Werte bei Bedarf weiter an.

Schlussfolgerung

Die Schlüssel zur Implementierung eines erfolgreichen Reglers für die ruckelfreie Verfolgung einer Kante liegen in der Auswahl der richtigen \(K_p\) und \(K_i\) Werte, der Anwendung der Reglerausgangs zur Differenzial-Steuerung der Räder, und umfangreichen Tests. Die Feinabstimmung erfordert Geduld und Bereitschaft, durch Experimente die optimalen Einstellungen zu finden.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Nanolounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community