Im Rahmen der Vorlesung „Datenverarbeitung in der Technik“ (DT) wurde der Regensburger Balance Bot (ReBaBo) entwickelt – ein autonomer, zweirädriger Roboter, der nach dem Prinzip des inversen Pendels balanciert. Mein Fokus in diesem Projekt lag auf der Konzeption und Implementierung der Regelungstechnik mittels Fuzzy Logik.

Systemarchitektur

Der ReBaBo basiert auf einer Dual-Plattform-Strategie:

Die Fuzzy-Regelung

Anstelle eines klassischen PID-Reglers wurde eine Fuzzy-Logik eingesetzt, um das komplexe Balancier-Verhalten abzubilden. Die Regelung verarbeitet drei wesentliche Eingangsgrößen:

  1. Winkelgeschwindigkeit ($\omega$): Direkt vom Gyrosensor geliefert.
  2. Neigungswinkel ($\alpha$): Berechnet aus den Werten des Beschleunigungssensors.
  3. Positionsabweichung: Ermittelt über die Radencoder, um ein unkontrolliertes Wegfahren (Drift) zu verhindern.

Fuzzifizierung und Regelwerk

Die Eingangsgrößen werden in linguistische Terme (Fuzzy Sets) wie Negative Big (NB), Zero (ZE) oder Positive Small (PS) übersetzt. Das Regelwerk verknüpft diese Terme, um die notwendige Motorgeschwindigkeit zu bestimmen.

Winkel \ $\omega$NBNMZEPSPB
NBNBNBNM--
NMNBNMNS--
ZENMNSZEPSPM
PM--PSPMPB
PB--PMPBPB

Auszug aus der Entscheidungstabelle für Winkel und Winkelgeschwindigkeit.

Implementierungsdetails (Embedded C)

Die Umsetzung erfolgte in C auf dem XE167F unter Einsatz des Echtzeitbetriebssystems µC/OS-II. Da der Controller über keine Fließkommaeinheit (FPU) verfügte, wurde die gesamte Fuzzy-Arithmetik für eine effiziente Ausführung optimiert, um die Rechenlast gering zu halten.

Ergebnis

Die Fuzzy-Regelung ermöglichte es dem ReBaBo, stabil im Stillstand zu balancieren und externe Störungen (wie leichtes Anstoßen) autonom auszugleichen. Durch die Einbeziehung der Radencoder-Daten konnte zudem die Position im Raum stabilisiert werden.