Kollisionsfreie Bahnplanung mit Rapidly exploring Random Trees (RRTs) bei mehreren Robotern
- Art: Bachelorarbeit
- Autor: Thomas Neuhauser
- Abgabedatum: Mai 2005
- Umfang: 91 Seiten
- Dateigröße: 2,8 MB
- Note: 1,0
- Institution / Hochschule: Fachhochschule Darmstadt Deutschland
- ISBN (eBook): 978-3-8324-9491-9
-
ISBN (Paperback) :
978-3-8324-9491-9 P - ISBN (CD) :978-3-8324-9491-9 CD
- Sprache: Deutsch
- Prämierung:
- Arbeit zitieren: Neuhauser, Thomas Mai 2005: Kollisionsfreie Bahnplanung mit Rapidly exploring Random Trees (RRTs) bei mehreren Robotern, Hamburg: Diplomica Verlag
- Schlagworte: Pathplanning, Robotik, RRT, Propabilistisch, Montage
In den Warenkorb
98,00 €
Bachelorarbeit von Thomas Neuhauser
Einleitung:
Überall werden in zunehmendem Maße Roboter zur Automatisierung verschiedenster Prozesse eingesetzt. Grundsätzlich führt ein Roboter Bewegungen aus, die ihm in einem Programm vorgegeben wurden, das entweder im Voraus entwickelt wurde, oder erst zur Laufzeit durch entsprechende Algorithmen aus Sensordaten generiert wird.
Ein essentielles Merkmal solcher Bewegungsabläufe ist, daß diese kollisionsfrei sein müssen. Der Roboter muß Hindernissen in seiner Umgebung ausweichen, um weder sich, noch die Umgebung zu beschädigen.
Der abgeschlossene Arbeitsbereich den man einem Roboter, z.B. in der automatisierten Produktion zuweist, wird möglichst klein gehalten, da diese Fläche Geld kostet. Somit ergibt sich, daß die Umgebung, in der sich der Roboter frei bewegen darf, so stark eingeschränkt ist, daß hier häufig die Gefahr der Kollision besteht.
Heute findet zudem selten nur ein einzelner Roboter Anwendung, sondern es werden vielmehr mehrere Roboter eingesetzt, die gemeinsam an einem Werkstück arbeiten bzw. Aufgaben erledigen müssen.
Somit verschärft sich das Problem der Kollisionsvermeidung zusätzlich, da nun jeder Roboter zusätzlich beweglichen Hindernissen ausweichen muß. Da dies für jeden der beteiligten Roboter gilt, ist die Bewegung dieser Hindernisse außerdem nicht vorhersagbar.
Heutzutage werden meist noch Experten eingesetzt, die effiziente Methoden kennen, um solche kollisionsfreien Bewegungsabläufe von Hand zu implementieren. Mit zunehmender Komplexität der Umgebung, der Roboter und des Einsatzfeldes, sowie vor allen Dingen bei autonomen Robotern, wie z.B. Transportfahrzeugen in einem automatisierten Teilelager, ist es aber nicht mehr möglich, solche Bewegungsabläufe in akzeptabler Zeit und Qualität von Hand zu erzeugen. Folglich besteht ein großes Interesse an Algorithmen, die diese Aufgabe automatisiert lösen.
Ziel ist es, kollisionsfreie Bewegungsabläufe für mehrere Roboter zu berechnen.
Am konkreten Beispiel soll dies für eine Arbeitsumgebung mit 6-Achs-Robotern, sowie einige ausgewählte Problemsituationen, wie sie in einem Hochregallager mit mehreren Transportrobotern auftreten, untersucht werden.
Es soll eine Anwendung entwickelt werden, die es ermöglicht kollisionsfreie Bewegungsabläufe für mehrere Roboter automatisch zu entwerfen. Diese Anwendung wird als Plugin für die Roboter-Simulationssoftware Easy-RobTM in C++ entwickelt. Easy-RobTM wird zur Visualisierung der Roboter, ihrer Umgebung sowie der errechneten Bewegungsabläufe genutzt.
Zur Berechnung der Bewegungsabläufe sollen Rapidly exploring Random Trees - die ich im Folgenden mit RRT abkürzen werde - zum Einsatz kommen, sowie deren Vor- und Nachteile aufgezeigt werden.
Neben der Einführung in das grundlegende Verfahren der Berechnung kollisionsfreier Bewegungsabläufe und einer Beschreibung des RRT-Algorithmus, soll die Übertragbarkeit auf Problemstellungen mit mehreren Robotern, die resultierenden Verfahren sowie mögliche Optimierungen derselben dokumentiert werden.
Inhaltsverzeichnis:
| 1. | Einleitung | 1 |
| 1.1 | Motivation | 1 |
| 1.2 | Zielsetzung | 1 |
| 1.3 | Aufgabenstellung | 1 |
| 2. | Kollisionsfreie Bahnplanung für einen einzelnen Roboter | 2 |
| 2.1 | Der Konfigurationsraum | 2 |
| 2.1.1 | Vergleich der Bahnplanung bei 2 und mehr Freiheitsgraden | 2 |
| 2.1.2 | Der Konfigurationsraum als universelle Darstellung | 3 |
| 2.2 | Berechnen von Pfaden mit Graph-Suchalgorithmen | 5 |
| 2.2.1 | Aufbauen von Graphen im Cfree | 5 |
| 2.2.2 | Grenzen des Verfahrens | 6 |
| 2.3 | Der RRT-Algorithmus | 8 |
| 2.3.1 | Funktionsprinzip | 8 |
| 2.3.2 | Performance und Einschränkungen | 11 |
| 2.3.3 | Optimierungen | 12 |
| 2.3.3.1 | Variable Schrittweite | 12 |
| 2.3.3.2 | Fixierung von Achsen | 12 |
| 2.3.3.3 | Bidirektionale RRTs | 13 |
| 2.3.3.4 | Gierige Heuristik | 13 |
| 2.4 | RRT Plug-In für Easy-RobTM | 16 |
| 2.4.1 | Aufbau der Anwendung | 16 |
| 2.4.2 | Integration in Easy-RobTM mittels API | 17 |
| 3. | Kollisionsfreie Bahnplanung für mehrere Roboter | 18 |
| 3.1 | Anwendungen | 18 |
| 3.2 | Gekoppeltes Planen im gemeinsamen Konfigurationsraum | 19 |
| 3.2.1 | Erweitern der Anwendung | 20 |
| 3.2.1.1 | Kollisionslisten | 20 |
| 3.2.1.2 | Anpassen der Datenstrukturen | 22 |
| 3.2.1.3 | Anpassen der Kollisionsprüfung | 23 |
| 3.2.2 | Vor- und Nachteile dieses Verfahrens | 24 |
| 3.2.3 | Optimierung des Verfahrens | 25 |
| 3.3 | Entkoppeltes Planen | 25 |
| 3.3.1 | Erweiterungen für das Planen mit mehreren Robotern | 25 |
| 3.3.2 | Priorisiertes Planen | 30 |
| 3.3.3 | Velocity Tuning | 34 |
| 3.3.4 | Probleme im Zusammenhang mit der Zeitachse | 36 |
| 3.3.5 | Vor- und Nachteile der vorgestellten Verfahren | 38 |
| 4. | Abschließende Betrachtung | 40 |
| 4.1 | Leistungsuntersuchung | 40 |
| 4.1.1 | Einfluss der Achsenfixierung und der gierigen Heuristik | 40 |
| 4.1.2 | Unterschied gekoppeltes- / entkoppeltes Planen | 42 |
| 4.1.3 | Verhalten in Tunneln / Fluren | 44 |
| 4.1.4 | Verhalten bei hoher Anzahl Roboter | 46 |
| 4.2 | Zusammenfassung und Ausblick | 52 |
| A. | Code-Auszüge, Datenformate | 57 |
| A.1 | Function-pointer auf Member-functions | 58 |
| A.2 | Ausführung von Member-functions als Thread | 59 |
| A.3 | Aufbau der Roboter-Definitionsdatei | 60 |
| A.4 | Aufbau der Kollisionslistendatei | 62 |
| B. | Verzeichnisse, Glossar | 63 |
| B.1 | Literaturverzeichnis | 64 |
| B.2 | Abbildungsverzeichnis | 64 |
| B.3 | Verwendete Software | 67 |
| B.4 | Glossar | 67 |
| B.5 | Links zu weiterführenden Informationen | 68 |
| C. | Bedienungsanleitung zum RRT-Modul | 69 |
Um die Klasse rrt nicht auf die Auswertung der t-Koordinate hin zu spezialisieren und damit ihre Unabhängigkeit von den Eigenschaften des verwendeten Zustandsraumes einzuschränken, wurden die Methoden calc_distance und calc_quad_sum der Klasse sr_t_configuration_space angepaßt. Diese Klasse implementiert den um die Zeitachse erweiterten Konfigurationsraum. In rrt::find_nearest wird für alle Knoten des RRT die Methode state_space::calc_quad_sum aufgerufen (calc_quad_sum liefert nur die Quadratsumme der Koordinaten zweier Zustände, da für die Bestimmung, welcher Knoten näher liegt, aus Performance-Gründen die Quadratwurzel ausgelassen werden kann). In sr_t_configuration_space::calc_distance und sr_t_configuration_space::calc_quad_sum wird nun die t-Koordinate beider Zustände ausgewertet und wenn q2 in der Zeit vor q1 liegt, wird als Abstand -1 zurück gegeben. In rrt::find_nearest wird der entsprechende Knoten dann als qnear verworfen und die Suche fortgesetzt. So ist gewährleistet, daß rrt::find_nearest nur einen Knoten liefert, der in der Zeit vor qrand liegt und sich somit der RRT in der Zeit nur vorwärts ausbreitet. Die Methode rrt_planner::get_qnew, die einen neuen Knoten Richtung qrand in Entfernung der Schrittweite s erzeugt, wurde aus der Klasse rrt_planner entfernt und als get_position in die Klasse state_space verlagert. In sr_t_configuration_space::get_position wird wenn aktiviert - die Maximalgeschwindigkeit überprüft. Wird sie überschritten, wird der t-Wert der Zufallsposition qrand so angepaßt, daß die Maximalgeschwindigkeit wieder eingehalten wird. In Abb. 3.37 hätte eine neue Position in Richtung qrand eine zu kleine Steigung in Richtung t gehabt, die zu einer Geschwindigkeitsüberschreitung geführt hätte. Der neue Wert für t führt zu qrand2. Die Bewegung von qnear zur neuen Position qnew hält somit auf jeden Fall die Maximalgeschwindigkeit ein. [...]
Nun sind zwei Extremfälle möglich, die es bei der RRT-Planung zu beachten gilt. r Im Falle von s = 0 findet die Bewegung innerhalb des C nur auf der Zeitachse statt, wie in Abb. 3.35 bei q1 q 2 zu sehen. Die Geschwindigkeit ist dann 0 und der Roboter steht still. Dies ist ein gewünschtes Verhalten, denn nur so kann ein Roboter warten, bis ein anderer den Weg frei gemacht hat. Im Falle von t=0 allerdings, ist die Geschwindigkeit v = ∞ ,was nicht erlaubt ist. Der Roboter würde sich in Abb. 3.35 ohne Zeitverzögerung von q1 zu q3 bewegen. Dieses Verhalten gilt es zu verhindern. [...]
Nun wird die Planung für den Roboter mit der nächst niedrigeren Priorität durchgeführt, in 2 1 diesem Beispiel also R . Der Roboter R stellt nun ein bewegliches Hindernis dar, dessen 1 Position und Ausrichtung zum Zeitpunkt t durch P (t) gegeben ist. Über die Methode get_state_at_t der Klasse rrt, können die Achswerte des Roboters zu einem beliebigen Zeitpunkt min ≤ t ≤ max (gemäß der Normierung der Zeitachse) ermittelt werden. Da der Konfigurationsraum um eine Zeitachse erweitert wurde, besitzt jeder Knoten eines RRTs eine Zeitkoordinate. Die Methode get_state_at_t findet die beiden Knoten, die zeitlich vor und nach dem angegebenen Wert für t liegen und interpoliert die Position dazwischen. Durch die Erweiterung des Konfigurationsraumes um die Zeitachse, stellt sich der Roboter R 1 hier nun als statischer Kollisionsbereich dar, dessen Form durch P bestimmt ist. Der 1 1 Kollisionsbereich des Roboters R im Cx,y wird entlang des Paths P extrudiert und ergibt so den Kollisionsbereich im Cx,y,t. [...]
In den Warenkorb
98,00 €
Link zur Arbeit:
http://www.diplom.de/ean/9783832494919
Arbeit zitieren:
Neuhauser, Thomas Mai 2005: Kollisionsfreie Bahnplanung mit Rapidly exploring Random Trees (RRTs) bei mehreren Robotern, Hamburg: Diplomica Verlag
Schlagworte:
Pathplanning, Robotik, RRT, Propabilistisch, Montage



