2005 05 09 Text
2005 05 09 Text
& Programmierung
von Robotersystemen
Eine Ausarbeitung von Hannes Ahrens
zum Vortrag von Hannes Ahrens ;-)
Einleitung 1
Die Programmierverfahren: 2
(was man unter Roboterprogrammierung versteht)
• Online 2
• Offline 3
Verschiedene Programmiersprachen 8
RCCL (Multi-RCCL) 9
• Was RCCL ist und wo RCCL Anwendung findet 9
• Wie RCCL aufgebaut ist und funktioniert 9
• Ein Code-Beispiel 10
Quellen 11
Einleitung
Da ich mich generell sehr für die Programmierung interessiere (Welch’ Wunder als
Informatikstudent), mich Roboter schon immer fasziniert haben, jemand anderes
bereits den Vortrag über die Geschichte der Robotik halten wollte - welcher mich
ebenso interessiert hätte - und ich zudem sehr erfreut über den als früh angesetzten
Termin war, habe ich mich für den Vortrag über Programmiersprachen für Roboter
entschieden.
Um meinem Interesse für die Geschichte dennoch gerecht zu werden, habe ich mich
entschieden außerdem auf die Entwicklung der Roboterprogrammierung einzugehen.
Während der Erarbeitung zum Vortrag ist mir dann aufgefallen, dass unter der
Roboterprogrammierung noch ganz andere Dinge zu verstehen sind als nur die
Implementierung von Quellcode, weshalb ich mich entschied zuerst die
verschiedenen Programmierverfahren zu erläutern und mein Thema mit
„Programmierung & Programmiersprachen von Robotersystemen“ zu benennen.
Auf Anraten des Proseminarleiters Dr. Jianwei Zhang entschied ich in meinem
Vortrag zudem auf die in u.a. unserer Uni angewendete
Roboterprogrammiersprache, bzw. den Simulator, RCCL einzugehen.
Entsprechend der recht geringen Resonanz, die mir in den Teilaspekten der
Geschichte und Programmierverfahren noch am höchsten erschien, und den kaum
Vorhandenen Nachfragen und Anregungen, will ich in dieser Ausarbeitung auch vor
allem auf die im Vortrag selbst behandelten Aspekte ohne besondere Vertiefung von
RCCL eingehen.
-1-
Die Programmierverfahren
– Was man unter Roboterprogrammierung versteht
In der Roboterprogrammierung gibt es viele verschiedene Programmierverfahren, die
sich jedoch alle in die beiden Unterkategorien der Online- und
Offlineprogrammierung unterteilen lassen.
Dabei versteht man unter Onlineprogrammierung die Programmierung eines
Roboters unter Nutzung des selbigen – daraus zu verstehen ist, dass der Roboter
während der Programmierung aktiv ist und nicht abgeschaltet, bzw. neu gestartet
wird – und unter Offlineprogrammierung entsprechend die Programmierung ohne
Verwendung des Roboters selbst.
Onlineprogrammierung
Die Onlineprogrammierung ist sehr nützlich um einem Roboter schnell und einfach,
mittels von der Steuerungssoftware gegebener Operationen und Schnittstellen, ein
neues Verhalten einzuprogrammieren.
Dabei sehr hilfreich ist es, den Roboter bei seinem Verhalten direkt beobachten zu
können. Damit bietet diese Variante zudem den Vorzug ohne lange und aufwändige
Schulungen auszukommen („Learning by Doing“), was für Unternehmen von großer
Bedeutung sein kann.
• „Teach-In“ -Verfahren:
Unter dem „Teach-In“ -Verfahren
versteht man alle Verfahren, bei
denen einem Roboter sein späteres
Verhalten „angelernt“ wird, bis dass
das gewünschte Ergebnis erzielt ist.
Dazu zählt wie bereits erwähnt auch
das „Play-Back“ -Verfahren.
Ebenso zählen jedoch auch dazu
einem Roboter über z.B. ein
Touchpanel oder durch Gesten oder
Sprache seine Aufgaben zuzuteilen.
-2-
• „Play-Back“ -Verfahren:
Beim diesem Verfahren wird der
Roboter programmiert, indem er
entweder direkt, oder indirekt bewegt
wird. Später führt er diese Bewegung
dann immer wieder wie einmal
vorgeführt aus, dabei wird jedoch
über die Steuerungssoftware häufig
noch durch Menschen bei der
Vorführung verursachtes Zittern
herausinterpoliert.
Bei Industrierobotern war es lange Zeit Gang und Gebe, dass es für jeden
Typspezifischen Roboter ein leichteres, besser zu bewegendes 1:1
Vorführmodell gab.
Offlineprogrammierung
Da bei der Onlineprogrammierung oft kostbare Zeit in der Produktion verloren geht,
insbesondere wenn der gesamte Produktionsprozess für die Umprogrammierung
eines einzelnen Roboters (um ihn bspw. an ein neues, noch nicht gefertigtes Produkt
anzupassen) angehalten werden muss, wird auch die Offlineprogrammierung häufig
verwendet.
Außerdem wird diese benötigt um tiefere Eingriffe in ein Robotersystem und dessen
Verhalten vornehmen und dann zur Sicherheit vor der Anwendung simulieren zu
können.
Wenn dabei die Steuerungssoftware abzuändern oder gar neu zu implementieren ist,
dann ist die Offlineprogrammierung unumgänglich.
• 3D-Simulation:
Wichtiger Bestandteil der
Offlineprogrammierung ist die Simulation
um spätere Probleme wie Kollisionen
frühzeitig zu erkennen und zu vermeiden.
Je nach Simulator kann dabei auch auf
das Verhalten des simulierten Roboters
eingewirkt werden. Später braucht dann
nur noch die Ausführung auf den echten
Roboter übertragen werden.
Ggf. wird dann dabei die komplette Steuerungssoftware ersetzt.
-3-
• Softwarekodierung und -kompilierung:
„Wenn nichts mehr hilft, dann muss die
alte Softwarekodierung und -kompilierung
ran“ mag sich manch einer sagen.
Und dies ist für wahr auch sicher immer
wieder mal der Fall (Wenn z.B. ein Bug in
der Steuerungssoftware entdeckt wurde).
Hierfür wird extra angelerntes Personal
benötigt, oder es wird auf den Service des
Roboterherstellers oder einer Fremdfirma
zurückgegriffen.
Die Kodierung und Kompilierung mag hierbei jedoch auch nützlich für manche
Optimierungen, oder das Einbringen neuer Möglichkeiten für z.B. die
Onlineprogrammierung sein, wofür nicht Zwangsweise ein Problem
vorausgegangen sein muss.
Zudem muss eine Steuerungssoftware zumindest einmalig geschrieben und
kompiliert worden sein – nur auf Basis dieser sind andere
Programmierverfahren erst möglich!
-4-
Die Entwicklung
Ab wann von Roboterprogrammierung die Rede sein kann:
Schon vor langer Zeit entwickelten Ägypter und Griechen hoch komplizierte
Maschinen, die teilweise wie Roboter fungierten. Diese hatten dann zumeist eine
feste Programmierung, die nicht abgeändert werden konnte, ohne die Maschine
selbst abzuändern („fixed automation“).
Dabei braucht man nur einmal an die vielen Fallen in Grabstätten, die in allen wohl
nicht mit allzu vielen Effekten aufwarten können.
Genannt sei hier einmal der Tüftler Heron, der vor etwa 2000
Jahren, um 60 nach Christus in Alexandria (in Ägypten) lebte.
Dieser lehrte als Mathematiker und Physiker und auf ihn gehen
nach heutigen Erkenntnissen eine Menge Erfindungen zurück.
Dabei ist die Zuordnung manches Mal
nicht eindeutig, da oft nur abgeschriebene
Schriften aus dem Mittelalter die Zeit überdauert haben, oder nicht
klar ist ob Heron selbst auch nur wieder von anderen die Ideen
erhalten hat.
-5-
Dem ganzen fügte er dann noch Effekte hinzu indem er z.B. kleine Kugeln auf
Bleche fallen ließ um es Donnern zu lassen, oder Figuren mit Spiegeln erscheinen
und verschwinden ließ.
Die über zahlreiche Rollen geführten
Schnüre, durch welche die Figuren
gesteuert wurden, wickelte er wiederum
um eine mit Noppen versehene Stange.
Je nach Wickelung bewegten sich die
Figuren und Gegenstände nun anders
beim Drehen der Stange.
Was heute wäre, wenn all diese Erfindungen sich bereits zu jener Zeit, vor 2000
Jahren, durchgesetzt hätten, ist nicht zu sagen, aber dies sollte zeigen, dass solch’
Erfindungen und die Ideen dazu nicht allein in den letzten 100 Jahren und im Zuge
der Entwicklung von Computern entstanden sind. Wirklich nutzbringend im
industriellen Maße eingesetzt wurden diese natürlich erst in jüngerer Zeit.
Dennoch ist die Programmierung auf diese Weise oft sehr aufwändig und teuer,
weshalb außerdem eine Vielzahl anderer Verfahren entwickelt wurde.
Davon wurden bereits die Hauptkategorien der Online- und Offlineprogrammierung
vorgestellt. Im Sinne der Aufwands- und Kostenreduzierung nehmen die Teach-In -
Verfahren heute sicher einen bedeutenden Bestandteil ein. Auch die
Programmierung per Control Panel und mit graphischen Benutzeroberflächen, wie
auch Simulatoren ist nicht zu vernachlässigen, aber der Bereich der Roboter-
programmierung befindet sich in stetigem Wandel. So kommen neuere Methoden wie
die Sensorgestützte Programmierung und
Virtual-Reality heute auch immer mehr zum Tragen.
-6-
Und im Bereich „Virtual-Reality“ darf sich der
Programmierer wie der Roboter selbst fühlen. Er steuert
ihn, z.B. mit einem elektronischen Handschuh direkt, als
sei er selbst der Roboter.
Zudem bekommt er visuelle dreidimensionale Daten aus
Sicht des Roboters übertragen – wie in einem
Computerspiel.
Eine 3D-Brille, ggf. etwas passende Musik und eine Tüte Popkorn dürfen dabei
natürlich nicht fehlen! ;-)
-7-
Programmiersprachen
Im Internet und in der Literatur ist eine Vielzahl verschiedener
Roboterprogrammiersprachen zu finden.
Dazu zählen z.B. AL, AML, AR-BASIC, ARLA, BAPS, COSIMIR, IRL, JARS, KAREL,
PA-LIB, RAPID, ROBEX, SRL und TPE, die hier keine weitere Erläuterung finden
sollen.
NQC, VAL/VAL2/VAL3, KRL und RCCL sind ebenso Roboterprogrammiersprachen,
wobei RCCL später noch genauer betrachtet wird.
NQC, stehend für „Not Quite C“ ist, wie es der Name schon vermuten lässt, an C /
C++ angelehnt. Diese Sprache wurde von Dave Baum für Kleinroboter entwickelt
und ist als Open-Source erhältlich. Sie bietet zwar weniger Funktionen als C und
C++, ist dafür aber sehr viel kompakter und der für einen Roboter benötigte
Betriebskern, sowie die darauf aufbauenden Programme beanspruchen die
Hardwareressourcen relativ gering.
Diese Eigenschaften macht die Sprache beispielsweise für die Lego-Mindstorm
Roboter sehr nützlich.
NQC wird in Verbindung mit Lego-Robotern häufig zum praxisbegleiteten Erlernen
von Grundkenntnissen in der Roboterprogrammierung eingesetzt.
VAL, VAL2, VAL3 und KRL hingegen sind Sprachen, die für Industrieroboter
entwickelt wurden. Die VAL-Sprachfamilie wurde von dem Industrieroboterhersteller
Stäubli und KRL von, wohl Europas größtem Roboterhersteller, KUKA entwickelt.
Diese Sprachen sind entsprechend extra auf die produzierten Roboter der beiden
Hersteller zugeschnitten.
Das macht sie zwar ungeeignet für Roboter fremder Hersteller, aber die Roboter aus
eigener Fabrikation finden dafür entsprechend bessere Unterstützung in all ihren
Funktionen.
-8-
RCCL (Multi-RCCL)
Was RCCL ist und wo RCCL Anwendung findet:
RCCL, stehend für „Robot Control C-Library”, ist eine Bibliothek für die
Programmiersprache C/C++ und ist zur Erstellung von Aufgabenorientierter Software
zur Robotersteuerung unter Unix gedacht.
RCCL beinhaltet außerdem noch einen Simulator zur 3D-Simulation der späteren
Ausführungen.
Die Originalversion von RCCL ist 1983 durch Vincent Hayward an der Purdue
Universität in den USA entstanden. Seitdem durchlebte RCCL eine starke
Weiterentwicklung. So wurde zum Beispiel 1988 von Lloyd, Parker und McClain an
der McGill Universität in Zusammenarbeit mit dem General Electric Advanced
Technologie Laboratory in New Jersey die Multi-Roboter- und Multi-CPU-
Unterstützung eingeführt. Infolge änderte sich die offizielle Bezeichnung von RCCL
zu „Multi-RCCL“.
RCCL gilt inzwischen zwar als veraltet und findet in der Industrie keine Anwendung
mehr, aber sie ist für den nichtkommerziellen Einsatz frei erhältlich und wird aufgrund
ihrer breiten Unterstützung und oftmals vorhandenen Weiterentwicklungen noch in
Universitäten und teils auch Forschungseinrichtungen eingesetzt.
So kommt es, dass z.B. die Steuerungssoftware für den Arm mit integrierter
Baretthand des mobilen Roboters am Informatikum der Universität Hamburg mit Hilfe
von RCCL entwickelt wurde.
Ein Code-Beispiel:
Es folgt ein Codebeispiel für eine geradlinige Bewegung zu einem Zielpunkt und eine
vom Bewegungsgenerator als „günstig“ errechnete, geschwungene Bewegung
zurück zum Startpunkt. Dabei wird zuerst sichergestellt, dass sich der Roboter in
einer bekannten Initialposition befindet, um Verrenkungen bei der geradlinigen
Bewegung zu vermeiden. Zudem werden zwei kleine Pausen eingelegt.
Das Programm kann mithilfe der RCCL-Bibliothek in C für Unix kompiliert und im
RCCL-Simulator ausgetestet werden. Die einzelnen Codezeilen sind zum besseren
Verständnis kommentiert.
- 10 -
Quellen
• Internet:
– http://tams-www.informatik.uni-hamburg.de/lehre/ws2004/vorlesungen/
einfuehrung_in_die_robotik/folien/48.pdf
– www.iof.mw.tu-dresden.de/vorlesung/
000301020401/05_mrb03_Programmierung_Flemming.pdf
– www.ba-eisenach.de/fileadmin/
_temp_/dokumente/stura/scripte/sem4/rob07.pdf
– http://de.geocities.com/gehnio/Robotik.pdf
– http://www.kuka.com/germany/de
– http://www.staeubli.de
• Literatur:
– Introduction to Robotics (John J. Craig)
– Multi-RCCL User‘s Guide (John Lloyd und Vincent Hayward 1992)
- 11 -