Skip to content
Snippets Groups Projects
Commit 2b823fb4 authored by Jim's avatar Jim
Browse files

Evaluation

parent ac5186fb
No related branches found
No related tags found
No related merge requests found
Pipeline #9166 failed
images/Orientation_eval.png

23.7 KiB

images/velocity_eval.png

28.4 KiB

\chapter{Evaluation}
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.
\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.
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}).
\begin{figure}
\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}
\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}
\ffigbox[\FBwidth]%
{\begin{subfloatrow}%
......
......@@ -150,7 +150,7 @@ Die Pakete \textit{cobot\_1} und \textit{cobot\_2} enthalten jeweils die Impleme
Nach erfolgreicher Initialisierung, wird das Topic \glqq pressure\_1\grqq{} beziehungsweise \glqq pressure\_2\grqq{} abonniert, um informiert zu werden, sobald das Glas auf den Drucksensor abgestellt wird. Ein Service Client wird zum Stellen von Anfragen an den \textit{SafezoneController} erstellt und mit Hilfe des \textit{ObjectCreators} werden die Umgebungsobjekte, wie der Tisch, die Behälter und die Drucksensoren, zur Planning Scene hinzugefügt. Erst anschließend beginnt die Abarbeitung des Ablaufdiagramms~\ref{fig:ablaufdiagramm}. Die einzelnen Zustände beziehungsweise Aufgaben werden von einer \textit{Cobot}-Instanz ausgeführt, die für jede Aufgabe eine entsprechende Methode bereitstellt. Eine Implementation einer solchen Aufgabe ist im Codebeispiel~\ref{lst:pick_bottle} dargestellt.
\lstinputlisting[firstline=27,lastline=39, label={lst:pick_bottle}, caption={Beispielimplementation einer Cobot-Aufgabe}]{../cobot_ws/src/cobot_1/src/Cobot.cpp}
\lstinputlisting[firstline=29,lastline=41, label={lst:pick_bottle}, caption={Beispielimplementation einer Cobot-Aufgabe}]{../cobot_ws/src/cobot_1/src/Cobot.cpp}
Alle Aufgaben erwarten eine Referenz zu einer Move Group, auf der die Bewegung ausgeführt werden soll. Beinhaltet die Aufgabe ein Objekt, wie die Flasche beim Aufnehmen der Flasche, wird zusätzlich noch eine \textit{CollisionObject}-Beschreibung dieses Objektes benötigt, da in ihr Größe und Position des Objektes definiert ist. Die tatsächliche Implementation, zum Aufnehmen und Platzieren von Objekten, ist in einem weiteren Package ausgelagert, damit beide Cobots auf diese Funktionalität zugreifen können und Codeduplikate vermieden werden. Nach Ausführung der Bewegung, werden die notwendigen Constraints angepasst und dem \textit{CobotController}, in Form eines booleschen Werts, den Erfolg der Ausführung zurückgegeben. Die Constraints werden im Konstruktor des \textit{Cobot}s als Klassenvariablen instanziiert und lassen sich so innerhalb der Handlungen anwenden und entfernen.
......@@ -161,7 +161,8 @@ Neben dem Programmcode enthält das Cobot Package auch noch eine Konfigurationsd
\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}.
Der Orientierungs-Constraint (Codebeispiel~\ref{lst:orientation_constraint}) wird realisiert, indem eine \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|.
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|.
\lstinputlisting[firstline=11,lastline=26, label={lst:orientation_constraint}, caption={Implementation des Orientierungs-Constraint}]{../cobot_ws/src/constraints/src/OrientationConstraint.cpp}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment