Chnages up to 20.06
This commit is contained in:
parent
37459bc12d
commit
e5985af2df
@ -129,11 +129,11 @@ TextFolding={"checksum":"5c50dc53ef39690810318af01f4ba4d3cb14fab0","ranges":[]}
|
|||||||
ViMarks=
|
ViMarks=
|
||||||
|
|
||||||
[view-settings,view=0,item:tex/1_Einleitung.tex]
|
[view-settings,view=0,item:tex/1_Einleitung.tex]
|
||||||
CursorColumn=28
|
CursorColumn=78
|
||||||
CursorLine=41
|
CursorLine=61
|
||||||
Dynamic Word Wrap=false
|
Dynamic Word Wrap=false
|
||||||
JumpList=
|
JumpList=
|
||||||
TextFolding={"checksum":"72da509f7bb04dfaf40002d46af28410e2acb580","ranges":[]}
|
TextFolding={"checksum":"578f69b0ffbc27d095768d7a3111120650ffd5d0","ranges":[]}
|
||||||
ViMarks=
|
ViMarks=
|
||||||
|
|
||||||
[view-settings,view=0,item:tex/2_Konzept.tex]
|
[view-settings,view=0,item:tex/2_Konzept.tex]
|
||||||
@ -141,23 +141,23 @@ CursorColumn=0
|
|||||||
CursorLine=36
|
CursorLine=36
|
||||||
Dynamic Word Wrap=false
|
Dynamic Word Wrap=false
|
||||||
JumpList=
|
JumpList=
|
||||||
TextFolding={"checksum":"21b8ecf4269d0711922f5a58a25d2691a2aebc7f","ranges":[]}
|
TextFolding={"checksum":"3273e70036fa23cebeead6b7a47fc2014926bdf5","ranges":[]}
|
||||||
ViMarks=
|
ViMarks=
|
||||||
|
|
||||||
[view-settings,view=0,item:tex/3_Auswahl.tex]
|
[view-settings,view=0,item:tex/3_Auswahl.tex]
|
||||||
CursorColumn=0
|
CursorColumn=9
|
||||||
CursorLine=147
|
CursorLine=161
|
||||||
Dynamic Word Wrap=false
|
Dynamic Word Wrap=false
|
||||||
JumpList=
|
JumpList=
|
||||||
TextFolding={"checksum":"ee9b56159ddf3293cde4120dfc5d90bbd2f0759a","ranges":[]}
|
TextFolding={"checksum":"ee9b56159ddf3293cde4120dfc5d90bbd2f0759a","ranges":[]}
|
||||||
ViMarks=
|
ViMarks=
|
||||||
|
|
||||||
[view-settings,view=0,item:tex/4_Umsetzung.tex]
|
[view-settings,view=0,item:tex/4_Umsetzung.tex]
|
||||||
CursorColumn=15
|
CursorColumn=113
|
||||||
CursorLine=520
|
CursorLine=127
|
||||||
Dynamic Word Wrap=false
|
Dynamic Word Wrap=false
|
||||||
JumpList=
|
JumpList=
|
||||||
TextFolding={"checksum":"3e818d80aa0680fb9664cb90786bb0abf72bfd24","ranges":[]}
|
TextFolding={"checksum":"2172161d77c4b318d98d968032cce683727b0108","ranges":[]}
|
||||||
ViMarks=
|
ViMarks=
|
||||||
|
|
||||||
[view-settings,view=0,item:tex/Einleitung.tex]
|
[view-settings,view=0,item:tex/Einleitung.tex]
|
||||||
|
|||||||
BIN
img/MA-subtree-deposit.pdf
Normal file
BIN
img/MA-subtree-deposit.pdf
Normal file
Binary file not shown.
BIN
img/MA-subtree-work.pdf
Normal file
BIN
img/MA-subtree-work.pdf
Normal file
Binary file not shown.
BIN
img/MA-tree-base-robot.pdf
Normal file
BIN
img/MA-tree-base-robot.pdf
Normal file
Binary file not shown.
BIN
img/MA-tree-colab.pdf
Normal file
BIN
img/MA-tree-colab.pdf
Normal file
Binary file not shown.
BIN
img/MA-tree-robot-coex.pdf
Normal file
BIN
img/MA-tree-robot-coex.pdf
Normal file
Binary file not shown.
BIN
img/MA-tree-robot-colab.pdf
Normal file
BIN
img/MA-tree-robot-colab.pdf
Normal file
Binary file not shown.
BIN
img/MA-tree-robot-coop.pdf
Normal file
BIN
img/MA-tree-robot-coop.pdf
Normal file
Binary file not shown.
@ -2,10 +2,8 @@
|
|||||||
\section{Motivation}
|
\section{Motivation}
|
||||||
Die Simulation von Maschinen wird im industriellen Umfeld immer beliebter, um deren Verhalten schon vor der eigentlichen Produktion zu testen.
|
Die Simulation von Maschinen wird im industriellen Umfeld immer beliebter, um deren Verhalten schon vor der eigentlichen Produktion zu testen.
|
||||||
Dazu wird ein Modell des gesamten Prozesses in der Simulation geschaffen, der durch die Maschine beeinflusst werden soll.
|
Dazu wird ein Modell des gesamten Prozesses in der Simulation geschaffen, der durch die Maschine beeinflusst werden soll.
|
||||||
Das Modell wird um die Maschine selbst erweitert, die Einfluss auf das
|
Das Modell wird um die Maschine selbst erweitert, die Einfluss auf das System nimmt.
|
||||||
System nimmt.
|
Die Veränderungen durch die Maschine werden analysiert, und erlauben Rückschlüsse auf die Funktion des Systems.
|
||||||
Die Veränderungen durch die Maschine werden analysiert, und erlauben
|
|
||||||
Rückschlüsse auf die Funktion des Systems.
|
|
||||||
Ein solches Modell kann nun für die Erkennung von Fehlverhalten und Problemen schon weit vor der eigentlichen Inbetriebnahme der Maschine genutzt werden.
|
Ein solches Modell kann nun für die Erkennung von Fehlverhalten und Problemen schon weit vor der eigentlichen Inbetriebnahme der Maschine genutzt werden.
|
||||||
|
|
||||||
|
|
||||||
@ -16,18 +14,14 @@ nicht verschiedene Variationen im gesamten Prozess, die durch die Ereignisse in
|
|||||||
der Simulation ausgelöst werden.
|
der Simulation ausgelöst werden.
|
||||||
Um eine solche Funktionalität bereitstellen zu können, muss der Bewegungsablauf von sowohl Roboter und Mensch zur Laufzeit der Simulation gesteuert werden.
|
Um eine solche Funktionalität bereitstellen zu können, muss der Bewegungsablauf von sowohl Roboter und Mensch zur Laufzeit der Simulation gesteuert werden.
|
||||||
|
|
||||||
Diese Steuerung soll durch eine eingängliche Beschreibungssprache ermöglicht
|
Diese Steuerung soll durch eine eingängliche Beschreibungssprache ermöglicht werden, die einfach erweitert und auf neue Szenarien angepasst werden kann.
|
||||||
werden, die einfach erweitert und auf neue Szenarien angepasst werden kann.
|
Um diese Funktionalität zu demonstrieren, sind 3 unterschiedliche Testszenarien in der Simulationsumgebung abzubilden.
|
||||||
Um diese Funktionalität zu demonstrieren, sind 3 unterschiedliche
|
|
||||||
Testszenarien in der Simulationsumgebung abzubilden.
|
|
||||||
Diese sollen durch verschiedene Aufgaben unterschiedliche Interaktionsgrade zwischen Mensch und Roboter simulieren.
|
Diese sollen durch verschiedene Aufgaben unterschiedliche Interaktionsgrade zwischen Mensch und Roboter simulieren.
|
||||||
|
|
||||||
\section{Stand der Wissenschaft}
|
\section{Stand der Wissenschaft}
|
||||||
Aktuelle wissenschaftliche Arbeiten befassen sich mit vielen unterschiedlichen
|
Aktuelle wissenschaftliche Arbeiten befassen sich mit vielen unterschiedlichen Teilaspekten einer Simulation eines Mensch-Roboter-Kollaborationsszenarios.
|
||||||
Teilaspekten einer Simulation eines Mensch-Roboter-Kollaborationsszenarios.
|
|
||||||
|
|
||||||
Die Planung von unterschiedlichen Reaktionen von Roboter auf den Menschen
|
Die Planung von unterschiedlichen Reaktionen von Roboter auf den Menschen in verschiedenen Interaktionsszenarien stellt eine Grundlage für spätere
|
||||||
in verschiedenen Interaktionsszenarien stellt eine Grundlage für spätere
|
|
||||||
Projekte dar.\cite{DOMBROWSKI2018134}
|
Projekte dar.\cite{DOMBROWSKI2018134}
|
||||||
Hierbei wird die erwünschte Interaktion betrachtet und aus den gewonnenen Daten werden Einschränkungen generiert.
|
Hierbei wird die erwünschte Interaktion betrachtet und aus den gewonnenen Daten werden Einschränkungen generiert.
|
||||||
Diese Einschränkungen können nun in der Interaktion verwendet werden, um Verletzungen durch den Roboter auszuschließen.
|
Diese Einschränkungen können nun in der Interaktion verwendet werden, um Verletzungen durch den Roboter auszuschließen.
|
||||||
@ -54,14 +48,12 @@ Dazu zählen zum Beispiel das Hineingreifen in einen Prozess, das Aufheben von M
|
|||||||
Das erste Szenario soll sich mit der Simulation einer bereits vollautomatisierten Fertigungsaufgabe befassen, in der ein Roboter im Arbeitsbereich eines Menschen Teile fertigt.
|
Das erste Szenario soll sich mit der Simulation einer bereits vollautomatisierten Fertigungsaufgabe befassen, in der ein Roboter im Arbeitsbereich eines Menschen Teile fertigt.
|
||||||
Die zu erwartende Interaktion beschränkt sich hierbei auf die Anpassung der Fahrgeschwindigkeit bei Annäherung des Menschen, um Kollisionen zu vermeiden.
|
Die zu erwartende Interaktion beschränkt sich hierbei auf die Anpassung der Fahrgeschwindigkeit bei Annäherung des Menschen, um Kollisionen zu vermeiden.
|
||||||
Der Mensch soll in diesem Szenario an einer anderen Aufgabe arbeiten.
|
Der Mensch soll in diesem Szenario an einer anderen Aufgabe arbeiten.
|
||||||
Während dieser Arbeit betritt der Mensch vereinzelt den Arbeitsbereich des
|
Während dieser Arbeit betritt der Mensch vereinzelt den Arbeitsbereich des Roboters, was eine entsprechende Reaktion hervorrufen soll.
|
||||||
Roboters, was eine entsprechende Reaktion hervorrufen soll.
|
|
||||||
|
|
||||||
Dieses Szenario ist ein Beispiel für eine Koexistenz zwischen Roboter und Mensch, wo beide an unterschiedlichen Aufgaben, jedoch im selben Raum, arbeiten.
|
Dieses Szenario ist ein Beispiel für eine Koexistenz zwischen Roboter und Mensch, wo beide an unterschiedlichen Aufgaben, jedoch im selben Raum, arbeiten.
|
||||||
Außerdem werden grundlegende Aspekte der Simulation getestet, wie zum Beispiel das Bewegen von Mensch und Roboter und die sicherheitsrelevante Aktion der Geschwindigkeitsanpassung.
|
Außerdem werden grundlegende Aspekte der Simulation getestet, wie zum Beispiel das Bewegen von Mensch und Roboter und die sicherheitsrelevante Aktion der Geschwindigkeitsanpassung.
|
||||||
|
|
||||||
Im zweiten Szenario prüft und sortiert der Roboter Teile und legt die
|
Im zweiten Szenario prüft und sortiert der Roboter Teile und legt die fehlerfreien Exemplare auf einem Fließband zur Weiterverarbeitung ab.
|
||||||
fehlerfreien Exemplare auf einem Fließband zur Weiterverarbeitung ab.
|
|
||||||
Die Mängelexemplare werden hingegen in einer besonderen Zone abgelegt, von wo sie vom Menschen abtransportiert werden.
|
Die Mängelexemplare werden hingegen in einer besonderen Zone abgelegt, von wo sie vom Menschen abtransportiert werden.
|
||||||
Auch hier soll der Mensch solange eigenständig arbeiten, bis der Roboter ein aussortiertes Teil ablegt, dass weiter transportiert werden muss.
|
Auch hier soll der Mensch solange eigenständig arbeiten, bis der Roboter ein aussortiertes Teil ablegt, dass weiter transportiert werden muss.
|
||||||
|
|
||||||
@ -73,8 +65,6 @@ Dieser soll, wenn seine Hilfe nicht benötigt wird, andere Roboter kontrollieren
|
|||||||
\section{Contributions}
|
\section{Contributions}
|
||||||
Durch diese Arbeit soll in zukünftigen Projekten die Möglichkeit geschaffen werden, konzeptionelle Probleme bei der Erstellung neuer Aufgabenbereiche eines Roboters frühzeitig durch Simulation erkennbar zu machen.
|
Durch diese Arbeit soll in zukünftigen Projekten die Möglichkeit geschaffen werden, konzeptionelle Probleme bei der Erstellung neuer Aufgabenbereiche eines Roboters frühzeitig durch Simulation erkennbar zu machen.
|
||||||
|
|
||||||
Dazu ist eine schnelle Konfiguration von sowohl Roboter als auch Mensch auf
|
Dazu ist eine schnelle Konfiguration von sowohl Roboter als auch Mensch auf unterschiedliche Szenarien nötig.
|
||||||
unterschiedliche Szenarien nötig.
|
Die Szenarien sollen dabei durch eine Beschreibungssprache definiert werden.
|
||||||
Die Szenarien sollen dabei durch eine Beschreibungssprache definiert
|
|
||||||
werden.
|
|
||||||
Durch deren einfache Struktur soll komplexes Verhalten einfach und überschaubar definierbar sein, dass dann in der Simulation getestet werden kann.
|
Durch deren einfache Struktur soll komplexes Verhalten einfach und überschaubar definierbar sein, dass dann in der Simulation getestet werden kann.
|
||||||
|
|||||||
@ -714,8 +714,100 @@ Um die RobotMove-Node nicht zu unterbrechen, wird diese nur über einen Callback
|
|||||||
|
|
||||||
\subsection{Subtrees}
|
\subsection{Subtrees}
|
||||||
Um die Wiederverwendung von bestimmten Verhaltensweisen zu erleichtern, wurden diese in Subtrees ausgelagert.
|
Um die Wiederverwendung von bestimmten Verhaltensweisen zu erleichtern, wurden diese in Subtrees ausgelagert.
|
||||||
In diesem Fall wurden die Aktionen ``Arbeiten an der Werkbank'' und ``Ablegen eines Objekts im Lagerregal'' des Menschen ausgelagert, da diese in mehreren Fällen verwendet werden und die Lesbarkeit der Bäume verbessert wird.
|
In diesem Fall wurden die Aktionen ``Arbeiten an der Werkbank'' und ``Ablegen eines Objekts im Lagerregal'' des Menschen ausgelagert, da diese in mehreren Fällen verwendet werden.
|
||||||
|
Dies erhöht die Lesbarkeit der Bäume und vereinfacht die Verwendung gleicher Aktionen in mehreren Bäumen.
|
||||||
|
|
||||||
|
Für das Arbeiten an der Werkbank ist eine Bewegung zu dieser erforderlich.
|
||||||
|
Außerdem muss der Mensch sich zur Werkbank ausrichten, um die späteren Animationen korrekt auszuführen.
|
||||||
|
Dazu wird eine Bewegung zu einem Punkt vor der Werkbank mit vorgegebener Zielrichtung genutzt.
|
||||||
|
Nach dieser Bewegung soll ein Arbeitsprozess simuliert werden.
|
||||||
|
Da dieser Prozess weit vom Roboter entfernt ist, ist eine genaue Animation nicht erforderlich.
|
||||||
|
In diesem Fall wird die Arbeit durch ausstrecken und zurücknehmen der Hand in Richtung der Werkbank simuliert.
|
||||||
|
Dies wird durch zwei Animations-Nodes mit entsprechenden Parametern gesteuert.
|
||||||
|
Die Ausführung der Nodes dieser Gesamtaktion soll Sequenziell erfolgen, weshalb die Nodes unterhalb einer Sequence-Node gruppiert werden.
|
||||||
|
Der vollständige resultierende Baum ist in Abbildung \ref{subtree_work} visualisiert.
|
||||||
|
|
||||||
|
\begin{figure}[]
|
||||||
|
\includegraphics[width=\textwidth]{img/MA-subtree-work}
|
||||||
|
\centering
|
||||||
|
\caption{BehaviorTree für das Arbeiten an der Werkbank}
|
||||||
|
\label{subtree_work}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Das Ablegen von Objekten in einem Schrank ist ein komplizierterer Prozess, da der Schank in mehreren Ebenen befüllt werden kann.
|
||||||
|
Außerdem sind mehrere Fächer verfügbar, die genutzt werden können.
|
||||||
|
Wie bereits bei der Werkank wird zuerst eine Bewegung zum Schrank ausgeführt.
|
||||||
|
Diese hat ein einzelnes Schrankteil als Ziel, wobei drei Schrankteile existieren.
|
||||||
|
Die Auswahl des Ziels erfolgt zufällig durch eine WeightedRandom-Node, die eine der drei Bewegungs-Nodes ausführt.
|
||||||
|
Nachdem erfolgt eine weitere zufällige Auswahl.
|
||||||
|
Diese entscheidet, ob ein oberes oder unteres Fach genutzt werden soll.
|
||||||
|
Im Falle eines oberen Faches werden nur zwei Animationen benötigt.
|
||||||
|
Die Hand wird zu einem oberen Fach ausgestreckt und zurückgezogen.
|
||||||
|
Für den Fall eines unteren Fachs werden vier Animationen genutzt.
|
||||||
|
Zuerst kniet die Person auf den Boden nieder, um das untere Fach erreichen zu können.
|
||||||
|
Danach wird ein Objekt durch inspizieren und ablegen in das Fach gelegt.
|
||||||
|
Nun kann die Person wieder aufstehen, was die Person wieder zum gleichen Lage wie am Anfang der Aktion bringt.
|
||||||
|
Für die beiden Fälle werden auch Sequenz-Nodes genutzt, da die Aktionen nacheinander ausgeführt werden sollen.
|
||||||
|
Die beiden zufälligen Auswahlverfahren werden durch eine Sequenz verbunden.
|
||||||
|
Der resultierende Ablauf wurde als Baum in Abbildung \ref{subtree_deposit} visualisiert.
|
||||||
|
|
||||||
|
\begin{figure}[]
|
||||||
|
\includegraphics[width=\textwidth]{img/MA-subtree-deposit}
|
||||||
|
\centering
|
||||||
|
\caption{BehaviorTree für das Ablegen von Objekten im Schrank}
|
||||||
|
\label{subtree_deposit}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Verhalten des Roboters}
|
\subsection{Verhalten des Roboters}
|
||||||
|
Das grundlegende Verhalten des Roboters ist in jedem Anwendungsfall gleich.
|
||||||
|
Dies hängt mit der automatischen Geschwindigkeitsanpassung zusammen.
|
||||||
|
Der Roboter soll bei annäherndem Mensch zuerst seine Geschwindigkeit reduzieren, wenn dieser eine Warnzone betritt.
|
||||||
|
Falls sich der Mensch weiter bis in die Sicherheitszone begibt, ist ein vollständiger Stopp des Roboters vorgesehen.
|
||||||
|
|
||||||
|
Um diese Funktionen zu erlauben, ist eine Reaktion auf Statusänderungen von vorherigen Nodes nötig.
|
||||||
|
Dies wird durch eine übergeordnete ReactiveSequence erreicht.
|
||||||
|
Eine solche Node verhält sich ähnlich einer normalen Sequence, jedoch prüft sie vor jedem Tick noch einmal vorherige Nodes.
|
||||||
|
Wenn eine vorherige Node Failure zurückgibt, wird die aktuell laufende spätere Node abgebrochen.
|
||||||
|
|
||||||
|
Als erste Node in der ReactiveSequence wird getestet, ob sich der Mensch in der Sicherheitszone aufhält.
|
||||||
|
Wenn dies nicht der Fall ist, kann die Ausführung weiter fortgesetzt werden.
|
||||||
|
Dies wird durch eine über dem Test angeordnete Inverter-Node erreicht.
|
||||||
|
|
||||||
|
Nach diesem Schritt kann die Geschwindigkeitsanpassung vorgenommen werden, falls diese nötig ist.
|
||||||
|
Dies wird durch eine If-Then-Else Node erreicht.
|
||||||
|
Als Bedingung wird ein Test auf den Aufenthalt des Menschen in der Warnzone verwendet.
|
||||||
|
Wenn der Mensch sich in dieser befindet, wird die Geschwingigkeit auf 10\% gesetzt.
|
||||||
|
Sonst wird die Geschwindigkeit wieder auf 100\% erhöht.
|
||||||
|
|
||||||
|
Nach dieser Sequenz kann der spezifische Teil für die gewünschte Applikation hinzugefügt werden.
|
||||||
|
In Abbildung \ref{tree_base_robot} wurde dies durch eine Wolke repräsentiert.
|
||||||
|
|
||||||
|
\begin{figure}[]
|
||||||
|
\includegraphics[width=\textwidth]{img/MA-tree-base-robot}
|
||||||
|
\centering
|
||||||
|
\caption{BehaviorTree für das Ablegen von Objekten im Schrank}
|
||||||
|
\label{tree_base_robot}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[]
|
||||||
|
\includegraphics[width=\textwidth]{img/MA-tree-robot-coex}
|
||||||
|
\centering
|
||||||
|
\caption{BehaviorTree für das Ablegen von Objekten im Schrank}
|
||||||
|
\label{tree_base_robot}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[]
|
||||||
|
\includegraphics[width=\textwidth]{img/MA-tree-robot-coop}
|
||||||
|
\centering
|
||||||
|
\caption{BehaviorTree für das Ablegen von Objekten im Schrank}
|
||||||
|
\label{tree_base_robot}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[]
|
||||||
|
\includegraphics[width=\textwidth]{img/MA-tree-robot-colab}
|
||||||
|
\centering
|
||||||
|
\caption{BehaviorTree für das Ablegen von Objekten im Schrank}
|
||||||
|
\label{tree_base_robot}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Verhalten des Menschen}
|
\subsection{Verhalten des Menschen}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
@startmindmap
|
@startmindmap subtree_deposit
|
||||||
|
|
||||||
|
|
||||||
skinparam Linetype ortho
|
skinparam Linetype ortho
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user