Skip to content
Snippets Groups Projects
Commit 0e11e034 authored by Matteo Anedda's avatar Matteo Anedda
Browse files

bitte builde omg

parent 249f856a
No related branches found
No related tags found
No related merge requests found
Pipeline #11753 failed
File added
% This file was created with Citavi 6.10.0.0
@misc{.1172021,
year = {11/7/2021},
title = {urdf/Examples - ROS Wiki},
url = {http://wiki.ros.org/urdf/Examples},
urldate = {11/7/2021}
}
@article{Cheng2000,
abstract = {Three-dimensional joint rotations in human movement analysis have been mainly described by Euler/Cardan angles. Due to sequence dependence, each combination of three Euler/Cardan angles defines a single pattern of joint rotation. When the rotation pattern is unknown, it needs to be considered using a particular sequence of Euler/Cardan angles to represent joint rotations. In this paper a spherical rotation coordinate system is developed for describing three-dimensional joint rotations using a method of rotation involving two steps: a long axis rotation and a pure axial rotation. Two angles of the classical spherical coordinate system--longitude and latitude--are used to describe long axis rotations in this newly proposed coordinate system. The spherical rotation coordinate system uses a radial rotation angle to describe pure axial rotation of a limb segment whereas the classical spherical coordinate system uses a radial displacement to describe motion of a point. An application of the spherical rotation coordinate system is given to define three-dimensional rotations of the glenohumeral joint. A mathematical proof shows that the long axis rotation and axial rotation are sequence independent. Two numerical examples are investigated which demonstrate that the spherical rotation angles can be uniquely determined in both forward and inverse kinematics without considering sequences rotations.},
author = {Cheng, P. L.},
......@@ -132,6 +140,22 @@
}
@misc{urdf_Examples_ros,
year = {11/7/2021},
title = {urdf/Examples - ROS Wiki},
url = {http://wiki.ros.org/urdf/Examples},
urldate = {11/7/2021}
}
@misc{urdf_ros,
year = {11/7/2021},
title = {urdf - ROS Wiki},
url = {http://wiki.ros.org/urdf},
urldate = {11/7/2021}
}
@inproceedings{Vahrenkamp2013,
author = {Vahrenkamp, Nikolaus and Asfour, Tamim and Dillmann, Rudiger},
title = {Robot placement based on reachability inversion},
......@@ -144,6 +168,14 @@
}
@misc{xacro_ros,
year = {11/7/2021},
title = {xacro - ROS Wiki},
url = {http://wiki.ros.org/xacro},
urldate = {11/7/2021}
}
@inproceedings{Zacharias2007,
author = {Zacharias, Franziska and Borst, Christoph and Hirzinger, Gerd},
title = {Capturing robot workspace structure: representing robot capabilities},
......
images/RPY.png

256 KiB

\chapter{Fallbeispiel}\label{ch:caseStudy}
Inhalt dieses Kapitels ist die Demonstration der Funktionsweise einzelner Elemente der Implementierung und dessen Synergie mit MoveIt spezifischen Komponenten, sowie der Integration des ROS-Franka package anhand eines Beispiels. Hierzu stellt das ROS-Franka package die sowohl grafische, als auch funktionelle Beschreibung der Bestandteile des gleichnamigen robitischen Systems zur Verfügung, welches primär Objekt der Ausführung ist.
Inhalt dieses Kapitels ist die Demonstration der Funktionsweise einzelner Elemente der Implementierung und dessen Synergie mit MoveIt spezifischen Komponenten, sowie der Integration des franka\_ros Pakets \cite{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 das MoveGroup Interface eine Schnittstelle, welche die Kommunikation mittels spezieller Nachrichten und somit die Planung und Exekution kinematischer Operationen durch den Roboter ermöglicht. 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. 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 können mittels MSA aus dem ROS-Franka package generiert werden.
MoveIt bietet über das MoveGroup Interface eine Schnittstelle, welche die Kommunikation mittels spezieller Nachrichten und somit die Planung und Exekution kinematischer Operationen durch den Roboter ermöglicht. 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. 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 können mittels moveit setup assistent 'MSA' generiert werden.
\subsection{Modifikationen in der Beschreibung robotischer Systeme}
Das MoveGroup Interface bietet keine Möglichkeit zur Deklaration einer Roboterposition, da diese die Roboterbeschreibung des ROS-Franka package festgelegt, welche Referenz der spezifischen Konfigurationsdatei ist. Dies impliziert Notwendigkeit eine Modifikation, indem geforderte Positionen in Form von Variablen sukzessiv innerhalb der Instanzen einer Konfigurationsdatei bis zur letzten Instanz, der Roboterbeschreibung, kommuniziert werden.
Das MoveGroup Interface bietet keine Möglichkeit zur Deklaration einer Roboterposition, da diese die Roboterbeschreibung festgelegt, welche Referenz der spezifischen Konfigurationsdatei ist. Dies impliziert die Notwendigkeit eine Modifikation, indem geforderte Positionen in Form von Variablen sukzessiv innerhalb der Instanzen einer Konfigurationsdatei bis zur letzten Instanz, der Roboterbeschreibung, kommuniziert werden. Hier UML wäre nice
\section{Präparation des Fallbeispiels}
Die Kalkulation valider Positionen für robotische Systeme erfordert die Roboter zentrierte 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 Emika Franka Panda, operiert werden sollen. Die Aufgabenbeschreibung kann zum Ermittlungszeitpunkt vorgenommen werden oder schon persistiert vorliegen.
Die Kalkulation valider Positionen für robotische Systeme erfordert die Roboter zentrierte 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 aufgaben unabhängig, erfolgt daher a priori und kann auf alle Aufgabenbeschreibung angewendet werden, die vom Ausgangssystem der Analyse, wie Beispielsweise dem 'Panda' 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 'SupportSurface', welche dem robotischen System über das MoveGroup Interface kommuniziert und ohne dessen eine Operation nicht exekutiert wird. 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 Bezeichnung und der Farbe 'grün' gekennzeichnet ist. Es ist stets möglich, einen weiteren Knoten zu generieren, der als weiteres Kettenglied farblich und schriftlich gekennzeichnet ist. Die 'split' Option 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, da dies die Notwendigkeit zweier robotischer Systeme 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 'coop' Option das jeweils letzte Glied der Operationskette beziehungsweise Teilkette und visualisiert diese Schnittmenge ebenfalls schriftlich und farblich. Dies impliziert, dass eine Operationskette aus 'split' und 'coop' Komponenten bestehen kann, was für die 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 'Support\_Surface', welche dem robotischen System über das MoveGroup Interface kommuniziert und ohne dessen eine Operation nicht exekutiert wird. 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 Bezeichnung und der Farbe 'grün' gekennzeichnet ist. Es ist stets möglich, einen weiteren Knoten zu generieren, der als weiteres Kettenglied farblich und schriftlich gekennzeichnet ist. Die 'split' Option 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, da dies die Notwendigkeit zweier robotischer Systeme 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 'coop' Option das jeweils letzte Glied der Operationskette beziehungsweise Teilkette und visualisiert diese Schnittmenge ebenfalls schriftlich und farblich. Dies impliziert, dass eine Operationskette aus 'split' und 'coop' Komponenten bestehen kann, was für die Anwendung auf $n \in \N_{>2}$ robotischen Systemen relevant ist. Hier Bilder Mashallah hübsch
\section{Positionsanalyse}
Der Algorithmus zur Ermittlung der Positionen robotischer Systeme bezüglich einer Aufgabenbeschreibungen erfordert diese und zusätzlich den invertierten Arbeitsraum namentlich als Parameter. Über diese erfolgt der Zugriff auf die jeweiligen persistenten Dateien und die Berechnung auf Grundlage dessen, beginnt. Alle Resultate sind Transparent über das Visualisierungsprogramm RViz einsehbar, dabei kann der Umfang zu sehender Informationen über Checkboxen reguliert werden. Die Metrik D, die das Resultat der differenzierten Voxelisierung darstellt, visualisiert die Wertigkeit einer Box farblich. 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 Box ist ebenfalls einsehbar und wird mit zusätzlichen Informationen, wie dem Namen der Aufgabenbeschreibung, persistiert.
Der Algorithmus zur Ermittlung von Positionen robotischer Systeme bezüglich einer Aufgabenbeschreibungen erfordert diese und zusätzlich den invertierten Arbeitsraum namentlich als Parameter. Über diese erfolgt der Zugriff auf die jeweiligen persistenten Dateien und die Berechnung auf Grundlage dessen beginnt. Alle Resultate sind Transparent über das graphische Programm RViz einsehbar, dabei kann der Umfang zu sehender Informationen über Checkboxen reguliert werden. Die Metrik $I(Voxel)(TK)$ aus \autoref{eq:29}, welche differenzierten Voxelisierung kalkuliert, visualisiert die Wertigkeit eines Voxels farblich. 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.
\section{Ausführung der Operationskette}
Zur Ausführung der Operationskette ist weiterer Algorithmus implementiert, welcher die permutierten Informationen der Positionsanalyse Aufruft und die robotischen Systeme an den kalkulierten Positionen initialisiert, um jeweils die Teilketten zu operieren.
\ No newline at end of file
Zur Ausführung der Operationskette ist ein weiterer Algorithmus implementiert, welcher die permutierten Informationen der Positionsanalyse Aufruft und die robotischen Systeme an den kalkulierten Positionen initialisiert, um jeweils die Teilketten zu operieren.
\ No newline at end of file
......@@ -10,19 +10,19 @@ Die räumliche Partitionierung beschreibt das Unterteilen eines kartesischen Rau
Die Diskretisierung ist bekannt als ein Prozess der Zerlegung einer kontinuierliche Oberfläche durch Abtastung in ihre diskreten Teilbereiche oder Punkt, 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. Diese robotischen Mechanismen definieren eine offene kinematische Kette, dessen letztes Glied als Endeffektor deklariert ist, während der erste Festkörper die Basis des Roboters darstellt. Roboterarme sind Beispiele für offene robotische Systeme beziehungsweise offene kinematischer Ketten und Bezugspunkt dieser wissenschaftlichen Arbeit \cite[46f.]{Siciliano2016}. Nähere Informationen über die Kopplung spezifischer Festkörper werden im Kontext dieser Arbeit in der zugehörigen URDF beziehungsweise XACRO Datei des Roboters dokumentiert. Diese Dateien sind XML Erweiterungen und bieten als solche einen entsprechenden erweiterten Funktionsumfang. Demzufolge können zusätzliche Informationen, in Form von 'tags', Limitierungen bezüglicher des Bewegungsumfangs eines Festkörpers spezifizieren. \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, werden fertige Roboter von offizieller Seite bereitgestellt, wodurch ein Einblick in umfangreichere URDF-Dateien ermöglicht wird und der Konstruktionsaufwand entfällt.
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. Diese robotischen Mechanismen definieren eine offene kinematische Kette, dessen letztes Glied als Endeffektor deklariert ist, während der erste Festkörper die Basis des Roboters darstellt. Roboterarme sind Beispiele für offene robotische Systeme beziehungsweise offene kinematischer Ketten und Bezugspunkt dieser wissenschaftlichen Arbeit \cite[46ff.]{Siciliano2016}. Nähere Informationen über die Kopplung spezifischer Festkörper werden im Kontext dieser Arbeit in der zugehörigen URDF \cite{urdf_ros} beziehungsweise XACRO \cite{xacro_ros} Datei des Roboters dokumentiert. Diese sind XML Erweiterungen zur Beschreibung von Robotern und bieten als solche einen entsprechenden erweiterten Funktionsumfang. Demzufolge können zusätzliche Informationen, in Form von 'tags', Limitierungen bezüglicher des Bewegungsumfangs eines Festkörpers spezifizieren. \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, werden fertige Systeme von offizieller Seite \cite{urdf_Examples_ros} bereitgestellt, wodurch ein Einblick in umfangreichere URDF-Dateien ermöglicht wird und der Konstruktionsaufwand entfällt. Beispielsweise ist das Referenzsystem 'panda' der Franka Emika GmbH dieser wissenschaftlichen Arbeit auch öffentlich zugänglich \cite{franka_ros}.
\section{Kinematische Grundlagen}
Nachdem die Klassifizierung eines robotischen Systems anhand seiner Struktur eruiert wurde, werden in diesem Abschnitt weitere kinematischen Aspekte näher erläutert. Grundlegende Methodiken dieser wissenschaftlichen Arbeit fundieren auf Konzepten der Kinematik. Die Kinematik ist ein Teilbereich der Physik, welcher 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 die Repräsentation der Position und Orientierung von Körpern im 3-dimensionalen Raum und deren Relation zueinander, sowie der Geometrie robotischer Mechanismen. Termini wie 'Pose' und Referenzkoordinatensystem 'Frame' und deren Relationen sind existenzieller Bestandteil späterer Ausführungen und werden daher in diesem Kapitel näher erläutert.
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. Termini wie 'Pose' oder Referenzkoordinatensystem 'Frame' sind existenzieller Bestandteil späterer Ausführungen und werden daher in diesem Kapitel näher erläutert.
\subsection{Pose, Position und Orientierung}
Die Kombination aus Position und Orientierung eines Festkörpers relativ zu einem Frame definiert eine $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 Grundlage dessen eine Pose $^{0}Pose$ 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 $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 $(0,0,1)^{T}, (0,1,0)^{T}, (1,0,0)^{T}$ Basisvektoren, auf Grundlage dessen eine Pose $^{0}Pose$ 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.
\begin{equation}
\begin{equation} \label{eq:1}
^{j}p_{i} = \begin{pmatrix}
^{j}p_{i}^{x} \\
^{j}p_{i}^{y} \\
......@@ -30,46 +30,51 @@ Der Koordinatenursprung eines Frames $i$ relativ zum Frame $j$ wird durch den Ve
\end{pmatrix}
\end{equation}
Aus ... ist ersichtlich, dass die Elemente des Koordinatenursprungs von $i$ auf Koordinaten relativ zu $j$ referenzieren. Diese Abhängigkeit besteht analog zwishcen Frames eines Roboters, welche jeweils relativ zum Vorgänger Frame der kinematischen Kette verweisen.
Aus \autoref{eq:1} ist ersichtlich, dass die Elemente des Koordinatenursprungs von Frame $i$ auf Koordinaten relativ zu $j$ referenzieren. Diese Abhängigkeit besteht analog zwischen Frames eines Roboters, welche jeweils relativ zum Vorgänger Frame der kinematischen Kette definiert sind.
\subsubsection{Orientierung}
Eine Orientierung wird durch Rotationen $R$ dargestellt, die auf einen Körper angewendet werden können. Im Forschungsgebiet Robotik und der Computergrafik existieren verschiedene Ansätze zur mathematischen Beschreibung einer Rotation, welche sich konzeptuell unterscheiden. Beispielsweise kann eine Rotation durch Kompositionen aus Rotations-Matrizen oder der Anwendung komplexer Zahlen realisiert werden. Die spezielle RPY-Rotation, welche auf den Rotationswinkeln eines Körpers hinsichtlich seiner Achsen basiert, wird in Abb ... visualisiert.
Die Menge aller Rotations-Matrizen $R \in \R^{3 \times 3}$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SO(3) \subset \R^{3\times3}$, siehe ....
Eine Orientierung wird durch Rotationen $R$ dargestellt, die auf einen Körper angewendet werden können. Im Forschungsgebiet Robotik und der Computergrafik existieren verschiedene Ansätze zur mathematischen Beschreibung einer Rotation, welche sich konzeptuell unterscheiden. Beispielsweise kann eine Rotation durch Kompositionen aus Rotations-Matrizen oder der Anwendung komplexer Zahlen realisiert werden. Die spezielle RPY-Rotation, welche auf den Rotationswinkeln eines Körpers hinsichtlich seiner Achsen basiert, wird in \autoref{fig:1} anhand eines Flugzeugs visualisiert und ist Bestandteil späterer Ausführungen.
\begin{figure}[ht]
\includegraphics[width = 4cm, height = 4cm]{images/RPY.png}
\caption{fig: Roll-Pitch-Yaw beziehungsweise Roll-, Nick- und Gier- Winkel an einem Flugzeug demonstriert.}
\label{fig:1}
\end{figure}
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{fig:2} abgebildet sind. Dies ist die spezielle orthogonale Gruppe $SO(3)$, wobei 1 die Matrix ist, dessen diagonale mit eins belegt ist, während alle anderen Werte null sind.
\begin{align*}
\begin{align*} \label{fig:2}
&Geschlossenheit: & \forall R_{1},R_{2} \in SO(3): R_{1}R_{2} \in SO(3) \\
&Identität: & \forall R \in SO(3): 1R = R1 = R\\
&Inverse: & \forall R \in SO(3): RR^{T}= 1 \\
&Assoziativität: & \forall R_{1},R_{2},R_{3} \in SO(3): (R_{1}R_{2})R_{3} = R_{1}(R_{2}R_{3})
\end{align*}
Die Komposition von Rotationen verschiedener Frames wird in Gleichung ... veranschaulicht. Dabei ist die Einhaltung der Reihenfolge bezüglich der Multiplikation, aufgrund der mangelnden Kommutativität der Gruppe SO(3), erforderlich. Durch dessen Eigenschaft der Geschlossenheit, ist das Resultat dieser Multiplikation ebenfalls $\in SO(3)$.
Die Komposition von Rotationen verschiedener Frames wird in Gleichung \autoref{eq:2} veranschaulicht. Dabei ist die Einhaltung der Reihenfolge bezüglich der Multiplikation, aufgrund der mangelnden Kommutativität der Gruppe SO(3), erforderlich. Durch dessen Eigenschaft der Geschlossenheit, ist das Resultat dieser Multiplikation ebenfalls $\in SO(3)$ \cite[11f.]{Siciliano2016}.
\begin{equation}
\begin{equation} \label{eq:2}
^{k}R_{i} = ^{k}R_{j} \times ^{j}R_{i}
\end{equation}
\subsubsection{homogene Transformation}
Eine homogene Matrix $T \in \R^{4\times4}$, bestehend aus einer Rotationsmatrix $R \in SO(3)$ und einem Vektor $p \in \R ^{3}$, beschreibt eine Transformations-Matrix, siehe ... .Sie ermöglicht die synchrone Ausführung von Translation und Rotation, wobei eine Translation die Verschiebung eines beliebigen Vektors beschreibt, ohne sich auf dessen Orientierung auszuwirken. ... Aus Frame Rotationen $^{j}R_{i}$ und Koordinatenursprung $^{j}p_{i}$ bestehende Transformationsmatrizen $^{j}T_{i}$ beschreiben die Pose $i$ und ermöglichen zusätzlich die Transformation eines Vektors $^{i}u$ in den Vektor $^{j}u$.
Eine homogene Matrix $T \in \R^{4\times4}$, bestehend aus einer Rotationsmatrix $R \in SO(3)$ und einem Vektor $p \in \R ^{3}$, beschreibt eine Transformations-Matrix, siehe \autoref{eq:3}. Sie ermöglicht die synchrone Ausführung von Translation und Rotation, wobei eine Translation die Verschiebung eines beliebigen Vektors beschreibt, ohne sich auf dessen Orientierung auszuwirken. Die aus Frame Rotationen $^{j}R_{i}$ und Koordinatenursprung $^{j}p_{i}$ bestehende Transformationsmatrizen $^{j}T_{i}$ eignet sich am besten zur Beschreibung einer Pose $i$ und ermöglichen zusätzlich die Transformation eines Vektors $^{i}u$ in den Vektor $^{j}u$, wie \autoref{eq:4} zeigt.
\begin{equation}
\label{trNormal}
T = \begin{pmatrix}
\label{eq:3}
\begin{split}
T &= \begin{pmatrix}
R & p \\
0 & 1 \\
\end{pmatrix}
\end{equation}
\begin{equation}
\label{trFrames}
^{j}T_{i} = \begin{pmatrix}
\end{pmatrix} \\
^{j}T_{i} &= \begin{pmatrix}
^{j}R_{i} & ^{j}p_{i} \\
0 & 1 \\
\end{pmatrix}
\end{split}
\end{equation}
\begin{equation}
\label{trPoint}
\label{eq:4}
\begin{pmatrix}
^{j}u \\
1 \\
......@@ -80,23 +85,29 @@ T = \begin{pmatrix}
\end{pmatrix}
\end{equation}
Transformationsmatrizen $T$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SE(3)$, wie ... zeigt.
\begin{align*}
Transformationsmatrizen $T$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SE(3)$, dessen Gruppenaxiome in \autoref{fig:3} dokumentiert sind, hierbei gilt analog zu \autoref{fig:2} die 1 Matrix $\in \R^{4\times4}$ als das neutrale Element der Gruppe \cite[17f.]{Siciliano2016}.
\begin{align*}\label{fig:3}
&Geschlossenheit: & \forall T_{1},T_{2} \in SE(3): T_{1}T_{2} \in SE(3) \\
&Identität: & \forall T \in SE(3): 1T = T1 = T\\
&Inverse: & \forall ^{j}T_{i} \in SE(3): (^{j}T_{i})(^{j}T_{i}^{-1}) = (^{j}T_{i})(^{i}T_{j}) = 1 \\
&Assoziativität: & \forall T_{1},T_{2},T_{3} \in SE(3): (T_{1}T_{2})T_{3} = T_{1}(T_{2}T_{3})
\end{align*}
Die Komposition von Transforamtionen verschiedener Frames wird in Gleichung ... veranschaulicht. Dabei ist die Einhaltung der Reihenfolge bezüglich der Multiplikation, analog zur Gruppe SO(3) erforderlich. Durch die Eigenschaft der Geschlossenheit der Gruppe SE(3), ist das Resultat dieser Multiplikation ebenfalls $\in SE(3)$.
Die Komposition aus Transformationen verschiedener Frames wird in Gleichung \autoref{fig:5} veranschaulicht. Dabei ist die Einhaltung der Reihenfolge bezüglich der Multiplikation, analog zur \autoref{eq:2} Gruppe $SO(3)$, erforderlich. Durch die Eigenschaft der Geschlossenheit der Gruppe SE(3), ist das Resultat dieser Multiplikation ebenfalls $\in SE(3)$ \cite[14f.]{Siciliano2016}.
\begin{equation}
\begin{equation}\label{eq:5}
^{k}T_{i} = ^{k}T_{j} \times ^{j}T_{i}
\end{equation}
Für die kinematische Kette eines robotischen Systems bestehenden aus $n \in \N$ Festkörpern, wobei $Frame_{n} = Frame_{Endeff}$ das Frame des Endeffektors ist, gilt \autoref{eq:6}, welche ein Beispiel für $n=6$ zeigt. Im Kontext dieser Arbeit bedeutet diese Gleichung, dass für jede vom Roboter erreichbare Endeffektor-Pose relativ zu $Frame_{0}$ eine solche Kette aus Transformationen existiert, welche jeweils die Pose eines Festkörpers des Roboters repräsentieren \cite[26f.]{Siciliano2016}.
\begin{equation}
\label{RobotEq}
%^{n}T_{0}= \prod \limits_{i=1}^{n} ^{i-1}a_{i}
\label{eq:6}
\begin{split}
^{n}T_{0} &= {\displaystyle \prod_{i=0}^{n}}^{n-i}T_{i} \\
&= ^{0}T_{1} \times ^{1}T_{2} \times ^{2}T_{3} \times ^{3}T_{4} \times ^{4}T_{5} \times ^{5}T_{6}
\end{split}
\end{equation}
......
\chapter{Implementierung}\label{ch:implementation}
Die ausführliche Auseinandersetzung mit der Struktur des ROS spezifischen Arbeitsraums, dessen Pakete die nötigen Roboterbeschreibungen, Konfigurationsdateien und implementierte Algorithmen enthalten, um alle Aspekte der wissenschaftlichen Arbeit zu realisieren, ist Inhalt dieses Kapitels. Dabei initialisiert jede Quelldatei einen Node im ROS Kontext in der Programmiersprache C++.
Die ausführliche Auseinandersetzung mit der Struktur des ROS spezifischen Arbeitsraums, dessen Pakete die nötigen Roboterbeschreibungen, Konfigurationsdateien und implementierte Algorithmen enthalten, um alle Aspekte der wissenschaftlichen Arbeit zu realisieren, ist Inhalt dieses Kapitels und in \autoref{fig:8} illustriert. Dabei initialisiert jede Quelldatei einen Node im ROS Kontext in der Programmiersprache C++.
\begin{figure}[h!]
\centering
......@@ -13,11 +13,11 @@ Die ausführliche Auseinandersetzung mit der Struktur des ROS spezifischen Arbei
\draw[-] (RD) -- (MK) -- (I);
\end{tikzpicture}
\caption{Die Struktur des ROS Arbeitsraums ist durch dessen passive Pakete und aktive Pakete, sowie deren Beziehungen, illustriert. Diese Betrachtung partitioniert das Kapitel logisch in einen organisatorischen Teil, dessen Pakete die Prämisse des exekutiven Teils sind.} \label{fig:Struktur}
\caption{Die Struktur des ROS Arbeitsraums ist durch dessen passive Pakete und aktive Pakete, sowie deren Beziehungen, illustriert. Diese Betrachtung partitioniert das Kapitel logisch in einen organisatorischen Teil, dessen Pakete die Prämisse des exekutiven Teils sind.} \label{fig:8}
\end{figure}
\section{Robotische Systeme und deren Konfiguration}
Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdateien, welche jeweils $n \in \N_{>0}$ robotische Systeme konkretisieren und somit die Kommunikation zwischen den $n$ Robotern durch Integration der MoveGroup Schnittstelle ermöglichen. Diese ist ein Klon des öffentlich zugänglichen Pakets 'franka\_ ros' \cite{franca_ros} der Franka Emika GmbH zum August 2020, welches der Lehrstuhl für Softwaretechnologie bereitstellt. Die enthaltenen Dateien definieren einzelne Festkörpergruppen sowie deren Vereinigung zu $n$ Robotergruppen. Beispielsweise ist der Struktur in \autoref{fig:Files} zu entnehmen, dass ein Manipulator aus Hand und Arm besteht, sowie dass die Instanziierung mehrerer Manipulatoren eine zusätzliche Datei bedingt. \autoref{fig:Files} zeigt die Struktur einer Konfigurationsdatei, welche im 'config' Verzeichnis alle Festkörper der Referenzbeschreibung anhand der 'controller.yaml' Datei als Kontrollelemente spezifiziert und somit die Interaktion ermöglicht. Das Beispiel einer Modifizierten Roboterbeschreibung eines duales Setup zeigt \autoref{fig:RD}, aus dem das Muster zur Generierung einer $n$ Roboter Datei zu entnehmen ist, indem dessen Inhalt für alle Identitäten $n$ mal iteriert wird. Analog kann die entsprechende $n$\_ Konfigurationsdatei aus dem MSA erzeugt, oder mittels einer Manipulation der 'config' und 'launch' Dateien generiert werden.
Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdateien, welche jeweils $n \in \N_{>0}$ robotische Systeme konkretisieren und somit die Kommunikation zwischen den $n$ Robotern durch Integration der MoveGroup Schnittstelle ermöglichen. Diese ist ein Klon des öffentlich zugänglichen Pakets 'franka\_ ros' \cite{franka_ros} der Franka Emika GmbH zum August 2020, welches der Lehrstuhl für Softwaretechnologie bereitstellt. Die enthaltenen Dateien definieren einzelne Festkörpergruppen sowie deren Vereinigung zu $n$ Robotergruppen. Beispielsweise ist der Struktur aus \autoref{fig:9} zu entnehmen, dass ein Manipulator aus Hand und Arm besteht, sowie dass die Instanziierung mehrerer Manipulatoren eine zusätzliche Datei bedingt. \autoref{fig:9} b zeigt die Struktur einer Konfigurationsdatei, welche im 'config' Verzeichnis alle Festkörper der Referenzbeschreibung anhand der 'controller.yaml' Datei als Kontrollelemente spezifiziert und somit die Interaktion ermöglicht. Das Beispiel einer Modifizierten Roboterbeschreibung eines dualen Setup zeigt \autoref{lst:4}, aus dem das Muster zur Generierung einer $n$ Roboter Datei zu entnehmen ist, indem dessen Inhalt für alle Identitäten $n$ mal iteriert wird. Analog kann die entsprechende $n$\_ Konfigurationsdatei aus dem MSA erzeugt, oder mittels einer Manipulation der 'config' und 'launch' Dateien aus \autoref{fig:9} generiert werden.
\begin{figure}
\centering
......@@ -45,11 +45,10 @@ Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdate
.3 'planning\_context.launch'.
}
\end{minipage}\hfill
\caption{Visualisierung der Verzeichnisstruktur der Roboterbeschreibung und Konfiguration. Bezüglich der Übersichtlichkeit sind nur die Dateien gelistet, deren Modifikation in Hinsichtlich der Realisierung mehrerer robotischer Systeme relevant ist.}\label{fig:Files}
\caption{Visualisierung der Verzeichnisstruktur der Roboterbeschreibung und Konfiguration. Bezüglich der Übersichtlichkeit sind nur die Dateien gelistet, deren Modifikation in Hinsichtlich der Realisierung mehrerer robotischer Systeme relevant ist.}\label{fig:9}
\end{figure}
\begin{figure}[h!]
\begin{lstlisting}[language=json,firstnumber=1]
\begin{lstlisting}[language=JSON,firstnumber=1, caption={ Dual Setup Beispiel, in mit Modifikationen zur Übergabe der Roboterpositionen.}, label={lst:4}, captionpos=b]
{<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="panda">
<!-- Einbindung der Roboter Komponenten-->
<xacro:include filename="panda_arm.xacro"/>
......@@ -74,14 +73,13 @@ Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdate
<!-- Eine n-Roboterbeschreibung erfordert Namens- und Positions- Deklarationen sowie die Initialisierung aller n Manipulatoren -->
</robot>}
\end{lstlisting}
\caption{Der Nutzer hat die Möglichkeit, seine Aufgabe zu benennen. Das Feld 'position' ist eine Liste aller Aufgaben-Posen, während 'starts' die Indexe enthält, an denen das jeweilige robotische System die Iteration der Kette beginnt. Das 'mode' Feld dokumentiert den Aufgabentyp.}\label{fig:RD}
\end{figure}
\subsection{MoveGroup Interface mit Dual Setup}
Eine Konfigurationsdatei präzisiert ein robotisches System als Bewegungsgruppe 'MoveGroup', dessen Identität eindeutig durch ihr Namensattribut bestimmt ist. Demnach genügt dieses zur Instanziierung eines MoveGroup Objekts, welcher die Kommunikation zum gewählten Roboter initiiert. Eine duale Konfigurationsdatei ermöglicht analog das Instanziieren und Ansteuern zweier robotischer Systeme. Dabei ist eine Fehlfunktion dieser Instanzen während einer Operation observierbar, wobei die Planung und Exekution durch eine vermeintlich unbeabsichtigte Kollision zwischen Endeffektor und Primitiv detektiert wird, woraufhin die auszuführende Handlung negativ terminiert. Dies impliziert, dass die Funktionen des MoveGroup Interface hinsichtlich der Betrachtung mehrerer robotischer Systeme limitiert sind. Die Abbildung zeigt einen Ansatz, der die Kollisionsdetektion definierter Kollisionsobjekte in der AKM deaktiviert, was Beispielsweise das Greifen, Halten und Abstellen eines Primitives in einem Dualen Setup ermöglicht.
Eine Konfigurationsdatei konkretisiert ein robotisches System als Bewegungsgruppe 'MoveGroup', dessen Identität eindeutig durch ihr Namensattribut bestimmt ist. Demnach genügt dieses zur Instanziierung eines MoveGroup Objekts, welcher die Kommunikation zum gewählten Roboter initiiert. Eine duale Konfigurationsdatei ermöglicht analog das Instanziieren und Ansteuern zweier robotischer Systeme. Dabei ist eine Fehlfunktion dieser Instanzen während einer Operation observierbar, wobei die Planung und Exekution durch eine vermeintlich unbeabsichtigte Kollision zwischen Endeffektor und Primitiv detektiert wird, woraufhin die auszuführende Handlung negativ terminiert. Dies impliziert, dass die Funktionen des MoveGroup Interface hinsichtlich der Betrachtung mehrerer robotischer Systeme limitiert sind. Der \autoref{lst:5} zeigt einen Ansatz, der die Kollisionsdetektion definierter Kollisionsobjekte in der allowed kollision matrix 'AKM' deaktiviert, was Beispielsweise das Greifen, Halten und Abstellen eines Primitives in einem Dualen Setup ermöglicht.
\begin{figure}[h!]
\begin{lstlisting}[language=JSON,firstnumber=1]
\begin{lstlisting}[language=JSON,firstnumber=1, caption={Des Endeffektors rechter und linker Finger kollidieren unweigerlich während der Exekution mit dem Primitiv. Der illustrierte Quelltext Auszug stellt einen Ansatz zur Umgehung dar und ermöglicht eine erfolgreiche Terminierung des Vorgangs.}, label={lst:5}, captionpos=b]
// Initialisierung der Szene
planning_scene::PlanningScene ps(kinematic_model);
......@@ -103,15 +101,13 @@ moveit_msgs::PlanningScene pls;
acm.getMessage(pls.allowed_collision_matrix);
pls.is_diff = true;
planning_scene_diff_publisher.publish(pls);
\end{lstlisting}
\caption{Des Endeffektors rechter und linker Finger kollidieren unweigerlich während der Exekution mit dem Primitiv. Der illustrierte Quelltext Auszug stellt einen Ansatz zur Umgehung dar und ermöglicht eine erfolgreiche Terminierung des Vorgangs.}\label{fig:AKM}
\end{figure}
\section{Implementierung zur Positionsermittlung}
Die tatsächliche Implementierung ist Inhalt des Reach Pakets, dessen Struktur die Abbildung ... illustriert. An dieser ist ersichtlich, dass die Artefakte aus den kinematischen Berechnungen, beispielsweise der Arbeitsraum Analyse oder dessen Inversion, in den zugehörigen Ordnern persistiert werden, während anderweitig generierte Dateien, wie der Aufgabenbeschreibung und Positionsbeschreibung, an anderer Stelle vorliegen. Das Rviz Verzeichnis beinhaltet alle Konfigurationen der spezifischen Nodes im RViz Kontext, dessen Resultate anhand visueller Nachrichten publiziert werden. Dies impliziert, dass relevante Aspekte eines Nodes jederzeit durch das RViz Programm transparent observiert werden können.
Die tatsächliche Implementierung ist Inhalt des Reach Pakets, dessen Struktur die \autoref{fig:10} illustriert. An dieser ist ersichtlich, dass die Artefakte aus den kinematischen Berechnungen, beispielsweise der Arbeitsraumanalyse oder dessen Inversion, in den zugehörigen Ordnern persistiert werden, während anderweitig generierte Dateien, wie der Aufgabenbeschreibung und Positionsbeschreibung, an anderer Stelle vorliegen. Das Rviz Verzeichnis beinhaltet alle Konfigurationen der spezifischen Nodes im RViz Kontext, dessen Resultate anhand visueller Nachrichten publiziert werden. Dies impliziert, dass relevante Aspekte eines Nodes jederzeit durch das RViz Programm transparent observiert werden können.
\begin{figure}
\begin{figure}[h!]
\centering
\begin{minipage}{.55\linewidth}
\dirtree{%
......@@ -127,32 +123,38 @@ Die tatsächliche Implementierung ist Inhalt des Reach Pakets, dessen Struktur d
.2 position.
}
\end{minipage}\hfill
\caption{Visualisierung aller Komponenten des Reach Verzeichnisses und deren Beziehung untereinander.}\label{fig:reach}
\caption{Visualisierung aller Komponenten des Reach Verzeichnisses und deren Beziehung untereinander.}\label{fig:10}
\end{figure}
\subsection{Implementierung der Arbeitsraumanalyse}
Die Folgende Header Datei beschreibt alle Funktionen, die den Algorithmus der Arbeitsraumanalyse implementieren. Dazu sind gemäß der Erörterungen im 'Konzept' Kapitel, neben der kubischen Diskretisierung zusätzliche sphärische Diskretisierungen formuliert. Die Planung des Endeffektors zu einer generierten Endeffektor Pose erfolgt über das MoveGroup Interface, angewandt auf der Konfigurationsdatei eines einzelnen robotischen Systems.
Der \autoref{lst:6} der Header Datei beschreibt alle Funktionen, die den Algorithmus der Arbeitsraumanalyse implementieren. Dazu sind gemäß der Erörterungen im 'Konzept' Kapitel, neben der kubischen Diskretisierung zusätzliche sphärische Diskretisierungen formuliert. Die Planung des Endeffektors zu einer generierten Endeffektor Pose erfolgt über das MoveGroup Interface, angewandt auf der Konfigurationsdatei eines einzelnen robotischen Systems. Dabei ist eine Implementierung für performante Rechner enthalten, die Anhand der Aufteilung der Menge $T$ in die jeweiligen Rechenkerne alle kinematischen Berechnungen $f_{kin}$ parallel operiert.
\lstinputlisting[language=C++]{./images/publisher\_node.h}
\lstinputlisting[language=C++, caption ={Implementierung zur Generierung der $\protect RM$}, label={lst:6}, captionpos=b ]{./images/publisher\_node.h}
\subsection{Implementierung des Inversen Arbeitsraums}
Der Algorithmus des Inversen Arbeitsraums kalkuliert anhand der persistierten Informationen der Arbeitsraumanalyse die Metrik D. Die Inversion aller Transformationen anhand eine Iteration über den Arbeitsraum, erfolgt durch das tf2 Objekt der gleichnamigen Bibliothek für Operationen auf homogene Transformationen. Zusätzlich erfolgt die Portierung der Metrik und Persistenz.
\subsection{Der Algorithmus zur Positionsanalyse}
Die Implementierung der Positionsanalyse erfolgt über dessen Voxelisierung durch Integration der PCL Bibliothek. Diese ist in C++ vollumfänglich Implementiert und ermöglicht performante Operationen auf 3 dimensionale Koordinaten. Ein bedeutender unterschied des Algorithmus zur Platzierung robotischer Systeme in Reolux und dessen Implementierung in dieser Arbeit ist die differenzierte Voxelisierung. Diese Implementiert zunächst ein Gitter aus Vektoren $^{0}v \in \R^{3}$ ähnlich der kubischen Diskretisierung, und bildet jede Transformation $^{0}T_{Base_{i}} \in ^{0}T_{Base}$ eines Kettenglieds der Operationskette $g_{i} \in OK$ anhand seiner räumlichen Position auf den Vektor $^{0}v$ ab. Die resultierende Struktur ist in ... abgebildet.
Die Implementierung der Positionsanalyse erfolgt über dessen Voxelisierung durch Integration der PCL Bibliothek. Diese ist in C++ vollumfänglich Implementiert und ermöglicht performante Operationen auf 3 dimensionale Koordinaten. Ein bedeutender unterschied des Algorithmus zur Platzierung robotischer Systeme in Reuleaux \cite{Makhal2018} und dessen Implementierung in dieser Arbeit ist die differenzierte Voxelisierung. Diese Implementiert zunächst ein Gitter aus Vektoren $^{0}v \in \R^{3}$ ähnlich der kubischen Diskretisierung, und bildet jede Transformation $^{0}T_{Base_{i}} \in ^{0}T_{Base}$ eines Kettenglieds der Operationskette $g_{i} \in K$ anhand seiner räumlichen Position auf den Vektor $^{0}v$ ab. Die resultierende Struktur ist in \autoref{eq:30} gezeigt.
\begin{align*}
\begin{equation}
\begin{split}
\label{eq:30}
Task &= {(i, ^{0}T_{Base_{i}}) | g_{i} \in OK} \\
Dictionary &= {(^{0}v, Task)}
\end{align*}
\end{split}
\end{equation}
Eine Teilkette $TK \subset OK$ definiert nun anhand ihrer Glieder $g_{i}$ die Einträge, welche der Vektor $^{0}v$ mindestens enthalten muss, um eine potentielle Position des robotischen Systems zu sein, welcher $TK$ operiert. Durch die Abbildung $D_{port}({0}T_{Base}) = D_{Reach}({0}T_{Base})$ ist Analog die Struktur $Task_{Metrik}$ implementiert, welche die portierten Metriken aller Transformation $^{0}T_{Base_{i}}$ auf den Vektor $^{0}v$ abbildet
Eine Teilkette $TK \subset K$ definiert nun anhand ihrer Glieder $g_{i}$ die Einträge, welche der Vektor $^{0}v$ mindestens enthalten muss, um eine potentielle Position des robotischen Systems zu sein, welcher $TK$ operiert. Durch die Abbildung $D_{port}({0}T_{Base}) = D_{Reach}({0}T_{Base})$ ist Analog die Struktur $Task_{Metrik}$ implementiert, welche die portierten Metriken aller Transformation $^{0}T_{Base_{i}}$ auf den Vektor $^{0}v$ abbildet
\begin{align*}
Task_{Metrik} &= {(i, D_{port}(^{0}T_{Base_{i}})) | g_{i} \in OK} \\
\begin{equation}
\begin{split}
\label{eq:31}
Task_{Metrik} &= {(i, D_{port}(^{0}T_{Base_{i}})) | g_{i} \in K} \\
Dictionary_{Metrik} &= {(^{0}v, Task_{Metrik})}
\end{align*}
\end{split}
\end{equation}
Die Ermittlung der optimalen Position $^{0}v$ für eine Teilkette $TK$ erfolgt, indem das arithmetische Mittel pro Kettenglied $TK \in g_{i}$ kalkuliert wird und in Verhältnis zur Kardinalität $\vert TK \vert$ gesetzt wird. \par
Die resultierende Position pro $TK$ wird in einem eigenen Verzeichnis persistiert, um als Parameter der 'Pick and Place' Implementierung geladen zu werden und über jede Instanz, über die Konfigurationsdatei der Roboterbeschreibung übergeben zu werden.
......
\chapter{Konzept}\label{ch:concept}
Wie im vorherigen Kapitel beschrieben, charakterisieren wissenschaftliche Arbeiten die Analyse des Arbeitsraums einzelner Roboter, sowie der Kenntnis bezüglich auszuführender Aufgaben als notwendige Voraussetzungen, um anhand dieser Informationen sukzessiv die optimale Position des Roboters zu bestimmen. Dieses Kapitel dokumentiert die konzeptuellen Entscheidungen bezüglich gewählten Verfahren dieser Bachelorarbeit, basierend auf den zuvor beschriebenen Methodiken zur Arbeitsraumanalyse, dessen Invertierung und anschließender Auswertung. Das Konzept zur Definition spezifischer Aufgaben, sowie deren intuitive Generierung und Darstellung mittels grafischer Programme ist ebenfalls dokumentiert und vervollständigt somit den Algorithmus zur Kalkulation valider Roboterbasen. Die Implementierung der jeweiligen Abschnitte wird in Form der Header beigefügt und jeweils näher erläutert. Die grundlegende Struktur persistierter Daten im JSON Format sind ebenfalls Bestandteil des Kapitels. Anhand dieser Realisierung erfolgt eine Erweiterung der Erkenntnisse vorangegangener wissenschaftlicher Arbeiten um die Anwendung auf mehrere robotische Systeme sowie der Konkretisierung spezifischer Aufgaben. Diese Erweiterung ermöglicht die automatisiert Schöpfung kollaborative Multi-Roboter Arbeitsräume.
\chapter{Konzept zur Realisierung Mulit-Roboter Arbeitsplätze}\label{ch:concept}
Wie im vorherigen Kapitel beschrieben, charakterisieren wissenschaftliche Arbeiten die Analyse des Arbeitsraums einzelner Roboter, sowie der Kenntnis bezüglich auszuführender Aufgaben als notwendige Voraussetzungen, um anhand dieser Informationen sukzessiv die optimale Position des Roboters zu bestimmen. Dieses Kapitel dokumentiert die konzeptuellen Entscheidungen bezüglich gewählten Verfahren dieser Bachelorarbeit, basierend auf den zuvor beschriebenen Methodiken zur Arbeitsraumanalyse, dessen Invertierung und anschließender Auswertung. Das Konzept zur Definition spezifischer Aufgaben, sowie deren intuitive Generierung und Darstellung mittels grafischer Programme ist ebenfalls dokumentiert und vervollständigt somit den Algorithmus zur Kalkulation valider Roboterbasen. Die grundlegende Struktur persistierter Daten im JSON Format sind ebenfalls Bestandteil des Kapitels. Anhand dieser Realisierung erfolgt eine Erweiterung der Erkenntnisse vorangegangener wissenschaftlicher Arbeiten um die Anwendung auf mehrere robotische Systeme sowie der Konkretisierung spezifischer Aufgaben. Diese Erweiterung ermöglicht die automatisiert Schöpfung kollaborative Multi-Roboter Arbeitsräume.
\newcommand\pgfmathsinandcos[3]{%
\pgfmathsetmacro#1{sin(#3)}%
......@@ -34,26 +34,22 @@ Wie im vorherigen Kapitel beschrieben, charakterisieren wissenschaftliche Arbeit
\draw[current plane,dashed] (180-\angVis:1) arc (180-\angVis:\angVis:1);
}
\begin{tikzpicture} % "THE GLOBE" showcase
\def\R{2.5} % sphere radius
\def\angEl{35} % elevation angle
\filldraw[ball color=white] (0,0) circle (\R);
\foreach \t in {-80,-60,...,80} { \DrawLatitudeCircle[\R]{\t} }
\foreach \t in {-5,-35,...,-175} { \DrawLongitudeCircle[\R]{\t} }
\end{tikzpicture}
\section{Arbeitsraumanalyse robotischer Systeme}
Die Population valider Transformationen $^{0}T_{Endeff}$, welche Resultat der Vereinigung aus $OR_{total}$ und $P_{total}$ sind, zuzüglich einer zugrundeliegenden Metrik, ist Bestandteil der Arbeitsraumanalyse. Dabei ist den Erkenntnissen um den Prozess zur Generierung aller Orientierungen $OR_{total}$ zu entnehmen, dass diese auf den Polarkoordinaten $^{0}s \in S$ einer Sphäre basieren, welche durch ihren Ursprung und Radius definiert ist. Der Implementiere Algorithmus zur Ermittlung aller Transformationen $^{0}T_{Endeff}$ kombiniert diese Mengen, indem jeder Vektor $^{0}p \in P_{total}$ den Ursprung einer Sphäre darstellt, und demzufolge Ausgangspunkt der Kalkulation seiner Orientierungen ist.
Die Population valider Transformationen $^{0}T_{Endeff}$, welche Resultat der Vereinigung aus $OR_{total}$ und $P_{total}$ sind, zuzüglich einer zugrundeliegenden Metrik, ist Bestandteil der Arbeitsraumanalyse. Dabei ist den Ausführungen zur Generierung aller Orientierungen $OR_{total}$ zu entnehmen, dass diese auf den Polarkoordinaten $^{0}s \in S^{2}$ einer Sphäre basieren, welche durch ihren Ursprung und Radius definiert ist. Der Implementiere Algorithmus zur Ermittlung aller Transformationen $^{0}T_{Endeff}$ kombiniert diese Mengen, indem jeder Vektor $^{0}p \in P_{total}$ den Ursprung einer Sphäre darstellt, und demzufolge Ausgangspunkt der Kalkulation seiner Orientierungen ist.
\subsection{Erfassung der Orientierungen und Positionen}
Aufgrund der Erörterung von Zacharias et al., welche die Erfassung von $P_{total}$ anhand von Zufallsverfahren als unzureichend bezüglich der Repräsentation des Umfelds robotischer Systeme klassifiziert, wird in der Implementierung stattdessen die kubische Diskretisierung angewandt. Demzufolge ist die Menge $P_{total}$ von den Größen $q, a \in \R_{+}$ abhängig die das Intervall des entstehenden Würfels, beziehungsweise den Abstand zwischen den Vektoren $^{0}p \in P_{total}$ definieren. \par
Die Erfassung aller Orientierungen $OR_{total}$ basiert ebenfalls nicht auf Pseudozufall, da die anschließenden kinematischen Berechnungen den zeitaufwändigsten Faktor der Arbeitsraumanalyse darstellen, folglich ist eine Implementierung, dessen Resultat von der kumulativen Betrachtung einer enormen Anzahl an sphärischer Koordinaten abhängt, gleichermaßen unzulänglich. Dies impliziert den Einsatz der sphärischen Diskretisierungen durch gleichmäßiger beziehungsweise ungleichmäßiger Verteilung. \par
Durch die Wahl des festen Abstands $a$ bezüglich der kubischen Diskretisierung und Definition der Vektoren $^{0}p \in P_{total}$ als Zentrum einer Sphäre, kann der Radius der Sphäre kalkuliert werden().
Zusätzlich empfiehlt sich die vollständige Auslagerung der Berechnungen auf das Hochleistungsrechenzentrum der TU-Dresden, um diese mit dem Gitlab.Ci Interface über große Zeiträume vorzunehmen. \autoref{fig:RM} zeigt die Struktur der JSON-Datei, die als Artefakt der Berechnung von Gitlab entnommen werden kann.
Aufgrund der Erörterung von Zacharias et al., welche die Erfassung der Menge $P_{total}$ anhand von Zufallsverfahren als unzureichend bezüglich der Repräsentation des Umfelds robotischer Systeme klassifiziert, wird in der Implementierung stattdessen die kubische Diskretisierung angewandt \cite{Zacharias2007}. Demzufolge ist die Menge $P_{total}$ von den Größen $q, a \in \R_{+}$ abhängig die das Intervall des entstehenden Würfels, beziehungsweise den Abstand zwischen den Vektoren $^{0}p \in P_{total}$ definieren. \par
Die Erfassung aller Orientierungen $OR_{total}$ basiert ebenfalls nicht auf Pseudozufall, da die anschließenden kinematischen Berechnungen den zeitaufwändigsten Faktor der Arbeitsraumanalyse darstellen, folglich ist eine Implementierung, dessen Resultat von der kumulativen Betrachtung einer enormen Anzahl sphärischer Koordinaten abhängt, gleichermaßen unzulänglich. Dies impliziert den Einsatz der sphärischen Diskretisierungen durch gleichmäßiger beziehungsweise ungleichmäßiger Verteilung. \par
\begin{figure}[h!]
\begin{lstlisting}[language=JSON,firstnumber=1]
\begin{equation}
\label{eq:23}
r = \frac {a}{2}
\end{equation}
Durch die Wahl des festen Abstands $a$ bezüglich der kubischen Diskretisierung und Definition der Vektoren $^{0}p \in P_{total}$ als Zentrum einer Sphäre, wird der Radius $r \in \R_{+}$ der Sphäre nach \autoref{eq:23} kalkuliert.
Zusätzlich empfiehlt sich die vollständige Auslagerung der Berechnungen auf performantere Rechner, um diese mit mehreren Rechenkernen zu operieren. Beispielsweise empfiehlt sich für diese Arbeit das Hochleistungsrechenzentrum der TU-Dresden. \autoref{lst:1} zeigt die Struktur der JSON-Datei, die als Artefakt der Berechnung in Gitlab entnommen werden. Die Felder 'resolution' und 'maxdistance' entstammen den Parametern der kubischen Diskretisierung und definieren den Namen der Datei. Das Feld 'pose' enthält die String-Repräsentation aller Endeffektor-Posen in einer Liste. Diese bestehen aus Position und Orientierung, wobei die Orientierung als Quaternion notiert ist, was dem Präfix q\_ zu entnehmen ist. Das Ergebnis der kinematischen Funktion aus \autoref{eq:7} als Informationen bezüglich der Erreichbarkeit der Pose ist als Wahrheitswert/bool in der Liste des Feldes 'value' dokumentiert.
\begin{lstlisting}[language=JSON,firstnumber=1, caption={Struktur der RM als Resultat der Arbeitsraumanalyse},captionpos=b, label={lst:1}]
{"name": "RM_\$(maxdistance)_\$(resolution)"
"resolution": float,
"max_distance": float,
......@@ -61,138 +57,143 @@ Zusätzlich empfiehlt sich die vollständige Auslagerung der Berechnungen auf da
"value": [true | false]
}
\end{lstlisting}
\caption{Die Felder 'resolution' und 'maxdistance' entstammen den Parametern der kubischen Diskretisierung und definieren den Namen der Datei. Das Feld 'pose' enthält die String-Repräsentation aller Endeffektor-Posen in einer Liste. Diese bestehen aus Position und Orientierung, wobei die Orientierung als Quaternion notiert ist, was dem Präfix q zu entnehmen ist. Die Informationen bezüglich der Erreichbarkeit einer Pose ist als bool in der Liste des Feldes 'value' dokumentiert. }\label{fig:RM}
\end{figure}
\begin{align*}
r = \frac {a}{2}
\end{align*}
\subsection{Komplexität}
Bei derart zeitaufwändigen Verfahren, ist die Betrachtung der Komplexität essenziell, um die Anzahl aller auszuführenden Operationen und somit dessen maximalen Zeitaufwand zu prognostizieren. Eine Einordnung der zeitlichen Komplexität ist durch die Betrachtung der Kardinalitäten der jeweiligen Mengen praktikabel.
Derart zeitaufwändigen Verfahren erfordern die Betrachtung der Komplexität, um anhand dessen die Anzahl aller auszuführenden Operationen und somit dessen maximalen Zeitaufwand zu prognostizieren. Die \autoref{eq:24} illustriert eine Einordnung der zeitlichen Komplexität ist durch die Betrachtung der Kardinalitäten der jeweiligen Mengen.
\begin{align*}
& \mathcal{O}(\vert P_{total} \vert \times \vert OR_{total} \vert) & ()\\
& \mathcal{O}((\frac{2 \times q}{a} + 1)^{3} \times \vert OR_{total} \vert) & ()\\
& \mathcal{O}((\frac{2 \times q}{a} + 1)^{3} \times \vert S \vert \times \vert Roll \vert) & ()
\end{align*}
\begin{equation}
\label{eq:24}
\begin{split}
& \mathcal{O}(\vert P_{total} \vert \times \vert OR_{total} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \vert OR_{total} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \vert S \vert \times \vert Roll \vert)
\end{split}
\end{equation}
Aus dieser Illustration ist abzuleiten, dass die Wahl der Faktoren $q, a \in \R_{+}$, sowie die Menge sphärischer Vektoren $S$ und der zusätzlich betrachteten Roll Winkel, welche Grundlegende Parameter der kubischen Diskretisierung beziehungsweise sphärischen Diskretisierung darstellen, die Komplexität kubisch oder linear beeinflussen. Basierend auf den folgenden Überlegungen und daraus resultierenden Vereinfachungen, kann die Auswirkung der sphärische Komponente auf die Komplexität dezimiert werden.
Aus dieser Illustration ist abzuleiten, dass die Wahl der Faktoren $q, a \in \R_{+}$, sowie die Menge sphärischer Vektoren $S^{2}$ und der zusätzlich betrachteten Roll Winkel, welche Grundlegende Parameter der kubischen Diskretisierung beziehungsweise sphärischen Diskretisierung darstellen, die Komplexität kubisch oder linear beeinflussen. Basierend auf den folgenden Überlegungen und daraus resultierenden Vereinfachungen, kann die Auswirkung der sphärische Komponente auf die Komplexität dezimiert werden.
\subsubsection{Vereinfachung des Roll Segments}
Um die Komplexität zu beschränken, wird beruhend auf der Bauart eines Roboterarms die Annahme getroffen, dass der Endeffektor zu jeder Zeit eine vollständige Drehung um seine longitudinal Achse vollziehen kann. Dies dezimiert die Kardinalität $\vert OR_{total} \vert$ um das Roll Segment und stellt ein Ersparnis hinsichtlich einer Dimension an Berechnungen während der Analyse dar. Daraus resultiert die Menge $OR_{total}^{/R}$, dessen Kardinalität die folgende Gleichung zeigt.
Um die Komplexität zu beschränken, wird beruhend auf der Bauart eines Roboterarms die Annahme getroffen, dass der Endeffektor zu jeder Zeit eine vollständige Drehung um seine longitudinal Achse vollziehen kann. Dies dezimiert die Kardinalität $\vert OR_{total} \vert$ um das Roll Segment und stellt ein Ersparnis hinsichtlich einer Dimension an Berechnungen während der Analyse dar. Daraus resultiert die Menge $OR_{total}^{/R}$, dessen Kardinalität die folgende \autoref{eq:25} zeigt.
\begin{align*}
& \vert ^{0}OR_{total} \vert = \vert S \vert \times \vert Roll \vert \\
& \vert ^{0}OR_{total}^{/R} \vert = \vert S \vert
\end{align*}
\begin{equation}
\begin{split}
\label{eq:25}
& \vert ^{0}OR_{total} \vert = \vert S^{2} \vert \times \vert Roll \vert \\
& \vert ^{0}OR_{total}^{/R} \vert = \vert S^{2} \vert
\end{split}
\end{equation}
\subsubsection{Vereinfachung der sphärischen Vektoren S}
Eine weitere Vereinfachung stellt die Annahme dar, dass Objekte nicht von unten gegriffen werden können beziehungsweise dieses spezifische vorgehen nicht teil der zu bewältigenden Aufgabe ist. Dies stellt eine Halbierung bezüglich der sphärischen Vektoren S dar, indem für eine Sphäre alle Vektoren $^{0}s \in S$, deren Element $^{0}z \in ^{0}s : ^{0}z \in \R$ kleiner als das dazugehörige $^{0}z \in ^{0}p : ^{0}z \in \R$ Element des Zentrums $^{0}p$ bezüglich der assoziierten Sphäre ist.
\subsubsection{Vereinfachung der sphärischen Vektoren}
Eine weitere Vereinfachung stellt die Annahme dar, dass Objekte nicht von unten gegriffen werden können beziehungsweise dieses spezifische vorgehen nicht Teil der zu bewältigenden Aufgabe ist. Dies stellt eine Halbierung bezüglich der sphärischen Vektoren dar, indem für eine Sphäre $S^{2}$ alle Vektoren $^{0}s \in S^{2}$, deren Element $^{0}z \in ^{0}s$ kleiner als das dazugehörige $^{0}z \in ^{0}p $ Element des Zentrums $^{0}p$ bezüglich der assoziierten Sphäre ist. \autoref{eq:26} visualisiert die resultierende Menge $S_{/2}^{2}$ und dessen Kardinalität.
\begin{align*}
& S_{/2} = \{s\in \R^{3} : \vert \overline{sp} \vert = r \land s.z > p.z \} \\
& \vert S_{/2} \vert = \frac{\vert S \vert}{2}
\end{align*}
\begin{equation}
\label{eq:26}
\begin{split}
& S_{/2}^{2} = \{ ^{0}sz > ^{0}pz | ^{0}sz \in ^{0}s, ^{0}pz \in ^{0}p \} \\
& \vert S_{/2} \vert = \frac{\vert S^{2} \vert}{2}
\end{split}
\end{equation}
\subsubsection{Vereinfachte Komplexität}
Aus den Vereinfachungen bezüglich verschiedener Aspekte der Menge $OR_{total}$ und dessen zugrundeliegender sphärischer Diskretisierung, resultiert folgende zeitliche Komplexität.
Aus den Vereinfachungen bezüglich verschiedener Aspekte der Menge $OR_{total}$ und dessen zugrundeliegender sphärischer Diskretisierung, resultiert durch deren Anwendung in \autoref{eq:27} die zeitliche Komplexität $\mathcal{O}((\frac{2 \times q}{a})^{3} \times \frac{\vert S \vert}{2}$.
\begin{align*}
& \mathcal{O}(\vert P_{total} \vert \times \vert OR_{total} \vert) & ()\\
& \mathcal{O}((\frac{2 \times q}{a} + 1)^{3} \times \vert OR_{total} \vert) & () \\
& \mathcal{O}((\frac{2 \times q}{a} + 1)^{3} \times \vert ^{0}OR_{total}^{/R} \vert) & () () \\
& \mathcal{O}((\frac{2 \times q}{a} + 1)^{3} \times \vert S \vert) & () () \\
& \mathcal{O}((\frac{2 \times q}{a} + 1)^{3} \times \frac{\vert S \vert}{2}) & ()
\end{align*}
\begin{equation}
\label{eq:27}
\begin{split}
& \mathcal{O}(\vert P_{total} \vert \times \vert OR_{total} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \vert OR_{total} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \vert OR_{total}^{/R} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \vert S^{2} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \vert S_{/2}^{2} \vert) \\
& \mathcal{O}((\frac{2 \times q}{a})^{3} \times \frac{\vert S \vert}{2})
\end{split}
\end{equation}
\subsection{Verfahren der sphärischen Diskretisierung}
Aus vorangegangenen Kapiteln ist bekannt, dass die sphärische Diskretisierung durch Abtastung der Winkelintervalle oder der Verteilung von $n \in \N $ sphärischen Vektoren $^{0}s$ auf einer Sphäre, erfolgt. Das Abtasten der Winkelintervalle basierend auf einer festen Auflösung generiert ein ungleichmäßiges sphärisches Gitter, wodurch die Vektoren $^{0}s$ nicht äquidistant verteilt sind. Zusätzlich ist die Distanz der Vektoren an den Polen marginal. Diese Beobachtungen implizieren, dass die resultierende Menge $OR_{total}$ durch dessen hohes Maß an ähnlichen und uneinheitlichen Orientierungen, für die Bewertung der Erreichbarkeit nicht geeignet ist.
Daraus ist abzuleiten, dass die Verteilung der Vektoren $^{0}s$ für eine qualitative Repräsentation der Erreichbarkeit des Vektors $^{0}p_{Endeff}$ durch den Endeffektor, sowie der zeitlichen Aufwand aller kinematischen Berechnungen, maßgeblich ist.
Aus vorangegangenen Kapiteln ist bekannt, dass die sphärische Diskretisierung durch Abtastung der Winkelintervalle oder der Verteilung von $n \in \N $ Vektoren $^{0}s$ auf einer Sphäre, erfolgt. Das Abtasten der Winkelintervalle basierend auf einer festen Auflösung generiert ein ungleichmäßiges sphärisches Gitter, wodurch die Vektoren $^{0}s$ nicht äquidistant verteilt sind. Zusätzlich zeigt \autoref{fig:7}, dass die Distanz der Vektoren an den Polen marginal. Diese Beobachtungen implizieren, dass die resultierende Menge $OR_{total}$ durch dessen hohes Maß an ähnlichen und uneinheitlichen Orientierungen, für die Bewertung der Erreichbarkeit nicht geeignet ist. Demnach ist die äquidistante Verteilung der Vektoren $^{0}s$ für eine qualitative Repräsentation der Erreichbarkeit eines Vektors $^{0}v_{Endeff}$, sowie der Dezimierung des zeitlichen Aufwands aller kinematischen Berechnungen, maßgeblich ist.
\begin{figure}
\label{fig:7}
\centering
\begin{tikzpicture} % "THE GLOBE" showcase
\def\R{2.5} % sphere radius
\def\angEl{35} % elevation angle
\filldraw[ball color=white] (0,0) circle (\R);
\foreach \t in {-80,-60,...,80} { \DrawLatitudeCircle[\R]{\t} }
\foreach \t in {-5,-35,...,-175} { \DrawLongitudeCircle[\R]{\t} }
\end{tikzpicture}
\caption{Gitter aus nicht äquidistanten Vektoren einer sphärischen Diskretisierung. Die Distanz zwischen Vektoren an den Polen ist vernachlässigbar gering.}
\end{figure}
\subsubsection{Gleichmäßige Verteilung}
Methoden wie die Fibonacci- oder Spiral- Verteilungen bieten minimale Abweichungen, empfehlen sich daher für die Orientierungsgenerierung und bilden eine angemessene Repräsentation der Erreichbarkeit des Vektors $^{0}p_{Endeff}$. Sie gehören zu den von Mikhal et al. angewendeten Methoden zur Arbeitsraumanalyse eines robotischen Systems \cite{Makhal.2018}. Deserno stellt in seiner Arbeit zur verteilungsbasierten sphärischen Diskretisierung eine Methode der gleichmäßigen Verteilung, welche bisher nicht zum Zweck der Roboterplatzierung genutzt wurde, vor. Seine Abweichung beläuft sich auf ... und wird daher in dieser wissenschaftlichen Arbeit verwendet \cite{Deserno.2004}.
Methoden wie die Fibonacci- oder Spiral- Verteilungen bieten minimale Abweichungen, empfehlen sich daher für die Orientierungsgenerierung und bilden daher eine im Kontext dieser wissenschaftlichen Arbeit angemessene Repräsentation der Erreichbarkeit des Vektors $^{0}p_{Endeff}$. Sie gehören neben der ungleichmäßigen Diskretisierung zu den von Mikhal et al. angewendeten Methoden zur Arbeitsraumanalyse eines robotischen Systems \cite{Makhal2018}. Deserno stellt in seiner Arbeit zur äquidistanten sphärischen Diskretisierung eine Methode der gleichmäßigen Verteilung, welche bisher nicht zum Zweck der Roboterplatzierung genutzt wurde, vor. Die Dokumentierte Pseudoimplementierung wurde für diese wissenschaftliche Arbeit übernommen. \cite{Deserno2004}.
\section{Invertierte Arbeitsräume}
Ziel dieses Abschnitts ist die Illustrierung des grundlegenden Ansatzes, dessen sich hinsichtlich der Eruierung optimaler Positionen hinsichtlich der Platzierung robotischer Systeme bedient wird. Dies beinhaltet die Anwendung der in den Grundlagen aufgeführten kinematischen Sachverhalte, sowie der Voraussetzung einer vorhandenen Transformation $t$ des zu betrachtenden Objektes ....
Ziel dieses Abschnitts ist die Präzisierung des grundlegenden Ansatzes, dessen sich hinsichtlich der Eruierung optimaler Positionen bezüglich der Platzierung robotischer Systeme bedient wird. Dies beinhaltet die Anwendung der in den Grundlagen aufgeführten kinematischen Sachverhalte, sowie der Voraussetzung einer Pose $t \in A$ des zu operierenden Objekts, wobei $A \subset SE(3)$ die Menge aller Aufgabenposen relativ zum $Frame_{0}$ ist.
\begin{equation}
t = ^{0}T_{Endeff}
\end{equation}
Eine persistierte $RM$ beinhaltet eine Liste aller Vektoren $v \in P_{total}$ des kubisch diskretisierten Roboterumfeldes mit dessen zugehörigen Orientierungen $R \in OR_{total}$, zuzüglich des Ergebnisses der Funktion $f_{kin}$ aus \autoref{eq:7}. Jede positiv terminierte kinematische Berechnung klassifiziert die operierte Transformation als valide Endeffektor Pose. Für jede dieser validen Transformationen gilt nach \autoref{eq:6}, dass eine kinematische Kette jener Form existiert.
Eine persistierte 'reachability map' beinhaltet eine Liste aller Vektoren $p \in \R^{3}$ des kubisch diskretisierten Roboterumfeldes mit dessen zugehörigen Orientierungen $R \in SO(3)$, für die kinematische Berechnungen erfolgreich terminieren, beziehungsweise die Transformation bestehend aus $(p,R) \in ^{0}T_{endeff}$ eine valide Endeffektor Pose ist. Für jede dieser validen Transformationen gilt nach ..., dass eine kinematische Kette der Form ... existiert.
Die Roboterbasis kann der Pose des ersten Festkörpers in Form der Transformation $^{0}T_{Base}$ eines robotischen Systems entnommen werden, wie die Umformungen in \autoref{eq:28} sukzessiv zeigen. Dabei ist in diesem Beispiel die Transformation von $Frame_{0}$ zu $Frame_{1} = Frame_{Base}$ die Identität 1, da der Roboter keine Erhöhung durch einen Standfuß aufweist, sondern seine Basis $^{0}T_{Base}$ auf dem fixen $Frame_{0}$ des kinematischen Baumes liegt. Sollte dem nicht so sein, ist eine zusätzliche Berechnung erforderlich.
\begin{equation}
^{0}T_{Endeff} = ^{0}T_{1} \times ^{1}T_{2} \times ... ^{n-1}T_{n} (n.. Anzahl der Festkörper des robotischen Systems)
\label{eq:28}
\begin{split}
^{0}T_{Base} &= t \times ^{0}T_{Endeff} \\
^{0}T_{Base} &= t \times ^{0}T_{1} \times ... ^{Endeff-1}T_{Endeff} \\
^{0}T_{Base} &= t \times (^{0}T_{1} \times ... ^{Endeff-1}T_{Endeff})^{-1} \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{Endeff}T_{Endeff-1} \times ... ^{Base}T_{0} \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{Endeff}T_{Endeff-1} \times ... ^{2}T_{Base} \times 1 \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{Endeff}T_{Endeff-1} \times ... ^{2}T_{Base} \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{Endeff}T_{Base} \\
^{0}T_{Base} &= ^{0}T_{Base}
\end{split}
\end{equation}
Die Roboterbasis kann der Pose des ersten Festkörpers in Form der Transformation $^{0}T_{Base}$ eines robotischen Systems entnommen werden, wie die Umformungen in ... sukzessiv zeigen. Die Transformation von $Frame_{0}$ zu $Frame_{1} = Frame_{Base}$ ist hierbei 1, da der Roboter in dieser Betrachtung keine Erhöhung durch beispielsweise einem Standfuß besitzt, sondern seine Basis $^{0}T_{Base}$ auf dem $Frame_{0}$ liegt. In diesem Fall erfolgt eine Berechnung zur Positionierung des Standfußes samt Roboter.
\begin{align*}
^{0}T_{Base} &= t \times ^{0}T_{Endeff} () \\
^{0}T_{Base} &= t \times (^{0}T_{1} \times ^{1}T_{2} \times ... ^{n-1}T_{n})^{-1} () \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{n}T_{n-1} \times ... ^{Base}T_{0} () \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{n}T_{n-1} \times ... ^{2}T_{Base} () \\
^{0}T_{Base} &= ^{0}T_{Endeff} \times ^{Endeff}T_{Base} () \\
^{0}T_{Base} &= ^{0}T_{Base} ()
\end{align*}
Die Metrik aus \autoref{eq:18} wird dabei zu den inversen Transformationen $^{0}T_{Base}$ portiert und als Menge $IRM$ in eine JSON Datei persistiert, dessen Struktur der \autoref{lst:2} zeigt, wobei die Felder 'pose' und 'value' nicht aus der zugrundeliegenden $RM$ übernommen wurden. Das Ergebnis dieses Algorithmus kann bei Formeln der Form \autoref{eq:20} Angewendet werden, um die Roboter Positionierung hinsichtlich der Definition einer spezifischen Aufgabe zu errechnen.
Die Metrik aus ... wird dabei bei den inversen Transformationen $^{Endeffektor}T_{basis}$ portiert und in eine JSON Datei persistiert, dessen Struktur die \autoref{fig:IRM} zeigt.
und persistiert. Das Ergebnis dieses Teilprogramms kann nun bei Formeln der Form ... Angewendet werden, um die Roboter Positionierung hinsichtlich der Definition einer spezifischen Aufgabe zu errechnen.
Die resultierende
\begin{figure}[h!]
\begin{lstlisting}[language=JSON,firstnumber=1]
\begin{lstlisting}[language=JSON,firstnumber=1, caption={In 'value' werden alle kalkulierten Werte der Metrik persistiert, während 'pose' alle invertierten Endeffektor Posen enthält},captionpos=b, label={lst:2}]
{"name": "IRM_\$(maxdistance)_\$(resolution)"
"resolution": float,
"max_distance": float,
"pose": [ "x y z q_x q_y q_z q_w"],
"value": [float]
}
"value": [float]}
\end{lstlisting}
\caption{Bis auf die Felder 'pose' und 'value' werden alle Informationen aus der reachability map übernommen. In 'value' werden alle kalkulierten Werte der Metrik persistiert, während 'pose' alle invertierten Endeffektor Posen enthält}\label{fig:IRM}
\end{figure}
\section{Definition spezifischer Aufgaben}
Das Konzept zur Planung und Erstellung spezifischer Aufgaben, sowie deren Realisierung innerhalb einer Szene und Visualisierung in Rviz ist Inhalt dieses Abschnittes. Dabei besteht eine Szene aus Kollisionsobjekten, welche Hindernisse oder Primitive darstellen, die das robotische System umgehen oder mit denen es Interagieren muss. Die Planung und Ausführung einer Aufgaben erfolgt über spezifische Nachrichten des MoveGroup Interface, welche dem Roboter die auszuführende Operation detailliert kommunizieren, Primitive in der Szene spezifizieren und Posen festgelegt, die vor und nach der Handlung angenommen werden soll.
Aktuell bietet MoveIt die Möglichkeit, beliebig Kollisionsobjekte in der Szene zu generieren und persistieren, aber keinen Algorithmus zur Aufgabenbeschreibung, welcher die Reihenfolge konkretisiert, in der die Kommunikation mit den robotischen Systemen stattfindet. Diese fehlende Funktion wird mittels eines Algorithmus ergänzt, der Interaktionen, wie beispielsweise die Translation und Rotation eines Kollisionsobjektes, durch den Nutzer und der grafischen Bedienoberfläche realisiert und anhand zusätzliche Optionen die Dokumentation von Aufgaben ermöglicht. Dabei empfehlen sich Interaktive Marker durch ihren Funktionsumfang zur Repräsentation der Kollisionsobjekte, und bieten weitere Optionen zur Aufgabenbeschreibung in ihren Menüs.
Eine valide Aufgabenbeschreibung kann in JSON Dateien persistiert werden, dessen Struktur in \autoref{fig:TASK} veranschaulicht und zur Durchführung der Aufgabe durch robotische Systeme bedingt ist.
Das Konzept zur Planung und Erstellung spezifischer Aufgaben, sowie deren Realisierung innerhalb einer Szene und Visualisierung in einer geeigneten graphischen Umgebung wie beispielsweise RViz, ist Inhalt dieses Abschnittes. Dabei besteht eine Szene aus Kollisionsobjekten, welche Hindernisse oder Primitive definieren, die das robotische System umgehen beziehungsweise mit denen es Interagieren muss. Die Planung und Ausführung einer Aufgaben erfolgt über spezifische Nachrichten des MoveGroup Interface, welche dem Roboter die auszuführende Operation detailliert kommunizieren, Primitive in der Szene spezifizieren und Posen festgelegt, die vor und nach der Handlung angenommen werden sollen.
Aktuell bietet MoveIt die Möglichkeit, beliebig Kollisionsobjekte in der Szene zu generieren und persistieren, aber keinen Algorithmus zur Aufgabenbeschreibung, welcher die Reihenfolge konkretisiert, in der die Kommunikation mit den robotischen Systemen stattfindet. Diese fehlende Funktion wird mittels eines Algorithmus ergänzt, welcher die Interaktionen, wie beispielsweise die Translation und Rotation eines Kollisionsobjektes, durch den Nutzer und der grafischen Bedienoberfläche realisiert und anhand zusätzliche Optionen die Dokumentation von Aufgaben ermöglicht. Dabei empfehlen sich Interaktive Marker durch ihren Funktionsumfang zur Repräsentation der Kollisionsobjekte, und bieten weitere Optionen zur Aufgabenbeschreibung in ihren Menüs.
Eine valide Aufgabenbeschreibung kann in JSON Dateien persistiert werden, dessen Struktur der \autoref{lst:3} veranschaulicht und zur Durchführung der Aufgabe durch robotische Systeme bedingt ist.
\begin{figure}[h!]
\begin{lstlisting}[language=JSON,firstnumber=1]
\begin{lstlisting}[language=JSON,firstnumber=1, caption={Der Nutzer hat die Möglichkeit, seine Aufgabe zu benennen. Das Feld 'position' ist eine Liste aller Aufgaben-Posen in Form einer Kette, die das jeweilige robotische System operieren muss.},captionpos=b, label={lst:3}]
{"name": "TASK_"
"position": [ "x y z q_x q_y q_z q_w"],
"starts": [int],
"mode": "split" | "coop"
}
\end{lstlisting}
\caption{Der Nutzer hat die Möglichkeit, seine Aufgabe zu benennen. Das Feld 'position' ist eine Liste aller Aufgaben-Posen, während 'starts' die Indexe enthält, an denen das jeweilige robotische System die Iteration der Kette beginnt. Das 'mode' Feld dokumentiert den Aufgabentyp.}\label{fig:TASK}
\end{figure}
\subsection{Operationsketten}
Aufgaben, wie das sequentielle Greifen und Abstellen eines Objektes gehören zur Aufgabengruppe '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$, dessen Kettenglieder von robotischen Systemen abwechselnd iteriert werden. 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 abstrahiert voneinander oder kooperativ operiert werden.
\subsubsection{Gespaltene Operationskette}
Gespaltene Operationsketten 'splits' partitionieren $K$ in $i \in \N_{>0}$ disjunkte Teilketten $TK \subset K $, welche $i$ Roboter isoliert voneinander operieren. Realisiert wird dieser Kettentyp durch die Angabe des 'split' Parameters im Interaktive Marker Menü.
Gespaltene Operationsketten 'splits' partitionieren $K$ in $i \in \N_{>0}$ disjunkte Teilketten $TK \subset K $, welche $i$ Roboter isoliert voneinander operieren.
Diese Aufgaben sind implizit durch die enthaltenen Teilketten im Positionsfeld der Aufgabenbeschreibung gegeben, indem alle enthaltenen Positionen disjunkt sind.
\subsubsection{Kooperative Operationskette}
Kooperative Ketten 'coops' partitionieren $K$ in $i$ Teilketten $TK_{i-1}, TK_{i} \subset K $, deren Schnittmenge das jeweils letzte und erste Glied von $TK_{i-1}$ beziehungsweise $TK_{i}$ ist. Diese Einteilung impliziert, dass die Position innerhalb der Abstellnachricht des Vorgängerroboters ebenfalls Inhalt der Greifnachricht des Roboters $i$ ist.
Kooperative Ketten 'coops' partitionieren $K$ in $i$ Teilketten $TK_{i-1}... TK_{0} \subset K $, deren Schnittmenge das jeweils letzte und erste Glied von $TK_{i-1}$ beziehungsweise $TK_{i-2}$ ist. Diese Einteilung impliziert, dass die Position innerhalb der Abstellnachricht des Vorgängerroboters ebenfalls Inhalt der Greifnachricht des Roboters $i$ ist, was dem Positionsfeld der Aufgabenbeschreibung zu entnehmen ist.
\subsection{Trajectory}
In dieser Aufgabengruppe bilden alle Positionen, die durch den Endeffektor erreicht werden sollen, eine 3-dimensionale Kurve. Kurvenimplementieren, wie Beispielsweise die Bezierkurve, können für diese Aufgaben genutzt werden, indem Interaktive Marker die Kontrollpunkte der Kurve realisieren. Durch diesen Prozess entstehen wohlgeordnete Mengen aus $t = ^{0}T_{Endeff}$ Transformationen die ähnlich der Operationsketten von mehreren Robotern bearbeitet werden können.
\subsection{Trajektorien}
In dieser Aufgabengruppe bilden alle Positionen, die durch den Endeffektor operiert werden sollen, eine 3-dimensionale Kurve. Kurvenimplementieren, wie Beispielsweise die Bezierkurve, können für diese Aufgaben implementiert werden, indem Interaktive Marker die Kontrollpunkte der Kurve realisieren. Durch diesen Prozess entstehen wohlgeordnete Mengen aus $^{0}T_{Endeff}$ Transformationen die ähnlich der Operationsketten von mehreren Robotern bearbeitet werden können.
\section{Positionsanalyse}
Aus den persistierten Informationen der Arbeitsraumanalyse, dem Ansatz der invertierten Arbeitsräume und dessen Vereinigung mit den Aufgabenbeschreibungen resultiert die Menge der Basispositionen $P_{Base}$ kombiniert mit der Metrik D für jeden Vektor $^{0}p_{Base} \in ^{0}P_{Base}$.
Der beschriebene Algorithmus zur Ermittlung der optimalen Position sieht vor, anhand der Voxelisierung einen Index für jeden Voxel zu kalkulieren und daraus Rückschlüsse bezüglich der Positionierung robotischer Systeme zu ziehen. Nachteil dieses Vorgangs ist die Intransparenz der Menge $P_{Base}$ bezüglich der Vektor $^{0}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. Ein weiterer Nachteil ergibt sich implizit aus dem Index, denn diese Bewertet eine Box, ohne dessen Inhalt bezüglich der Aufgabenbeschreibung zu gewichten. So werden beispielsweise Boxen mit hoher Kardinalität besser für die Aufgabe gewichtet, 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.
Aus den persistierten Informationen der Arbeitsraumanalyse, dem Ansatz der invertierten Arbeitsräume und dessen Vereinigung mit den Aufgabenbeschreibungen resultiert die Menge der Basispositionen $P_{Base}$ kombiniert mit der Metrik $D_{Reach}$ aus \autoref{eq:18} für jeden Vektor $^{0}p_{Base} \in ^{0}P_{Base}$.
Der beschriebene Algorithmus zur Ermittlung der optimalen Position sieht vor, anhand der Voxelisierung einen Index für jeden Voxel zu kalkulieren und daraus Rückschlüsse bezüglich der Positionierung robotischer Systeme zu ziehen. Nachteil dieses Vorgangs ist die Intransparenz der Menge $P_{Base}$ bezüglich der Vektor $^{0}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. Ein weiterer Nachteil ergibt sich implizit aus der Metrik $D_{Voxel}$ aus \autoref{eq:22}, denn diese 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 gewichtet, 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}
Der in diesem Abschnitt dokumentierte Algorithmus stellt einen optimierten Ansatz zur Positionierung robotischer Systeme dar, indem die Operationsketten bezüglich einer Aufgabenbeschreibung in den Prozess integriert werden. Während der differenzierten Voxelisierung wird jedes Kettenglied $^{0}k \in K$ einzeln betrachtet und die Metrik $D_{Reach_{i}}^{average}(Box)$ pro Box und Kettenlied kalkuliert. Dieser Vorgang bietet den Vorteil, die Boxen separat anhand der Teilketten $TK \subset K $ zu betrachten und durch dieser Zuteilung jede Teilkette einem robotischen System zuzuteilen. Für jede Box lässt sich so ein Index ermitteln, der den Ursprung der Vektoren $^{0}p_{Base} \in ^{0}P_{Base}$ berücksichtigt und gleichermaßen nach dessen Inhalt bewertet.
Der in diesem Abschnitt dokumentierte Algorithmus stellt einen optimierten Ansatz zur Positionierung robotischer Systeme dar, indem die Operationsketten bezüglich einer Aufgabenbeschreibung in den Prozess integriert werden. Während der differenzierten Voxelisierung wird jedes Kettenglied $^{0}k \in K$ einzeln betrachtet und die Metrik $D_{Reach_{i}}^{average}(Voxel)$ pro Voxel und Kettenlied kalkuliert. Dieser Vorgang bietet den Vorteil, die Voxel separat anhand der Teilketten $TK \subset K $ zu betrachten und durch dieser Zuteilung jede Teilkette einem robotischen System zuzuteilen. Für jeden Voxel lässt sich so ein Index ermitteln, der den Ursprung der Vektoren $^{0}p_{Base_{i}} \in ^{0}P_{Base}$ berücksichtigt und gleichermaßen nach dessen Inhalt bewertet.
Das kaputt, muss ich später überarbeiten.
\begin{equation}
I(Box)(TK) = \frac{\displaystyle\sum_{i=0}^{\vert TK \vert} D_{Reach_{i}}^{average}(Box)}{\vert TK \vert}
\label{eq:29}
I(Voxel)(TK) = \frac{\displaystyle\sum_{i=0}^{\vert TK \vert} D_{Reach_{i}}^{average}(Voxel)}{\vert TK \vert}
\end{equation}
\section{Implementierung}
\chapter{Erkenntnisse zur Platzierung robotischer Systeme} \label{ch:sota}
Den dargelegten Grundlagen beziehungsweise dessen Abschnitt zur Formulierung der Anforderungen ist zu entnehmen, dass die Platzierung robotischer Systeme innerhalb einer Domäne ein fundamentaler Bestandteil zur Schaffung kollaborative Multi-Roboter Arbeitsplätze 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. in ihrer wissenschaftlichen Arbeit und kombiniert diesen in folgenden Publikationen mit zusätzlichen Aspekten der Kinematik. Infolge dieser Ausführungen wird ein Algorithmus erörtert, der mittels Komposition der Komponenten 'Arbeitsraumanalyse', 'Arbeitsrauminvertierung' und 'Positionsanalyse' sukzessiv die Position eines Roboters hinsichtlich seiner Grenzen bestimmt. Inhalt dieses Kapitels ist die Auseinandersetzung mit angewandten Methodiken der genannten Komponenten, um daraus gewonnene Erkenntnisse in der konzeptuellen Ausarbeitung und Implementierung zu nutzen. \autoref{fig:Algo} zeigt die Reihenfolge der Komponenten im Algorithmus und stellt den Aufbau dieses Kapitels dar.
Den dargelegten Grundlagen beziehungsweise dessen Abschnitt zur Formulierung der Anforderungen ist zu entnehmen, dass die Platzierung robotischer Systeme innerhalb einer Domäne ein fundamentaler Bestandteil zur Schaffung kollaborative Multi-Roboter Arbeitsplätze 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. in ihrer wissenschaftlichen Arbeit und kombiniert diesen in folgenden Publikationen mit zusätzlichen Aspekten der Kinematik \cite{Zacharias2007}. Infolge dieser Ausführungen wird ein Algorithmus erörtert, der mittels Komposition der Komponenten 'Arbeitsraumanalyse', 'Arbeitsrauminvertierung' und 'Positionsanalyse' sukzessiv die Position eines Roboters hinsichtlich seiner Grenzen bestimmt \cite{Zacharias2009}. Inhalt dieses Kapitels ist die Auseinandersetzung mit angewandten Methodiken der genannten Komponenten, um daraus gewonnene Erkenntnisse in der konzeptuellen Ausarbeitung und Implementierung zu nutzen. \autoref{fig:4} zeigt die Reihenfolge der Komponenten im Algorithmus und stellt den Aufbau dieses Kapitels dar.
\begin{figure}[h!]
\centering
......@@ -9,21 +9,22 @@ Den dargelegten Grundlagen beziehungsweise dessen Abschnitt zur Formulierung der
\node[rounded corners, draw=black, thick, minimum height=3em, align=center, on chain, join=by {->}, right = of IRM] (Base) {Analyse der\\Positionen};
\end{tikzpicture}
\caption{Darstellung des Algorithmus zur sukzessiven Ermittlung einer Roboterposition, basierend auf der umfassenden Recherche zahlreicher wissenschaftlicher Publikationen. Die Kommunikation zwischen den Etappen erfolgt mittels Persistenz der Teilergebnisse.
} \label{fig:Algo}
} \label{fig:4}
\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{Vahrenkamp.5620135102013}. Dazu dokumentieren Zacharias et al. in ihrer wissenschaftlichen Arbeit einen Ansatz, dessen Inhalt es ist, durch wiederholtes Anwenden kinematischer Algorithmen $f_{kin}$ auf eine feste Menge generierter Endeffektor-Posen $T \subset SE(3)$ in Form der Transformationen $^{0}T_{Endeff} \in T$ relativ zum $Frame_{0}$, das unmittelbare Umfeld des Roboters zu erfassen, um dieses Anhand einer Metrik zu charakterisieren. Alle Transformation $T$ zuzüglich der Information über dessen Erreichbarkeit bilden die 'reachability map' $RM$, welche persistiert wird.
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 $f_{kin}$, gezeigt in \autoref{eq:7}, auf eine feste Menge generierter Endeffektor-Posen $T \subset SE(3)$ in Form der Transformationen $^{0}T_{Endeff} \in T$ relativ zum $Frame_{0}$, das unmittelbare Umfeld des Roboters zu erfassen, um dieses Anhand einer Metrik zu charakterisieren. Alle Transformation $T$ zuzüglich der Information über dessen Erreichbarkeit bilden die 'reachability map' $RM$, welche persistiert wird \autoref{eq:8}.
\begin{equation}
\begin{equation}\label{eq:7}
f_{kin}:T \to \{0 | 1\}
\end{equation}
\begin{equation}
\begin{equation}\label{eq:8}
RM:= \{(t , f_{kin}(t)) | t \in T \}
\end{equation}
\begin{figure}[h!]
\label{fig:5}
\centering
\begin{tikzpicture} [>=stealth']
\node[circle, fill, inner sep=1] at (0,0,0) (origin) {};
......@@ -43,23 +44,26 @@ RM:= \{(t , f_{kin}(t)) | t \in T \}
\draw[->] (origin) -- (pz);
\end{tikzpicture}
\caption{Abstrahierte Darstellung der Mengen ... und ... und deren resultierende Transformation ... in ....} \label{fig:totals}
\caption{Abstrahierte Darstellung der Mengen $\protect P_{total}$ und $\protect OR_{total}$}
\end{figure}
Das Paar aus einem Vektor $^{0}v \in \R^{3}$ und einer Rotation $^{0}R \in SO(3)$ bildet die Transformation $(^{0}v_{Endeff}, ^{0}R_{Endeff}) \in ^{0}T_{Endeff}$ als Pose des Endeffektors. Daraus ist abzuleiten, dass die Zusammenstellung einer Menge $P_{total}$ aus $^{0}v$ und die Generierung dessen zugehöriger Rotationen $^{0}R$, welche die Menge aller Orientierungen $OR_{total}$ definiert, abstrahiert betrachtet werden können. Das Kreuzprodukt dieser Mengen beschreibt alle Endeffektor Posen in $T$ als Grundlage anschließender kinematischer Berechnungen $f_{kin}$. \autoref{fig:totals} visualisiert diese Mengen.
Das Paar aus einem Vektor $^{0}v \in \R^{3}$ und einer Rotation $^{0}R \in SO(3)$ bildet die Transformation $^{0}T_{Endeff}$ der Pose des Endeffektors. Daraus ist abzuleiten, dass die Zusammenstellung einer Menge $P_{total}$ aus $^{0}v$ und die Generierung dessen zugehöriger Rotationen $^{0}R$, welche die Menge aller Orientierungen $OR_{total}$ definiert, abstrahiert betrachtet werden können, was \label{eq:10} zu entnehmen ist. Das Kreuzprodukt dieser Mengen beschreibt alle Endeffektor Posen in $T$ als die Grundlage anschließender kinematischer Berechnungen $f_{kin}$. \autoref{eq:9} visualisiert diese Mengen.
\begin{equation}
T:= \{ P_{total} \times OR_{total} \} \in T
\label{eq:9}
T:= \{ P_{total} \times OR_{total} \}
\end{equation}
\begin{equation}
\label{eq:10}
^{0}T_{Endeff}:= \{(v,R) | v \in P_{total}, R \in OR_{total} \} \in T
\end{equation}
\subsection{Menge aller Positionen}
Dieser Abschnitt erläutert Methodiken zur Population der Menge $^{0}P_{total}$. Die Wahl der Vektoren $^{0}v \in ^{0}P_{total}$ erfordert das bestimmen eines Intervalls $[-q,q] : q \in \R_{+}$, welches den tatsächlichen Arbeitsraum des robotischen Systems überschätzt. Anschließend erfolgt ein Algorithmus zur Generierung der Elemente $^{0}x, ^{0}y, ^{0}z \in [-q,q]$, die den Vektor $^{0}v$ definieren.
Dieser Abschnitt umfasst Methodiken zur Population der Menge $^{0}P_{total}$. Die Wahl der Vektoren $^{0}v \in ^{0}P_{total}$ erfordert das bestimmen eines Intervalls $[-q,q] : q \in \R_{+}$, welches den tatsächlichen Arbeitsraum des robotischen Systems überschätzt. Anschließend erfolgt ein Algorithmus zur Generierung der Elemente $^{0}x, ^{0}y, ^{0}z \in [-q,q]$, die den Vektor $^{0}v$ definieren. Dieser Sachverhalt ist in \autoref{eq:11} dargestellt.
\begin{equation}
\label{eq:11}
P_{total}:= \{(x, y, z)^{T} | q \in \R_{+}; x, y ,z \in [-q,q] \}
\end{equation}
......@@ -67,14 +71,15 @@ P_{total}:= \{(x, y, z)^{T} | q \in \R_{+}; x, y ,z \in [-q,q] \}
Dieses Verfahren bestimmt die Verteilung der Vektoren $^{0}v$, welche keiner räumlichen oder anderweitigen Abhängigkeit, mit Ausnahme des festen Intervalls $[-q,q]$, unterliegen.
\subsubsection{Positionen durch kubische Diskretisierung}
Die kubische Diskretisierung des Arbeitsraums robotischer Systeme stellt ein Verfahren zur Bestimmung der Vektoren $^{0}v$ dar, welche durch Angabe einer festen 'Auflösung' $ a \in \R_{+}$ das Umfeld des Roboters in ein reguläres Gitter der Grenzen $[-q,q]$ unterteilt. Der daraus resultierende diskretisierte Würfel stellt eine gleichmäßige Verteilung der Vektoren $^{0}v$ im Abstand $a$ innerhalb des Intervalls $[-q,q]$ dar. Die Ermittlung der Kardinalität von $^{0}P_{total}$ ist implizit durch das Intervall $[-q,q]$ und der Auflösung $a$ gegeben.
Die kubische Diskretisierung des Arbeitsraums robotischer Systeme stellt ein Verfahren zur Bestimmung der Vektoren $^{0}v$ dar, welche durch Angabe einer festen 'Auflösung' $ a \in \R_{+}$ das Umfeld des Roboters in ein reguläres Gitter der Grenzen $[-q,q]$ unterteilt. Der daraus resultierende diskretisierte Würfel stellt eine gleichmäßige Verteilung der Vektoren $^{0}v$ im Abstand $a$ innerhalb des Intervalls $[-q,q]$ dar. Die Ermittlung der Kardinalität von $^{0}P_{total}$ ist implizit durch das Intervall $[-q,q]$ und der Auflösung $a$ gegeben, siehe \autoref{eq:12}.
\begin{equation}
\label{eq:12}
\vert ^{0}P_{total} \vert = (\frac{2 \times q}{a})^{3}
\end{equation}
\subsection{Menge aller Orientierungen}
Die Menge $^{0}OR_{total}$ beschreibt alle möglichen Orientierungen, die für jeden Vektor generiert und operiert werden. Ein grundlegendes Verfahren hierzu ist die sphärische Diskretisierung, welche die Approximation einer Sphäre durch Vektoren $^{0}s \in \R^{3}$ um ein Zentrum $^{0}p \in \R^{3}$ mit festem Abstand $r \in \R_{+}$, beschreibt. Ziel dieses Prozesses ist die Entwicklung aller Orientierungen für $^{0}p$ aus den sphärischen Polarkoordinaten, die $^{0}s \in S^{2}$ auf der erzeugten Sphäre definieren. Hierzu beschreiben Azimut $\theta \in [ \, 0,2 \pi \,)$ und Colatitude $\phi \in [ \, 0,\pi \,]$ den Winkel auf der XY Ebene des kartesischen Koordinatensystems bzw. den Winkel zwischen Z Achse und der Geraden $\overline{sp}$ \cite{SphericalCoordinates}. \autoref{fig:pollar} veranschaulicht das zugrundeliegende Konzept der sphärischen Polarkoordinaten im kartesischen Koordinatensystem als Referenz. Bezogen auf die Orientierung eines Körpers, können die Polarwinkel als Gier und Nick Winkel eines Objektes interpretiert werden, welche durch den zusätzlichen Roll Winkel $Roll \in [ \, 0,2 \pi \,)$ die Rotation des Endeffektors und somit die Menge $OR_{total}$ komplettieren. Die Kardinalität der Menge $^{0}OR_{total}$ ist durch die Menge aller sphärischen Vektoren $^{0}s \in S$ und zusätzlicher Betrachtung der $Roll$ Winkel bestimmt.
Die Menge $^{0}OR_{total}$ beschreibt alle möglichen Orientierungen, die für jeden Vektor generiert und operiert werden. Ein grundlegendes Verfahren hierzu ist die sphärische Diskretisierung, welche die Approximation einer Sphäre durch Vektoren $^{0}s \in \R^{3}$ um ein Zentrum $^{0}p \in \R^{3}$ mit festem Abstand $r \in \R_{+}$, beschreibt. Ziel dieses Prozesses ist die Entwicklung aller Orientierungen für $^{0}p$ aus den sphärischen Polarkoordinaten aus \autoref{eq:13}, die $^{0}s \in S^{2}$ auf der erzeugten Sphäre definieren. Hierzu beschreiben Azimut $\theta \in [ \, 0,2 \pi \,)$ und Colatitude $\phi \in [ \, 0,\pi \,]$ den Winkel auf der XY Ebene des kartesischen Koordinatensystems bzw. den Winkel zwischen Z Achse und der Strecke zwischen Zentrum und Koordinate $^{0}s$ $\overline{sp}$ \cite{SphericalCoordinates}. \autoref{fig:6} veranschaulicht die genannten Winkel der sphärischen Polarkoordinaten im kartesischen Koordinatensystem als Referenz. Bezogen auf die Orientierung eines Körpers, können die Polarwinkel als Gier und Nick Winkel, bekannt aus \autoref{fig:1}, eines Objektes interpretiert werden, welche durch den zusätzlichen Roll Winkel $Roll \in [ \, 0,2 \pi \,)$ die Rotation des Endeffektors und somit die Menge $OR_{total}$ komplettieren. Die Kardinalität der Menge $^{0}OR_{total}$ ist durch die Menge aller sphärischen Vektoren $^{0}s \in S^{2}$ und zusätzlicher Betrachtung der $Roll$ Winkel bestimmt, was der \autoref{eq:14} zu entnehmen ist.
\begin{figure}[h!]
\centering
......@@ -101,14 +106,16 @@ Die Menge $^{0}OR_{total}$ beschreibt alle möglichen Orientierungen, die für j
\pic [draw = blue,fill=blue!50,fill opacity=.5, text=orange] {angle = x--origin--phi};
\pic [draw = orange,fill=orange!50,fill opacity=.5, text=orange] {angle = s--origin--z};
\end{tikzpicture}
\caption{A caption.}\label{fig:pollar}
\caption{Visualisierung der Winkel Azimut $\protect \theta$ und Colatitude $\protect \phi$ in blau beziehungsweise orange, dabei ist $\protect \overline{sp}$ die Strecke zwischen Zentrum p einer Koordinate $\protect s \in S^{2}$ auf der Sphäre.}\label{fig:6}
\end{figure}
\begin{align*}
S^{2} &= \{s \in \R^{3} | \vert \overline{sp} \vert = r\}
\end{align*}
\begin{equation}
\label{eq:13}
S^{2} := \{s \in \R^{3} | \vert \overline{sp} \vert = r\}
\end{equation}
\begin{equation}
\label{eq:14}
\vert ^{0}OR_{total} \vert = \vert S^{2} \vert \times \vert Roll \vert
\end{equation}
......@@ -116,58 +123,73 @@ S^{2} &= \{s \in \R^{3} | \vert \overline{sp} \vert = r\}
Sphärische Diskretisierungen, dessen Verteilung der Vektoren $s$ keinem Schema folgen oder an räumliche Parameter gebunden sind, verteilen die Vektoren einer Sphäre nach Pseudozufallsverfahren. Die Anzahl der zu verteilenden Vektoren ist durch eine Zahl $n \in \N$ gekennzeichnet und stellt die Initialisierung des Verfahrens da. Die Kardinalität von $S^{2}$ lässt sich daher eindeutig bestimmen.
\begin{equation}
\label{eq:15}
\vert S^{2} \vert = n
\end{equation}
\subsubsection{ungleichmäßige sphärische Diskretisierung}
Das Abtasten der Winkelintervalle von $\theta$ und $\phi$ hinsichtlich fester 'Auflösungen' $p, q \in \R_{+}$ generiert ein sphärisches Gitter, indem die sphärischen Vektoren $^{0}s$ nicht äquidistant und demzufolge ungleichmäßig Verteilt sind. Die Kardinalität von $ S^{2}$ nach diesem Verfahren ist anhand der gewählten Auflösungen $p, q$ und der Winkelintervalle berechenbar.
Das Abtasten der Winkelintervalle von $\theta$ und $\phi$ hinsichtlich fester 'Auflösungen' $p, q \in \R_{+}$ generiert ein sphärisches Gitter, indem die sphärischen Vektoren $^{0}s$ nicht äquidistant und demzufolge ungleichmäßig Verteilt sind. Die Kardinalität von $ S^{2}$ nach diesem Verfahren ist anhand der gewählten Auflösungen $p, q$ und der Winkelintervalle nach \autoref{eq:16} berechenbar.
\begin{equation}
\label{eq:16}
\vert S^{2} \vert = \frac{2 \times \pi}{p} \times \frac{\pi}{q}
\end{equation}
\subsubsection{gleichmäßige sphärische Diskretisierung}
Die äquidistante Verteilung einer festen Zahl $n \in \N$ Vektoren auf einer Sphäre ist ein mathematisches Problem, dessen Lösung eine umfassende Bedeutung für Forschungsfelder der Biologie, Chemie und Physik aufweist. Beispielsweise basiert das Tammes's problem oder hard-spheres problem auf dieser Problemstellung, angewendet auf der Modellierung fluider Partikel \cite{Saff.1997}. Die Distanz der Punkte auf der Sphäre unterliegt dabei minimalen Abweichungen und erfüllt in Spezialfällen die Anforderung einer äquidistanten Verteilung. Die Kardinalität $\vert S^{2} \vert$ ist analog zu ... durch $n$ gegeben.
Die äquidistante Verteilung einer festen Zahl $n \in \N$ Vektoren auf einer Sphäre ist ein mathematisches Problem, dessen Lösung eine umfassende Bedeutung für Forschungsfelder der Biologie, Chemie und Physik aufweist. Beispielsweise basieren das Tammes's problem oder hard-spheres problem auf dieser Problemstellung, angewendet auf der Modellierung fluider Partikel \cite{Saff1997}. Algorithmen zu diesem Kontext approximieren dieses Ziel, wobei die Distanzen auf der Sphäre minimalen Abweichungen unterliegen und in Spezialfällen die Anforderung einer äquidistanten Verteilung erfüllen. Die Kardinalität $\vert S^{2} \vert$ ist analog zu \autoref{eq:15} durch $n$ gegeben.
\subsection{Arbeitsraumcharakterisierung}
Als Metrik $D_{Reach}$ zur Klassifizierung der Erreichbarkeit eines Vektors $^{0}v_{Endeff}$ dient die Gegenüberstellung der Menge $OR_{v}$ aller Orientierungen $^{0}R_{Endeff} \in ^{0}T_{Endeff}$, die der Endeffektor während der Berechnungen erfolgreich einnehmen kann, gegenüber der Menge $OR_{total}$ aller generierten und operierten Orientierungen für $^{0}v_{Endeff}$.
Als Metrik $D_{Reach}$, welche die \autoref{eq:18} zeigt, zur Klassifizierung der Erreichbarkeit eines Vektors $^{0}v_{Endeff}$ dient die Gegenüberstellung der Menge $OR_{v}$ aller Orientierungen $(v, ^{0}R_{Endeff}, f_{kin}) \subset RM$ aus \autoref{eq:17}, die der Endeffektor für den Vektor $^{0}v_{Endeff}$ während der Berechnungen erfolgreich einnehmen kann, gegenüber der Menge $OR_{total}$ aller generierten und operierten Orientierungen für $^{0}v_{Endeff}$.
\begin{equation}
OR_{v} := \{R | ((v, R),f _{kin}) \in RM und f_{kin}((v, R)) = 1 \} \subset OR_{total}
\label{eq:17}
OR_{v} := \{R | ((v, R),f _{kin}) \in RM \land f_{kin}((v, R)) = 1 \} \subset OR_{total}
\end{equation}
\begin{align*}
\begin{equation}
\label{eq:18}
\begin{split}
D_{Reach}:v & \to [0,1] \\
D_{Reach}(v) &= \frac{\vert OR_{v} \vert}{\vert OR_{total} \vert}
\end{align*}
\end{split}
\end{equation}
\section{Invertierter Arbeitsraum}
Der invertierte Arbeitsraum beschreibt nach Zacharias et al. alle Posen relativ zum Endeffektor, von denen aus das robotische System den Koordinatenursprung des $Frame_{0}$ erreicht. Dazu beschreibt dieser Prozess die Invertierung aller persistierten Transformationen $^{0}T_{Endeff}$ der Arbeitsraumanalyse und Portierung der zugehörigen Metrik $D_{Reach}(^{0}v_{Endeff})$. Die resultierende Menge $T^{-1}$ Transformationen $^{Endeff}T_{0}$ mit den zugehörigen Metriken werden als 'inverse reachability map' $IRM$ persistiert.
Der invertierte Arbeitsraum beschreibt nach Vahrenkamp et al. alle Posen relativ zum Endeffektor sphärisch um den Ausgangsframe $Frame_{0}$, von denen aus das robotische System den Koordinatenursprung des Frames erreicht \cite{Vahrenkamp2013}. Dazu beschreibt dieser Prozess die Invertierung aller persistierten Transformationen $^{0}T_{Endeff}$ der $RM$ und Portierung der zugehörigen Metrik $D_{Reach}(^{0}v_{Endeff})$. Die resultierende Menge enthält nach \autoref{eq:5} Transformationen der Form $^{Endeff}T_{0}$, welche dessen Basispose beschreiben. Diese Informationen werden als 'inverse reachability map' $IRM$ persistiert, welche durch die \autoref{eq:19} definiert ist.
\begin{align*}
T^{-1} &:= \{t^{-1} | t \in T\} \\
IRM &:= \{(T^{-1}, D_{Reach}(v)) | ((v, R),d) \in RM \}
\end{align*}
\begin{equation}
\label{eq:19}
IRM := \{((v,R)^{-1}, D_{Reach}(v)) | ((v,R),d) \in RM \}
\end{equation}
\section{Analyse der Positionen}
Inhalt dieses Abschnittes ist die Analyse aller potentiellen Basis Positionen $P_{Base}$ eines robotischen Systems, welche sich aus der Matrix Multiplikation mit dem invertierten Arbeitsraum $IRM$ und einer Pose der spezifischen Aufgabe $^{0}a$ ergeben. Die Metrik wird dabei nach der Kalkulation auf $P_{Base}$ abgebildet und beschreibt die Zuverlässigkeit dieser Position. Komplexe Aufgaben mit einer Anzahl $n \in \N : n > 2$ Posen $^{0}a$, welche der Roboter operieren muss, skalieren die Menge aller Basis Vektoren $P_{Base}$ um $n$. Dabei ist die Verteilung der Vektoren $^{0}p_{Base} \in P_{Base}$ unregelmäßig, beispielsweise gruppieren sie Aufeinander oder sind vernachlässigbar voneinander distanziert. Eine Methode, innerhalb dieser enormen Datenmenge eine optimale Position zu entnehmen, ist die Voxelisierung. Dieses Verfahren, ähnlich der kubischen Diskretisierung, erzeugt einen Hyperwürfel innerhalb eines festen Intervalls $[-q, q] \in \R$, welcher aus $k \in \N$ disjunkten Voxeln besteht, dessen Zentren jeweils um eine Auflösung $u \in \R_{+}$ distanziert sind. Jeder Voxel enthält eine Teilmenge $TP_{0} ...TP_{k}\subset P_{Base} $, die abstrahiert voneinander betrachtet werden kann. Diese Abbildung der Vektoren $^{0}p_{Base}$ auf Voxel implementiert eine Abtastung, wobei die Wertigkeit eines Voxels durch sein Zentrum dessen Inhalt repräsentiert wird. Gleichermaßen dezimiert diese Darstellung das Lösungsspektrum der Aufgabenabhängigen Kardinalität von $P_{Base}$ auf die Anzahl aller Voxel $k$.
Inhalt dieses Abschnittes ist die Analyse aller potentiellen Basis Positionen $P_{Base}$ eines robotischen Systems, welche sich nach \autoref{eq:20} aus der Matrix Multiplikation mit dem invertierten Arbeitsraum $IRM$ und Posen spezifischer Aufgaben $^{0}a$ ergeben. Die Metrik wird dabei nach der Kalkulation auf $P_{Base}$ abgebildet und beschreibt die Zuverlässigkeit dieser Pose \cite{Makhal2018}. Komplexe Aufgaben mit einer Anzahl $n \in \N : n > 2$ Posen $^{0}a$, welche der Roboter operieren muss, skalieren die Menge aller Basen $P_{Base}$ um $n$. Dabei ist die Verteilung der Vektoren $^{0}p_{Base} \in P_{Base}$ unregelmäßig, beispielsweise gruppieren sie Aufeinander oder sind vernachlässigbar voneinander distanziert. Eine Methode, innerhalb dieser enormen Datenmenge eine optimale Position zur Ausführung der Aufgaben zu entnehmen, ist die Voxelisierung. Dieses Verfahren, ähnlich der kubischen Diskretisierung, erzeugt einen Hyperwürfel innerhalb eines festen Intervalls $[-q, q] \in \R$, welcher aus $k \in \N$ disjunkten Voxeln besteht, dessen Zentren jeweils um eine Auflösung $u \in \R_{+}$ distanziert sind. Jeder Voxel enthält eine Teilmenge $TP_{0} ...TP_{k}\subset P_{Base}$ der Basispositionen, die abstrahiert voneinander betrachtet werden. Diese Abbildung der Vektoren $^{0}p_{Base}$ auf Voxel implementiert eine Abtastung, wobei die Wertigkeit eines Voxels durch sein Zentrum und dessen Inhalt repräsentiert wird. Gleichermaßen dezimiert diese Darstellung das Lösungsspektrum der Aufgabenabhängigen Kardinalität von $P_{Base}$ auf die Anzahl aller Voxel $k$.
\begin{align*}
P_{Base} &:= \{(a \times t, d) | (t, d) \in IRM\} \\
\end{align*}
\begin{equation}
\label{eq:20}
\begin{split}
P_{Base} &:= \{(a \times t, d) | (t, d) \in IRM , a \subset SE(3) \} \\
\vert P_{Base} \vert &= \vert a \vert \times \vert IRM \vert | a \subset SE(3)
\end{split}
\end{equation}
\subsection{Charakterisierung eines Voxels}
Nun wird der Algoritmus von ... eruiert, welcher alle $k$ Voxel charakterisiert und anhand dessen Vektoren $^{0}p_{Base}$ bestimmt, welcher sich bevorzugt für die Platzierung des robotischen Systems eignet. Dies erfolgt durch eine weitere Metrik $D_{voxel}$, die sich dem arithmetischen Mittel $D_{Reach}^{average}$ eines Voxels und dem Verhältnis dessem Mächtigkeit im Verhältnis zum maximalen Voxel. Zuvor erfolgt eine Iteration, dessen Ziel es ist, das Voxel $TP_{max}$ zu bestimmen, welcher die meisten $^{0}p_{Base}$ beinhaltet. Demnach lässt eine mächtige Box darauf schließen, dass Posen verschiedener Aufgaben von ihr erreichbar sind. Die Metrik $D_{voxel}$ bewertet demnach ein Voxel anhand dessen Inhalts und seiner Mächtigkeit, wobei die Voxel mit der maximalen Wertigkeit eine valide Position des robotischen Systems für alle $n$ Posen der Aufgabe darstellt.
Nun erfolgt die Eruierung des Algorithmus von Makhal et al. \cite{Makhal2018}, welcher alle $k$ Voxel charakterisiert und anhand dessen enthaltener Vektoren $^{0}p_{Base}$ bestimmt, welcher sich bevorzugt für die Platzierung des robotischen Systems eignet. Dies erfolgt durch eine weitere Metrik $D_{voxel}$ in \autoref{eq:22}, die sich aus dem arithmetischen Mittel $D_{Reach}^{average}$ eines Voxels und dem Verhältnis von dessen Mächtigkeit zum maximalen Voxel $TP_{max}$ ergibt. $TP_{max}$ ist das Resultat einer Iteration Über alle $k$ Voxel, welche im Anschluss an die Voxelisierung erfolgt. Demnach lässt ein Voxel mit hoher Kardinalität darauf schließen, dass Posen verschiedener Aufgaben von ihm erreichbar sind. Die Metrik $D_{voxel}$ bewertet demnach ein Voxel anhand dessen Inhalts und Mächtigkeit, wobei die Voxel mit der maximalen Wertigkeit eine valide Position des robotischen Systems für alle $n = \vert a \vert$ Posen der Aufgabe darstellt.
\begin{align*}
\begin{equation}
\begin{split}
\label{eq:21}
D_{voxel}^{average}:TP & \to [0,1] \\
D_{voxel}^{average}(TP)&= \frac{\displaystyle\sum_{i=0}^{\vert TK \vert } p_{i}.d \in TK}{\vert TK \vert}
\end{align*}
D_{voxel}^{average}(TP)&= \frac{\displaystyle\sum_{i=0}^{\vert TP \vert } p_{i}.d \in TP}{\vert TP \vert}
\end{split}
\end{equation}
\begin{align*}
\begin{equation}
\label{eq:22}
\begin{split}
D_{voxel}:TP & \to [0,1] \\
D_{voxel}(TP) &= D_{voxel}^{average}(TP) \times \frac{\vert TP \vert}{\vert TP_{max} \vert}
\end{align*}
\end{split}
\end{equation}
......@@ -20,9 +20,7 @@
hyperref,
]{biblatex}
\addbibresource{bibliography.bib}
\AtEveryBibitem{%
\clearfield{note}%
}
\usepackage[hidelinks]{hyperref} % makes all links clickable but hides ugly boxes
\usepackage[capitalise,nameinlink,noabbrev]{cleveref} % automatically inserts Fig. X in the text with \cref{..}
......@@ -129,7 +127,7 @@
}
\professor{Prof. Dr. rer. nat. habil. Uwe Aßmann}
\date{10.10.2018}
\date{1.12.2021}
\maketitle
\newpage
......
File added
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment