VERFAHREN UND COMPUTERPROGRAMM ZUR KORREKTUR VON FEHLERN EINES MANIPULATORSYSTEMS
Gebiet der Erfindung Die Erfindung betrifft ein Verfahren und ein Computerprogramm zur Korrektur von Fehlern eines Manipulatorsystems. Derartige Manipulatorsysteme umfassen typischerweise zumindest einen Manipulator und werden mittels eines
Manipulatorprogramms gesteuert. Tritt ein Fehler im Manipulatorsystem auf, so kann das Manipulatorsystem in einen Systemzustand überführt werden, welcher ein
Fortsetzen des Manipulatorprogramms erlaubt.
Hintergrund
Typische Manipulatorsysteme umfassen zumindest einen Manipulator, welcher dazu eingerichtet ist, physikalisch mit seiner Umgebung zu interagieren. Beispielsweise kann ein derartiger Manipulator ein Industrieroboter sein, der über zumindest drei bewegliche, frei programmierbare Achsen verfügt und einen Endeffektor, wie beispielsweise einen Greifer oder ein Bearbeitungswerkzeug, führt. Derartige
Manipulatorsysteme kommen beispielsweise in der Automobilfertigung zum Einsatz.
Gesteuert werden Manipulatorsysteme typischerweise mittels eines
Manipulatorprogramms, welches das Systemverhalten anwendungsspezifisch festlegt. Die Anforderung an die Programmierung von Manipulatorprogrammen hat sich zum Beispiel durch den Einsatz von zusätzlicher Sensorik, welche neue Aufgabenfelder in der Robotik ermöglicht, geändert. Beispielsweise können durch den Einsatz von Kraft- und/oder Momentensensoren, wie sie zum Beispiel im Industrieroboter LBR iiwa der KUKA AG zum Einsatz kommen, neue Funktionalitäten programmiert werden. Diese umfassen unter anderem Suchfahrten mit Sensorik, kraftgeregelter Werkzeugbetrieb, MRK (Mensch-Roboter-Kooperation) Fähigkeit, sensitives Greifen usw.
Manipulatoren setzen diese Funktionen mittels programmierter Operationen um. Ein Manipulatorprogramm umfasst dazu typischerweise mehrere Operationen. Die Aneinanderreihung mehrerer Operationen bildet einen Prozess. Während der
Ausführung eines Prozesses kann ein Fehler auftreten, der ein Fortsetzen nach Plan verhindert. Der Grund für das Auftreten eines Fehlers kann beispielsweise ein
Programmierfehler (z.B. durch falsch gesetzte Parameterwerte) oder das Auftreten
BESTÄTIGUNGSKOPIE
eines unvorhergesehenen Ereignisses sein, auf das das Manipulatorsystem nicht selbstständig reagieren kann oder eine Unterbrechung des geplanten Prozesses fordert.
Tritt ein Fehler auf, besteht grundsätzlich die Möglichkeit mit einem neuen, geänderten Plan fortzusetzen oder den Prozess rückgängig zu machen. Manche Prozesse können vollständig rückgängig gemacht und wiederholt werden. Andere Prozesse sind irreversible Prozesse und können nicht rückgängig gemacht werden; jedoch kann bei Kenntnis über die Art des Fehlers, der begonnene und abgebrochene Prozess „repariert" werden. Dennoch ist es oftmals nötig, das Manipulatorprogramm
abzubrechen und erneut zu starten, wodurch hohe Wiederanlaufzeiten und Kosten generiert werden.
Ein Beispiel für einen irreversiblen Prozess ist das Schweißen mittels eines
Manipulators. Wird der Schweißprozess unterbrochen, so kann der Prozess nicht einfach wiederholt werden, da die bereits geschweißte Naht durch das erneute (Über-) Schweißen beschädigt werden könnte. Jedoch könnte der Prozess nach Beseitigung eines aufgetretenen Fehlers von der Unterbrechungsstelle an fortgeführt werden.
Folglich werden Verfahren benötigt, welche ein (automatisiertes) Fortsetzen von begonnen Prozessen, ein Wiederholen und/oder eine Planänderung im Prozess ermöglichen. Sollen solche Verfahren mit herkömmlichen Programmiertechniken gelöst werden, wird die Komplexität zusätzlich erhöht, wodurch die Zahl der
Programmierfehler steigt.
Die Programmierung von Manipulatorprogrammen erfolgt heute meist mit
domänenspezifischen Programmiersprachen, die auf BASIC oder PASCAL aufbauen. Diese Programmiersprachen werden meist durch einen Interpreter ausgeführt. Ein großer Anteil des Programmierens ist die Fehlerbehebung und Prozessoptimierung, welche im Anschluss der Programmierung des regulären Prozesses (d.h. des
Manipulatorprogramms) erfolgt. Die Fehlersuche und -korrektur erfordern erhebliche zeitliche und personelle Ressourcen, wodurch hohe Kosten entstehen. Weiterhin drohen hohe Schäden, falls ein nicht erkannter Fehler z.B. zu einer Unterbrechung einer Serienproduktion führt. Überdies können Manipulatorprogramme mit Hilfe einer allgemeinen Hochsprache (z.B. Java) programmiert werden. Der Programmcode wird typischerweise kompiliert und von einem Bytecode-Interpreter (Java VM) der Programmiersprache ausgeführt. Allerdings ist die Echtzeitfähigkeit dieser Art von Interpreter beschränkt, sodass die
Systemzeit des Manipulatorprogramms und des Manipulatorsystems voneinander abweichen können. Folglich kann auf Laufzeitfehler nicht in Echtzeit reagiert werden. Weiterhin ist z.B. die Java VM typischerweise nicht für die besonderen Anforderungen der Manipulatorprogrammierung ausgestattet. Insbesondere wird u.a. das Ausführen des Manipulatorprogramms ab einer bestimmten Stelle im Ablauf des
Manipulatorprogramms (Programmeinstieg), das Springen an eine bestimmte Stelle im Ablauf des Manipulatorprogramms während der Ausführung des
Manipulatorprogramms sowie das Anhalten und Fortsetzen an einer definierten Stelle im Ablauf des Manipulatorprogramms nicht unterstützt. Dadurch wird die Behebung von Fehlern erschwert.
Um die Fehlerwahrscheinlichkeit zu reduzieren, haben Automobilhersteller und Systemintegratoren eigene Richtlinien (sog. Coding-Standards, z.B.„VW-Standard", „Daimler-Standard", etc.) auf Basis der spezifischen (Manipulator-)
Programmiersprache entwickelt. Beispielsweise geben derartige Richtlinien vor, für typische Applikationsfehler systematisch eine Fehlerbehandlung/-reaktion zu hinterlegen. Somit wird dem Programmierer vorgegeben, wie Programmcode geschrieben werden soll.
Derartige Fehlerbehandlungen oder Fehlerreaktionen sollen nach Behebung des Fehlers erlauben, das Manipulatorprogramm wie geplant fortsetzen. Dazu verwendete Befehlsstrukturen, wie„GOTO"-Befehle,„IF-ELSE"-Befehle oder andere Sprung- und Verzweigungsbefehle sind jedoch wenig übersichtlich, was zu einer Erhöhung der Komplexität der Manipulatorprogramme führt. Weiterhin muss bei der
herkömmlichen Fehlerbehandlung oft vorausgesetzt werden, dass jede durchgeführte Operation des Manipulatorprogramms für sich und in der richtigen Reihenfolge zurückgesetzt werden muss. Dies ist mittels herkömmlicher Interpreter, wie Java VM nicht automatisiert möglich. Insbesondere irreversible Prozesse sind für eine automatisierte Rückabwicklung der einzelnen Operationen nicht geeignet.
Aufgabe der vorliegenden Erfindung ist es ein Verfahren und ein Computerprogramm sowie eine Vorrichtung bereitzustellen, die die oben beschriebenen Nachteile zumindest teilweise ausräumen können.
Ausfuhrliche Beschreibung der Erfindung
Die Aufgabe der Erfindung wird durch ein Verfahren zur Korrektur von Fehlern eines Manipulatorsystems nach Anspruch l, ein Computerprogramm nach Anspruch 14 sowie eine Vorrichtung gemäß Anspruch 16 gelöst. Insbesondere wird die Aufgabe durch ein Verfahren zur Korrektur von Fehlern eines Manipulatorsystems gelöst, wobei das Manipulatorsystem zumindest einen
Manipulator umfasst und mittels zumindest eines Manipulatorprogramms gesteuert wird, wobei das Verfahren die folgenden Verfahrensschritte umfasst:
• Bereitstellen zumindest eines Manipulatorprogramms, wobei das
Manipulatorprogramm mehrere Operationen umfasst;
• Zusammenfassen von zumindest zwei der Operationen zu zumindest einer
Operationsstruktur;
• Definieren von zumindest einem Aufsetzpunkt, wobei der zumindest eine
Aufsetzpunkt den Anfang und/ oder das Ende einer Operationsstruktur bildet; · Bereitstellen zumindest einer Reaktionsstruktur und Zuordnen der
Reaktionsstruktur zu einer Operationsstruktur, wobei die zumindest eine
Reaktionsstruktur Reaktionsoperationen, beinhaltet, bei deren Ausführung das Manipulatorprogramm das Manipulatorsystem so steuert, dass es in einen
Systemzustand geführt wird, der einem Aufsetzpunkt entspricht;
· Ausführen des Manipulatorprogramms und wenn ein Fehler auftritt,
• Ausführen der Reaktionsstruktur, sodass das Manipulatorsystem in einen
Systemzustand überführt wird, der einem Aufsetzpunkt entspricht.
Manipulatorprogramme dienen der Steuerung des Manipulatorsystems. Beispielsweise kann ein Manipulatorprogramm Bewegungen und Arbeitsschritte eines Manipulators des Manipulatorsystems vorgeben. So ist beispielsweise möglich, dass ein Manipulator entsprechend einer definierten Bewegungsbahn bewegt wird, um ein Objekt zu greifen. Anschließend kann das Objekt entsprechend einer zweiten definierten Bewegungsbahn bewegt werden und an einer anderen Position abgelegt werden. Ebenso können Manipulatorprogramme Anweisungen umfassen, die das Montieren von Teilen, das Schweißen, das Niet-Setzen oder andere Aufgaben betreffen.
Das Manipulatorprogramm weist dazu mehrere Operationen auf, wobei mehrere Operationen zu einem Prozess aneinander gereiht werden, um das Manipulatorsystem zu steuern und beispielsweise die oben genannten Aufgaben auszuführen. Dabei
werden zumindest zwei der Operationen zu einer Operationsstruktur
zusammengefasst. Typischerweise werden zusammengehörige Operationen, wie etwa voneinander abhängige Operationen oder funktional zusammenstehende Operationen zu einer Operationsstruktur zusammengefasst. Damit kann das Manipulatorprogramm übersichtlicher gestaltet und besser beherrscht werden.
Werden mehrere Operationsstrukturen in Folge ausgeführt, so ist jeweils die vorhergehende Operationsstruktur abgeschlossen. Jedoch kann eine einzelne erste Operation eine zweite Operation starten, die über die Ausführungszeit der ersten Operation hinausreicht. In diesem Fall muss der Kontext der Operationsstruktur erhalten bleiben, bis die letzte Operation der Operationsstruktur vollständig ausgeführt ist. Somit beeinflussen sich die Operationsstrukturen nicht gegenseitig. Folglich führen parallel ausgeführte Operationsstrukturen zu gleichen Ergebnissen wie seriell ausgeführte Operationsstrukturen. Weiterhin ist eine Zustandsänderung einer durchgeführten Operationsstruktur dauerhaft.
Der Anfang und/oder das Ende einer Operationsstruktur können einen Aufsetzpunkt bilden. Von einem Aufsetzpunkt aus kann das Manipulatorprogramm unabhängig von seiner Ausführungshistorie fortgesetzt werden. Dabei werden immer die gleichen Ergebnisse erzielt.
Tritt nun ein Fehler auf, der auf einem Programmierfehler beruht, oder in einem unvorhergesehenen Ereignis begründet ist, so kann mittels einer Reaktionsstruktur ein solcher Aufsetzpunkt erreicht werden und das Manipulatorprogramm von diesem fortgesetzt werden. Dabei muss der Aufsetzpunkt nicht dem zuletzt durchlaufenen Aufsetzpunkt entsprechen. Ebenso kann von einem Aufsetzpunkt auch eine andere Operationsstruktur ausgeführt werden, als diejenige in der der Fehler aufgetreten ist. Somit kann ein begonnener Prozess korrigiert werden oder mit einem neuen Plan fortgesetzt werden, ohne das Manipulatorprogramm abbrechen oder neu starten zu müssen.
Weiterhin wird durch die direkte Zuordnung von Operationsstruktur und
Reaktionsstruktur ein übersichtliches Manipulatorprogramm ermöglicht, wodurch Fehler bei der Programmierung reduziert werden können. Weiterhin wird die
Fehlerbehebung vereinfacht.
Vorzugsweise ist die Operationsstruktur konsistent, so dass die Integritätsbedingungen des Manipulatorsystem an einem Aufsetzpunkt und/oder vor und/oder nach dem Ausführen der Operationsstruktur eingehalten werden. Somit ist sichergestellt, dass ein Manipulatorprogramm unabhängig von seiner Ausführungshistorie von einem
Aufsetzpunkt fortgesetzt werden kann. Dabei werden immer die gleichen Ergebnisse erzielt.
Tritt während der Ausführung des Manipulatorprogramms ein Fehler auf, welcher beispielsweise durch einen Programmierfehler oder durch ein unvorhergesehenes Ereignis im Manipulatorsystem hervorgerufen wird, so kann eine Reaktionsstruktur ausgeführt werden, die das Manipulatorsystem in einen Systemzustand überführt der einem Aufsetzpunkt entspricht. Dabei wird nicht nur die Software„zurückgespult", sondern das Manipulatorsystem tatsächlich in einen Systemzustand überführt, der dem Aufsetzpunkt entspricht.
Die Reaktionsstruktur umfasst vorzugsweise Reaktionsoperationen, welche einzelne Operationen rückgängig machen können, falls die betreffende Operationsstruktur einen reversiblen Prozess beschreibt. Beschreibt die betreffende Operationsstruktur einen irreversiblen Prozess, so können in der Reaktionsstruktur Reaktionsoperationen enthalten sein, die ein Fortsetzen mit einem geänderten Plan ermöglichen, d.h. die von einer reinen Rückabwicklung ausgeführter Operationen abweichen.
Beispielsweise kann sich beim Setzen eines Nietes mittels eines Manipulators der Niet in einer Bohrung verklemmen. In diesem Fall ist das korrekte Nieten nicht möglich. Erkennt das Manipulatorsystem diesen Fehler, so kann die Operationsstruktur „Nieten" abgebrochen werden und eine zugeordnete Reaktionsstruktur eingeleitet werden. Eine mögliche Reaktionsstruktur könnte in diesem Beispiel das Öffnen des Nietwerkzeugs umfassen. Anschließend könnte ein Herausziehen des verklemmten Nietes aus der Bohrung kommandiert werden. Schließlich könnte ein neuer Niet aufgenommen werden, und die Operationsstruktur„Nieten" erneut durchgeführt werden.
Weitere Reaktionsstrukturen sind ebenfalls möglich. Beispielsweise kann abhängig von der Anzahl der fehlgeschlagenen Versuche, eine Operationsstruktur auszuführen, eine Reaktionsstruktur ein anderes Vorgehen kommandieren. Um im vorangegangenen Beispiel zu bleiben, könnte nach dem wiederholten Durchführen der
Operationsstruktur„Nieten", welches zum gleichen Fehler„Verklemmter Niet" führt,
ein anderes Vorgehen kommandiert werden und ein Bediener gerufen werden. Dieser könnte dazu aufgefordert werden, den verklemmten Niet manuell zu entfernen.
Eine Operationsstruktur und eine zugeordnete Reaktionsstruktur sind vorzugsweise in einem gemeinsamen Semantikbaustein implementiert. Somit ist im
Manipulatorprogramm eine feste Zuordnung von Operationsstruktur und
Reaktionsstruktur sichergestellt, wodurch die Komplexität reduziert wird.
Eine Reaktionsstruktur kann neben dem Rückgängig-Machen einer Operationsstruktur auch das Abbrechen der Operationsstruktur und/oder das Fortsetzen des
Manipulatorprogramms von einem anderen Aufsetzpunkt kommandieren.
Vorzugsweise ist der Systemzustand des Manipulatorsystem an einem Aufsetzpunkt und/oder vor und/oder nach dem Ausführen einer Operationsstruktur nicht in allen Systemparametern konsistent. Jedoch muss eine Konsistenz in den wesentlichen Parametern geben sein, so dass ein Fortsetzen oder Wiederholen des
Manipulatorprogramms von diesem Aufsetzpunkt aus möglich ist. Derartige nicht konsistente Systemparameter können beispielsweise aus irreversiblen Prozessen herrühren. Wird beispielsweise ein Schweißprozess mittels des
Manipulatorprogramms gesteuert, so ist der Parameter„Schweißnahtlänge"
irreversibel, da beispielsweise ein bestimmter Teil der Schweißnaht bis zum Auftreten des Fehlers bereits geschweißt wurde. Tritt nun ein Fehler auf, kann die
Reaktionsstruktur nicht den gleichen Systemzustand herstellen, wie vor der
Ausführung des Schweißprozesses. Daher muss in diesem Fall die Reaktionsstruktur eine entsprechende Reaktionsoperation bereitstellen, welche es ermöglicht den ursächlichen Fehler des Schweißprozesses zu beheben (z. B. Reinigung des
Schweißwerkzeugs) und anschließend an der Stelle der Schweißnaht fortfahren an der die Schweißung unterbrochen wurde. Ebenso ist es möglich, dass in diesem Fall die Reaktionsstruktur ein alternatives Vorgehen vorsieht, wonach die unterbrochene Schweißnaht nicht fertig geschweißt, sondern in einem händischen Arbeitsschritt nachbearbeitet werden soll. Das Manipulatorprogramm kann in diesem Fall an anderer Stelle fortgesetzt werden. Vorzugsweise wird die Ausführung einer Operationsstruktur beim Auftreten eines
Fehlers unterbrochen und im Anschluss mit dem Ausführen einer Reaktionsstruktur fortgefahren. Somit kann eine Operationsstruktur des Manipulatorprogramms unmittelbar nach dem Auftreten eines Fehlers wiederholt oder das
Manipulatorprogramm von einem anderen Aufsetzpunkt fortgesetzt werden. Dies
ermöglicht es Stillstandzeiten des Manipulatorsystems zu minimieren und
vorzugsweise automatisiert, d. h. ohne ein Eingreifen eines Bedieners, fortzufahren. Somit kann die Produktivität des Manipulatorsystems erhöht werden.
Insbesondere bevorzugt ist nicht jeder Operation einer Operationsstruktur eine eigene Reaktionsoperation einer entsprechenden Reaktionsstruktur zugeordnet. Ebenso muss nicht jeder Operationsstruktur eine eigene Reaktionsstruktur zugeordnet sein.
Vorzugsweise, ist einer Operationsstruktur eine Reaktionsstruktur zugeordnet, wobei die Reaktionsstruktur bevorzugt zumindest einer weiteren Operationsstruktur zugeordnet ist. Somit kann mit einer reduzierten Anzahl von Reaktionsstrukturen auf Fehler unterschiedlicher Operationsstrukturen reagiert werden. Bevorzugt ist eine Reaktionsstruktur einer Mehrzahl von Operationsstrukturen zugeordnet, wenn die Operationsstrukturen einen gemeinsamen Aufsetzpunkt aufweisen.
Vorzugsweise beinhaltet die Reaktionsstruktur zumindest eine Reaktionsoperation deren Ausführung das Manipulatorsystem in einen Systemzustand führt, der dem Aufsetzpunkt entspricht, welcher Aufsetzpunkt den Anfang der Operationsstruktur bildet, in der der Fehler aufgetreten ist. Derartige Reaktionsstrukturen ermöglichen das „Zurückspulen" des Manipulatorsystems. Somit kann die Operationsstruktur, in der der Fehler aufgetreten ist, wiederholt werden. Das Zurückführen in den Aufsetzpunkt muss dabei nicht einer direkten Invertierung der Operationsstruktur entsprechen, sondern kann auf einem alternativen Weg ausgeführt werden. Soll beispielsweise eine Bewegung eines Manipulators rückgängig gemacht werden und ist der direkte Rückweg versperrt, so kann der Manipulator auf einer alternativen Bewegungsbahn an den Ausgangspunkt der Bewegung zurückgeführt werden.
Vorzugsweise macht die zumindest eine Reaktionsoperation eine Operation der Operationsstruktur rückgängig. Somit können einzelne Operationen unmittelbar rückgängig gemacht werden. Dies ist insbesondere bei reversiblen Prozessen
vorteilhaft. So kann beispielsweise eine vom Manipulator durchgeführte Bewegung unmittelbar zurückgefahren werden.
Vorzugsweise wird eine Operation des Manipulatorprogramms durch zumindest einen Parameter definiert, wobei der zumindest eine Parameter durch eine
Reaktionsoperation der Reaktionsstruktur veränderbar ist. Ein Parameter kann ein nummerischer Parameter, wie beispielsweise eine Manipulatorgeschwindigkeit, oder ein Anweisungsparameter sein, der die Abfolge der Operationen einer
Operationsstruktur oder die Auswahl der nachfolgenden Operationsstruktur
beeinflusst. Somit kann eine Reaktionsoperation bewirken, dass die Operationsstruktur mit veränderten Parametern (z. B. mit langsamerer Manipulatorgeschwindigkeit) fortgesetzt oder mit veränderten Parametern wiederholt wird. Ebenso ist es möglich eine alternative Verzweigung des Manipulatorprogramms zu erzielen. Vorzugsweise beinhaltet die Reaktionsstruktur zumindest eine Reaktionsoperation deren Ausführung die unterbrochene Operationsstruktur mit zumindest einem geänderten Parameter fortsetzt oder die unterbrochene Operationsstruktur erneut ausführt. Somit ist es möglich Operationsstrukturen, in denen ein Fehler aufgetreten ist, erneut oder, falls erforderlich, mit geänderten, vorzugsweise optimierten
Parametern auszuführen.
Vorzugsweise beinhaltet die Reaktionsstruktur zumindest eine Reaktionsoperation, deren Ausführung die unterbrochene Operationsstruktur solange unterbricht bis eine Bedienereingabe erfolgt ist. Dies ermöglicht es, falls der aufgetretene Fehler nicht automatisch von dem Manipulatorsystem behoben werden kann, das Eingreifen eines Bedieners anzufordern. Beispielsweise kann der Bediener dazu aufgefordert werden einen bestimmten Systemzustand zu überprüfen, fehlerhafte Teile oder Werkstücke aus dem Manipulatorsystem zu entfernen oder auszutauschen und/oder dergleichen.
Bestätigt der Bediener dem Manipulatorsystem ein erfolgreiches Ausführen der Aufgabe, so kann mit der Reaktionsstruktur oder einer Operationsstruktur fortgesetzt werden.
Vorzugsweise werden, abhängig von der Art des aufgetretenen Fehlers,
unterschiedliche Reaktionsoperationen der Reaktionsstruktur ausgeführt. Dies ist vorteilhaft, da so individuell auf unterschiedliche Fehlertypen reagiert werden kann. Vorzugsweise werden in Abhängigkeit des aufgetretenen Fehlers unterschiedliche Reaktionsstrukturen ausgeführt. Dazu sind einer Operationsstruktur vorzugsweise mehrere Reaktionsstrukturen zugeordnet, die in Abhängigkeit des aufgetretenen Fehlers ausgeführt werden.
Wird beispielsweise eine Operationsstruktur abgebrochen, da ein
Sicherheitsmechanismus des Manipulatorsystems eingreift, so kann möglicherweise die Operationsstruktur einfach wiederholt werden, wenn der Grund für das Eingreifen der Sicherheitseinrichtung ein vorübergehender war. Andererseits kann, falls ein Fehler auftritt, der nicht automatisiert behoben werden kann, ein Bediener
hinzugerufen werden. Ebenso ist es möglich, dass ein Fehler ein Fortsetzen an einem anderen Aufsetzpunkt des Manipulatorprogramms erfordert. Beispielsweise kann eine
Operationsstruktur übersprungen werden und das Manipulatorprogramm an anderer Stelle fortgesetzt werden (siehe hierzu obiges Beispiel, wonach eine unterbrochene Schweißnaht nicht fertig gestellt werden soll). Somit kann einer fehlerhaft ausgeführten ' Operation einer Operationsstruktur und/oder einer fehlerhafte ausgeführten
Operationsstruktur eine entsprechende Reaktionsstruktur des Manipulatorprogramms folgen. Dies ermöglicht eine fehlerabhängige, differenzierte Fehlerbehebung und ein Fortsetzen des Manipulatorprogramms von einem geeigneten Aufsetzpunkt aus.
Weiterhin können vorzugsweise abhängig vom aufgetretenen Fehler Parameter unterschiedlich geändert werden. Beispielsweise kann ein Wiederholen einer
Operationsstruktur mit reduzierter Geschwindigkeit des Manipulators durchgeführt werden, wenn ein erster Fehler auftritt oder mit einer veränderten Kraftschwelle einer Kraftüberwachung des Manipulators, wenn ein zweiter Fehler auftritt. Andere veränderte Parameter sind ebenfalls denkbar.
Vorzugsweise ist die zumindest eine Operationsstruktur in einem Aufsetzpunkt mit zumindest einer weiteren Operation und/oder Operationsstruktur verknüpft, wobei nach dem Erreichen des Aufsetzpunktes eine der verknüpften Operationen und/oder Operationsstrukturen ausgeführt wird. Dabei kann der Aufsetzpunkt über eine
Operationsstruktur (d. h. vorwärts) erreicht oder über eine Reaktionsstruktur (d. h. rückwärts) erreicht werden. Eine Verknüpfung mehrerer Operationsstrukturen mit einem Aufsetzpunkt ermöglicht es unterschiedliche Programmabläufe durch die Verzweigung des Manipulatorprogramms zu implementieren. Somit kann nach dem Erreichen eines Aufsetzpunkts mit unterschiedlichen
Operationsstrukturen/Operationen fortgefahren werden. Dies ermöglicht eine flexible Fehlerkorrektur. Ebenso kann eine Operationsstruktur vorzugsweise, abhängig vom aufgetretenen Fehler, mit geänderten Parametern ausgeführt werden.
Vorzugsweise ist ein Parameter ein nummerischer Parameter oder ein
Anweisungsparameter. Nummerische Parameter sind Parameter, die in Zahlenwerten ausgedrückt werden und physikalischen Größen entsprechen. Diese sind beispielsweise Geschwindigkeiten des Manipulators, Kraftschwellen, Momentschwellen, Wartezeiten und dergleichen. Anweisungsparameter beeinflussen den Ablauf des
Manipulatorprogramms und geben beispielsweise die Ausführungsreihenfolge der Operationsstrukturen oder einzelner Operationen vor.
Vorzugsweise beinhaltet das Manipulatorprogramm Echtzeit-Operationen und
Echtzeit-Reaktionsoperationen sowie Nicht-Echtzeit-Operationen und Nicht-Echtzeit-
Reaktionsoperationen, wobei vor der Ausführung einer Echtzeit-Operation alle
Echtzeit- Reaktionsoperationen und Nicht-Echtzeit-Reaktionsoperationen beendet sind. Durch die Bestimmung von Nicht-Echtzeit- und Echtzeit-Operationen bzw. - Reaktionsoperationen, kann ein deterministisches Verhalten des
Manipulatorprogramms erzielt werden. Soll eine Echtzeit-Operation bzw.
-Reaktionsoperation durchgeführt werden, so ist sichergestellt, dass die Zeit des Manipulatorprogramms und die tatsächliche Systemzeit übereinstimmen.
Werden hingegen Nicht-Echtzeit-Operationen ausgeführt, so können die Zeit des Manipulatorprogramms und die tatsächliche Systemzeit voneinander abweichen. Somit können beispielsweise Nicht-Echtzeit-Operationen bzw. -Reaktionsoperationen im Hintergrund ablaufen.
Die Aufgabe wird weiterhin gelöst durch ein Computerprogramm, aufweisend
Programmbefehle die, wenn sie auf einem Computer und/oder Mikrokontroller geladen werden, den Computer und/oder den Mikrokontroller dazu veranlassen, das beschriebene Verfahren auszuführen. Derartige Computerprogramme können auf Vorrichtungen geladen werden, die dazu eingerichtet sind Manipulatorsysteme zu steuern. Vorzugsweise sind eine Operationsstruktur und eine zugeordnete
Reaktionsstruktur im selben Manipulatorprogrammteil implementiert und bilden vorzugsweise einen Semantikbaustein. Dadurch sind die Operationsstrukturen oder Reaktionsstrukturen eng miteinander verknüpft, so dass die Programmierung übersichtlich gestaltet werden kann. Weiterhin ist vorzugsweise das
Computerprogramm als Teil des Manipulatorprogramms implementiert. Ebenfalls kann das Computerprogramm ein eigenständiges Computerprogramm sein.
Die Aufgabe wird weiter gelöst durch eine Vorrichtung, welche dazu eingerichtet ist das Computerprogramm auszuführen. Derartige Vorrichtungen sind beispielsweise
Steuerungseinrichtungen des Manipulatorsystems.
Beschreibung der Figuren
Im Folgenden wird die Erfindung unter Bezugnahme auf die Figuren 1 bis 5 detailliert beschrieben. Dabei zeigt Fig. 1 ein Verfahren zur Fehlerbehebung gemäß dem Stand der Technik;
Fig. 2 eine schematische Darstellung eines Semantikbausteins einer
Operationsstruktur sowie einer Reaktionsstruktur;
Fig. 3 eine schematische Darstellung einer Operationsstruktur sowie einer
Reaktionsstruktur des Manipulatorprogramms;
Fig. 4 eine schematische Darstellung eines Modells eines Manipulatorprogramms; und Fig. 5 eine schematische Darstellung einer Anwendung des Manipulatorprogramms.
Insbesondere zeigt Fig. l eine schematische Darstellung einer Fehlerbehandlung eines Manipulatorprogramms l gemäß einem bekannten Verfahren. Nach der Ausführung eines Prozessschrittes Si, S2, S3 wird überprüft ob der jeweilige Prozessschritt erfolgreich durchgeführt worden ist. Ist dies der Fall, kann mit folgenden Prozessschritt S2 fortgefahren werden. Tritt ein Fehler auf, so springt das Manipulatorprogramm zu einer Fehlerbehandlungsstruktur Fi, F2, F3, welche das Manipulatorprogramm beendet. Nach der Behebung des Fehlers muss das Manipulatorprogramm erneut gestartet werden. Diese Fehlerbehandlung ist unflexibel und daher nur bedingt für Manipulatorsysteme geeignet. Sollen mit herkömmlichen Verfahren auch komplizierte Fehlerfälle abgedeckt werden, so steigt die Komplexität des Manipulatorprogramms und somit die Fehlerwahrscheinlichkeit für etwaige Programmierfehler.
Fig. 2 zeigt eine schematische Darstellung 2 eines Semantikbausteins eines
Computerprogramms zur Durchführung eines Verfahrens zur Korrektur von Fehlern in einem Manipulatorsystem. Dabei gliedert sich der Semantikbaustein 200 in eine Operationsstruktur 210 und in eine Reaktionsstruktur 220. Tritt während der
Ausführung der Operationsstruktur 210 ein Fehler auf, so wird die Operationsstruktur 210 unterbrochen und mit der Reaktionsstruktur 220 fortgefahren.
Die Reaktionsstruktur 220 beinhaltet Reaktionsoperationen 221 bis 225. In einer ersten Reaktionsoperation 221 wird die Art des aufgetretenen Fehlers ermittelt und entschieden, mit welcher der Reaktionsoperationen 222-224 fortgefahren werden soll. Beispielsweise kann Reaktionsoperation 222 Anweisungen umfassen, die eine
Fortführung der Operationsstruktur 210 mit einem geänderten Parametersatz kommandieren. Reaktionsoperation 223 kann beispielsweise Anweisungen umfassen, welche die Operationen der ausgeführten und unterbrochenen Operationsstruktur 210 zumindest teilweise rückgängig machen. Reaktionsoperation 224 kann eine
Abbruchanweisung umfassen, so dass nicht mit Operationsstruktur 210 fortgefahren wird, sondern mit einer weiteren Operationsstruktur.
Die Reaktionsoperation 225 umfasst eine Anweisung, welche den Aufsetzpunkt und die folgende Operationsstruktur festlegt, mit denen das Manipulatorprogramm fortgesetzt werden soll. Ein solcher Aufsetzpunkt kann beispielsweise zu Beginn der
Operationsstruktur 210 definiert sein, so dass die Operationsstruktur 210 erneut ausgeführt werden kann. Die erneute Ausführung der Operationsstruktur 210 kann gegebenenfalls mit einem geänderten Parametersatz erfolgen. Ebenso können auch andere Aufsetzpunkte zur Fortsetzung des Manipulatorprogramms genutzt werden. Somit ist eine Verzweigung und sind vielfältige Reaktionen auf Fehler möglich. Da sowohl die Operationsstruktur als auch die Reaktionsstruktur im selben
Semantikbaustein implementiert sind, bleibt das Manipulatorprogramm übersichtlich und erlaubt eine individuelle Anpassung der Operationsstruktur und/oder der
Reaktionsstruktur. Programmierfehler können somit schnell behoben werden und aufgrund der reduzierten Komplexität und erhöhten Übersichtlichkeit ist die
Wahrscheinlichkeit für das Entstehen von Programmierfehlern herabgesetzt.
Fig. 3 zeigt eine schematische Darstellung einer Operationsstruktur 310 sowie einer Reaktionsstruktur 320. Die Operationsstruktur 310 umfasst mehrere Operationen Ol bis On. Diese Operationen werden vorzugsweise sequenziell ausgeführt, wie durch die geraden, durchgehend gezeichneten Pfeile angezeigt. Die Operationsstruktur 310 beginnt in einem ersten Aufsetzpunkt APi und endet in einem zweiten Aufsetzpunkt AP2. In den Aufsetzpunkten ist das Manipulatorsystem vorzugsweise konsistent. Somit kann die Operationsstruktur von einem Aufsetzpunkt unabhängig von der
vorhergehenden Ausführungshistorie ausgeführt werden und liefert gleiche Ergebnisse.
Der Operationsstruktur 310 ist eine Reaktionsstruktur 320 zugeordnet, welche mehrere Reaktionsoperationen Ri bis Rn umfasst. Im dargestellten Fall wird, falls ein Fehler in einer Operation Ol bis On auftritt, mit einer entsprechenden Reaktionsoperation Ri bis Rn zunächst die betreffende Operation Ol bis On rückgängig gemacht. Ist dies erfolgreich, kann entschieden werden ob die Operation Ol bis On, in welcher der Fehler aufgetreten ist, erneut ausgeführt werden soll, oder ob mittels weiterer
Reaktionsoperationen Ri bis Rn weitere vorangegangene Operationen Ol bis On rückgängig gemacht werden sollen. Die Erfindung ist nicht auf die hierin gezeigte Ausführungsform beschränkt. Insbesondere können auch mehrere Operationen durch eine Reaktionsstruktur rückgängig gemacht werden, oder auch ein anderer Weg als das tatsächliche„Rückgängigmachen" einer Operation zu einem vorhergehenden
Aufsetzpunkt beschritten werden.
Fig. 4 zeigt ein schematische Model 4 eines Manipulatorprogramms, umfassend mehrere Operationen ΟΊ bis 0'2i sowie mehrere Reaktionsoperationen R'i bis R'30. Beginnend in Aufsetzpunkt AP5, kann die Operation ΟΊ ausgeführt werden. Der vorhergesehene Programmablauf ist durch gestrichelte Pfeile dargestellt. Das
Manipulatorprogramm führt anschließend die Operation 0'2 aus. Hier besteht die
Möglichkeit der Verzweigung zu einer der Operationen Ο'3-O's. Im gezeigten Beispiel führt der Programmablauf zu Operationsstruktur C3. Anschließend wird mit
Operationsstruktur O'io fortgefahren, der der Aufsetzpunkt AP7 zugeordnet ist. In der folgenden Operationsstruktur werden nacheinander die Operationen ΟΊι, ΟΊ3, ΟΊ4 und ΟΊ6 ausgeführt, wobei bei der Ausführung der Operation ΟΊ6 ein Fehler 400 auftritt. Die fehlerhafte Operation ΟΊ6 wird abgebrochen und mit der
Reaktionsoperation R'i fortgefahren.
Die Reaktionsoperation R'i stellt zwei mögliche Vorgehensweisen bereit. Die erste führt zu Reaktionsoperation R'io die zweite zu Reaktionsoperation R'20, welche zu
Aufsetzpunkt AP7 führt. Von Aufsetzpunkt AP7 kann mit Operation O'io fortgefahren oder über die Reaktionsoperation R'30 zu Arbeitspunkt AP6, welcher der Operation 0*2 zugeordnet ist, zurückgekehrt werden. Somit können unterschiedliche Operationen mit unterschiedlichen Reaktionsoperationen rückgängig gemacht werden oder, falls Prozesse irreversibel sind, auch anderweitige Pfade durch das Manipulatorprogramm gewählt werden. Ein Pfad bezeichnet die Abfolge von Operationen und/oder
Reaktionsoperationen.
Fig. 5 zeigt ein exemplarisches Beispiel für eine Anwendung des Verfahrens. Gemäß der Anwendung wird in Darstellung A ein erstes Teil 510, welches über einen
Bajonettverschluss 511 verfügt über einem zweiten Teil 520 ausgerichtet. Das zweite Teil 520 umfasst einen Vorsprung 521, der mit dem Bajonettverschluss 511 einrasten kann. Um die beiden Teile 510, 520 zu montieren, muss zunächst ein Manipulator das erste Teil 510 relativ zum zweiten Teil 520 konzentrisch ausrichten. Ist dies erfolgt, so kann das erste Teil 510 abgesenkt werden (s. Darstellung B), sodass der Vorsprung 521 in den Bajonettverschluss 511 des Teils 510 eingeführt wird. Anschließend wird das erste Teil 510 mittels des Manipulators rotiert (Darstellung C), sodass der
Bajonettverschluss 511 mit dem Vorsprung 521 einrastet. Tritt nun beispielsweise beim Absenken des ersten Teils 510 ein Fehler auf, so kann mittels einer Reaktionsstruktur das Manipulatorprogramm veranlasst werden, erneut mit dem Ausrichten der beiden Teile 510, 520 zu beginnen. Schlägt dies fehl, d.h. kann der Fehler nicht automatisch behoben werden, kann ein Bediener hinzugerufen werden, der beispielsweise das erste
Teil 510 korrekt zu dem zweiten Teil 520 positioniert oder das erste Teil 510 entfernt. Folglich kann der Montageprozess fortgesetzt und ein auftretender Fehler behoben werden, ohne dass das Manipulatorprogramm abgebrochen und von neuem gestartet werden muss.
Bezugszeichenliste
AP1-AP9 Aufsetzpunkte
Ei Beendigungsschritt
Fi bis F3 Fehlerstrukturen
Ol bis On Operationen
ΟΊ-Ο'21 Operationen
Ri bis Rn Reaktionsoperationen
R'i-R'30 Reaktionsoperationen
Si bis S3 Ausführungsschritte
200 Semantikbaustein
210; 310 Operationsstruktur
220; 320 Reaktionsstruktur
221, 222, 223,
224, 225 Reaktionsoperationen
400 Fehler
610 erstes Teil
620 zweites Teil
611 Bajonettverschluss
621 Vorsprung