-
AUSSAGE HINSICHTLICH STAATLICH GEFÖRDERTER FORSCHUNG ODER ENTWICKLUNG
-
Diese Erfindung wurde mit Regierungsunterstützung unter dem NASA Space Act Agreement mit der Nummer SAA-AT-07-003 durchgeführt. Die hier beschriebene Erfindung kann von oder für die U.S.-Regierung zu Zwecken der U.S.-Regierung (d. h. für nicht kommerzielle Zwecke) hergestellt und verwendet werden, ohne dass darauf oder dafür Gebühren zu entrichten sind.
-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft die automatische Bewegungssteuerung mehrerer Robotergelenke eines oder mehrerer humanoider oder anderer geschickter Roboter in einem Robotersystem.
-
HINTERGRUND
-
Roboter sind automatisierte Einrichtungen, die zum Ergreifen und Manipulieren von Objekten unter Verwendung von Greiforganen oder Robotermanipulatoren in der Lage sind. Die Robotermanipulatoren sind durch ein oder mehrere stellgliedgetriebene Gelenke miteinander verbunden. Jedes Gelenk eines typischen Roboters stellt mindestens eine unabhängige Steuerungsvariable, d. h. einen Freiheitsgrad (DOF) dar. Ein typischer mehrachsiger Industrieroboter weist 6 Freiheitsgrade auf. Die Steuerung eines derartigen Roboters wird als Routine angesehen. Bei den sich überschneidenden Bewegungspfaden von zwei oder mehr Robotern können jedoch Interferenzzonen vorhanden sein. Das Vorhandensein derartiger Interferenzzonen kann das Steuerproblem verkomplizieren.
-
Wenn mehrere Roboter innerhalb eines gemeinsam genutzten Arbeitsraums verwendet werden, kann ein einziger Controller verwendet werden, um die Bewegung der Roboter unter Verwendung eines seriellen Handshake-Protokolls automatisch zu koordinieren. Wie auf dem Gebiet verstanden wird, stellt das serielle Handshaking die benötigten Parameter jedes Kommunikationskanals oder jeder Kommunikationsverbindung, die zwischen zwei Robotern oder anderen Netzwerkeinrichtungen hergestellt werden soll, dynamisch ein, bevor eine Kommunikation über den Kanal korrekt beginnen kann. Ein serielles Handshake-Protokoll kann seine Effektivität verlieren, wenn die Anzahl der Freiheitsgrade im Robotersystem zunimmt.
-
ZUSAMMENFASSUNG
-
Folglich werden hier ein Robotersystem und ein Steuerungsverfahren dafür offenbart. Das Verfahren kann als Algorithmus ausgeführt sein, der von einem Controller ausgeführt werden kann, der ausgelegt ist, um die Bewegung eines oder mehrerer Roboter mit vielen Freiheitsgraden (DOF) zu koordinieren. Der Begriff ”viele Freiheitsgrade” bezeichnet, so wie er hieß verwendet ist, einen Roboter, der mehr als die herkömmlichen sechs Freiheitsgrade und bei einer Ausführungsform sogar 42 Freiheitsgrade oder mehr aufweist, wobei die Freiheitsgrade hinsichtlich eines Roboters oder mehrerer Roboter betrachtet werden, die im gleichen Robotersystem verwendet werden, um gemeinsam eine Arbeitsaufgabe auszuführen.
-
Ein Roboter mit vielen Freiheitsgraden ist hier als ein geschickter Humanoide ausgeführt, der mindestens 42 Freiheitsgrade aufweist. Ein derartiger Roboter kann vorteilhaft bei bestimmten neu entstehenden Luftfahrt- und Industrieanwendungen eingesetzt werden, die menschenähnliche Geschicklichkeitsniveaus erfordern. Ebenen mit vielen Freiheitsgraden erfordern eine asynchrone und koordinierte Gelenkbewegung, eine automatisierte Aufgabenverzweigung und eine unabhängige Ausführung von Aufgaben durch die verschiedenen Manipulatoren des oder der Roboter, die, in dem Robotersystem verwendet werden. Diese Fähigkeit wird von dem hier offenbarten Robotersystem und Steuerverfahren bereitgestellt.
-
Im Speziellen kann ein Robotersystem betrieben werden, um eine kooperative Arbeitsaufgabe, die mehrere unabhängige Teilaufgaben aufweist, auszuführen. Der Begriff ”kooperative Arbeitsaufgabe” bezeichnet, so wie er hier verwendet wird, eine Arbeitsaufgabe, die von mehr als einem Robotergelenk und in einigen Fällen durch mehrere Gelenke von mehr als einem im Robotersystem verwendeten Roboter ausgeführt wird. Das Robotersystem enthält einen Roboter und einen Controller. Der Roboter weist viele Robotergelenke auf, wobei jedes Gelenk während der Ausführung der kooperativen Arbeitsaufgabe unabhängig steuerbar ist.
-
Der Controller steuert eine Bewegung der Robotergelenke während der Ausführung der kooperativen Arbeitsaufgabe, wobei er dies durchführt, indem er die verschiedenen Gelenke des Robotersystems automatisch in aufgabenspezifische Teilsysteme einteilt. Beim Erreichen einer Aufgabenausführungsverzweigung weist der Controller dann den verschiedenen eingeteilten Teilsystemen die mehreren unabhängigen Teilaufgaben zu und koordiniert die Ausführung der Teilaufgaben durch die jeweiligen Teilsysteme nach dem Erreichen der Aufgabenausführungsverzweigung.
-
Es können mehrere Aufgabenverzweigungen vorhanden sein, die jeweils zu mehreren unabhängigen Teilaufgaben führen.
-
Bei einer Ausführungsform weist das Robotersystem mindestens 42 Freiheitsgrade auf. Beim Ausführen der kooperativen Arbeitsaufgabe können ein oder mehrere zusätzliche Roboter zusammenarbeiten. Eine Runtimeengine bzw. Laufzeitumgebung kann verwendet werden, um automatisch in die Teilaufgaben zu verzweigen. Zum Zugriff auf den Controller kann ein graphischer Programmiereditor enthalten sein, wobei der Programmiereditor einem Anwender ermöglicht, eine Verzweigungssequenz für die automatisierte Verzweigung der verschiedenen Teilaufgaben zu konfigurieren. Der graphische Programmiereditor und die Programmiersprache des Controllers können Befehle an einen oder mehrere Roboter und/oder Robotersysteme ausgeben.
-
Die Laufzeitumgebung kann ein Modul zu asynchronen Ausführungsverwaltung (AEM-Modul) enthalten, welches die Robotergelenke beliebig in aufgabenspezifische Teilsysteme einteilt. Beim Ausführen der kooperativen Arbeitsaufgabe koordiniert das AEM-Modul eine asynchrone Bewegung der Robotergelenke. Im Robotersystem kann auch ein Planungsmodul und ein Datenbanksystem enthalten sein, das Systemdaten und Informationen für gemeinsam genutzte Ereignisse bereitstellt, wobei das Planungsmodul ermöglicht, dass die mehreren unabhängigen Aufgaben unabhängig voneinander erfüllt werden, während sie gleichzeitig unter Verwendung der Systemdaten und der gemeinsam genutzten Ereignisse, die vom Datenbanksystem bereitgestellt werden, synchronisiert sind.
-
Es wird auch ein Verfahren offenbart, um eine kooperative Arbeitsaufgabe mit mehreren unabhängigen Teilaufgaben auszuführen. Das Verfahren umfasst, dass die Robotergelenke automatisch in aufgabenspezifische Teilsysteme eingeteilt werden, dass die in mehreren unabhängigen Teilaufgaben der kooperativen Arbeitsaufgabe beim Erreichen einer Aufgabenausführungsverzweigung den aufgabenspezifischen Teilsystemen zugewiesen werden und dass die unabhängige Ausführung der mehreren unabhängigen Teilaufgaben durch die jeweiligen aufgabenspezifischen Teilsysteme nach dem Erreichen der Aufgabenausführungsverzweigung koordiniert wird.
-
Die vorstehenden Merkmale und Vorteile und andere Merkmale und Vorteile der vorliegenden Erfindung ergeben sich leicht aus der folgenden genauen Beschreibung der besten Arten, um die Erfindung auszuführen, wenn sie in Verbindung mit den beiliegenden Zeichnungen gelesen wird.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist eine schematische Darstellung eines Robotersystems, das einen Roboter mit vielen Freiheitsgraden mit mehreren Robotergelenken und einen Controller aufweist, der eine asynchrone und koordinierte Bewegungssteuerung der verschiedenen Gelenke des Robotersystems bereitstellt;
-
2 ist ein Blockdiagramm für eine Laufzeitumgebung, die mit dem in 1 gezeigten Robotersystem verwendet werden kann; und
-
3 ist ein Flussdiagramm, das ein Verfahren zum Steuern des in 1 gezeigten Roboters unter Verwendung der in 2 gezeigten Laufzeitumgebung beschreibt.
-
BESCHREIBUNG
-
Mit Bezug auf die Zeichnungen, in denen gleiche Bezugszeichen in den verschiedenen Ansichten gleiche oder ähnliche Komponenten bezeichnen und mit 1 beginnend ist ein Robotersystem 10 gezeigt, das einen geschickten Roboter 11 aufweist, der eine Vielzahl von Robotergelenken aufweist, die alle nachstehend beschrieben sind. Die asynchrone koordinierte Steuerung der verschiedenen Gelenke des Roboters 11 wird durch einen Algorithmus 100 bereitgestellt, der nachstehend mit Bezug auf 3 im Detail beschrieben wird.
-
Der Roboter 11 kann wie gezeigt mit einer menschenähnlichen Gestalt und mit menschenähnlichen Geschicklichkeitsniveaus in dem Ausmaß ausgestaltet sein, wie es zum Ausführen einer gegebenen Arbeitsaufgabe notwendig ist. Humanoide und andere geschickte Roboter können dort verwendet werden, wo eine direkte Interaktion mit Einrichtungen oder Systemen benötigt wird, die speziell für eine menschliche Verwendung entworfen sind, d. h. Einrichtungen, die menschenähnliche Geschicklichkeitsniveaus benötigen, um ein Objekt 30 korrekt zu manipulieren. Die Verwendung eines Humanoiden wie des Roboters 11 kann dort bevorzugt sein, wo eine direkte Interaktion zwischen dem Roboter und menschlichen Bedienern notwendig ist, da die Bewegung so programmiert werden kann, dass sie eine menschliche Bewegung annähert.
-
Der Roboter 11 arbeitet mithilfe eines kraft- oder impedanzbasierten Steuergerüsts. Die Begriffe ”kraftbasiert” und ”impedanzbasiert” bezeichnen, so wie sie hier verwendet werden, die Steuerung eines Roboters, die sich auf jeweilige Kraft- oder Impedanzbefehle und Rückkopplungssignale stützt, um den Roboter zu bewegen und Kräfte durch die verschiedenen Robotergelenke und Manipulatoren des Roboters aufzubringen. Der Roboter 11 wird unter Verwendung eines Controllers 12 gesteuert, der einen Algorithmus 100 ausführt, um dadurch einen Satz von Steuersignalen 50 an den Roboter zu übertragen. Die Steuersignale 50 stellen eine asynchrone und koordinierte Gelenkbewegungssteuerung des Roboters 11 bereit, wie nachstehend im Detail offengelegt wird.
-
Die Steuersignale 50 können auch einen Satz von kraft- oder impedanzbasierten Arbeitsbefehlen und eine Positions-/Kraftrückkopplung enthalten. Das heißt, dass ein Anwender des Roboters 11 gewünschte Steifigkeits-, Dämpfungs- und Massenträgheitseigenschaften hinsichtlich einer Masse angeben kann, auf die eingewirkt wird, z. B. das Objekt 30, wodurch eine Robustheit für eine physikalische Interaktion zwischen dem Roboter und das ihn umgebende Umfeld bereitgestellt wird und Flexibilität für diverse Manipulationsaufgaben bereitgestellt wird.
-
Der Roboter 11 kann ausgelegt sein, um automatisierte Aufgaben mit vielen Freiheitsgraden (DOF) auszuführen und um andere interaktive Aufgaben auszuführen oder andere integrierte Systemkomponenten zu steuern, z. B. Einspannen, Beleuchten, Relais usw. Gemäß einer möglichen Ausführungsform kann der Roboter 11 eine Vielzahl von unabhängig und voneinander abhängig bewegbaren stellgliedgetriebenen Robotergelenken aufweisen, von denen einige einander überschneidende Bewegungsbereiche aufweisen. Die Robotergelenke können ein Schultergelenk, dessen Position in 1 allgemein durch einen Pfeil 13 angezeigt ist, ein Ellenbogengelenk (Pfeil 15), ein Handgelenk (Pfeil 17), ein Nackengelenk (Pfeil 19) und ein Taillengelenk (Pfeil 21) sowie die verschiedenen Fingergelenke (Pfeil 23), die zwischen den Fingergliedern jedes Roboterfingers 14 positioniert sind, umfassen.
-
Immer noch mit Bezug auf 1 kann jedes Robotergelenk einen oder mehrere Freiheitsgrade aufweisen. Beispielsweise können bestimmte nachgiebige Gelenke wie etwa das Schultergelenk (Pfeil 13) und das Ellenbogengelenk (Pfeil 15) mindestens zwei Freiheitsgrade in der Form von Nicken und Drehen aufweisen. Auf ähnliche Weise kann das Nackengelenk (Pfeil 19) mindestens drei Freiheitsgrade aufweisen, während die Taille und das Handgelenk (Pfeile 21 bzw. 17) einen oder mehrere Freiheitsgrade aufweisen können. In Abhängigkeit von der Komplexität der Aufgabe kann sich der Roboter mit über 42 Freiheitsgraden bewegen. Jedes Robotergelenk enthält ein oder mehrere Stellglieder und wird von diesen intern angetrieben, z. B. Gelenkmotoren, lineare Stellglieder, rotatorische Stellglieder und dergleichen.
-
Der Roboter 11 kann menschenähnliche Komponenten, wie etwa einen Kopf 16, einen Torso 18, eine Hüfte 20, Arme 22, Hände 24, Finger 14 und gegenüberstellbare Daumen 26 enthalten, wobei die verschiedenen vorstehend erwähnten Gelenke innerhalb oder zwischen diesen Komponenten angeordnet sind. Wie bei einem Menschen können beide Arme 22 und andere Komponenten Bewegungsbereiche aufweisen, die sich bis zu einem gewissen Grad überschneiden. Der Roboter 11 kann auch eine für die Aufgabe geeignete Halterung oder Basis (nicht gezeigt) enthalten, etwa Beine, Laufflächen oder eine andere bewegbare oder starre Basis in Abhängigkeit von der speziellen Anwendung oder der beabsichtigten Verwendung des Roboters. Eine Stromversorgung 28 kann am Roboter 11 integral montiert sein, z. B. ein wiederlaufladbarer Batteriestapel, der auf dem Rücken des Torsos 18 getragen oder mitgeführt wird, oder eine andere geeignete Energieversorgung, oder die entfernt durch ein Spannkabel angebracht sein kann, um genügend elektrische Energie an die verschiedenen Gelenke zur Bewegung derselben zu liefern.
-
Der Controller 12 stellt eine präzise Bewegungssteuerung des Roboters 11 bereit, die eine Steuerung der feinen und groben Bewegungen umfasst, die zum Manipulieren des Objekts 30, z. B. eines Arbeitswerkzeugs, benötigt werden, welches von den Fingern 14 und dem Daumen 26 einer oder mehrerer Hände 24 ergriffen werden kann. Der Controller 12 ist in der Lage, jedes Robotergelenk und andere integrierte Systemkomponenten isoliert von den anderen Gelenken und Systemkomponenten unabhängig zu steuern, sowie eine Anzahl der Gelenke voneinander abhängig zu steuern, um die Aktionen der mehreren Gelenke beim Ausführen einer relativ komplexen Arbeitsaufgabe vollständig zu koordinieren.
-
Das Robotersystem 10 kann mindestens einen zusätzlichen ähnlich ausgestalteten Roboter 111 enthalten, der in 1 gestrichelt gezeigt ist, welcher im gleichen Arbeitsraum wie der Roboter 11 arbeitet. Die Roboter 11, 111 können benötigt werden, um eine Aufgabe auszuführen, wie etwa das kooperative Ergreifen und Bewegen eines Objekts 30, wie in 1 gestrichelt dargestellt ist. Bestimmte Gelenke der Roboter 11, 111 können Bewegungsbereiche aufweisen, die sich miteinander in einem gewissen Maß überschneiden, so wie mit Bewegungsbereichen anderer Gelenke des gleichen Roboters. Daher muss jeder Roboter, der innerhalb des Robotersystems 10 verwendet wird, in der Lage sein, mehrere Aktionen asynchron und auf koordinierte Weise auszuführen. Diese Funktionalität wird durch den Algorithmus 100 und die Ausgestaltung einer Laufzeitumgebung 42 bereitgestellt, die nachstehend mit Bezug auf 2 beschrieben wird.
-
Der Controller 12 kann als ein Server oder eine Hostmaschine ausgeführt sein, der bzw. die einen oder mehrere digitale Computer oder Datenverarbeitungseinrichtungen aufweist, die jeweils einen oder mehrere Mikroprozessoren oder zentrale Verarbeitungseinheiten (CPU), Festwertspeicher (ROM), Speicher mit wahlfreiem Zugriff (RAM), elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), einen Hochgeschwindigkeits-Taktgeber, Analog/Digital-Schaltungen (A/D-Schaltungen), Digital/Analog-Schaltungen (D/A-Schaltungen) und beliebige benötigte Eingabe/Ausgabe-Schaltungen und Einrichtungen (I/O), sowie Signalaufbereitungs- und Pufferelektronik aufweisen.
-
Individuelle Steueralgorithmen, die im Controller 12 vorhanden sind oder für den Controller leicht zugänglich sind, können im ROM oder einem anderen geeigneten Speicher gespeichert sein und automatisch ausgeführt werden, um die jeweilige Steuerfunktionalität bereitzustellen. Ein graphischer Programmiereditor 80 oder eine andere geeignete Anwenderschnittstelle kann verwendet werden, um auf die Programmiersprache des Controllers 12 zuzugreifen sowie um eine Verzweigungssequenz für eine koordinierte asynchrone Aufgabenerfüllung wie nachstehend erläutert zu konfigurieren.
-
Das Robotersystem 10 kann ein Datenbanksystem 40 in Verbindung mit dem Roboter 11 und/oder 111 über den Controller 12 enthalten. Das Datenbanksystem 40 kann als eine einzige große Datenbank oder als eine verteilte Datenbank ausgeführt sein, die genügend Ebenen an Datenspeicher für die Programmiersprache, gemeinsam genutzte Ereignisinformationen und verschiedene Kommunikationsprotokolle, die zum Ausführen von Aufgaben benötigt werden, sowie die benötigten Erfüllungsbedingungen für derartige Aufgaben bereitstellt. Das Datenbanksystem 40 steht in Kommunikation mit der Laufzeitumgebung 42, welche ein Modul 60 zur asynchronen Ausführungsverwaltung (AEM-Modul) verwendet, um die asynchrone Bewegung der verschiedenen Gelenke innerhalb des Robotersystems 10 zu koordinieren, wenn die Gelenke zur Ausführung einer vorliegenden kooperativen Arbeitsaufgabe zugewiesen und aktiviert werden.
-
Mit Bezug auf 2 verwendet der Controller 12 von 1 das AEM-Modul 60 der Laufzeitumgebung 42, um die verschiedenen Gelenke des Robotersystems 10 auf beliebige Weise in aufgabenspezifische Teilsysteme einzuteilen. Beispielsweise könnten das Nackengelenk 19 und Gelenke von beiden Armen 22 für ein spezielles Manöver aktiviert werden, bei dem sich der Roboter 11 nach rechts dreht, auf das Objekt 30 niederblickt und das Objekt mit beiden Händen 24 ergreift. Diese aufgabenspezifischen Teilsysteme werden mithilfe des AEM-Moduls 60 wiederum in eine kalibrierte Ablaufsteuerungsarchitektur eingebunden, welche die Bewegung beliebiger aktiver Gelenke automatisch koordiniert und somit die Erfüllung von komplexen oder kooperativen Arbeitsaufgaben ermöglicht. Die Laufzeitumgebung 42 kann auch ausgestaltet sein, um einen Softwaremechanismus für koexistente Ausführungspfade innerhalb einer größeren Roboteraufgabensequenz bereitzustellen.
-
2 stellt ein Beispiel einer vereinfachten Serie einer unabhängigen Teilaufgabe 51 bereit, die mehrere Aufgabenausführungsverzweigungen 52, 53 und 54 aufweist. Gegenwärtig ist die Verzweigung 52 aktiv, ein Zustand, der in 2 durch das Fehlen einer Schattierung angezeigt ist. Auf ähnliche Weise sind die Verzweigungen 53 und 54 schattiert, um anzuzeigen, dass deren Ausführung irgendwann in der Zukunft stattfinden wird. Jede Verzweigung kann mehrere unabhängige Teilaufgaben aufweisen, z. B. die Verzweigung 52 mit ihren mehreren unabhängigen Teilaufgaben 61, 62, 63 und 64. Jede Teilaufgabe kann kooperativ ausgeführt werden, d. h. von verschiedenen Gelenken des gleichen Roboters und/oder von Gelenken von mehreren verschiedenen Robotern innerhalb des Robotersystems 10 ausgeführt werden.
-
Das AEM-Modul 60 kann auch ein Planungsmodul 70 enthalten, das ermöglicht, dass die mehreren unabhängigen Teilaufgaben 61, 62, 63 und 64 unabhängig voneinander erfüllt werden, während gleichzeitig die Aufgaben durch Systemdaten und gemeinsam genutzte Ereignisse synchronisiert werden, z. B. Daten und Ereignisse, die mithilfe des in 1 gezeigten Datenbanksystems 40 zugänglich sind. Ein Verzweigungsmechanismus zur Verwendung durch die Laufzeitumgebung 42 ist nahtlos in die Programmiersprache des Controllers 12 (siehe 1) integriert und kann von einem Anwender durch den graphischen Programmiereditor 80 konfigurierbar sein.
-
Innerhalb der Laufzeitumgebung 42 können mehrere Aufgabenausführungsverzweigungen vom AEM-Modul 60 gesteuert werden. Bei einer Ausführungsform kann das Planungsmodul 70 eine gemeinsam genutzte Ausführungszeit für die verschiedenen Aufgaben erzwingen, z. B. unter Verwendung eines Round-Robin-Planungsschemas. Jede Aufgabenausführungsverzweigung führt ihre eigenen Zustands- und Rückkopplungsdaten mit sich und kann daher durch den Controller 12 unabhängig ausgeführt werden. Zudem kann jede Aufgabenverzweigung durch den Controller 12 unter Verwendung der Laufzeitumgebung 42 jederzeit ausgesetzt und wieder aufgenommen werden, ohne die Ausführung irgendwelcher anderer Verzweigungen zu stören. Jede Verzweigung behält Zugriff auf das Datenbanksystem 40 und alle benötigten Programmier- und gemeinsam genutzten Ereignisinformationen und kann frei mit Daten und Ereignissen von den anderen Verzweigungen und der Roboterhardware interagieren.
-
Mit Bezug auf 3 kann der Algorithmus 100 vom Controller 12 von 1 ausgeführt werden, um die asynchrone Steuerung der verschiedenen Gelenke des Robotersystems 10, das in dieser Figur gezeigt ist, bereitzustellen. Der Algorithmus 100 beginnt mit Schritt 102, wobei benötigte Steuerungsknoten für eine gegebene kooperative Arbeitsaufgabe innerhalb des Controllers 12 gesetzt werden. Zum Beispiel können Knoten von einem Anwender mithilfe des graphischen Programmiereditors 80 gewählt werden, z. B. durch eine Touchscreeneingabe von betroffenen Knoten für ein gegebenes Arbeitswerkzeug, das beim Erfüllen einer zugeordneten Aufgabe verwendet werden soll. Zur Klarheit der Darstellung wird hier eine relativ einfache Arbeitsaufgabe beschrieben, welche die Ausführung einer Folge von Befehlen oder Aufgabenunterprogrammen erfordert, die geeignet sind, um beide Arme 22 des in 1 gezeigten Roboters 11 zum Ergreifen des Objekts 30 zubewegen.
-
Nachdem die Knoten gesetzt sind, leitet Schritt 104 die Ausführung einer Teilaufgabe ein, z. B. die Bewegung eines Arms 22. Während die durch Schritt 104 eingeleitete Teilaufgabe unabhängig durch ihre eigene Aufgabensequenz fortschreitet, geht der Algorithmus 100 zu Schritt 106 weiter. Schritt 106 leitet die Ausführung einer weiteren Teilaufgabe ein, wie etwa das Bewegen des anderen Arms 22 des Roboters 11 von 1 oder einer Komponente des gleichen oder eines anderen Roboters. Wie bei Schritt 104 kann Schritt 106 eine beliebige Anzahl von Aufgabenschritten aufweisen, welche von dem Arm 22, der bei Schritt 106 gesteuert wird, unabhängig ausgeführt werden müssen. Zwischen den Schritten 104 und 106 ist eine Aufgabenausführungsverzweigung vorhanden. Das heilt, dass die Ausführung von Schritt 104 nicht erfüllt ist, wenn Schritt 106 beginnt, sondern dass stattdessen beide Schritt 104 und 106 auf asynchrone Weise vom Controller 12 unabhängig ausgeführt werden, wie von der Laufzeitumgebung 42 von 1 bestimmt wird.
-
Bei Schritt 108 verwendet der Controller 12 die Laufzeitumgebung 42, um zu ermitteln, ob die Teilaufgaben der Schritt 104 und 106 erfüllt sind. Wenn nicht, wird Schritt 104 und/oder Schritt 106 wiederholt, bis die Aufgaben der Schritte 104 und 106 beide erfüllt sind. Der Algorithmus 100 ist beendet, wenn beide Teilaufgaben erfüllt sind. Jede Teilaufgabe kann aus mehreren Teilaufgaben bestehen usw., wobei hier der Einfachheit halber eine Teilaufgabe erläutert wurde.
-
Zur Klarheit der Darstellung wird mit Bezug auf 3 nur eine Aufgabenausführungsverzweigung beschrieben. Jedoch kann die Laufzeitumgebung 42 von 1 so viele Verzweigungen zuweisen und koordinieren, wie benötigt werden, um eine gegebene kooperative Arbeitsaufgabe oder Sequenz derartiger Aufgaben zu erfüllen. Das heißt, dass der bzw. die Roboter 11, 111 von 1 entworfen sind, um mehrere simultane Aufgaben asynchron auf eine Weise durchzuführen, die einem Menschen ähnelt. Die Laufzeitumgebung 42 verwaltet diese Steuerungsanforderung in Verbindung mit oder als Teil des Controllers 12, indem sie mehrere simultan ausgeführte Aufgaben verwaltet. Die Laufzeitumgebung 42 stellt einen Mechanismus bereit, damit eine Aufgabenausführung an einem beliebigen gegebenen Punkt verzweigt werden kann, bei der vereinfachten Ausführungsform von 3 z. B. das Einleiten von Schritt 106 ein kalibriertes Intervall nach dem Beginn von Schritt 104, wodurch unabhängige Ausführungspfade geschaffen werden, welche einer beliebigen Anzahl von Berechnungsknoten zugewiesen werden können.
-
Die Laufzeitumgebung 42 von 1 ermöglicht auch, dass die getrennten Verzweigungen reibungslos wieder vereint werden, bevor entlang eines gemeinsam genutzten Ausführungspfades fortgefahren wird, z. B. bei Schritt 108 von 3. Steuerknoten des gleichen oder verschiedener Roboter 11 und/oder 111 können miteinander eingeteilt werden, um ein Teilsystem zu bilden, wie etwa einen oder mehrere Arme 22 oder Köpfe 16, welche dann mit Bezug zueinander unabhängig befohlen und gesteuert werden können. Außerdem stellt die Verwendung der Laufzeitumgebung 42 auf die vorstehend erläuterte Weise ein Mittel zur Auflösung von Ressourcenkonflikten zwischen den verschiedenen Verzweigungen bereit. Mit anderen Worten könnte ein Kopf-Teilsystem des Roboters 11 mit einem Rechter-Arm-Teilsystem des Roboters 111 gepaart werden, wobei diese Funktionalität in der Programmiersprache des Controllers 12 eingebettet ist und für einen Anwender, der den graphischen Programmiereditor 80 verwendet, der in 1 gezeigt ist, oder unter Verwendung einer anderen geeigneten Anwenderschnittstelle leicht zugänglich ist.
-
Obwohl die besten Arten zum Ausführen der Erfindung im Detail beschrieben wurden, werden Fachleute auf dem Gebiet, das diese Erfindung betrifft, verschiedene alternative Entwürfe und Ausführungsformen zum Umsetzen der Erfindung in die Praxis im Umfang der beigefügten Ansprüche erkennen.