diff --git a/bibliography.bib b/bibliography.bib index 0e904cef89a2b571e9f2914b9029b6cdf6b0852a..f38979de61204085d82accf77e72bf9790d8ab57 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -118,7 +118,7 @@ } -@book{Koubaa.2016, +@book{Koubaa2016, year = {2016}, title = {Robot Operating System (ROS)}, address = {Cham}, @@ -207,7 +207,7 @@ } -@book{Siciliano.2016, +@book{Siciliano2016, year = {2016}, title = {Springer handbook of robotics}, url = {http://lib.myilibrary.com?id=943278}, diff --git a/images/OK.png b/images/OK.png new file mode 100644 index 0000000000000000000000000000000000000000..d024df90869a09526b3ff35f87d5ba29985c2d9f Binary files /dev/null and b/images/OK.png differ diff --git a/images/PS.png b/images/PS.png new file mode 100644 index 0000000000000000000000000000000000000000..843ff7712305c3c45661f79a7d9306cfe7390baa Binary files /dev/null and b/images/PS.png differ diff --git a/images/koop1.png b/images/koop1.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b31f7a30fbe59498d00ba8b706c9d0e3ce2f7c Binary files /dev/null and b/images/koop1.png differ diff --git a/images/koop2.png b/images/koop2.png new file mode 100644 index 0000000000000000000000000000000000000000..3e276e19befa60caa7b65aca0aefab84204a2c15 Binary files /dev/null and b/images/koop2.png differ diff --git a/images/nach_join.png b/images/nach_join.png new file mode 100644 index 0000000000000000000000000000000000000000..49102540a50a3773ef86877be6bb6745d4d7a54a Binary files /dev/null and b/images/nach_join.png differ diff --git a/images/schnitt1.png b/images/schnitt1.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4378b8ae3cbcf9959201736c25e8126420b949 Binary files /dev/null and b/images/schnitt1.png differ diff --git a/images/schnitt2.png b/images/schnitt2.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff0d64cfa975364db59847e765f33720a0ea0a2 Binary files /dev/null and b/images/schnitt2.png differ diff --git a/images/task2.png b/images/task2.png deleted file mode 100644 index 8a3432ee7bb8020ff6cda6930ac1c1e24cfc3fac..0000000000000000000000000000000000000000 Binary files a/images/task2.png and /dev/null differ diff --git a/sections/einleitung.tex b/sections/einleitung.tex index ddfdd32e5f94672a64a324b07a626d9264c59686..f2196f004e434d17ac7292a85ea46c6d925eda2c 100644 --- a/sections/einleitung.tex +++ b/sections/einleitung.tex @@ -3,7 +3,8 @@ Die Planung der Abläufe ist abhängig von der Beschaffenheit des Roboters, denn die Basis eines Roboters kann beweglich oder fest sein. Beispielsweise sind Roboterarme fest auf einer Platte montiert und somit fester Bestandteil der Umgebung. Ein Wechsel ihrer Position würde bedeuten, eine andere Stelle auf der Platte für die Montage zu präparieren, den Roboterarm zu demontieren und an anderer Stelle zu platzieren, was einen enormen Aufwand darstellt und den Erfolg der Handlung nicht garantiert. Daraus ist ersichtlich, dass die Positionierung unflexibler Roboter ein Problem aufweist, dessen Lösung direkten Einfluss hinsichtlich der zeitlicher Komponente, sowie der Bewältigung der spezifischen Aufgabe hat. Die Absolvierung dieser Aufgabe wird demzufolge durch effizientere Nutzung der Arbeitsumgebung besser umgesetzt, aufwändige Montagearbeiten während der Bearbeitung werden reduziert und der dadurch erschlossene Raum sowie die resultierende Zeit kann gewinnbringender genutzt werden. Im Anbetracht der stetig wachsenden Industrie und der sich daraus ergebenden Nachfrage nach effizienten automatisierten Produktionsverfahren, die den limitierten Arbeitsraum einer Produktionsstätte optimal nutzen, ist die Platzierung der Roboter ein entscheidender erster Schritt zur Optimierung des gesamten Arbeitsprozesses. \section{Zielsetzung der wissenschaftlichen Arbeit} -Ziel dieser Arbeit ist es, mittels Konzepten zur Charakterisierung der Kapazitäten eines Roboterarms, bezogen auf dessen Fähigkeit der Interaktion mit der Umgebung, kollaborative Multi-Roboter Arbeitsräume zu definieren. Dazu ist die Auseinandersetzung mit wissenschaftlichen Publikationen erforderlich, um einen umfassenden Kenntnisstand hinsichtlich der Anforderungen bezüglich der Generierung eines solchen Arbeitsraums zu erlangen und Grundlage der Evaluierung. Dabei ist die Erarbeitung einer Methodik zur Konkretisierung zu operierender spezifischer Aufgaben, um auf Grundlage dessen automatisch einen kollaborativen Arbeitsraum zu erzeugen, ebenfalls ein Aspekt dieser Arbeit. Anschließend ist die Anwendung der erarbeiteten Konzepte und dessen Implementierung innerhalb eines Fallbeispiels mit zwei oder mehr 'Panda' Roboterarmen der Franka Emika GmbH zu zeigen und dessen erzielter Resultate anhand der zuvor definierten Anforderungen zu evaluieren. +\label{sec:Zielsetzung} +Ziel dieser Arbeit ist es, mittels Konzepten zur Charakterisierung der Kapazitäten eines Roboterarms, bezogen auf dessen Fähigkeit der Interaktion mit der Umgebung, kollaborative Multi-Roboter Arbeitsräume zu definieren. Dazu ist die Auseinandersetzung mit wissenschaftlichen Publikationen erforderlich, um einen umfassenden Kenntnisstand hinsichtlich der Anforderungen bezüglich der Generierung eines solchen Arbeitsraums zu erlangen und Grundlage der Evaluierung. Dabei ist die Erarbeitung einer Methodik zur Konkretisierung der spezifischen Aufgaben, um auf Grundlage dessen automatisch einen kollaborativen Arbeitsraum zu erzeugen, ebenfalls ein Aspekt dieser Arbeit. Anschließend ist die Anwendung der erarbeiteten Konzepte und dessen Implementierung innerhalb eines Fallbeispiels mit zwei oder mehr 'Panda' Roboterarmen der Franka Emika GmbH zu zeigen und dessen erzielte Resultate anhand der zuvor definierten Anforderungen zu evaluieren. \section{Aufbau der wissenschaftlichen Arbeit} diff --git a/sections/evaluation.tex b/sections/evaluation.tex index 32eaedb4175b96315ecb844c6e235e6b21305fe3..f2a1d6d5d1218aca660cbda9affbb20fd4dd6218 100644 --- a/sections/evaluation.tex +++ b/sections/evaluation.tex @@ -11,4 +11,36 @@ Anhand einer festen Aufgabebeschreibung erfolgt eine Gegenüberstellung dieser K \begin{enumerate} \item Zeit zur Kalkulation aller Roboterpositionen \item Welchen zeitlichen Einfluss hat die Modifikation der Aufgabenbeschreibung, wie beispielsweise durch das Hinzufügen und entfernen spezifischer Kettenglieder der Operationskette oder -\end{enumerate} \ No newline at end of file +\end{enumerate} + +\section{Skalierbarkeit der Positionsanalyse} +Die Analyse und Kalkulation valider Basispositionen nach dem in \autoref{sec:diffVoxel} beschriebenen Algorithmus ist abhängig von der Anzahl aller Kettenglieder und Teilketten der dokumentierten Aufgabenbeschreibung. Um die Skalierbarkeit zu evaluieren, wird die Kalkulationszeit der Operationskette, die Anzahl kalkulierter Basispositionen pro Roboter dokumentiert. + +\begin{table} +\begin{tabulary}{\textwidth}{@{}LCCCC@{}} +\toprule +\textbf{Name} & \textbf{Anzahl der Teilketten} & \textbf{Aufteilung der Kettenglieder} & \textbf{Kalkulationszeit} & \textbf{Lösungsmenge} +\tabularnewline\midrule +eval1 & +2 & +2/2 & +489.61s & +84/68 +\tabularnewline\midrule +eval2 & +2 & +3/3 & +762.24s & +3/8 +\tabularnewline\midrule +eval3 & +3 & +2/2/2 & +732.13s & +68/67/69 +\tabularnewline\bottomrule +\end{tabulary} +\caption{Dokumentation erfasster Informationen einer Aufgabenbeschreibung}\label{tab:posi} +\end{table} + +\autoref{tab:posi} ist zu entnehmen, dass die Anzahl der Kettenglieder die \texttt{Kalkulationszeit} beeinflusst, während sich deren Aufteilung auf die Teilketten beziehungsweise die robotischen Systeme auf das Lösungsspektrum auswirkt. Die Anzahl der Kettenglieder ist bei Aufgabenbeschreibung \texttt{eval2} und \texttt{eval3}identisch, wodurch die \texttt{Kalkulationszeit} ähnlich ist. Dies ist damit zu begründen, dass jedes Kettenglied anhand der \autoref{eq:28} eine Menge $P_{Base}$ generiert, dessen Inhalt in einer separaten Datenstruktur bezüglich der zugrundeliegenden Teilkette analysiert wird. Die Aufgaben \texttt{eval1} und \texttt{eval2} haben die gleiche Anzahl an Teilketten, wobei die \texttt{Lösungsmengen} unterscheiden. Dies ist implizit durch die \ No newline at end of file diff --git a/sections/fallbeispiel.tex b/sections/fallbeispiel.tex index 9943b30551b5623e19c772d4cb33e375d4a5029c..02391df0b6f78194a36a4eada1ec2cf868cb134f 100644 --- a/sections/fallbeispiel.tex +++ b/sections/fallbeispiel.tex @@ -2,40 +2,108 @@ Inhalt dieses Kapitels ist die Demonstration der Funktionsweise einzelner Elemente der Implementierung und dessen Synergie mit \emph{MoveIt!} spezifischen Komponenten, sowie der Integration des franka\_ros Pakets \footnote{\url{http://wiki.ros.org/franka_ros}} anhand eines Beispiels. Dieses Paket stellt hierbei die sowohl grafische, als auch funktionelle Beschreibung der Bestandteile des gleichnamigen robotischen Systems zur Verfügung, welches primär Objekt der Ausführung ist. \section{Ausgangspunkt kinematischer Operationen} -MoveIt bietet über die move\_group Schnittstelle eine Möglichkeit die Kommunikation mittels spezieller Nachrichten und somit der Planung und Exekution kinematischer Operationen durch den Roboter. Dies bedingt eine Konfigurationsdatei, welche das robotische System konkretisiert, indem beispielsweise Kontrollelemente wie Endeffektoren als Gruppen definiert oder Adjazenzen der einzelnen Festkörper in Form einer Kollisionsmatrix erfasst werden oder weitere Nodes initialisiert werden. Die Konfigurationsdatei stellt dadurch den Ausgangspunkt aller operativen Aspekte des Fallbeispiels dar und ist daher sowohl für einen Roboter, als auch für mehrere robotische Systeme in der Implementierung enthalten. Diese Konfigurationen wurden mittels \emph{moveit setup assistant (MSA)} generiert. +\emph{MoveIt!} bietet über die \emph{move\_group} Schnittstelle eine Möglichkeit der Kommunikation mittels spezieller Nachrichten und somit der Planung und Exekution kinematischer Operationen durch den Roboter. Dies bedingt eine \emph{SRDF} Datei, welche das robotische System konkretisiert, indem beispielsweise Kontrollelemente wie Endeffektoren als Gruppen definiert oder Adjazenzen der einzelnen Festkörper in Form einer Kollisionsmatrix erfasst werden. Wie \autoref{sec:Moveit} zu entnehmen ist, kann diese Konfigurationsdatei innerhalb eines ROS Pakets mit dem \emph{moveit setup assistant} aus einer validen Roboterbeschreibung generiert werden. Das resultierende Konfigurationspaket ist Ausgangspunkt aller operativen Aspekte des Fallbeispiels und daher sowohl für einen Roboter, als auch für mehrere robotische Systeme in der Implementierung enthalten. \subsection{Modifikationen in der Beschreibung robotischer Systeme} -Die \emph{move\_group} Schnittstelle bietet keine Möglichkeit zur Deklaration einer Roboterposition, da diese fest in der Roboterbeschreibung definiert ist, welche von der spezifischen Konfigurationsdatei geladen wird. Dies impliziert die Notwendigkeit einer Modifikation, indem die geforderten Positionen in Form von Variablen sukzessiv innerhalb der Instanzen einer Konfigurationsdatei bis zur letzten Instanz, der Roboterbeschreibung, kommuniziert werden. +Die \emph{move\_group} Schnittstelle bietet keine Möglichkeit zur Deklaration einer Roboterposition, da diese fest in der Roboterbeschreibung definiert ist, welche vom spezifischen Konfigurationspaket geladen wird. Dies impliziert die Notwendigkeit einer Modifikation, indem die geforderten Positionen in Form von Variablen sukzessiv innerhalb der Instanzen eines Konfigurationspakets bis zur letzten Instanz, der zugrundeliegenden Roboterbeschreibung, kommuniziert werden. \section{Präparation des Fallbeispiels} -Die Kalkulation valider Positionen für robotische Systeme erfordert die roboterzentrierte Inspektion des Arbeitsraums und eine Aufgabenbeschreibung, welche für $i \in \N_{>0}$ Endsysteme mindestens $i$ Operationsketten aufweist. Die diesbezüglich vorzunehmende Arbeitsraumanalyse und dessen Inversion ist aufgabenunabhängig, erfolgt daher a priori und kann auf alle Aufgabenbeschreibung angewendet werden, die vom Ausgangssystem der Analyse, wie beispielsweise dem \emph{Panda} Roboter der Franka Emika GmbH, operiert werden sollen. Die Aufgabenbeschreibung kann zum Ermittlungszeitpunkt vorgenommen werden oder schon persistiert vorliegen. +Die Kalkulation valider Positionen für robotische Systeme erfordert die roboterzentrierte Inspektion des Arbeitsraums und eine Aufgabenbeschreibung, welche für $i \in \N_{>0}$ Endsysteme mindestens $i$ Teilketten einer Operationskette aufweist. Die diesbezüglich vorzunehmende Arbeitsraumanalyse und dessen Inversion ist aufgabenunabhängig, erfolgt daher im Vorfeld und kann auf alle Aufgabenbeschreibung angewendet werden, die vom Referenzsystem der Analyse, wie beispielsweise dem \emph{Panda} Roboter der Franka Emika GmbH, operiert werden sollen. Die Aufgabenbeschreibung kann zum Ermittlungszeitpunkt vorgenommen werden oder schon persistiert vorliegen. \subsection{Aufgabenkonstruktion} -Die Aufgabenbeschreibung in Form einer Operationskette erfolgt über interaktive Marker, die jeweils die Abstell- beziehungsweise Greifposition eines Primitives darstellen. Jede dieser Positionen erfordert ein zusätzliches Kollisionsobjekt als Operationsoberfläche \emph{Support\_Surface}, welche dem robotischen System über spezifische Nachrichten kommuniziert wird und ohne dessen eine Exekution nicht erfolgt. Dieser redundante Aufwand wird im Algorithmus berücksichtigt und ist implizit durch die Position und Dimension des Kettenglieds definiert. Demzufolge ist beispielsweise eine Differenzierung der zu erzeugenden Kollisionsobjekte, durch Platzierung zusätzlicher Abstelltische, kein Aspekt der Aufgabenbeschreibung. Ausgangspunkt einer Operationskette und dessen Teilketten ist der Startknoten, welcher durch seine Identität $id=0$ und der Farbe gekennzeichnet ist. Es ist stets möglich, einen weiteren Knoten zu generieren, der als weiteres Kettenglied farblich und schriftlich gekennzeichnet ist. Die Schnittoption im Menü des Startknotens dupliziert diesen und ist ab einer Operationskette beziehungsweise Teilkette der Länge zwei möglich. Eine valide Aufgabenbeschreibung ist nur formulierbar und wird persistiert, wenn mindestens zwei Teilketten existieren die jeweils mindestens zwei Glieder enthalten, da dies die Notwendigkeit zweier robotischer Systeme und das Vorhandensein einer Greif und Abstellposition impliziert. Die Wiederherstellung des Ausgangszustands ist ebenfalls durch einen zusätzlichen Menüpunkt möglich, dies eliminiert alle Glieder bis auf den Startknoten. Anlog dupliziert die Kooperationsoption das jeweils letzte Glied der Operationskette beziehungsweise Teilkette und visualisiert diese Schnittmenge ebenfalls schriftlich und farblich. Dies impliziert, dass eine Operationskette aus Schnitt- und Kooperationskomponenten bestehen kann, was für deren Anwendung auf $n \in \N_{>2}$ robotischen Systemen relevant ist. - +Die Aufgabenbeschreibung in Form einer Operationskette erfolgt über interaktive Marker, die jeweils die Abstell- beziehungsweise Greifposition eines Primitives darstellen. Jede dieser Positionen erfordert ein zusätzliches Kollisionsobjekt als Operationsoberfläche \emph{Support\_Surface}, welche dem robotischen System über spezifische Nachrichten kommuniziert wird und ohne dessen eine Exekution nicht erfolgt. Dieser redundante Aufwand wird im Algorithmus berücksichtigt und ist implizit durch die Position und Dimension des Primitives definiert. \autoref{fig:OPkette} illustriert eine Szene aus Kollisionsobjekten anhand des Beispiels in \autoref{fig:OK}. Die Aufgabe in Form einer Operationskette wird in \autoref{fig:OK1} mittels interaktiver Marker modelliert. \autoref{fig:OK2} zeigt die vollständig genierte Szene aus dem Primitiv und den Operationsoberflächen, auf denen es während des Vorgangs beispielsweise abgestellt oder von denen es gegriffen werden kann. \begin{figure}[h!] \ffigbox[\FBwidth]% {\begin{subfloatrow}[2] + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.47\textwidth, height = 6cm]{images/OK.png}}}% + {\caption{Operationskette mit interaktiven Markern}\label{fig:OK1}}% + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.47\textwidth, height = 6cm]{images/PS.png}}}% + {\caption{Generierte Primitive und Operationsoberflächen als Kollisionsobjekte} \label{fig:OK2}} + \end{subfloatrow}} + {\caption{Aufbau einer Szene mit Primitiven und Operationsoberflächen aus einer Aufgabenbeschreibung.} +\label{fig:OPkette}}% +\end{figure} + + +Demzufolge ist beispielsweise eine Differenzierung der zu erzeugenden Kollisionsobjekte, durch Platzierung zusätzlicher Abstelltische, kein Aspekt der Aufgabenbeschreibung. Ausgangspunkt einer Operationskette und dessen Teilketten ist der Startglied, welcher durch seine Identität $id=0$ und der Farbe gekennzeichnet ist. Es ist stets möglich, ein weiteres Glied zu generieren, welches farblich und schriftlich gekennzeichnet ist. Dieser Vorgang wird in \autoref{fig:add} visualisiert. + +\begin{figure}[h!] +\ffigbox[\FBwidth]% + {\begin{subfloatrow} \ffigbox[\FBwidth]% {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/task1.png}}}% - {\caption{Definition eines neuen Kettenglieds}\label{fig:bild1}}% + {\caption{Visualisierung der Option im Menü}} + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/nach_join.png}}}% + {\caption{Realisierung durch Generierung des blauen Glieds}} + \end{subfloatrow}} + {\caption{Generierung eines Kettenglieds} +\label{fig:add}}% +\end{figure} + +Die Schnittoption im Menü des Startknotens dupliziert diesen und ist ab einer Operationskette beziehungsweise Teilkette der Länge zwei möglich. Die Realisierung dieser Option wird in \autoref{fig:schnitt} veranschaulicht. Eine valide Aufgabenbeschreibung ist nur formulierbar und wird persistiert, wenn mindestens zwei Teilketten existieren die jeweils mindestens zwei Glieder enthalten, da dies die Notwendigkeit zweier robotischer Systeme und das Vorhandensein einer Greif und Abstellposition impliziert. Die Wiederherstellung des Ausgangszustands ist ebenfalls durch einen zusätzlichen Menüpunkt möglich, dies eliminiert alle Glieder bis auf den Startknoten. + +\begin{figure}[h!] +\ffigbox[\FBwidth]% + {\begin{subfloatrow} + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/schnitt1.png}}}% + {\caption{Visualisierung der Schnittoption im Menü}} \ffigbox[\FBwidth]% - {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/task2.png}}}% - {\caption{Option zur Erstellung von Kooperationsgliedern} \label{fig:bild2}} - \end{subfloatrow} - \begin{subfloatrow}[2] + {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/schnitt2.png}}}% + {\caption{Realisierung durch ein zusätzliches Startglied}} + \end{subfloatrow}} + {\caption{Schnitt der Operationskette in Teilketten} +\label{fig:schnitt}}% +\end{figure} + +Anlog modifiziert die Kooperationsoption das jeweils letzte Glied der Operationskette beziehungsweise Teilkette und visualisiert diese Schnittmenge ebenfalls schriftlich und farblich, was \autoref{fig:koop} zeigt. Dies impliziert, dass eine Operationskette aus Schnitt- und Kooperationskomponenten bestehen kann, was für deren Anwendung auf $n \in \N_{>2}$ robotischen Systemen relevant ist. + +\begin{figure}[h!] +\ffigbox[\FBwidth]% + {\begin{subfloatrow} \ffigbox[\FBwidth]% - {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/task3.png}}}% - {\caption{Definition eines neuen Kettenglieds}\label{fig:bild3}}% + {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/koop1.png}}}% + {\caption{Visualisierung der Kooperationsoption im Menü}} \ffigbox[\FBwidth]% - {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/task4.png}}}% - {\caption{Option zur Erstellung von Kooperationsgliedern} \label{fig:bild4}} + {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/koop2.png}}}% + {\caption{Modifikation des letzten Kettenglieds als Startglied einer weiteren Teilkette}} \end{subfloatrow}} - {\caption{ Darstellung der Mengen $\protect P_{total}$ und $\protect OR_{total}$. Ein roter Marker repräsentiert den Vektoren, den der Endeffektor einnimmt. Der grüne Pfeil zeigt in die Richtung, in welche die Finger des Endeffektors ausgerichtet sind.} -\label{fig:fafesf}}% + {\caption{Realisierung eines kooperativen Glieds als Schnittmenge der ersten und zweiten Teilkette} +\label{fig:koop}}% \end{figure} +Dieser Algorithmus erzeugt Aufgabenbeschreibungen, die einem Objekt beziehungsweise Primitiv alle Positionen zuordnet, an denen es vom robotischen System beispielsweise abgestellt oder gegriffen werden soll. Eine Aufgabenbeschreibung analog zur in \autoref{fig:hallo} modellierten Aufgabe ist in \autoref{lst:schnitt} beispielhaft dokumentiert. Der Schnitt ist durch das zweite Objekt dargestellt, welches von einem zusätzlichen robotischem System bearbeitet werden soll. + +\begin{lstlisting}[language=JSON,firstnumber=1, float, caption={Aufgabenbeschreibung einer geteilten Aufgabe},captionpos=t, label={lst:schnitt}] +Name_der_Aufgabe: Schnitt +Aufgabenbeschreibung: + objekt0: + - 0.000 -0.690 0.150 + - -0.550 -0.094 0.165 + objekt1: + - 0.073 0.479 0.176 + - -0.625 0.957 0.173 + - 0.000 1.510 0.169 +\end{lstlisting} + +Analog erfordert eine kooperative Aufgabenbeschreibung keine zusätzlichen Primitive, da diese beispielsweise an einer Stelle zwischen den robotisch Systemen übergeben werden. Diese Übergabeposition ist die Schnittmenge der definierten Teilketten und wird als solche in \autoref{lst:koop} durch ihre Wiederholung visualisiert. + +\begin{lstlisting}[language=JSON,firstnumber=1, float, caption={Aufgabenbeschreibung einer zusammenhängenden Aufgabe},captionpos=t, label={lst:koop}] +Name_der_Aufgabe: Kooperation +Aufgabenbeschreibung: + objekt0: + - 0.000 -0.690 0.150 + - -0.550 -0.094 0.165 + - 0.073 0.479 0.176 + - 0.073 0.479 0.176 + - -0.625 0.957 0.173 + - 0.000 1.510 0.169 +\end{lstlisting} + \section{Positionsanalyse} Der Algorithmus zur Ermittlung von Positionen robotischer Systeme bezüglich einer Aufgabenbeschreibungen erfordert diese und zusätzlich den invertierten Arbeitsraum als Parameter. Alle Resultate sind Transparent über das graphische Programm RViz einsehbar, dabei kann der Umfang der visualisierten Informationen über Checkboxen reguliert werden. Die Metrik $D_{Reach}(Voxel)(TK)$ aus \autoref{eq:29}, welche die differenzierte Voxelisierung kalkuliert, visualisiert die Wertigkeit eines Voxels. Analog zur Menge $P_{Base}$ jedes Kettenglieds und deren Differenzierung in die jeweilige Operationskette beziehungsweise Teilkette ist zusätzlich die Projektion dieser Werte auf die XY Ebene des kartesischen Koordinatensystems eine mögliche visuelle Modalität. Der maximale Index je Teilkette und Voxel ist ebenfalls einsehbar und wird mit zusätzlichen Informationen, wie dem Namen der Aufgabenbeschreibung, persistiert. diff --git a/sections/grundlagen.tex b/sections/grundlagen.tex index 488aa62cd607d95343b955e243db4ccce679c045..502462b047a168523f579421da021d73fcbbc972 100644 --- a/sections/grundlagen.tex +++ b/sections/grundlagen.tex @@ -1,24 +1,24 @@ \chapter{Grundlagen}\label{ch:basics} -Wesentliche Konzepte dieser Bachelorarbeit fundieren auf verschiedenen wissenschaftlichen Publikationen, welche Aspekte der Zielsetzung aufgreifen und näher erläutern. Dabei werden beispielsweise Begriffe mehrdeutig verwendet, weil keine offizielle Definition existiert oder sich deren Bedeutungen überschneiden. Ebenfalls basieren die Ansätze auf mathematischen Konzepten, die zwar genannt aber nicht ausreichend erläutert werden. Zum näheren und besseren Verständnis der Ideen und Algorithmen, die Bestandteil dieser wissenschaftlichen Arbeit sind, werden diese zugrundeliegenden Strukturen zusätzlich erklärt und gegebenenfalls für dieses Dokument definiert. Aus der Zielsetzung, die in der Einleitung formuliert ist, ergibt sich die Anforderungsanalyse als finale Komponente dieses Kapitels. +Wesentliche Konzepte dieser Bachelorarbeit fundieren auf verschiedenen wissenschaftlichen Publikationen, welche Aspekte der Zielsetzung aufgreifen und näher erläutern. Dabei werden Begriffe mehrdeutig verwendet, weil keine offizielle Definition existiert oder sich deren Bedeutungen überschneiden. Ebenfalls basieren die Ansätze auf mathematischen Konzepten, die zwar genannt aber nicht ausreichend erläutert werden. Zum näheren und besseren Verständnis der Ideen und Algorithmen, die Bestandteil dieser wissenschaftlichen Arbeit sind, werden diese zugrundeliegenden Strukturen zusätzlich erklärt und gegebenenfalls für dieses Dokument definiert. Aus der Zielsetzung, die in \autoref{sec:Zielsetzung} formuliert ist, ergibt sich die Anforderungsanalyse als finale Komponente dieses Kapitels. \section{Räumliche Partitionierung} \label{sec:partitionierung} -Die räumliche Partitionierung beschreibt das Unterteilen eines kartesischen Raumes in kleinere, disjunkte Teilräume und deren Indexierung und Speicherung in entsprechenden Datenstrukturen. Die Implementierung einer solcher Datenstruktur ist oft eine erweiterte Baumstruktur mit speziellen Eigenschaften, die dessen Einsatz im 3 dimensionalen Raum begünstigen \cite{Hornung2013}. Beispielsweise sind solche Bäume aufgrund dessen Kompaktheit für die Aufbewahrung großer Datenmengen geeignet oder ermöglichen eine schnelle Suche unter dessen Blättern durch ihre Implementierung. In der Literatur wird die Unterteilung eines quadratischen Raumes in Volumen fester Größe \emph{Voxelisierung} genannt \cite{Makhal2018} \cite{Zacharias2007} \cite{Porges2015}. Diese Volumen beziehungsweise \emph{Voxel} definieren disjunkte Teilräume des kartesischen Raums. +Die räumliche Partitionierung beschreibt das Unterteilen eines kartesischen Raumes in kleinere, disjunkte Teilräume und deren Indexierung in entsprechenden Datenstrukturen. Die Implementierung einer solcher Datenstruktur ist oft eine erweiterte Baumstruktur mit speziellen Eigenschaften, die dessen Einsatz im 3 dimensionalen Raum begünstigen \cite{Hornung2013}. Beispielsweise sind solche Bäume aufgrund dessen Kompaktheit für die Aufbewahrung großer Datenmengen geeignet oder ermöglichen eine schnelle Suche unter dessen Blättern durch ihre Implementierung. In der Literatur wird die Unterteilung eines quadratischen Raumes in Volumen fester Größe \emph{Voxelisierung} genannt \cite{Makhal2018} \cite{Zacharias2007} \cite{Porges2015}. Diese Volumen beziehungsweise \emph{Voxel} definieren disjunkte Teilräume des kartesischen Raums. \section{Diskretisierung eines Objektes} \label{sec:diskretisierung} Die Diskretisierung ist bekannt als ein Prozess der Zerlegung einer kontinuierliche Oberfläche durch Abtastung in ihre diskreten Teilbereiche oder Punkte, welche im Kontext dieser Arbeit durch Vektoren beschrieben sind. Anwendung findet dieses Verfahren Beispielsweise im Gebiet der Netzwerktechnologie, in der ein analoges Signal durch räumliche und zeitliche Diskretisierung in ein digitales Signal überführt wird. Angewendet auf 3-dimensionale Objekte entsteht durch Diskretisierung ein Gitter aus Vektoren, welche das zugrundeliegende Objekt approximieren \cite{Porges2015}. \section{Robotische Systeme} -Robotische Systeme setzen sich aus einer Menge an Festkörpern und deren Verknüpfungen durch verschiedene Gelenktypen zusammen. Ein solches System spannt eine Baumstruktur auf, dessen Wurzel durch eine fixe Basis definiert ist. Ein solcher kinematischer Baum ist verzweigt, sobald ein Festkörper Verknüpfungen zu mehreren Festkörpern aufweist. Solche kinematischen Strukturen können auch als verzweigte beziehungsweise unverzweigte kinematische Kette denotiert werden. Bildet der Baum keinen Kreis, so ist er eine offene kinematische Kette beziehungsweise ein offenes robotisches System, dessen letztes Glied als Endeffektor deklariert ist, während der erste Festkörper die Basis des Roboters darstellt \cite[46ff.]{Siciliano2016}. Roboterarme sind Beispiele für offene robotische Systeme beziehungsweise offene kinematischer Ketten und Bezugspunkt dieser wissenschaftlichen Arbeit. Nähere Informationen über die Kopplung spezifischer Festkörper werden im Kontext dieser Arbeit in der zugehörigen URDF \footnote{\url{http://wiki.ros.org/urdf}} beziehungsweise XACRO \footnote{\url{http://wiki.ros.org/xacro}} Datei des Roboters dokumentiert. Innerhalb dieser Dateien können zusätzliche Informationen in Form von \emph{tags}, beispielsweise Limitierungen bezüglicher des Bewegungsumfangs eines Festkörpers, spezifizieren werden. \par +Robotische Systeme setzen sich aus einer Menge an Festkörpern und deren Verknüpfungen durch verschiedene Gelenktypen zusammen. Ein solches System spannt eine Baumstruktur auf, dessen Wurzel durch eine fixe Basis definiert ist. Ein solcher kinematischer Baum ist verzweigt, sobald ein Festkörper Verknüpfungen zu mehr als einem weiteren Festkörper aufweist. Solche kinematischen Strukturen werden als verzweigte beziehungsweise unverzweigte kinematische Kette denotiert. Bildet der Baum keinen Kreis, so ist er eine offene kinematische Kette beziehungsweise ein offenes robotisches System, dessen letztes Glied als Endeffektor deklariert ist, während der erste Festkörper die Basis des Roboters darstellt \cite[46ff.]{Siciliano2016}. Roboterarme sind Beispiele für offene robotische Systeme beziehungsweise offene kinematischer Ketten und Bezugspunkt dieser wissenschaftlichen Arbeit. Nähere Informationen über die Kopplung spezifischer Festkörper werden im Kontext dieser Arbeit in der zugehörigen URDF \footnote{\url{http://wiki.ros.org/urdf}} beziehungsweise XACRO \footnote{\url{http://wiki.ros.org/xacro}} Datei des Roboters dokumentiert. Innerhalb dieser Dateien können zusätzliche Informationen in Form von \emph{tags}, beispielsweise Limitierungen bezüglich des Bewegungsumfangs eines Festkörpers, spezifiziert werden. \par Ein Roboterarm kann anhand seiner Komponenten durch das Inkludieren einzelner URDF Dateien modelliert werden. Neben der Möglichkeit, ein robotisches System eigens zu konstruieren, sind fertige Systeme öffentlich \footnote{\url{http://wiki.ros.org/urdf/Examples}} zugänglich. So ist es beispielsweise auch die Roboterbeschreibung des Referenzsystems dieser wissenschaftlichen Arbeit, des Roboterarms \emph{Panda} der Franka Emika GmbH \footnote{\url{http://wiki.ros.org/franka_ros}}. \section{Kinematische Grundlagen} Nachdem bereits die Klassifizierung eines robotischen Systems anhand seiner Baumstruktur eruiert wurde, werden in diesem Abschnitt weitere kinematischen Aspekte näher erläutert. Grundlegende Methodiken dieser wissenschaftlichen Arbeit fundieren auf Konzepten der Kinematik, welche als Teilbereich der Physik die Bewegung von Festkörpern in robotischen Systemen, abstrahierend von den daraus resultierenden Kräften und Momenten, umfasst \cite[9f.]{Siciliano2016}. Ein wesentlicher Aspekt ist hierbei die Repräsentation der Position und Orientierung von Körpern im 3-dimensionalen Raum und deren Relation zueinander, sowie die Beschreibung der Geometrie robotischer Mechanismen. \subsection{Pose, Position und Orientierung} -Die Kombination aus Position und Orientierung eines Festkörpers relativ zu einem Frame definiert eine \emph{Pose}. Frames bestehen aus dessen Koordinatenursprung und orthogonalen Basisvektoren $(v_{0}, v_{1}, v_{2})$. Beispielsweise beinhaltet das bekannte Referenzkoordinatensystem $Frame_{0}$ den Ursprung $(0,0,0)^{T}$ und Basisvektoren $(0,0,1)^{T}, (0,1,0)^{T}, (1,0,0)^{T}$ auf deren Grundlage eine Pose $^{0}Pose$ relativ zu $Frame_{0}$ definiert und repräsentiert werden kann. Ein robotisches System ist durch die Definition der $n \in \N$ Frames für jedes seiner Festkörper in der URDF Datei konkretisiert \cite[9ff.]{Siciliano2016}. +Die Kombination aus Position und Orientierung eines Festkörpers relativ zu einem Frame definiert eine \emph{Pose}. Frames bestehen aus dessen Koordinatenursprung und orthogonalen Basisvektoren. Beispielsweise beinhaltet das bekannte Referenzkoordinatensystem $Frame_{0}$ den Ursprung $(0,0,0)^{T}$ und Basisvektoren $(0,0,1)^{T}, (0,1,0)^{T}, (1,0,0)^{T}$ auf deren Grundlage eine $^{0}Pose$ relativ zu $Frame_{0}$ definiert und repräsentiert werden kann. Ein robotisches System ist durch die Definition der $n \in \N$ Frames für jedes seiner Festkörper in der URDF Datei konkretisiert \cite[9ff.]{Siciliano2016}. \subsubsection{Position} Der Koordinatenursprung eines Frames $i$ relativ zum Frame $j$ wird durch den Vektor $^{j}p_{i} \in \R^{3}$ gekennzeichnet. @@ -45,7 +45,7 @@ Eine Orientierung wird durch Rotationen $R$ dargestellt, die auf einen Körper a -Die Menge aller Rotations-Matrizen $R \in \R^{3 \times 3}$ bilden mit der Matrixmultiplikation die nicht kommutative Gruppe $SO(3) \subset \R^{3\times3}$ \cite[17f.]{Siciliano2016}, dessen Gruppenaxiome in \autoref{eq:SO} formuliert sind. Dies ist die spezielle orthogonale Gruppe $SO(3)$, wobei das Einselement die Matrix 1 ist, dessen diagonale mit eins belegt ist, während alle anderen Werte null sind. +Die Menge aller Rotations-Matrizen $R \in \R^{3 \times 3}$ bilden mit der Matrixmultiplikation die nicht kommutative Gruppe $SO(3) \subset \R^{3\times3}$ \cite[17f.]{Siciliano2016}, dessen Gruppenaxiome in \autoref{eq:SO} formuliert sind. Dies ist die spezielle orthogonale Gruppe $SO(3)$, wobei das Einselement die Matrix 1 ist, deren diagonale mit eins belegt ist, während alle anderen Werte null sind. \begin{equation} \label{eq:SO} \begin{split} @@ -91,7 +91,7 @@ T &= \begin{pmatrix} \end{pmatrix} \end{equation} -Transformationsmatrizen $T$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SE(3)$, dessen Gruppenaxiome in \autoref{eq:SE} beschrieben sind, hierbei gilt analog zu \autoref{eq:SO} die 1 Matrix $\in \R^{4\times4}$ als das neutrale Element der Gruppe \cite[17f.]{Siciliano2016}. +Die Transformations-Matrix $T$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SE(3)$, dessen Gruppenaxiome in \autoref{eq:SE} beschrieben sind, hierbei gilt analog zu \autoref{eq:SO} die 1 Matrix $\in \R^{4\times4}$ als das neutrale Element der Gruppe \cite[17f.]{Siciliano2016}. \begin{equation}\label{eq:SE} \begin{split} @@ -128,7 +128,7 @@ Für die kinematische Kette eines robotischen Systems bestehenden aus $n \in \N$ \section{Arbeitsbereich eines robotischen Systems} -Der Arbeitsbereich \emph{Workspace}, beschreibt die Kapazitäten eins robotische Systems bezüglich der Interaktion mit dessen Umfeld. \autoref{fig:panda} aus dem Manual \cite{frankaHB} des Referenzroboters 'Panda' zeigt dessen Arbeitsbereich schematisch aus verschiedenen Perspektiven. Dabei erfolgt keine detaillierte Charakterisierung eines Bereiches, denn Eigenkollisionen des Roboters werden beispielsweise nicht erfasst beziehungsweise nicht gekennzeichnet. In dieser wissenschaftlichen Arbeit ist daher die Ermittlung spezieller Datenstrukturen erforderlich, um den Arbeitsbereich des Referenzroboters differenziert zu inspizieren. Zacharias et al. \cite{Zacharias2007} \cite{Zacharias2009} definieren hierzu 'reachability maps' und 'capability maps', welche die Erreichbarkeit der Vektoren $v$ im Umfeld des Roboters durch den Endeffektor klassifizieren. +Der Arbeitsbereich \emph{Workspace}, beschreibt die Kapazitäten eins robotische Systems bezüglich der Interaktion mit dessen Umfeld. \autoref{fig:panda} aus dem Manual \cite{frankaHB} des Referenzroboters 'Panda' zeigt dessen Arbeitsbereich schematisch aus verschiedenen Perspektiven. Dabei erfolgt keine detaillierte Charakterisierung eines Bereiches, denn Eigenkollisionen des Roboters werden beispielsweise nicht erfasst. In dieser wissenschaftlichen Arbeit ist daher die Ermittlung spezieller Datenstrukturen erforderlich, um den Arbeitsbereich des Referenzroboters differenziert zu inspizieren. Zacharias et al. \cite{Zacharias2007} \cite{Zacharias2009} definieren hierzu \emph{reachability maps} und \emph{capability maps}, welche die Erreichbarkeit der Vektoren $v$ im Umfeld des Roboters durch den Endeffektor klassifizieren. \ffigbox[\FBwidth]% {\begin{subfloatrow}% @@ -142,16 +142,16 @@ Der Arbeitsbereich \emph{Workspace}, beschreibt die Kapazitäten eins robotische {\caption{Illustration des Arbeitsraums eines Panda Roboters der Franka Emika GmbH aus unterschiedlichen Perspektiven. Alle Angaben sind in Millimeter bemessen.}\label{fig:panda}}% \subsection{reachability map} -Die reachability map ist eine Datenstruktur, welche die Erreichbarkeit eines Vektors $v$ anhand aller Orientierungen charakterisiert, die der Endeffektor einnehmen kann. Sie enthält eine Menge aus Tupeln, welche die Pose des Endeffektors sowie der Information bezüglich deren Erreichbarkeit in Form eines Wahrheitswertes spezifiziert. Diese Informationen können zusätzlich durch die Integration einer Metrik genutzt werden, um beispielsweise den Arbeitsbereich differenziert 3 dimensional Darzustellen, oder um mit den Posen weitere Berechnungen zu führen \cite{Zacharias2009}. Aufgrund des Aufbaus einer reachability map, eignet sich diese als Grundlage für spätere Verfahren und wird in dieser wissenschaftlichen Arbeit genutzt. +Die reachability map ist eine Datenstruktur, welche die Erreichbarkeit eines Vektors $v$ anhand aller Orientierungen charakterisiert, die der Endeffektor einnehmen kann. Sie enthält eine Menge aus Tupeln, welche die Posen des Endeffektors sowie der Information bezüglich deren Erreichbarkeit in Form eines Wahrheitswertes spezifiziert. Diese Informationen können zusätzlich durch die Integration einer Metrik genutzt werden, um beispielsweise den Arbeitsbereich 3 dimensional darzustellen, oder mit den Posen weitere Berechnungen durchzuführen \cite{Zacharias2009}. Aufgrund des Aufbaus einer reachability map, eignet sich diese als Grundlage für spätere Verfahren und wird in dieser wissenschaftlichen Arbeit genutzt. \subsection{capability map} -Capability maps sind Erweiterungen der reachability map, welche aufbauend auf den Inhalt einer reachability map weitere Metriken implementieren. Die Approximation der erfolgreich terminierten kinematischen Kalkulationen für einen Vektor $v$ durch Primitive, beispielsweise Kegeln oder Zylindern, ist der Grundlegende Ansatz dieser Datenstruktur. Demnach kann die Erreichbarkeit eines Vektors darin gemessen werden, welches Primitiv seine erfolgreichen Orientierungen approximiert. Diese Informationen können analog zur reachability map Visualisiert und persistiert werden \cite{Zacharias2007}. +Capability maps sind Erweiterungen der reachability map, welche aufbauend auf den Inhalt einer reachability map weitere Metriken implementieren. Die Approximation der erfolgreich terminierten kinematischen Kalkulationen für einen Vektor $v$ durch Primitive, beispielsweise Kegeln oder Zylindern, ist der grundlegende Ansatz dieser Datenstruktur. Demnach kann die Erreichbarkeit eines Vektors darin gemessen werden, welches Primitiv seine erfolgreichen Orientierungen approximiert. Diese Informationen können analog zur reachability map visualisiert und persistiert werden \cite{Zacharias2007}. \section{Das ROS Framework und MoveIt} -ROS \cite{Quigley} ist ein auf robotische Systeme spezialisiertes open-source Framework, mit dem Ziel, die Implementierung mit Robotern zu vereinheitlichen. Exekutierende Prozesse beziehungsweise software Module im ROS Kontext sind \emph{Nodes}. Diese Kommunizieren über spezifische Nachrichten, welche beispielsweise Listen, primitive Datentypen oder weitere Nachrichten enthalten können mit anderen Nodes. Dies erfolgt über das \emph{publisher-subscriber} Prinzip, wobei Nachrichten bezüglich eines Themas \emph{Topic} publiziert werden, welche von anderen Nodes durch das Abonnieren des Themas empfangen werden. ROS Pakete \emph{packages} realisieren die kooperatives Arbeiten, indem die Nodes größerer Projekte koordiniert werden können, so kann ein Paket beispielsweise die graphische Visualisierung eines Prozesses beinhalten, während ein anderes Paket andere Aspekte des Projekts, wie die Ausführung von Algorithmen, beinhalten. Grundsätzlich ist ein ROS package ein Verzeichnis, indem eine XML Datei die Abhängigkeiten zwischen enthaltenen Nodes und genutzten Bibliotheken dokumentiert. +ROS \cite{Quigley} ist ein auf robotische Systeme spezialisiertes open-source Framework, mit dem Ziel, Implementierungen bezüglich robotischer Systeme zu vereinheitlichen. Exekutierende Prozesse im ROS Kontext sind \emph{Nodes}. Diese Kommunizieren über spezifische Nachrichten, welche beispielsweise Listen, primitive Datentypen oder weitere Nachrichten enthalten können mit anderen Nodes. Dies erfolgt über das \emph{publisher-subscriber} Prinzip, wobei Nachrichten bezüglich eines Themas (\emph{Topic}) publiziert werden, welche von anderen Nodes durch das Abonnieren des Themas empfangen werden. ROS Pakete (\emph{packages}) realisieren kooperatives Arbeiten, indem die Nodes größerer Projekte koordiniert werden können, so kann ein Paket beispielsweise die graphische Visualisierung eines Prozesses beinhalten, während ein anderes Paket andere Aspekte des Projekts, wie die Ausführung von Algorithmen. Grundsätzlich ist ein ROS package ein Verzeichnis, in dem eine XML-Datei die Abhängigkeiten zwischen enthaltenen Nodes und genutzten Bibliotheken dokumentiert. \subsection{Visualisierung in ROS} -Während die textuelle Visualisierung primitiver Datentypen oder des Inhalts ROS spezifischer Nachrichten über die Kommandozeile möglich sind, ermöglicht das \emph{publisher-subscriber} Prinzip die Implementierung separater Prozesse, welche Informationen anhand des Abonnierens einer topic 3 dimensional repräsentieren. Ein Beispiel hierfür ist \emph{RViz} als fester Bestandteil von ROS. RViz ist durch die Integration eigener Module erweiterbar und ermöglicht die 3 dimensionale Visualisierung von Frames, robotischer Systeme oder weiteren Objekten in Form von \emph{Meshes} \cite{Quigley}. \autoref{fig:RViz} zeigt eine leere Szene in RViz und dessen grafischer Benutzeroberfläche, wobei das dargestellte Gitters auf der horizontalen XY Ebene, dessen Kanten jeweils einen Meter voneinander distanziert sind, zur Orientierung innerhalb der Szene dient. +Während die textuelle Visualisierung primitiver Datentypen oder des Inhalts spezifischer Nachrichten über die Kommandozeile möglich sind, ermöglicht das \emph{publisher-subscriber} Prinzip die Implementierung separater Prozesse, welche Informationen anhand des Abonnierens einer topic visuell repräsentieren. Ein Beispiel hierfür ist \emph{RViz} als fester Bestandteil von ROS. RViz ist durch die Integration eigener Module erweiterbar und ermöglicht die 3 dimensionale Visualisierung von Frames, robotischer Systeme oder weiteren Objekten in Form von \emph{Meshes} \cite{Quigley}. \autoref{fig:RViz} zeigt eine leere Szene in RViz und dessen grafischer Benutzeroberfläche, wobei das dargestellte Gitters auf der horizontalen XY Ebene, dessen Kanten jeweils einen Meter voneinander distanziert sind, zur Orientierung innerhalb der Szene dient. \begin{figure}[ht] \includegraphics[width = 7cm, height = 5cm]{images/RViz.png} @@ -160,10 +160,10 @@ Während die textuelle Visualisierung primitiver Datentypen oder des Inhalts ROS \end{figure} \subsubsection{Marker Elemente} -Primitive wie Würfel, Pfeile oder Sphären sind simple Marker Elemente, welche anhand deren Position, Orientierung, Farbe und Dimension definiert sind und in RViz durch das Abhören des zugrundeliegenden Themas visualisiert werden, um die Resultate der zugrundeliegenden Implementierung zu inspizieren beziehungsweise analysieren. +Primitive wie Würfel, Pfeile oder Sphären sind Inhalt simple Marker Nachrichten, welche anhand deren Position, Orientierung, Farbe und Dimension definiert sind und in RViz durch das Abhören des zugrundeliegenden Themas visualisiert werden, um die Resultate der zugrundeliegenden Implementierung zu inspizieren beziehungsweise zu analysieren. \subsubsection{Interaktive Marker Elemente} -Interaktive Marker Elemente erweitern die bereits präzisierten Marker um die Interaktionsmöglichkeit durch den Nutzer, wodurch Translationen und Rotationen auf beliebigen Achsen des Markers durch den Mauszeiger realisierbar sind. Zusätzlich kann jeder Marker ein eigenes Menü mit Untermenüs initialisieren, durch dessen Einträge zusätzliche anwendungsspezifische Algorithmen implementiert werden können. Diese Modifikationen werden durch zugrundeliegende visuelle Kontrollelemente des Markers und deren Kommunikation mit dem \emph{Interactive Marker Server} \cite{DavidGossow2011} realisiert. Die Visualisierung dieser Marker mit ihren Kontrollelementen in RViz zeigt \autoref{fig:IM1}, wobei die Translation und Rotation durch Interaktion mit den Pfeilen beziehungsweise Kreisbögen innerhalb der grafischen Benutzeroberfläche von RViz erfolgt. \autoref{fig:IM2} zeigt die Kommunikation zwischen dem RViz Prozess und dem interactive Marker Server. Dabei wird jede Interaktion mit einer Instanz des interaktiven Markers von RViz publiziert. Der Server reagiert auf diese Nachricht mit der aktualisierten Position oder Orientierung des Markers. Zusätzlich ist die Implementierung benutzerdefinierter Funktionen möglich, die als Reaktion auf eine Handlung in RViz vom Server ausgeführt werden sollen. +Interaktive Marker erweitern die bereits präzisierten Marker um die Interaktionsmöglichkeit durch den Nutzer, wodurch Translationen und Rotationen auf beliebigen Achsen des Markers durch den Mauszeiger realisierbar sind. Zusätzlich kann jeder Marker ein eigenes Menü mit Untermenüs initialisieren, durch dessen Einträge zusätzliche anwendungsspezifische Algorithmen implementiert werden können. Diese Modifikationen werden durch zugrundeliegende visuelle Kontrollelemente des Markers und deren Kommunikation mit dem \emph{Interactive Marker Server} \cite{DavidGossow2011} realisiert. Die Visualisierung dieser Marker mit ihren Kontrollelementen in RViz zeigt \autoref{fig:IM1}, wobei die Translation und Rotation durch Interaktion mit den Pfeilen beziehungsweise Kreisbögen innerhalb der grafischen Benutzeroberfläche von RViz erfolgt. \autoref{fig:IM2} zeigt die Kommunikation zwischen dem RViz Prozess und dem interactive Marker Server. Dabei wird jede Interaktion mit einer Instanz des interaktiven Markers von RViz publiziert. Der Server reagiert auf diese Nachricht mit der aktualisierten Position oder Orientierung des Markers. Zusätzlich ist die Implementierung benutzerdefinierter Funktionen möglich, die als Reaktion auf eine Handlung in RViz vom Server ausgeführt werden sollen. \begin{figure} \ffigbox[\FBwidth]% @@ -171,7 +171,7 @@ Interaktive Marker Elemente erweitern die bereits präzisierten Marker um die In \ffigbox[\FBwidth]% {\fbox{ \begin{tikzpicture} [ >=stealth'] - \node[rectangle, draw=black, thick, minimum height=3em, align=center] (IMS) {Interacte Marker Server}; + \node[rectangle, draw=black, thick, minimum height=3em, align=center] (IMS) {Interactive Marker Server}; \node[rectangle, draw=black, thick, minimum height=3em, align=center] (R) [below = 3.7cm]{RViz}; \path (IMS.south) -- (IMS.south east) coordinate[pos=0.092] (a1); \path (IMS.south) -- (IMS.south west) coordinate[pos=0.092] (a2); @@ -189,9 +189,10 @@ Interaktive Marker Elemente erweitern die bereits präzisierten Marker um die In {\caption{Darstellung eines interaktiven Markers mit visuellen Kontrollelementen und dessen Kommunikation mit der Server Instanz.}\label{fig:IM}}% \end{figure} -\subsection{kinematische Operationen in ROS} +\subsection{Kinematische Operationen in ROS} +\label{sec:Moveit} In dieser wissenschaftlichen Arbeit erfolgen Berechnungen bezüglich der Kinematik, Kollision und Bewegungsplanung ausschließlich mit der open source Software \emph{MoveIt!} \cite{Chitta2016}. Diese definiert den \emph{move\_group} Prozess als Zentrum der modularen Architektur, welcher durch Integration zusätzlicher Prozesse beziehungsweise deren \emph{topics} und Nachrichten beispielsweise die Exekution kinematischer Operationen erlaubt. Dieser zentrale Prozess wird in einem Konfigurationspaket initialisiert, welches zuvor innerhalb des \emph{MoveIt! Setup Assistant (MSA)} konstruiert wird. Dieser spezifiziert beispielsweise die SRDF \footnote{\url{http://wiki.ros.org/srdf}} des zugrundeliegenden robotischen Systems und enthält weitere Konfigurationen zu dessen Visualisierung und Simulation. \section{Anforderungen automatischer kollaborativer Multi-Roboter Arbeitsräume} \label{sec:anforderungen} -Marvel et al. adressieren die Skalierbarkeit, Synchronisierung der Roboter, Verteilung der spezifischen Aufgaben und Kollisionsvermeidung als grundlegende Aspekte der Planung eines Multi-Roboter Systems \cite{Marvel2018}. Diese Aspekte stehen in Wechselwirkung zueinander, denn die Kollisionsdetektion ist beispielsweise vereinfacht, wenn die Exekution der Aufgaben sequentiell erfolgt und daher nur ein Roboter zeitgleich Bewegungen ausführt, dies impliziert zugleich eine weniger komplexe Aufgabenverteilung. Erfolgen die Handlungen der Roboter synchron, so ist die Verteilung der der Aufgaben essenziell für eine erfolgreiche Terminierung und dessen Ausführungszeit und bedingt eine komplexere Kollisionsdetektion. Änderungen der Szenerie, Beispielsweise durch die Hinzunahme oder Abnahme eines Roboters, haben ebenfalls Auswirkungen auf die Ausführung beziehungsweise Kalkulationszeit, welche die Skalierbarkeit des Arbeitsraums konkretisiert. Diese Aspekte sind zusätzlich abhängig von deren Position in der Domäne, welche die Generierung automatischer Multi-Roboter Arbeitsräume ermöglicht und daher der Hauptaspekt dieser wissenschaftlichen Arbeit ist. Also eigentlich kann ich hier alles aus Evaluation rein kopieren, das klingt zumindest besser. +Marvel et al. \cite{Marvel2018} adressieren die Skalierbarkeit, Synchronisierung der Roboter, Verteilung der spezifischen Aufgaben und Kollisionsvermeidung als grundlegende Aspekte der Planung eines Multi-Roboter Systems. Diese Aspekte stehen in Wechselwirkung zueinander, denn die Kollisionsdetektion ist beispielsweise vereinfacht, wenn die Exekution der Aufgaben sequentiell erfolgt und daher nur ein Roboter zeitgleich Bewegungen ausführt, dies impliziert zugleich eine weniger komplexe Aufgabenverteilung. Erfolgen die Handlungen der Roboter synchron, so ist die Verteilung der der Aufgaben essenziell für eine erfolgreiche Terminierung und dessen Ausführungszeit und bedingt eine komplexere Kollisionsdetektion. Änderungen der Szenerie, Beispielsweise durch das Platzieren oder Entfernen eines Roboters, haben ebenfalls Auswirkungen auf die Ausführung beziehungsweise Kalkulationszeit, welche die Skalierbarkeit des Arbeitsraums konkretisiert. Diese Aspekte sind zusätzlich abhängig von deren Position in der Domäne, welche die Generierung automatischer Multi-Roboter Arbeitsräume ermöglicht und daher der Hauptaspekt dieser wissenschaftlichen Arbeit ist. Also eigentlich kann ich hier alles aus Evaluation rein kopieren, das klingt zumindest besser. diff --git a/sections/konzept.tex b/sections/konzept.tex index 098c137c52c73aae3538816cb6b6a249b117cff9..9f4994a257d086982a51030a80cf241dd6881b1f 100644 --- a/sections/konzept.tex +++ b/sections/konzept.tex @@ -185,11 +185,11 @@ Eine valide Aufgabenbeschreibung kann ebenfalls in YAML Dateien persistiert werd \begin{lstlisting}[language=JSON,firstnumber=1, float, caption={Struktur einer Aufgabenbeschreibung},captionpos=t, label={lst:3}] Name_der_Aufgabe: str Aufgabenbeschreibung: - Objekt : [str] % "x y z" + objekt : [str] % "x y z" \end{lstlisting} \subsection{Operationsketten} -Aufgaben, wie das sequentielle Greifen und Abstellen eines Objektes gehören zur Aufgabengruppe \emph{Pick and Place}, welche in dieser Arbeit hauptsächlich untersucht werden. Diese Aufgaben werden mittels der Positionen konkretisiert, an denen eine Operation erfolgt. Diese sukzessiv zu operierende Menge an Positionen bildet eine Operationskette $K$. Die Menge aller Aufgaben, die Operationsketten abbilden, unterliegen der Partitionierung von $K$. So kann eine Kette bestehend aus $k \in \N_{>1}$ Partitionen von $k$ Robotern unabhängig voneinander oder kooperativ operiert werden. \autoref{fig:OK} illustriert eine solche Operationskette mit $n = 5$ Kettengliedern. Das jeweils erste Glied einer Partition ist grün markiert, während Folgeglieder blau markiert sind. Jedes Glied ist aufsteigend nummeriert, wodurch die Reihenfolge impliziert wird, in der ein Objekt gegriffen beziehungsweise abgestellt werden soll. Die Färbung der Pfeile visualisiert den Roboter, der dieser Partition zugewiesen ist und diese ausführt. +Aufgaben, wie das sequentielle Greifen und Abstellen eines Objektes gehören zur Aufgabengruppe \emph{Pick and Place}, welche in dieser Arbeit hauptsächlich untersucht werden. Diese Aufgaben werden mittels der Positionen konkretisiert, an denen eine Operation erfolgt. Diese sukzessiv zu operierende Menge an Positionen bildet eine Operationskette $OK$. Die Menge aller Aufgaben, die Operationsketten abbilden, unterliegen der Partitionierung von $OK$. So kann eine Kette bestehend aus $k \in \N_{>1}$ Partitionen von $k$ Robotern unabhängig voneinander oder kooperativ operiert werden. \autoref{fig:OK} illustriert eine solche Operationskette mit $n = 5$ Kettengliedern. Das jeweils erste Glied einer Partition ist grün markiert, während Folgeglieder blau markiert sind. Jedes Glied ist aufsteigend nummeriert, wodurch die Reihenfolge impliziert wird, in der ein Objekt beziehungsweise gegriffen oder abgestellt werden soll. Die Färbung der Pfeile visualisiert den Roboter, der dieser Partition zugewiesen ist und diese ausführt. \begin{figure}[h!] \centering @@ -209,7 +209,7 @@ Aufgaben, wie das sequentielle Greifen und Abstellen eines Objektes gehören zur \end{figure} \subsubsection{Gespaltene Operationskette} -Gespaltene Operationsketten partitionieren $K$ in $i \in \N_{>0}$ disjunkte Teilketten $TK \subset K $, welche $i$ Roboter isoliert voneinander bearbeiten. +Gespaltene Operationsketten partitionieren $OK$ in $i \in \N_{>0}$ disjunkte Teilketten $TK \subset OK $, welche $i$ Roboter isoliert voneinander bearbeiten. Diese Aufgaben sind implizit durch die enthaltenen Teilketten im Positionsfeld der Aufgabenbeschreibung gegeben, indem alle enthaltenen Positionen disjunkt sind, das heißt es gibt keine Sequenz eines Objektes, die sich als Position eines anderen Objektes wiederholen. \autoref{fig:hallo} zeigt eine gespaltene Operationskette mit zwei Teilkette. Die grünen Kettenglieder markieren jeweils den Start, an dem sich ein Kollisionsobjekt befindet. Die Anordnung und Färbung der Pfeile sowie die Nummerierung impliziert, dass zwei robotische Systeme diese Aufgabe getrennt voneinander ausführen. \begin{figure}[h!] @@ -219,15 +219,17 @@ Diese Aufgaben sind implizit durch die enthaltenen Teilketten im Positionsfeld d \node[rectangle, draw=blue!60, fill=blue!5, thick, minimum size=3em, align=center] (aa) [above right= of a]{1}; \node[rectangle, draw=green!60, fill=green!5, thick, minimum size=3em, align=center] (aaa) [below right= of aa]{2}; \node[rectangle, draw=blue!60, fill=blue!5, thick, minimum size=3em, align=center] (aaaa) [above right= of aaa]{3}; + \node[rectangle, draw=blue!60, fill=blue!5, thick, minimum size=3em, align=center] (aaaaa) [above right= of aaa]{4}; \draw[->, draw=cyan!60] (a) -- (aa); \draw[->, draw=magenta!60] (aaa) -- (aaaa); + \draw[->, draw=magenta!60] (aaaa) -- (aaaaa); \end{tikzpicture} \caption{Zwei dimensionale Darstellung einer Operationskette bestehend aus disjunkten Teilketten} \label{fig:hallo} \end{figure} \subsubsection{Kooperative Operationskette} -Kooperative Ketten partitionieren $K$ in $i$ Teilketten $TK_{0}... TK_{i-1} \subset K $, deren Schnittmenge das jeweils letzte und erste Glied von $TK_{j}$ beziehungsweise $TK_{j+1}$, für $0 \leq j < i$, ist. Diese Einteilung impliziert, dass die Position innerhalb der Abstellnachricht des Vorgängerroboters ebenfalls Inhalt der Greifnachricht des Roboters $i$ ist. Diese Logik ist implizit aus der Sequenz eines Objekts im \autoref{lst:3} entnehmbar, indem eine Position wiederholt vorkommt. \autoref{fig:koop} Visualisiert das Kettenglied, welches zugleich End-, als auch Anfangsglied zweier Teilketten ist, farblich rot. Die Position ist demzufolge wiederholt, aufeinander folgend in der Aufgabenbeschreibung notiert. +Kooperative Ketten partitionieren $K$ in $i$ Teilketten $TK_{0}... TK_{i-1} \subset OK $, deren Schnittmenge das jeweils letzte und erste Glied von $TK_{j}$ beziehungsweise $TK_{j+1}$, für $0 \leq j < i$, ist. Diese Einteilung impliziert, dass die Position innerhalb der Abstellnachricht des Vorgängerroboters ebenfalls Inhalt der Greifnachricht des Roboters $i$ ist. Diese Logik ist implizit aus der Sequenz eines Objekts im \autoref{lst:3} entnehmbar, indem eine Position wiederholt vorkommt. \autoref{fig:koop} Visualisiert das Kettenglied, welches zugleich End-, als auch Anfangsglied zweier Teilketten ist, farblich rot. Die Position ist demzufolge wiederholt, aufeinander folgend in der Aufgabenbeschreibung notiert. \begin{figure}[h!] \centering @@ -258,6 +260,7 @@ Der in \autoref{sec:positioning} beschriebene Algorithmus zur Ermittlung der opt Der in \autoref{enumi:Intransparenz} beschriebene Aspekt bezieht sich auf die Vektoren $^{0}p_{Base} \in P_{Base}$, dessen Herkunft hinsichtlich der Aufgabenbeschreibung nicht ersichtlich ist. Daraus ist abzuleiten, dass die Partitionierung der Operationskette keinen Einfluss auf den Algorithmus hat, wodurch dessen Eignung für die Anwendung bezüglich mehrerer robotischer Systeme entfällt. Daraus ergibt sich implizit \autoref{enumi:Metrik}, denn die Metrik $D_{Voxel}$ aus \autoref{eq:22} bewertet einen Voxel, ohne dessen Inhalt bezüglich der Aufgabenbeschreibung zu gewichten. So werden beispielsweise Voxel mit hoher Kardinalität besser für die Aufgabe gewertet, obwohl dessen Inhalt bezüglich spezifischer Aufgabenpositionen mangelhaft ist. Basierend auf diesen Beobachtungen ist eine abstrahierende Betrachtung hinsichtlich der Kettenstruktur innerhalb der Aufgabenbeschreibung zielführender. \subsection{differenzierte Voxelisierung} +\label{sec:diffVoxel} Die beschriebenen Nachteile in \autoref{enumi:Intransparenz} und \autoref{enumi:Metrik} zeigen, dass der Algorithmus aus \autoref{sec:positioning} nicht auf mehrere robotische Systeme anwendbar ist. Diese Erkenntnis erfordert die Implementierung eines optimierten Ansatzes der Voxelisierung, indem die Operationsketten bezüglich einer Aufgabenbeschreibung in den Prozess integriert werden. Während der differenzierten Voxelisierung wird jede Teilkette $TK \subset OK$ einzeln in der \autoref{eq:28} betrachtet. Diese Betrachtung hat folgende Vorteile: @@ -269,7 +272,7 @@ Diese Betrachtung hat folgende Vorteile: Durch die Dokumentation der zugrundeliegenden Multiplikation jedes Kettenglieds einer Teilkette $^{0}k \in TK$, dessen Resultat eine Basisposition $^{0}p_{Base} \in P_{Base}$ ist, können durch eine Iteration ermittelt werden, welches Voxel Basisposition aller Kettenglieder einer Teilkette enthält. Dieser implementierte Filter gleicht der Definition einer Schnittmenge aus allen Basisposition pro Kettenglied einer Teilkette. Die Division des arithmetischen Mittels aus \autoref{eq:21}, angewendet auf diese gefilterten Voxel, mit der Kardinalität der Teilkette ergeben die Bewertung eines Voxels bezüglich der Teilkette. Diese differenzierte Betrachtung verhindert, dass Kettenglieder anderer Teilketten den Wert eines Voxels beeinflussen. \section{Platzierung der robotischen Systeme} -Die Platzierung der robotischen Systeme erfolgt innerhalb der gewählten Domäne. Diese ist beispielsweise die Oberfläche eines oder mehrerer Tische, wie es im Ceti der Fall ist. Diese Oberfläche wird durch einen Bereich auf der XY Ebene imitiert, dessen Dimensionen angepasst werden können. Alle Voxel der Schnittmenge einer Teilkette werden dahingehend inspiziert, ob deren Basispositionen die gewählte Domäne schneiden. Anschließend erfolgt die Wahl des Voxels mit der maximalen Bewertung und die Basisposition wird abschließend festgelegt. Dieser Vorgang definiert die Zuteilung robotischer Systeme auf die Teilketten einer Aufgabenbeschreibung und wird als YAML Datei persistiert. \autoref{lst:Goal} zeigt schematisch die Verteilung der robotischen Syteme auf die Kollisionsobjekte. Die \texttt{Roboter\_Anzahl} entspricht der Anzahl aller Teilketten und spezifiziert die Anzahl der robotischen Systeme. Die während der differenzierten Voxelisierung vergangene Zeit wird im entsprechenden Feld erfasst. Die Basispositionen aller Roboter werden im \texttt{Basispositionen} Feld dokumentiert. Alle zusätzlichen Felder sind aus der zugrundeliegenden inverse reachability map, beziehungsweise der Aufgabenbeschreibung portiert. +Die Platzierung der robotischen Systeme erfolgt innerhalb der gewählten Domäne. Diese ist beispielsweise die Oberfläche eines oder mehrerer Tische, wie es im Ceti der Fall ist. Diese Oberfläche wird durch einen Bereich auf der XY Ebene imitiert, dessen Dimensionen angepasst werden können. Alle Voxel der Schnittmenge einer Teilkette werden dahingehend inspiziert, ob deren Basispositionen die gewählte Domäne schneiden. Anschließend erfolgt die Wahl des Voxels mit der maximalen Bewertung und die Basisposition wird abschließend festgelegt. Dieser Vorgang definiert die Zuteilung robotischer Systeme auf die Teilketten einer Aufgabenbeschreibung und wird als YAML-Datei persistiert. \autoref{lst:Goal} zeigt schematisch die Verteilung der robotischen Syteme auf die Kollisionsobjekte. Die \texttt{Roboter\_Anzahl} entspricht der Anzahl aller Teilketten und spezifiziert die Anzahl der robotischen Systeme. Die während der differenzierten Voxelisierung vergangene Zeit wird im entsprechenden Feld erfasst. Die Basispositionen aller Roboter werden im \texttt{Basispositionen} Feld dokumentiert. Alle zusätzlichen Felder sind aus der zugrundeliegenden inverse reachability map, beziehungsweise der Aufgabenbeschreibung portiert. \begin{lstlisting}[language=JSON,firstnumber=1, caption={ Struktur der Positionsanalyse},captionpos=t, label={lst:Goal}] Referenzsystem: str % "$(Referenzsystem)" aus inverse reachability map diff --git a/sections/sota.tex b/sections/sota.tex index 572be708d508a35dece34b94211ee90e9a83f767..295de9f3abe5db7a56976aab2c7a607db4017272 100644 --- a/sections/sota.tex +++ b/sections/sota.tex @@ -1,5 +1,5 @@ \chapter{Erkenntnisse zur Platzierung robotischer Systeme} \label{ch:sota} -Den Anforderungen aus \autoref{sec:anforderungen} ist zu entnehmen, dass die Platzierung robotischer Systeme innerhalb einer Domäne ein fundamentaler Bestandteil zur automatischen Schaffung kollaborative Multi-Roboter Arbeitsräume ist. Die Einhaltung der physikalischen Beschränkungen bezüglich genutzter Roboter ist hierbei unerlässlich, um hinsichtlich ihrer Aufgabe und Position ein zufriedenstellendes Ergebnis zu erzielen. Einen Ansatz zur Erfassung dieser robotischer Grenzen konkretisieren Zacharias et al. \cite{Zacharias2007} und kombiniert diesen in folgenden Publikationen \cite{Zacharias2009} mit zusätzlichen Aspekten der Kinematik, um einen Algorithmus zu formulieren, welcher sukzessiv die Position eines Roboters hinsichtlich seiner Grenzen bestimmt. Dieses Verfahren ist in die Komponenten +Den Anforderungen aus \autoref{sec:anforderungen} ist zu entnehmen, dass die Platzierung robotischer Systeme innerhalb einer Domäne ein fundamentaler Bestandteil zur automatischen Schaffung kollaborative Multi-Roboter Arbeitsräume ist. Die Einhaltung der physikalischen Beschränkungen bezüglich genutzter Roboter ist hierbei unerlässlich, um hinsichtlich ihrer Aufgabe und Position ein zufriedenstellendes Ergebnis zu erzielen. Einen Ansatz zur Erfassung dieser robotischer Grenzen konkretisieren Zacharias et al. \cite{Zacharias2007} und kombiniert diesen in einer späteren Publikationen \cite{Zacharias2009} mit zusätzlichen Aspekten der Kinematik, um einen Algorithmus zu formulieren, welcher sukzessiv die Position eines Roboters hinsichtlich seiner Grenzen bestimmt. Dieses Verfahren ist in die Komponenten \emph{Arbeitsraumanalyse}, \emph{Arbeitsrauminvertierung} und \emph{Positionsanalyse} unterteilt, welche somit die Gliederung dieses Kapitels definieren, dessen Inhalt die Auseinandersetzung mit deren Methodiken ist. Die daraus gewonnenen Erkenntnisse werden in der konzeptuellen Ausarbeitung und Implementierung genutzt. \autoref{fig:4} zeigt die Reihenfolge der Komponenten im Algorithmus. \begin{figure}[h!] @@ -14,7 +14,7 @@ Den Anforderungen aus \autoref{sec:anforderungen} ist zu entnehmen, dass die Pla \end{figure} \section{Arbeitsraumanalyse} -Vahrenkamp et al. beschreiben in ihrer Publikation die Analyse des Arbeitsraums eines robotischen Systems als Ausgangspunkt zur Berechnung dessen optimaler Positionierung hinsichtlich einer zuvor definierten Aufgabe \cite{Vahrenkamp2013}. Dazu dokumentieren Zacharias et al. in ihrer wissenschaftlichen Arbeit einen Ansatz, dessen Inhalt es ist, durch wiederholtes Anwenden kinematischer Algorithmen das unmittelbare Umfeld des Roboters zu erfassen und dieses Anhand einer Metrik zu charakterisieren. \autoref{eq:7} definiert diese Berechnungen diskret durch die Funktion $f_{kin}$. +Vahrenkamp et al. \cite{Vahrenkamp2013} beschreiben in ihrer Publikation die Analyse des Arbeitsraums eines robotischen Systems als Ausgangspunkt zur Berechnung dessen optimaler Positionierung hinsichtlich einer zuvor definierten Aufgabe. Dazu dokumentieren Zacharias et al. in ihrer wissenschaftlichen Arbeit einen Ansatz, dessen Inhalt es ist, durch wiederholtes Anwenden kinematischer Algorithmen das unmittelbare Umfeld des Roboters zu erfassen und dieses Anhand einer Metrik zu charakterisieren. \autoref{eq:7} definiert diese Berechnungen diskret durch die Funktion $f_{kin}$. \begin{equation}\label{eq:7} \begin{split} @@ -45,7 +45,7 @@ RM:= \{(t , f_{kin}(t)) | t \in T \} {\fbox{\includegraphics[width=0.47\textwidth, height =5.5cm]{images/OR_total.png}}}% {\caption{Menge aller Orientierungen $\protect OR_{total}$} \label{fig:OR}} \end{subfloatrow}}% - {\caption{ Darstellung der Mengen $\protect P_{total}$ und $\protect OR_{total}$. Ein roter Marker repräsentiert den Vektoren, den der Endeffektor einnimmt. Der grüne Pfeil zeigt in die Richtung, in welche die Finger des Endeffektors ausgerichtet sind.} + {\caption{ Darstellung der Mengen $\protect P_{total}$ und $\protect OR_{total}$. Ein roter Marker repräsentiert den Vektoren, den der Endeffektor einnimmt. Ein grüner Pfeil zeigt in die Richtung des Endeffektors.} \label{fig:5}}% \end{figure} @@ -71,7 +71,7 @@ P_{total}:= \{(x, y, z)^{T} | q \in \R_{+}; x, y ,z \in [-q,q] \} \end{equation} \subsubsection{Positionen durch Zufallsverfahren} -Dieses Verfahren bestimmt die Verteilung der Vektoren $^{0}v$, welche keiner räumlichen oder anderweitigen Abhängigkeit, mit Ausnahme der festen Intervalle $[-q,q]$, unterliegen. Die Initialisierung erfolgt durch Angabe der $n \in \N_{>0}$ zu generierenden Vektoren, wodurch die Kardinalität von $^{0}P_{total}$ durch die Zahl $n$ bestimmt ist. +Dieses Verfahren bestimmt die Verteilung der Vektoren $^{0}v$, welche keiner räumlichen Abhängigkeit, mit Ausnahme der festen Intervalle $[-q,q]$, unterliegen. Die Komponenten eines Vektors werden demzufolge durch Zufallsverfahren generiert. Die Initialisierung erfolgt durch Angabe der $n \in \N_{>0}$ zu generierenden Vektoren, wodurch die Kardinalität von $^{0}P_{total}$ durch die Zahl $n$ bestimmt ist. \begin{equation} \label{eq:kadi}