6-Achs-Parallelkinematik - IMK Engineering – Ingenieurbüro für Mechatronik und Kybernetik Dr. Bruns

Direkt zum Seiteninhalt

Hauptmenü:

Referenzen
Referenzen  6-Achs-Parallelkinematik
Das Ziel dieses Projekts waren die Entwicklung, die Realisierung und der Test der vollständigen Informationsverarbeitung bzw. der Steuerung (Hardware und Software) für einen hochdynamischen „Seilroboter“. Der Seilroboter besteht aus insgesamt 6 rotatorisch angetriebenen Achsen, die alle parallel über spezielle Kunststoffschnüre am Endeffektor angreifen. Die Schnüre zeichnen sich durch sehr geringe Reibung sowie durch sehr hohe Abriebs- und Zugfestigkeit aus. Ferner werden die Schnüre durch spezielle Keramikösen geführt, so dass Reibung und Verschleiß auch bei hoher Dynamik auf ein Minimum reduziert werden. Die Zahl der möglichen Bewegungsfreiheitsgrade entspricht 5 von insgesamt 6 möglichen Freiheitsgraden. Einzig eine Rotation des Endeffektors um die Hochachse ($z$-Achse) ist nicht möglich. Das nebenstehende Video demonstriert die 5 prinzipiell verfügbaren Freiheitsgrade des Systems.

Die Leitlinie für unsere Arbeiten im Bereich der Robotik bilden die Ergebnisse der Forschungs- und Entwicklungstätigkeiten am Lehrstuhl für Automatisierungstechnik von Prof. Dr.-Ing. Joachim LÜCKEL. „Highlights“ dieser Tätigkeiten sind die Robotersysteme „TEMPO“ und „TRIPLANAR.

Hardware und Mechanik
Die Highlights des Robotersystems
  • Leistungsfähiger ARM Cortex-M4“-Mikroprozessor (168 MHz)
  • 1 x USB-UART-Interface (3 MBit/s) für die serielle Kommunikation mit einem PC-System (Konfiguration, Monitoring, Datenerfassung etc.)
  • 2 x Highspeed-CAN (je 1 MBit/s) für die zuverlässige Regelung von 6 Antriebsachsen via CAN mit Zykluszeiten von einer Millisekunde (1 ms)
  • Board-Abmessung: 48x68 mm "Smart Dimension"

Informationen zur Hardware-Entwicklung am IMK finden Sie hier!

Die beiden folgenden Videos zeigen das Modell (Video 2) sowie das reale System (Video 3) im direkten Vergleich bei der Bildung einer $\infty$-förmigen Lissajous-Figur (Frequenzverhältnis $1:2$, $\Delta \phi=0$) in der $xy$-Ebene, die später dann noch um die $y$-Achse rotiert.

Video 1: Die 5 Freiheitsgrade des Systems

Das Prinzip der Antriebe (1. Version, Prototyp)
Video 2: 8-förmige Lissajous-Figur (Modell)
Video 3: 8-förmige Lissajous-Figur (Reales System)
Software der Steuerung im Detail
Wesentliche Komponenten und Bestandteile der Software

Die Software für Konfiguration, Administration und Überwachung des Echtzeitsystems (IMK-Mikrocontroller-Board) wird auf einem PC ausgeführt. Die Kommunikation zwischen PC und Echtzeitsystem erfolgt dabei über eine USB-UART-Verbindung (3 MBit/s), wobei für den eigentlichen Datenaustausch sowie die Interpretation der Daten ein spezielles Kommunikationsprotokoll mit variabler Paket- bzw. „Frame“-Größe entwickelt und implementiert wurde. Die nebenstehende Abbildung zeigt folgende wichtige Komponenten bzw. Bestandteile der Software:

Symbole (Icons) für den direkten Zugriff auf bestimmte Funktionen:
Hier sind bestimmte Funktionen direkt über einen „Mausklick“ verfügbar. Mit der Schaltfläche I“ wird bspw. das Fenster für die Anzeige der Stromaufnahme eines bestimmten Motors () geöffnet, mit der Schaltfläche s“ das Fenster für die Anzeige der Position bzw. des Drehwinkels (). Mit den Schaltflächen 1“ bis 6“ wird die Antriebsachse (Motor) ausgewählt, die aktuell in den „Monitoring-Windows“ ( und ) angezeigt werden soll.

Der Status des RTS im Überblick:
Das RTS („Real-Time System“ bzw. Echtzeitsystem) auf Basis eines IMK-Mikrocontroller-Boards ist für die Echtzeitsteuerung der 6 Antriebsachsen des Seilroboters zuständig. Die Zykluszeit der Regelung beträgt dabei eine Millisekunde (1 ms). In diesem Anzeigebereich, der die wesentlichen Systemgrößen auf einen Blick darstellt, werden mit einer Zykluszeit von einer Sekunde (1 s) für jede Achse (Motoren 1 bis 6) die folgenden Größen angezeigt:
  • State ID“: Für jede Achse bzw. jeden Motor wurde auf dem Echtzeitsystem eine Zustandsmaschine implementiert, die jeweils 14 Systemzustände kennt. Hier wird von jeder Achse der aktuelle Zustand angezeigt.
  • Current“: Aktuelle Stromaufnahme von jeder Achse.
  • Positon“: Aktuelle Position bzw. aktueller Drehwinkel von jeder Achse.
Weiterhin sind rechts im Anzeigebereich noch die folgenden Informationen verfügbar:
  • Time“: Laufzeit des Echtzeitsystems seit dem Einschalten.
  • Error Code“: Falls das Echtzeitsystem einen Fehler erkannt hat, so wird der entsprechende Fehlercode hier angezeigt.
  • CPU“: Aktuelle CPU-Last.

Aufzeichnung von Systemdaten:
Die Schaltfläche Enable Logging“ veranlasst das Echtzeitsystem dazu, mit einer Zykluszeit von einer Millisekunde (1 ms) sämtliche Systemdaten (Strom, Position etc.; jeweils Soll- und Ist-Werte) für alle 6 Achsen an das PC-System zu übermitteln (ca. 250 Byte/ms). Auf dem PC können die Daten dann „zeitlich fließend“ in den entsprechenden Fenstern ( und ) angezeigt werden. Mit der Schaltfläche Save Data“ können alle empfangenen Daten gespeichert werden. Als Format können sowohl Matlab als auch Scilab gewählt werden. (Weiter unten sieht man die Datenauswertung mittels Scilab).

Bewegung des Robotersystems freigeben bzw. sperren:
Bevor der Seilroboter bewegt werden kann, muss die Bewegung über die Schaltfläche Enable Motion“ freigegeben werden. Erneutes Betätigen stoppt die aktuelle Bewegung unverzüglich. Falls die Bewegung der Achsen manuell erfolgen soll (bspw. über das Register Control I), so kann ein $PT_1$-Filter aktiviert werden (Filter active), um den Verlauf der Soll-Werte zu glätten.

„Registerkarten“/„Tabs“ für Auswahl/Anzeige der Funktionsgruppen:
Hier lassen sich Register“ auswählen, die  jeweils bestimmte Funktionen für verschiedene Aufgaben in Gruppen bündeln. Diese Funktionsgruppen sind weiter unten im Detail beschrieben.

Ausgabekonsole für Systemmeldungen:
  • Statusmeldungen (-weiß- / -grün-)
  • Fehlermeldungen bzw. Warnungen (-rot-)

/ Monitoring-Fenster:
Im oberen Fenster wird der Verlauf der Position bzw. des Drehwinkels für eine ausgewählte Antriebsachse angezeigt, im unteren Fenster entsprechend der Verlauf der Stromaufnahme. Die Soll-Werte werden jeweils blau dargestellt, die Ist-Werte rot. Weiterhin kann die Anzeige bzw. Skalierung manuell oder automatisch (Schaltfläche Adjust) angepasst werden. Sowohl Soll- als auch Ist-Werte werden für alle 6 Motoren bzw. Antriebsachsen mit einer Zykluszeit von einer Millisekunde (1 ms) vom RTS an das PC-System gesendet.

Haben wir Ihr Interesse geweckt? Nehmen Sie gerne Kontakt zu uns auf!
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Funktionsgruppen der Software

Die folgenden Funktionsgruppen sind über die entsprechenden „Registerkarten“ bzw. „Tabs“ erreichbar:
Über die Registerkarte „Serial Port“ muss zunächst der COM-Port des PC-Systems ausgewählt werden, über den das Echtzeitsystem angeschlossen ist. Danach kann über die Schaltfläche („Connect“ bzw. „Disconnect“) eine Verbindung zum Echtzeitsystem aufgebaut bzw. beendet werden.

Über die Registerkarte „Mechanics“ können Korrekturen an den Werten der Seillängen vorgenommen werden, welche die Grundlage für die internen Berechnungen bilden, insbesondere im Rahmen der inversen Kinematik und der darauf aufbauenden Regelung. Weiter unten kann die maximale Stromaufnahme für die „Autokalibrierung“ vorgegeben werden. Mit „Start Homing“ wird die automatische Kalibrierung gestartet.

Über die Registerkarte „Controller“ können die Parameter für die (unterlagerten) PID-Regler der Achsen vorgegeben werden. Da alle Achsen identisch aufgebaut sind, werden die hier eingegebenen Parameterwerte auch für alle Achsen identisch gesetzt. Unter „Feedforward Control“ kann die Masse des Endeffektors angegeben werden; sie wird dann in einer überlagerten Dynamik-Vorsteuerung verwendet. Der Wert der Zeitkonstante, der hier erfasst werden kann, bezieht sich auf die Glättung der manuell vorgegebenen Bewegungen (siehe oben, ).

Über die Registerkarte „CAN“ wird die Kommunikation (CAN-Bus) zwischen dem Echtzeitsystem (IMK-Mikrocontroller-Board) und den unterlagerten Motortreibern bzw. Motorsteuerungen konfiguriert. Vorwiegend zu Testzwecken können über „Active Drives ...“ Achsen gezielt aktiviert bzw. deaktiviert werden. Zu Beginn müssen über die internen Zustandsmaschinen sämtliche CAN-Knoten (Motorsteuerungen) initialisiert werden. Erst nach erfolgreicher Initialisierung ist die Schaltfläche „Start CAN Control“ verfügbar und der Effektor des Roboters bewegbar. Ist „Current Mode“ (Default) gewählt, ist auf den Motorsteuerungen lediglich die Stromregelung aktiv, alles andere (Positionsregelung, Vorsteuerung etc.) wird auf dem IMK-Echtzeitsystem gemäß eigenen Algorithmen ausgeführt.

Mit der Registerkarte „Control I“ stehen Kontrollelemente („Slider“ etc.) zur Verfügung, mit denen der Endeffektor manuell gemäß seinen 5 Freiheitsgraden bewegt werden kann; seine Pose bzw. seine räumliche Lage im Sinne von Position und Orientierung wird dadurch vorgegeben. Um die resultierenden Soll-Werte für die unterlagerten Regelungen zu glätten, sollte jedoch zuvor der $PT_1$-Filter aktiviert werden (siehe oben, ).

Über die Registerkarte „Control II“ kann dem Endeffektor eine feste Pose vorgegeben werden, die von ihm dann unmittelbar eingenommen wird. Da hier prinzipiell sehr große Sprünge in aufeinanderfolgenden Soll-Werten die Regel sind, sollte in jedem Fall der $PT_1$-Filter aktiviert werden (siehe oben, ). Im unteren Teil kann eine Demonstration gestartet werden, bei der vom Endeffektor in der $xy$-Ebene eine $\infty$-förmige Lissajous-Figur (Frequenzverhältnis $1:2$, $\Delta \phi=0$) abgefahren wird. Durch Aktivierung von Enable Z-Axis rotiert diese Figur parallel auch noch um die $y$-Achse (siehe Video 2 und Video 3), so dass der Endeffektor auch Koordinaten $z\neq0$ aufweist. Der Wert von kL“ entspricht einem Verstärkungsfaktor für die Frequenz und bestimmt damit die Geschwindigkeit, mit der die Figur abgefahren wird.

Über die Registerkarte „Path Planning“ erfolgt die Bahnplanung. In der dargestellten Tabelle können beliebig lange bzw. komplexe Bewegungsabläufe hinterlegt werden. Die Systematik sieht dabei so aus, dass in den einzelnen Zeilen der Tabelle die Posen definiert werden. Jede Pose besteht aus festen Werten für die Position ($x$, $y$ und $z$) und die beiden Winkel $\phi_x$ und $\phi_y$ des Endeffektors. $\Delta t$ bestimmt das Zeitintervall für den Übergang von einer Pose zur nächsten.
Die Werte in den einzelnen Zeilen der Tabelle entsprechen den Stützstellen von Interpolationspolynomen, mit denen sehr glatte bzw. harmonische Bahnkurven ermöglicht werden. Die Einträge in der Tabelle lassen sich speichern (CSV), wieder laden und damit auch leicht unter Matlab oder Scilab weiterverarbeiten. Prinzipiell kann auch die gesamte Bahnplanung mit Matlab oder Scilab erfolgen. Die Stützstellen müssen von dort nur im CSV-Format exportiert und mit der IMK-Software mittels Load Data“ importiert werden.
Die interpolierten Werte zwischen den Stützstellen werden zur Laufzeit von dem Echtzeitsystem berechnet. Dazu ist dort ein Algorithmus implementiert, der „stückweise kubische Hermite-Interpolationspolynome“ berechnet, anstatt bspw. gewöhnliche „Splines“. Der Grund dafür wird im nebenstehenden Bild klar: Es muss sichergestellt werden, dass keine Soll-Bahnkurven generiert werden, die aus dem zulässigen Arbeitsbereich herauslaufen („Überschwinger“). Gewöhnliche kubische Splines können dies nicht.


Auf der Registerkarte „System“ werden aktuell im Wesentlichen Informationen zur CPU-Auslastung des Echtzeitsystems angezeigt. Die Zykluszeit der Regelung beträgt eine Millisekunde (1 ms) für alle 6 Achsen. Innerhalb dieser Zeit müssen sämtliche Aufgaben im Rahmen der Regelung aller 6 Achsen sowie der Kommunikation mit dem PC-System (inkl. Senden der Monitoring-Daten von ca. 250 Byte je Millisekunde) erledigt sein. Das Echtzeitsystem misst während dieser Zyklen jeweils die sogenannten „SysTicks“ und wertet sie jeweils für die „Busy“- und „Idle“-Zeiten aus. Daraus ergibt sich unmittelbar die CPU-Auslastung, die während der normalen Regelung hier bei lediglich ca. 6 % liegt.

Datenexport (bspw. nach Scilab oder Matlab)
Die Möglichkeiten im Bereich „Data Acquisition“ () ermöglichen es, sämtliche systemrelevanten Daten mit einer Auflösung von einer Millisekunde (1 ms) aufzuzeichnen und zu exportieren, um sie dann mit leistungsfähigen Analyse- und Synthesewerkzeugen wie Matlab oder Scilab weiterzuverarbeiten. Im nebenstehenden Bild sind für sämtliche Achsen die Verläufe der Stromaufnahmen  (oben) sowie der Positionen (unten) dargestellt.
Unter Matlab oder Scilab können die Daten beliebig dargestellt und weiterverarbeitet werden. Im nebenstehenden Bild wurde in die Stromaufnahme von Motor 3 „gezoomt“ (Current Motor 3). Die beiden übereinanderliegenden glatten Kurven (grün und „magenta-gestrichelt“) zeigen den mit einem $PT_1$-Glied gefilterten Stromverlauf. Die Werte der grünen Kurve stammen vom IMK-Echtzeitsystem, die „magenta-gestrichelte“ Kurve wurde mit Scilab auf Basis der Messwerte berechnet.
Bei nebenstehendem Bild wurde in den Positionsverlauf von Motor 3 „hineingezoomt“ (Position Motor 3).
Nebenstehend eine noch detailliertere „Zoom“-Darstellung. Man erkennt deutlich, dass sowohl Soll-Werte als auch Ist-Werte (Messwerte) im Abstand bzw. mit einer Auflösung von einer Millisekunde (1 ms) vorliegen.
 
Suchen
Zurück zum Seiteninhalt | Zurück zum Hauptmenü