Über das Programmieren eines Schmiede-Roboters


Die Robotik ist Teilgebiet der Künstlichen Intelligenz und tritt damit das Erbe einer sehr ambitionierten Wissenschaft an. Ziel ist nichts anderes als das Erschaffen eines künstlichen Automatens wie es bereits Leonardo da Vinci erfolglos versucht hat. Damit ist der Anspruch hoch genug, damit sich eine Vielzahl von ehrgeizigen Wissenschaftlern daran abarbeiten können und je nach Interessenschwerpunkt über selbstlernende Algorithmen, Neuronaler Netze oder LISP diesem zu Leibe rücken können.

Wenn es jedoch um den Einsatz von praktischen Lösungen geht sollten diese Ansprüche erheblich reduziert werden. Meist ist eine Künstliche Intelligenz weder erforderlich noch gewünscht, sondern es geht nur darum einen Roboter zu programmieren, der ein Werkstück in eine Maschine einlegen kann. Oder aber einfache Schmiedearbeiten ausführt. Ich will die dazu einhergehende Banalisierung der Programmierung einmal an einem anderen Beispiel erläutern, und zwar dem des Webcrawlers. Zwischen einem Datamining-Tool und einem Roboter gibt es erstaunliche Gemeinsamkeiten, denn beide entstammen ursprünglich der Künstlichen Intelligenz. Wobei auch hier wieder auf theoretischer Ebene gefordert wird, dass ein Algorithmus die Semantik versteht, also ein Selbstbewusstsein entwickelt und erst dadurch in die Lage versetzt wird, die benötigten Informationen zu aggregieren. Programmtechnische Umsetzung: unmöglich, das Ziel ist viel zu ehrgeizig.

Was stattdessen in der Praxis zum Einsatz kommt sind weniger generalisierte Tools, als vielmehr hastig zusammengeflickte Anweisungen. Die meisten guten Webcrawler basieren darauf, dass man speziell für eine Aufgabe ein Bash-Script schreibt und dieses dann ausführt. Von Codewiederverwendung keine Spur, der Crawler kann nur diese eine Aufgabe ausführen und sonst gar nichts. Soll er etwas anderes tun, so muss man ihn anpassen. Und so ungefähr sind auch die meisten Industrieroboter programmiert. Sie entsprechen überhaupt nicht den Guidelines für guten/sauberen Code. Und es werden auch keine Robotik-Bibliotheken verwendet, die magischen Code enthalten. Sondern die meisten Schmiederoboter werden einfach Schritt-für-Schritt instruiert. Also beispielsweise so:


Bewege x-Achse um 10 Schritt
Bewege y-Achse um 15 Schritte
Bewege x-Achse um -2 Schritt
Bewege z-Achse um 45 Schritte
Ende.

D.h. wir haben es hier mit einem starren Programmablaufplan zu tun, der ähnlich wie eine Midi-Datei explizit vorgibt welche Note zu welchem Zeitpunkt gespielt werdenn muss. Ändern sich die äußeren Bedingungen muss auch der Quellcode komplett neu geschrieben werden. Von Adaptivität oder Autonomie keine Spur. Nichts desto trotz sind diese starren Programmablaufpläne in der Praxis äußerst erfolgreich. Sie haben den Vorteil, dass derartige Roboter komplett frei sind von jedweder Eigentintelligenz und auch nur das tun, was vorgesehen ist. Es sind im Grunde Geräte, die ein festes Muster abarbeiten, so ähnlich vielleicht wie eine Nähmaschine. Meist sind es noch nichtmal eigenständige Computer. D.h. viele Roboter im industriellen Einsatz verfügen noch nichtmal über Schleifen oder IF-Abfragen, sind also nicht Turing-mächtig. Will man Befehle mehrmals hintereinander wiederholen, so muss man sie auch mehrmals hintereinander aufschreiben, also so z.B.:


Bewege x-Achse um 10 Schritt
Bewege y-Achse um 15 Schritte
Bewege y-Achse um 15 Schritte
Bewege y-Achse um 15 Schritte
Bewege y-Achse um 15 Schritte

Man kann es aber noch einfacher machen. Die einfachste Form eines roboterbasierten Schmiedes ist wohl der Schmiedehammer (eine Maschine, die sich mit lautem Krawall herunterbewegt und dann wieder hochgeht). D.h. dort ist dann keinerlei Programmierung mehr erforderlich.

Diese Entzauberung von Robotern wird auch in [1] Vorschub geleistet. In dem Aufsatz mit dem Titel „Der Roboter als Werkzeugmaschine“ wird gezeigt, wie man einen Kuka Industrieroboter mittels CNC ansteuert. D.h. ein Computersystem wie einen Schmiedehammer verwendet. Jedwede Eigenlogik (im Text wird sie als Roboterprogrammiersprache bezeichnet) wurde hier entfernt zugunsten ganz simpler CNC Befehle. Komplexe Programmiertechniken wie z.B. for-Schleifen, Wissensbasierte Datenbanken usw. sind nicht länger erforderlich. Der Roboter wird demnach weit unterhalb seiner Möglichkeiten eingesetzt. Es geht nicht länger darum, neue Anwendungsfelder durch die Maschine zu erschließen und womöglich dem Menschen die Arbeit wegzunehmen, sondern ein Kuka-Roboter soll die gleichen Aufgaben erledigen wofür früher mehrere CNC-Maschinen erforderlich waren. So eine Art von Multitool oder Dremel vielleicht …

1: Literatur

[1] Der Roboter als Werkzeugmaschine, http://www.produktion.de/automatisierung/der-roboter-als-werkzeugmaschine/1/

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s