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.
......
This diff is collapsed.
This diff is collapsed.
......@@ -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
......
This diff is collapsed.
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