diff --git a/images/Klassendiagramm Cobot.jpg b/images/Klassendiagramm Cobot.jpg index 3507c4cdd43ff006af1f0f565572c6e2732950f6..ce35e4cc4e5ef4ad6303da94087750786045c9bd 100644 Binary files a/images/Klassendiagramm Cobot.jpg and b/images/Klassendiagramm Cobot.jpg differ diff --git a/images/cobot_1_end.png b/images/cobot_1_end.png new file mode 100644 index 0000000000000000000000000000000000000000..f78f7c231d21b6fb9720a05c5fedb55d7fc4b36a Binary files /dev/null and b/images/cobot_1_end.png differ diff --git a/images/cobot_1_fill_glass.png b/images/cobot_1_fill_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..4e278d8ee08125cbe2953bc7c4fdcd9e0dbc567b Binary files /dev/null and b/images/cobot_1_fill_glass.png differ diff --git a/images/cobot_1_pick_bottle.png b/images/cobot_1_pick_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..ecac41c8c354d86af26bf3faa0ff15e081d77a94 Binary files /dev/null and b/images/cobot_1_pick_bottle.png differ diff --git a/images/cobot_1_pick_glass.png b/images/cobot_1_pick_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..25985ced49a7754213a2c6b5e9ef240bb47cdb5e Binary files /dev/null and b/images/cobot_1_pick_glass.png differ diff --git a/images/cobot_1_place_glass.png b/images/cobot_1_place_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7a4a7ed9fcc6d624ab9218f9d12f06d6368022 Binary files /dev/null and b/images/cobot_1_place_glass.png differ diff --git a/images/cobot_2_end.png b/images/cobot_2_end.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba56e9bb1e2300d5198e0de05ba6f9d1b24b4c0 Binary files /dev/null and b/images/cobot_2_end.png differ diff --git a/images/cobot_2_move_glass.png b/images/cobot_2_move_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..9e68a4eab4985c210e620688bf99144df17b378f Binary files /dev/null and b/images/cobot_2_move_glass.png differ diff --git a/images/cobot_2_pick_glass.png b/images/cobot_2_pick_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..41a09ecee3699f22a51120c4486fdb6d40826dca Binary files /dev/null and b/images/cobot_2_pick_glass.png differ diff --git a/images/cobot_2_place_glass.png b/images/cobot_2_place_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..de583ef959e1e415f9343819fda24f5c54f5be0e Binary files /dev/null and b/images/cobot_2_place_glass.png differ diff --git a/sections/eval.tex b/sections/eval.tex index b79107c27b4219ca28ced72c2201b831eae6e3cc..aa8090290e8db710f54642548446651a6b04f3a6 100644 --- a/sections/eval.tex +++ b/sections/eval.tex @@ -5,10 +5,85 @@ Ziel der Fallstudie war die Anwendung einiger der in der Taxonomie eingeordneten \section{Simulation} -Die Initialisierung der Simulationsumgebung geschieht in einem Zuge mit dem Hinzufügen der Objekte in die Planning Scene. Die Startzustände der beiden Roboter sind in Abbildung~\ref{fig:cobots_init} zu sehen. +Die Initialisierung der Simulationsumgebung geschieht in einem Zuge mit dem Hinzufügen der Objekte in die Planning Scene. Die Abläufe der Simulationen von Cobot 1 und Cobot 2 sind schrittweise in Abbildung~\ref{fig:cobot_1_sim} und Abbildung~\ref{fig:cobot_2_sim} dargestellt. +\begin{figure} + \centering + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_1_init.png} + \caption{Cobot 1: Startzustand} + \label{fig:cobit_1_init}% + \end{subfigure} + \hfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_1_pick_bottle.png} + \caption{Cobot 1: Flasche anheben } + \label{fig:cobit_1_pick_bottle} + \end{subfigure} + \vfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_1_fill_glass.png} + \caption{Cobot 1: Glas füllen} + \label{fig:cobit_1_fill_glass} + \end{subfigure} + \hfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_1_pick_glass.png} + \caption{Cobot 1: Glas anheben} + \label{fig:cobit_1_pick_glass} + \end{subfigure} + \vfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_1_place_glass.png} + \caption{Cobot 1: Glas abstellen} + \label{fig:cobit_1_place_glass} + \end{subfigure} + \hfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_1_end.png} + \caption{Cobot 1: Endzustand} + \label{fig:cobit_1_end} + \end{subfigure} + \caption{Simulation des Cobot 1} + \label{fig:cobot_1_sim} +\end{figure} + +\begin{figure} + \centering + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_2_init.png} + \caption{Cobot 2: Startzustand} + \label{fig:cobit_2_init}% + \end{subfigure} + \hfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_2_pick_glass.png} + \caption{Cobot 2: Glas anheben } + \label{fig:cobit_2_pick_glass} + \end{subfigure} + \vfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_2_move_glass.png} + \caption{Cobot 2: Glas bewegen} + \label{fig:cobit_2_move_glass} + \end{subfigure} + \hfill + \begin{subfigure}{.48\linewidth} + \includegraphics[width=\linewidth]{images/cobot_2_place_glass.png} + \caption{Cobot 2: Glas abstellen} + \label{fig:cobit_2_place_glass} + \end{subfigure} + \vfill + \begin{subfigure}{\linewidth} + \includegraphics[width=.48\linewidth]{images/cobot_2_end.png} + \caption{Cobot 2: Endzustand} + \label{fig:cobit_2_end} + \end{subfigure} + \caption{Simulation des Cobot 2} + \label{fig:cobot_2_sim} +\end{figure} -Um die Einhaltung der Constraints zu validieren, wurde die Beschleunigung, die Geschwindigkeit und die Orientierung des Endeffektors zur Laufzeit der Simulation aufgezeichnet und in einem Graphen dargestellt. In Abbildung~\ref{fig:velocity_eval} ist zu sehen, dass die Beschleunigung, während der Handhabung von gefüllten Behältern, geringer ist, als während der Handlungen in denen das nicht der Fall ist. Abbildung~\ref{fig:orientation_eval} zeigt die Orientierung des Endeffektors, relativ zur Welt. Es ist ersichtlich, dass die Orientierung, während der Handhabung von Objekten, innerhalb der Toleranzgrenzen bleibt, die bei der Erstellung des Orientierungs-Constraints definiert werden (siehe Quellcode~\ref{lst:orientation_constraint}). +Um die Einhaltung der Constraints zu validieren, wurde die Beschleunigung, die Geschwindigkeit und die Orientierung des Endeffektors zur Laufzeit der Simulation aufgezeichnet und in einem Graphen dargestellt. In Abbildung~\ref{fig:velocity_eval} ist zu sehen, dass die Beschleunigung, während der Handhabung von gefüllten Behältern, geringer ist, als während der Handlungen in denen das nicht der Fall ist. Abbildung~\ref{fig:orientation_eval} zeigt die Orientierung des Endeffektors, relativ zur Welt. Es ist ersichtlich, dass die Orientierung, während der Handhabung von Objekten, innerhalb der Toleranzgrenzen bleibt, die bei der Erstellung des Orientierungs-Constraints definiert wurden (siehe Quelltext~\ref{lst:orientation_constraint}). \begin{figure} \centering @@ -25,19 +100,6 @@ Um die Einhaltung der Constraints zu validieren, wurde die Beschleunigung, die G \end{figure} -\begin{figure} - \ffigbox[\FBwidth]% - {\begin{subfloatrow}% - \ffigbox[\FBwidth]% - {\includegraphics[height=7cm]{images/cobot_1_init.png}}% - {\caption{Cobot 1}\label{fig:cobit_1_init}}% - \ffigbox[\FBwidth]% - {\includegraphics[height=7cm]{images/cobot_2_init.png}}% - {\caption{Cobot 2}\label{fig:cobit_2_init}}% - \end{subfloatrow}}% - {\caption{Gazebo Simulationsumgebung nach der Initialisierung}\label{fig:cobots_init}}% -\end{figure} - \section{Constraints} In diesem Abschnitt werden alle verwendeten Constraints aufgelistet und in die Taxonomie eingeordnet. diff --git a/sections/implementierung.tex b/sections/implementierung.tex index 30728868771280405db5980c3601e8af21437420..7589107e42596385ba4d1db54dd0561998e2491d 100644 --- a/sections/implementierung.tex +++ b/sections/implementierung.tex @@ -22,9 +22,7 @@ Um einen reibungslosen Ablauf zu gewährleisten und den gestellten Anforderungen \item[C3] Arbeitsbereich: Um eine Kollision der beiden Roboter zu vermeiden, soll um die Übergabestelle eine Sicherheitszone eingerichtet werde, die immer nur von einem Roboter geschnitten werden darf. - \item[C4] Näherung: Nach der Aufnahme eines Objektes soll ein zusätzlicher Sicherheitsabstand zu anderen Objekten und insbesondere dem Tisch eingehalten werden, bis das Objekt wieder abgestellt wird. - - \item [C5] Handlung: Die Handlungen dürfen nur in der durch die Aufgabenstellung vorgeschriebenen Reihenfolge durchgeführt werden. + \item [C4] Handlung: Die Handlungen dürfen nur in der durch die Aufgabenstellung vorgeschriebenen Reihenfolge durchgeführt werden. \end{enumerate} Zusätzlich sind noch weitere handlungsunabhängige Anforderungen zu berücksichtigen: \begin{enumerate} @@ -159,7 +157,7 @@ Neben dem Programmcode enthält das Cobot Package auch noch eine Konfigurationsd Über die Launch Datei des Packages startet neben dem \textit{CobotController} auch den \textit{SafezoneController}- und \textit{PressureSensor}-Node und eine Simulationsumgebung. \subsection{Constraints}\label{ch:constraint_impl} -Das Package \textit{constraints} enthält die Definition der abstrakten \textit{Constraint}-Klasse und die \textcolor{blue}{fünf} konkreten Implementationen \textit{AccelerationConstraint}, \textit{OrientationConstraint}, \textcolor{blue}{\textit{ProximityConstraint}}, \textit{SafezoneConstraint} und \textit{VelocityConstraint}. +Das Package \textit{constraints} enthält die Definition der abstrakten \textit{Constraint}-Klasse und die vier konkreten Implementationen \textit{AccelerationConstraint}, \textit{OrientationConstraint}, \textit{SafezoneConstraint} und \textit{VelocityConstraint}. Der Orientierungs-Constraint (Codebeispiel~\ref{lst:orientation_constraint}) wird realisiert, indem eine\newline \verb|moveit_msgs::OrientationConstraint|-Nachricht erstellt wird, die die aktuelle Orientierung des Endeffektors festsetzt. Diese Nachricht wird dann der Move Group als Pfad-Constraint hinzugefügt. Entfernt wird das Constraint durch das Leeren der Liste \verb|path_constraints.orientation_constraints|. diff --git a/thesis.tex b/thesis.tex index 349f797ca61894824be367a7aa73bd6d55534a55..8cf768bd18b283f77e401dc0bd001a1ca9aa3f73 100644 --- a/thesis.tex +++ b/thesis.tex @@ -40,7 +40,8 @@ \captionsetup{singlelinecheck=off,format=hang,justification=raggedright} \DeclareCaptionSubType[alph]{figure} \DeclareCaptionSubType[alph]{table} -\captionsetup[subfloat]{labelformat=brace,list=off} +%\captionsetup[subfloat]{labelformat=brace,list=off} +\usepackage{subcaption} \usepackage{booktabs} \usepackage{array}