Select Git revision
Forked from
stgroup / misc / latex-templates / Thesis Template - German
This fork has diverged from the upstream repository.
Jim authored
eval.tex 11.53 KiB
\newpage\null\newpage
\chapter{Evaluation}\label{ch:eval}
Ziel der Fallstudie war die Anwendung einiger der in der Taxonomie eingeordneten Constraints in einem realen Anwendungsfall. In diesem Kapitel wird die Implementierung hinsichtlich der Erfüllung der in Abschnitt~\ref{ch:requirements} gelisteten Anforderungen überprüft. Dazu werden beide Cobot-Anwendungsfälle in einer Gazebo Simulationsumgebung simuliert. Anschließend werden alle aufgetretenen Constraints in die in Kapitel~\ref{ch:taxonomy} präsentierte Taxonomie eingeordnet und es wird dargestellt, welche Constraints direkt in MoveIt umgesetzt wurden und welche Constraints theoretisch umgesetzt werden könnten.
\section{Simulation}
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, die Orientierung des Endeffektors und der Abstand zur Sicherheitszone zur Laufzeit der Simulation aufgezeichnet und in einem Graphen dargestellt. Dabei wurde lediglich Cobot 1 betrachtet, da die Handlungen und Constraints des zweiten Cobots eine Teilmenge des ersten Cobots sind. 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. Die Bereiche, in denen die Beschleunigung beschränkt ist, sind farblich markiert. Die hohe Geschwindigkeit, während der Bewegung des Glases zwischen Sekunde 33 und 36, ist auf die große zurückgelegte Distanz und der damit verbundenen langen Beschleunigungszeit zurückzuführen. 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, nur minimal um einen konstanten Wert schwanken. Diese Bereiche sind ebenfalls farblich unterlegt. Durch eine Verschärfung der Toleranzgrenzen wäre ein noch stabileres Ergebnis möglich. Allerdings würde dies mit einer deutlichen Steigerung der Planungszeit einhergehen. Abbildung~\ref{fig:safezone_eval} zeigt den Abstand aller Glieder des Roboters zur Sicherheitszone. Diese wird erst beim Platzieren des Glases und nach erfolgreicher Anfrage an den \textit{SafezoneController} geschnitten. Link 0 und Link 1 sind nicht zu erkennen, da sie ebenfalls einen konstanten Abstand halten und von der Kurve von Link 2 überdeckt werden. Die einzelnen Handlungen ordnen sich in allen drei Abbildungen grob den in Tabelle~\ref{tab:action_time} dargestellten Zeitfenstern zu.
\begin{center}
\begin{table}
\caption{Zeitliche Zuordnung der Handlungen in der Evaluation}
\label{tab:action_time}
\begin{tabular}{l|c||S[table-format=1]|S[table-format=1]}
\textbf{Handlung} & Bild & \textbf{Beginn} & \textbf{Ende} \\
\hline
Startposition & \ref{fig:cobit_1_init} & 0s & 5s \\
Zur Flasche bewegen & - & 5s & 8s \\
Flasche anheben & \ref{fig:cobit_1_pick_bottle} & 8s & 12s \\
Flasche zum Glas bewegen & - & 12s & 15s \\
Flasche kippen & \ref{fig:cobit_1_fill_glass} & 15s & 22s \\
Flasche abstellen & - & 22s & 27s \\
Zum Glas bewegen & - & 27s & 30s \\
Glas anheben & \ref{fig:cobit_1_pick_glass} & 30s & 33s \\
Glas zum Übergabeort bewegen & - & 33s & 36s \\
Glas abstellen & \ref{fig:cobit_1_place_glass} & 36s & 38s \\
Startposition einnehmen & \ref{fig:cobit_1_end} & 38s & 41s \\
\end{tabular}
\end{table}
\end{center}
\begin{figure}[!h]
\centering
\includegraphics[height=\textheight, width=\textwidth, keepaspectratio]{images/velocity_eval.png}
\caption{Geschwindigkeit und Beschleunigung des Endeffektors relativ zur Welt}
\label{fig:velocity_eval}
\end{figure}
\begin{figure}[!h]
\centering
\includegraphics[height=\textheight, width=\textwidth, keepaspectratio]{images/Orientation_eval.png}
\caption{Orientierung des Endeffektors relativ zur Welt}
\label{fig:orientation_eval}
\end{figure}
\begin{figure}[!h]
\centering
\includegraphics[height=\textheight, width=\textwidth, keepaspectratio]{images/Safezone_eval.png}
\caption{Entfernungen aller Glieder zur Sicherheitszone}
\label{fig:safezone_eval}
\end{figure}
\newpage
\section{Constraints}
In diesem Abschnitt wird für jedes verwendete Constraint untersucht, in wie fern es in MoveIt direkt umgesetzt werden konnte und in die Taxonomie eingeordnet. Eine vollständige Darstellung aller verwendeten Constraints und in MoveIt umsetzbaren Constraints ist in Abbildung~\ref{fig:taxonomie_moveit} gegeben. Standardmäßig unterstützt MoveIt folgende Constraints, für die bereits eigene ROS Messages existieren:
\begin{enumerate}
\item \textbf{Joint Constraint:} Einzelne Drehwerte der Gelenke innerhalb eines Bereichs halten
\item \textbf{Position Constraint:} Einzelne Glieder innerhalb eines dreidimensionalen Volumen halten
\item \textbf{Orientation Constraint:} Die Orientierung eines Gliedes innerhalb einer Toleranz halten
\item \textbf{Visibility Constraint:} Sicherstellen, dass der Roboter sich nicht innerhalb des Sichtkegels eines Sensors bewegt. Soll ein Objekt stets für den Sensor sichtbar sein, muss zusätzlich ein Positions-Constraint angewandt werden.
\end{enumerate}
\paragraph{Workflow}
Die Handlungen der beiden Roboter folgt einem strikten Ablaufplan. Ihre Handlungswahl ist dementsprechend beschränkt. Da MoveIt lediglich ein Motion Planning Framework ist, bietet es keine Möglichkeiten abstrakte Handlungen einzuschränken. In der Taxonomie wird ein solcher Constraint eingeordnet unter:
\begin{center}
Robotische Constraints → Handlung → Endeffektorunspezifisch
\end{center}
\paragraph{Orientierung}
Bei der Handhabung und Manipulation von mit Flüssigkeit befüllten Behältern, müssen die Roboter diesen aufrecht relativ zum Boden halten. Dies geschieht beim Aufnehmen der Flasche, der Bewegung der Flasche an das Glas hinan, beim Abstellen der Flasche, bei der Aufnahme des Glases, bei der Bewegung des Glases und beim Abstellen des Glases. Dieser Constraint wird bereits bei der Pfadplanung berücksichtigt und ist aufgrund der Art des bewegten Werkstücks notwendig. Die Einschränkung der Orientierung entspricht dem von MoveIt bereitgestellten Orientation Constraint und kann daher problemlos in MoveIt umgesetzt werden.
In die Taxonomie einordnen lässt sich dieser Constraint unter:
\begin{center}
Robotische Constraints → Pfad → Orientierung des Endeffektors → Bewegtes Werkstück
\end{center}
\paragraph{Beschleunigung}
Neben der Orientierung, muss beim Arbeiten mit Flüssigkeiten auch die Beschleunigung beschränkt werden, um ein Überschwappen zu verhindern. Berücksichtigt wird die Beschleunigungsskalierung von der Move Group erst bei Ausführung des geplanten Pfads, indem die maximale Beschleunigung jedes Gelenks reduziert wird. Die Beschränkung der Beschleunigung im Planungsschritt ist in der verwendeten MoveIt Version nicht möglich. In die Taxonomie wird der Beschleunigungs-Constraint wie folgt eingeordnet:
\begin{center}
Robotische Constraints → Bewegung → Beschleunigung → Bewegtes Werkstück
\end{center}
\paragraph{Geschwindigkeit}
Das Umfüllen der Flüssigkeit aus den ersten in den zweiten Behälter erforderte eine zusätzliche Beschränkung der Geschwindigkeit. Eine zu schnelle Rotation des Endeffektors könnte ebenfalls zu einem Überschwappen führen. Analog zur Einschränkung der Beschleunigung, kann eine die Geschwindigkeit nicht beim Motion Planning berücksichtigt werden. Eingeordnet wird der Constraint unter:
\begin{center}
Robotische Constraints → Bewegung → Geschwindigkeit → Bewegtes Werkstück
\end{center}
\paragraph{Sicherheitszone und Hindernisse}
Um eine Kollision der Roboter in dem sich überschneidenden Arbeitsbereich zu verhindern, ist es immer nur einem Roboter möglich die Sicherheitszone zu betreten. Da das Betreten nicht mit einer Änderung des Verhaltens einhergeht, sondern ohne weiteres gar nicht möglich ist, handelt es sich eigentlich um verbotene Zone. Das Konzept von Sicherheitszonen und verbotenen Zonen gibt es in MoveIt nicht. Realisiert werden kann eine verbotene Zone allerdings zum Beispiel durch das Hinzufügen eines Hindernisses in die Planning Scene oder durch Verwendung des Position Constraints. In der Fallstudie wurde erstere Option verwendet. Dadurch ergeben sich zwei Möglichkeiten den Constraint in die Taxonomie einzuordnen:
\begin{center}
Robotische Constraints → Pfad → Arbeitsbereich → Kollaboration → Verbotene Zone
\end{center}
\begin{center}
Robotische Constraints → Pfad → Hindernisse
\end{center}
\paragraph{Angehängtes Objekt}
Nach der Aufnahme des Glases oder der Flasche wird das Kollisionsobjekt dem kinematischen Modell des Roboters hinzugefügt und dadurch automatisch beim Motion Planning berücksichtigt. In der Taxonomie lässt sich dieser Constraint ebenfalls einordnen:
\begin{center}
Robotische Constraints → Pfad → Angehängte Objekte
\end{center}
\begin{figure}[!h]
\centering
\includegraphics[height=\textheight, width=\textwidth, keepaspectratio]{images/Taxonomie_moveit.pdf}
\caption{In der Fallstudie angewandte Constraints (blau) und in MoveIt direkt umsetzbare Constraints (orange)}
\label{fig:taxonomie_moveit}
\end{figure}