diff --git a/bibliography.bib b/bibliography.bib index 789a757b966152070315ed9dd16a7bb9fdd8576a..70ecfb35f34a69203ec2b0d7bba256d92faac278 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -1,13 +1,5 @@ % 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.}, @@ -45,14 +37,6 @@ } -@misc{franka_ros, - year = {11/4/2021}, - title = {franka{\_}ros - ROS Wiki}, - url = {http://wiki.ros.org/franka_ros}, - urldate = {11/4/2021} -} - - @article{Hornung2013, abstract = {Three-dimensional models provide a volumetric representation of space which is important for a variety of robotic applications including flying robots and robots that are equipped with manipulators. In this paper, we present an open-source framework to generate volumetric 3D~environment models. Our mapping approach is based on octrees and uses probabilistic occupancy estimation. It explicitly represents not only occupied space, but also free and unknown areas. Furthermore, we propose an octree map compression method that keeps the 3D models compact. Our framework is available as an open-source C++ library and has already been successfully applied in several robotics projects. We present a series of experimental results carried out with real robots and on publicly available real-world datasets. The results demonstrate that our approach is able to update the representation efficiently and models the data consistently while keeping the memory requirement at a minimum.}, author = {Hornung, Armin and Wurm, Kai M. and Bennewitz, Maren and Stachniss, Cyrill and Burgard, Wolfram}, @@ -169,66 +153,6 @@ } -@inproceedings{Tao.662011682011, - author = {Tao, Long and Liu, Zhigang}, - title = {Optimization on multi-robot workcell layout in vertical plane}, - pages = {744--749}, - publisher = {IEEE}, - isbn = {978-1-4577-0268-6}, - booktitle = {2011 IEEE International Conference on Information and Automation}, - year = {6/6/2011 - 6/8/2011}, - doi = {10.1109/ICINFA.2011.5949092} -} - - -@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}, - pages = {1970--1975}, - publisher = {IEEE}, - isbn = {978-1-4673-5643-5}, - booktitle = {2013 IEEE International Conference on Robotics and Automation}, - year = {5/6/2013 - 5/10/2013}, - doi = {10.1109/ICRA.2013.6630839} -} - - -@misc{Wikipedia2021, - abstract = {Roll-Nick-Gier-Winkel, englisch roll-pitch-yaw angle, sind spezielle Eulerwinkel (Lagewinkel), die zur Beschreibung der Ausrichtung eines Fahrzeugs im dreidimensionalen Raum herangezogen werden. Diese Art der Richtungsmessung und -bestimmung durch Drehratensensoren wurde zur Navigation im Luftverkehr eingef{\"u}hrt und wird inzwischen neben Luftfahrzeugen auch f{\"u}r Raum-, Land- und Wasserfahrzeuge verwendet.}, - editor = {Wikipedia}, - year = {2021}, - title = {Roll-Nick-Gier-Winkel}, - url = {https://de.wikipedia.org/w/index.php?title=Roll-Nick-Gier-Winkel&oldid=209197743}, - urldate = {7/11/2021}, - doi = {Page}, - file = {Roll-Nick-Gier-Winkel:Attachments/Roll-Nick-Gier-Winkel.pdf:application/pdf} -} - - -@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}, diff --git a/images/IM2.png b/images/IM2.png new file mode 100644 index 0000000000000000000000000000000000000000..6f29d9d5715f9333a8003759134981b964e601f0 Binary files /dev/null and b/images/IM2.png differ diff --git a/images/OR_total.png b/images/OR_total.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5247cb50ea58a52f9202e08816deabec5fd27b Binary files /dev/null and b/images/OR_total.png differ diff --git a/images/P_total.png b/images/P_total.png new file mode 100644 index 0000000000000000000000000000000000000000..f3106f67b342466606c8a33885b435f7af9f89f9 Binary files /dev/null and b/images/P_total.png differ diff --git a/images/RViz.png b/images/RViz.png new file mode 100644 index 0000000000000000000000000000000000000000..102db3ddcc75e6ad1fa1e078720afdc1bd96af43 Binary files /dev/null and b/images/RViz.png differ diff --git a/images/panda_chain.png b/images/panda_chain.png new file mode 100644 index 0000000000000000000000000000000000000000..a65b883d71fb95997e50e715eed8f3dbb7ef41e6 Binary files /dev/null and b/images/panda_chain.png differ diff --git a/images/task1.png b/images/task1.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba6bddc1dd1eb1444662b92aca34c321d415629 Binary files /dev/null and b/images/task1.png differ diff --git a/images/task2.png b/images/task2.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3432ee7bb8020ff6cda6930ac1c1e24cfc3fac Binary files /dev/null and b/images/task2.png differ diff --git a/images/task3.png b/images/task3.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0d1a2bc3e91ab64b799c7470293fd71369c1a4 Binary files /dev/null and b/images/task3.png differ diff --git a/images/task4.png b/images/task4.png new file mode 100644 index 0000000000000000000000000000000000000000..81bfb2497e2f066db7897bde350e85b9f90d097c Binary files /dev/null and b/images/task4.png differ diff --git a/sections/einleitung.tex b/sections/einleitung.tex index 8b0d7f1c5f30b7d65a5aaca8c7b65d9365f71f5e..be2ebf44fb7b8ee242c87b6d840cfee363121329 100644 --- a/sections/einleitung.tex +++ b/sections/einleitung.tex @@ -1,9 +1,9 @@ \chapter{Einleitung}\label{ch:introduction} -'Collaborative Multi-Robot Work-Cells' beschreibt ein Gebiet der Robotik, dessen Inhalt die Kooperation mehrerer robotischer Systeme hinsichtlich der Lösung einer spezifischen Aufgabe innerhalb einer räumlichen Domäne ist. Zugrundeliegende Algorithmen ermöglichen dabei die Bewältigung der Aufgaben ohne Kollisionen untereinander, sowie mit Hindernissen in der Umgebung. \par -Die Planung der Abläufe ist abhängig von der Beschaffenheit des Roboters, denn die Basis eines Roboters kann beweglich oder fest sein. Beispielsweise sind Roboterarme fest auf einer Platte montiert und somit fester Bestandteil der Umgebung. Ein Wechsel ihrer Position würde bedeuten, eine andere Stelle auf der Platte für die Montage zu präparieren, den Roboterarm zu demontieren und an anderer Stelle zu platzieren, was einen enormen Aufwand darstellt und den Erfolg der Operation nicht garantiert. Daraus ist ersichtlich, dass die Positionierung unflexibler Roboter ein Problem aufweist, dessen Lösung direkten Einfluss hinsichtlich der zeitlicher Komponente, sowie der Bewältigung der spezifischen Aufgabe hat. Die Absolvierung dieser Aufgabe wird demzufolge durch effizientere Nutzung der Arbeitsumgebung besser umgesetzt, aufwändige Montagearbeiten während der Bearbeitung werden reduziert und der dadurch erschlossene Raum sowie die resultierende Zeit kann gewinnbringender genutzt werden. Im Anbetracht der stetig wachsenden Industrie und der sich daraus ergebenden Nachfrage nach effizienten automatisierten Produktionsverfahren, die den limitierten Arbeitsraum einer Produktionsstätte optimal nutzen, ist die Platzierung der Roboter ein entscheidender erster Schritt zur Optimierung des gesamten Arbeitsprozesses. +'Collaborative Multi-Robot Work-Cells' beschreibt ein Gebiet der Robotik, dessen Inhalt die Kooperation mehrerer robotischer Systeme hinsichtlich der Lösung einer spezifischen Aufgabe innerhalb einer räumlichen Domäne ist. Die zugrundeliegenden Algorithmen ermöglichen dabei die Bewältigung der Aufgaben ohne Kollisionen untereinander, sowie mit Hindernissen in der Umgebung. \par +Die Planung der Abläufe ist abhängig von der Beschaffenheit des Roboters, denn die Basis eines Roboters kann beweglich oder fest sein. Beispielsweise sind Roboterarme fest auf einer Platte montiert und somit fester Bestandteil der Umgebung. Ein Wechsel ihrer Position würde bedeuten, eine andere Stelle auf der Platte für die Montage zu präparieren, den Roboterarm zu demontieren und an anderer Stelle zu platzieren, was einen enormen Aufwand darstellt und den Erfolg der Handlung nicht garantiert. Daraus ist ersichtlich, dass die Positionierung unflexibler Roboter ein Problem aufweist, dessen Lösung direkten Einfluss hinsichtlich der zeitlicher Komponente, sowie der Bewältigung der spezifischen Aufgabe hat. Die Absolvierung dieser Aufgabe wird demzufolge durch effizientere Nutzung der Arbeitsumgebung besser umgesetzt, aufwändige Montagearbeiten während der Bearbeitung werden reduziert und der dadurch erschlossene Raum sowie die resultierende Zeit kann gewinnbringender genutzt werden. Im Anbetracht der stetig wachsenden Industrie und der sich daraus ergebenden Nachfrage nach effizienten automatisierten Produktionsverfahren, die den limitierten Arbeitsraum einer Produktionsstätte optimal nutzen, ist die Platzierung der Roboter ein entscheidender erster Schritt zur Optimierung des gesamten Arbeitsprozesses. \section{Zielsetzung der wissenschaftlichen Arbeit} -Ziel dieser Arbeit ist es, mittels Konzepten zur Charakterisierung der Kapazitäten eines Roboterarms, bezogen auf dessen Fähigkeit der Interaktion mit der Umgebung, kollaborative Multi-Roboter Arbeitsplätze zu definieren. Dazu ist die Auseinandersetzung mit wissenschaftlichen Publikationen erforderlich, um einen umfassenden Kenntnisstand hinsichtlich der Anforderungen bezüglich der Generierung eines solchen Arbeitsplatzes zu erlangen und als Grundlage der Evaluierung zu nutzen. Dabei ist die Elaboration einer Methodik zur Konkretisierung zu-operierender spezifischer Aufgaben, um auf Grundlage dessen automatisch einen kollaborativen Arbeitsplatz zu erzeugen, ebenfalls ein Aspekt dieser Arbeit. Anschließend ist die Anwendung der erarbeiteten Konzepte und dessen Implementierung innerhalb eines Fallbeispiels mit zwei oder mehr 'Panda' Roboterarmen der Franka Emika GmbH zu zeigen und dessen erzielter Resultate anhand der zuvor definierten Anforderungen zu evaluieren. +Ziel dieser Arbeit ist es, mittels Konzepten zur Charakterisierung der Kapazitäten eines Roboterarms, bezogen auf dessen Fähigkeit der Interaktion mit der Umgebung, kollaborative Multi-Roboter Arbeitsräume zu definieren. Dazu ist die Auseinandersetzung mit wissenschaftlichen Publikationen erforderlich, um einen umfassenden Kenntnisstand hinsichtlich der Anforderungen bezüglich der Generierung eines solchen Arbeitsraums zu erlangen und Grundlage der Evaluierung. Dabei ist die Erarbeitung einer Methodik zur Konkretisierung zu operierender spezifischer Aufgaben, um auf Grundlage dessen automatisch einen kollaborativen Arbeitsraum zu erzeugen, ebenfalls ein Aspekt dieser Arbeit. Anschließend ist die Anwendung der erarbeiteten Konzepte und dessen Implementierung innerhalb eines Fallbeispiels mit zwei oder mehr 'Panda' Roboterarmen der Franka Emika GmbH zu zeigen und dessen erzielter Resultate anhand der zuvor definierten Anforderungen zu evaluieren. \section{Aufbau der wissenschaftlichen Arbeit} diff --git a/sections/fallbeispiel.tex b/sections/fallbeispiel.tex index 46b93d94159f34a0e356c50210b447763f799233..bebb4d05bc556ab8060213f98cef841bbc8c465d 100644 --- a/sections/fallbeispiel.tex +++ b/sections/fallbeispiel.tex @@ -1,20 +1,46 @@ \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 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. +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 \footnote{\url{http://wiki.ros.org/franka_ros}} anhand eines Beispiels. Dieses Paket stellt hierbei die sowohl grafische, als auch funktionelle Beschreibung der Bestandteile des gleichnamigen robotischen Systems zur Verfügung, welches primär Objekt der Ausführung ist. \section{Ausgangspunkt kinematischer Operationen} -MoveIt bietet über die move\_group Schnittstelle eine Möglichkeit die Kommunikation mittels spezieller Nachrichten und somit der Planung und Exekution kinematischer Operationen durch den Roboter. Dies bedingt eine Konfigurationsdatei, welche das robotische System konkretisiert, indem Beispielsweise Kontrollelemente wie Endeffektoren als Gruppen definiert oder Adjazenzen der einzelnen Festkörper in Form einer Kollisionsmatrix erfasst werden oder weitere Nodes initialisiert werden. Die Konfigurationsdatei stellt dadurch den Ausgangspunkt aller operativen Aspekte des Fallbeispiels dar und ist daher sowohl für einen Roboter, als auch für mehrere robotische Systeme in der Implementierung enthalten. Diese Konfigurationen wurden mittels MSA generiert. +MoveIt bietet über die move\_group Schnittstelle eine Möglichkeit die Kommunikation mittels spezieller Nachrichten und somit der Planung und Exekution kinematischer Operationen durch den Roboter. Dies bedingt eine Konfigurationsdatei, welche das robotische System konkretisiert, indem beispielsweise Kontrollelemente wie Endeffektoren als Gruppen definiert oder Adjazenzen der einzelnen Festkörper in Form einer Kollisionsmatrix erfasst werden oder weitere Nodes initialisiert werden. Die Konfigurationsdatei stellt dadurch den Ausgangspunkt aller operativen Aspekte des Fallbeispiels dar und ist daher sowohl für einen Roboter, als auch für mehrere robotische Systeme in der Implementierung enthalten. Diese Konfigurationen wurden mittels \emph{moveit setup assistant (MSA)} generiert. \subsection{Modifikationen in der Beschreibung robotischer Systeme} -Die move\_group Schnittstelle bietet keine Möglichkeit zur Deklaration einer Roboterposition, da diese durch die Roboterbeschreibung festgelegt ist, 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. +Die \emph{move\_group} Schnittstelle bietet keine Möglichkeit zur Deklaration einer Roboterposition, da diese fest in der Roboterbeschreibung definiert ist, welche von der spezifischen Konfigurationsdatei geladen wird. Dies impliziert die Notwendigkeit einer Modifikation, indem die geforderten Positionen in Form von Variablen sukzessiv innerhalb der Instanzen einer Konfigurationsdatei bis zur letzten Instanz, der Roboterbeschreibung, kommuniziert werden. \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 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. +Die Kalkulation valider Positionen für robotische Systeme erfordert die roboterzentrierte Inspektion des Arbeitsraums und eine Aufgabenbeschreibung, welche für $i \in \N_{>0}$ Endsysteme mindestens $i$ Operationsketten aufweist. Die diesbezüglich vorzunehmende Arbeitsraumanalyse und dessen Inversion ist aufgabenunabhängig, erfolgt daher a priori und kann auf alle Aufgabenbeschreibung angewendet werden, die vom Ausgangssystem der Analyse, wie beispielsweise dem \emph{Panda} Roboter der Franka Emika GmbH, operiert werden sollen. Die Aufgabenbeschreibung kann zum Ermittlungszeitpunkt vorgenommen werden oder schon persistiert vorliegen. \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 'Support\_Surface', welche dem robotischen System über das spezifische Nachrichten 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 Identität $id=0$ und der Farbe 'grün' gekennzeichnet ist. Es ist stets möglich, einen weiteren Knoten zu generieren, der als weiteres Kettenglied farblich blau und schriftlich gekennzeichnet ist. Die 'Schnitt' 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 die jeweils mindestens zwei Augabenposen enthalten, da dies die Notwendigkeit zweier robotischer Systeme und das Vorhandensein einer Greif und Abstellposition impliziert. Die Wiederherstellung des Ausgangszustands ist ebenfalls durch einen zusätzlichen Menüpunkt möglich, dies eliminiert alle Glieder bis auf den Startknoten. Anlog dupliziert die 'Kooperation' Option das jeweils letzte Glied der Operationskette beziehungsweise Teilkette und visualisiert diese Schnittmenge ebenfalls schriftlich und farblich durch die Farbe rot. Dies impliziert, dass eine Operationskette aus Schnitt- und Kooperationskomponenten 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 \emph{Support\_Surface}, welche dem robotischen System über das spezifische Nachrichten kommuniziert wird und ohne dessen eine Exekution nicht erfolgt. Dieser redundante Aufwand wird im Algorithmus berücksichtigt und ist implizit durch die Position und Dimension des Kettenglieds definiert. Demzufolge ist beispielsweise eine Differenzierung der zu erzeugenden Kollisionsobjekte, durch Platzierung zusätzlicher Abstelltische, kein Aspekt der Aufgabenbeschreibung. Ausgangspunkt einer Operationskette und dessen Teilketten ist der Startknoten, welcher durch seine Identität $id=0$ und der Farbe gekennzeichnet ist. Es ist stets möglich, einen weiteren Knoten zu generieren, der als weiteres Kettenglied farblich und schriftlich gekennzeichnet ist. Die Schnittoption im Menü des Startknotens dupliziert diesen und ist ab einer Operationskette beziehungsweise Teilkette der Länge zwei möglich. Eine valide Aufgabenbeschreibung ist nur formulierbar und wird persistiert, wenn mindestens zwei Teilketten existieren die jeweils mindestens zwei Glieder enthalten, da dies die Notwendigkeit zweier robotischer Systeme und das Vorhandensein einer Greif und Abstellposition impliziert. Die Wiederherstellung des Ausgangszustands ist ebenfalls durch einen zusätzlichen Menüpunkt möglich, dies eliminiert alle Glieder bis auf den Startknoten. Anlog dupliziert die Kooperationsoption das jeweils letzte Glied der Operationskette beziehungsweise Teilkette und visualisiert diese Schnittmenge ebenfalls schriftlich und farblich. Dies impliziert, dass eine Operationskette aus Schnitt- und Kooperationskomponenten bestehen kann, was für deren Anwendung auf $n \in \N_{>2}$ robotischen Systemen relevant ist. + + + + +%\begin{figure} +%\ffigbox[\FBwidth]% +% {\begin{subfloatrow}% +% \ffigbox[\FBwidth]% +% {\fbox{\includegraphics[width=0.35\textwidth, height = 6cm]{images/task1.png}}}% +% {\caption{Definition eines neuen Kettenglieds}} +% \ffigbox[\FBwidth]% +% {\fbox{\includegraphics[width=0.35\textwidth, height =6cm]{images/task2.png}}}% +% {\caption{Option zur Erstellung von Kooperationsgliedern}} +% \end{subfloatrow}% +% {\caption{}} +%\ffigbox[\FBwidth]% +% \begin{subfloatrow}% +% \ffigbox[\FBwidth]% +% {\fbox{\includegraphics[width=0.35\textwidth, height =6cm]{images/task4.png}}}% +% {\caption{Option zur Spaltung der Operationskette}} +% \ffigbox[\FBwidth]% +% {\fbox{\includegraphics[width=0.35\textwidth, height =6cm]{images/task3.png}}}% +% {\caption{Generierung der Aufgabenbeschreibung anhand einer validen Operationskette }} +% \end{subfloatrow}}% +% {\caption{Generierung der Aufgabenbeschreibung anhand einer validen Operationskette }} +%\end{figure} \section{Positionsanalyse} -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 der visualisierten Informationen über Checkboxen reguliert werden. Die Metrik $D_{Reach}(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. +Der Algorithmus zur Ermittlung von Positionen robotischer Systeme bezüglich einer Aufgabenbeschreibungen erfordert diese und zusätzlich den invertierten Arbeitsraum als Parameter. Alle Resultate sind Transparent über das graphische Programm RViz einsehbar, dabei kann der Umfang der visualisierten Informationen über Checkboxen reguliert werden. Die Metrik $D_{Reach}(Voxel)(TK)$ aus \autoref{eq:29}, welche die differenzierte Voxelisierung kalkuliert, visualisiert die Wertigkeit eines Voxels. Analog zur Menge $P_{Base}$ jedes Kettenglieds und deren Differenzierung in die jeweilige Operationskette beziehungsweise Teilkette ist zusätzlich die Projektion dieser Werte auf die XY Ebene des kartesischen Koordinatensystems eine mögliche visuelle Modalität. Der maximale Index je Teilkette und Voxel ist ebenfalls einsehbar und wird mit zusätzlichen Informationen, wie dem Namen der Aufgabenbeschreibung, persistiert. \section{Ausführung der Operationskette} -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 +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 diff --git a/sections/grundlagen.tex b/sections/grundlagen.tex index 0e5c26cac57b93aa11d7fa5d33915f920280c2c8..5c6eabdd189ab45120122b74d999b84d902057a9 100644 --- a/sections/grundlagen.tex +++ b/sections/grundlagen.tex @@ -1,23 +1,23 @@ \chapter{Grundlagen}\label{ch:basics} -Wesentliche Konzepte dieser Bachelorarbeit fundieren auf verschiedenen wissenschaftlichen Publikationen, welche Aspekte der Problematik aufgreifen und näher erläutern. Dabei werden beispielsweise Begriffe mehrdeutig verwendet, weil keine offizielle Definition existiert oder sich deren Bedeutungen überschneiden. Ebenfalls basieren die Ansätze auf mathematischen Konzepten, die zwar genannt aber nicht ausreichend erläutert werden. Zum näheren und besseren Verständnis der Ideen und Algorithmen, die Bestandteil dieser wissenschaftlichen Arbeit sind, werden diese zugrundeliegenden Strukturen zusätzlich erklärt und gegebenenfalls für dieses Dokument definiert. Aus der Zielsetzung, die in der Einleitung formuliert ist, ergibt sich die Anforderungsanalyse als finale Komponente dieses Kapitels. +Wesentliche Konzepte dieser Bachelorarbeit fundieren auf verschiedenen wissenschaftlichen Publikationen, welche Aspekte der Zielsetzung aufgreifen und näher erläutern. Dabei werden beispielsweise Begriffe mehrdeutig verwendet, weil keine offizielle Definition existiert oder sich deren Bedeutungen überschneiden. Ebenfalls basieren die Ansätze auf mathematischen Konzepten, die zwar genannt aber nicht ausreichend erläutert werden. Zum näheren und besseren Verständnis der Ideen und Algorithmen, die Bestandteil dieser wissenschaftlichen Arbeit sind, werden diese zugrundeliegenden Strukturen zusätzlich erklärt und gegebenenfalls für dieses Dokument definiert. Aus der Zielsetzung, die in der Einleitung formuliert ist, ergibt sich die Anforderungsanalyse als finale Komponente dieses Kapitels. \section{Räumliche Partitionierung} -Die räumliche Partitionierung beschreibt das Unterteilen eines kartesischen Raumes in kleinere, disjunkte Teilräume und deren Indexierung und Speicherung in entsprechenden Datenstrukturen. Die Implementierung einer solcher Datenstruktur ist oft eine erweiterte Baumstruktur mit speziellen Eigenschaften, die dessen Einsatz im 3 dimensionalen Raum begünstigen. Beispielsweise sind solche Bäume aufgrund dessen Kompaktheit für die Aufbewahrung großer Datenmengen geeignet oder ermöglichen eine schnelle Suche unter dessen Blättern durch ihre Implementierung \cite{Hornung2013}. In der Literatur wird die Unterteilung eines quadratischen Raumes in Würfel fester Größe 'Voxelisierung' genannt \cite{Makhal2018} \cite{Zacharias2007}, wobei ein Voxels per Definition ein Pixel im 3-dimensionalen Raum ist. Fortan werden disjunkte Teilräume eines kartesischen Raums 'Voxel' genannt, die einen Container darstellen, dessen Inhalt eine Menge aus $n \in \N$ Vektoren $v \in \R^{3}$ ist. +Die räumliche Partitionierung beschreibt das Unterteilen eines kartesischen Raumes in kleinere, disjunkte Teilräume und deren Indexierung und Speicherung in entsprechenden Datenstrukturen. Die Implementierung einer solcher Datenstruktur ist oft eine erweiterte Baumstruktur mit speziellen Eigenschaften, die dessen Einsatz im 3 dimensionalen Raum begünstigen. Beispielsweise sind solche Bäume aufgrund dessen Kompaktheit für die Aufbewahrung großer Datenmengen geeignet oder ermöglichen eine schnelle Suche unter dessen Blättern durch ihre Implementierung \cite{Hornung2013}. In der Literatur wird die Unterteilung eines quadratischen Raumes in Würfel fester Größe \emph{Voxelisierung} genannt \cite{Makhal2018} \cite{Zacharias2007}, wobei ein Voxels per Definition ein Pixel im 3-dimensionalen Raum ist. Fortan werden disjunkte Teilräume eines kartesischen Raums \emph{Voxel} genannt, die einen Container darstellen, dessen Inhalt eine Menge aus $n \in \N$ Vektoren $v \in \R^{3}$ ist. \section{Diskretisierung eines Objektes} -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}. +Die Diskretisierung ist bekannt als ein Prozess der Zerlegung einer kontinuierliche Oberfläche durch Abtastung in ihre diskreten Teilbereiche oder Punkte, welche im Kontext dieser Arbeit durch Vektoren beschrieben sind. Anwendung findet dieses Verfahren Beispielsweise im Gebiet der Netzwerktechnologie, in der ein analoges Signal durch räumliche und zeitliche Diskretisierung in ein digitales Signal überführt wird. Angewendet auf 3-dimensionale Objekte entsteht durch Diskretisierung ein Gitter aus Vektoren, welche das zugrundeliegende Objekt approximieren \cite{Porges2015}. \section{Robotische Systeme} -Robotische Systeme setzen sich aus einer Menge an Festkörpern und deren Verknüpfungen durch verschiedene Gelenktypen zusammen. Ein solches System spannt eine Baumstruktur auf, dessen Wurzel durch eine fixe Basis definiert ist. Ein solcher kinematischer Baum ist verzweigt, sobald ein Festkörper Verknüpfungen zu mehreren Festkörpern aufweist. Solche kinematischen Strukturen können auch als verzweigte beziehungsweise unverzweigte kinematische Kette denotiert werden. Bildet der Baum keinen Kreis, so ist er eine offene kinematische Kette beziehungsweise ein offenes robotisches System. 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}. +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 \cite[46ff.]{Siciliano2016}. Roboterarme sind Beispiele für offene robotische Systeme beziehungsweise offene kinematischer Ketten und Bezugspunkt dieser wissenschaftlichen Arbeit. Nähere Informationen über die Kopplung spezifischer Festkörper werden im Kontext dieser Arbeit in der zugehörigen URDF \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 \emph{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 \emph{Panda} der Franka Emika GmbH öffentlich zugänglich \cite{franka_ros}. \section{Kinematische Grundlagen} -Nachdem bereits die Klassifizierung eines robotischen Systems anhand seiner Baumstruktur eruiert wurde, werden in diesem Abschnitt weitere kinematischen Aspekte näher erläutert. Grundlegende Methodiken dieser wissenschaftlichen Arbeit fundieren auf Konzepten der Kinematik, welche als Teilbereich der Physik die Bewegung von Festkörpern in robotischen Systemen, abstrahierend von den daraus resultierenden Kräften und Momenten, umfasst \cite[9f.]{Siciliano2016}. Ein wesentlicher Aspekt ist hierbei die Repräsentation der Position und Orientierung von Körpern im 3-dimensionalen Raum und deren Relation zueinander, sowie die Beschreibung der Geometrie robotischer Mechanismen. Termini wie 'Pose' oder Referenzkoordinatensystem 'Frame' 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 \emph{Pose} oder Referenzkoordinatensystem, in dieser Arbeit \emph{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 $(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}. +Die Kombination aus Position und Orientierung eines Festkörpers relativ zu einem Frame definiert eine \emph{Pose}. Frames bestehen aus dessen Koordinatenursprung und orthogonalen Basisvektoren $(v_{0}, v_{1}, v_{2})$. Beispielsweise beinhaltet das bekannte Referenzkoordinatensystem $Frame_{0}$ den Ursprung $(0,0,0)^{T}$ und Basisvektoren $(0,0,1)^{T}, (0,1,0)^{T}, (1,0,0)^{T}$, auf Grundlage dessen eine Pose $^{0}Pose$ relativ zu $Frame_{0}$ definiert und repräsentiert werden kann. Ein robotisches System ist durch die Definition der $n \in \N$ Frames für jedes seiner Festkörper in der URDF Datei konkretisiert \cite[9ff.]{Siciliano2016}. \subsubsection{Position} Der Koordinatenursprung eines Frames $i$ relativ zum Frame $j$ wird durch den Vektor $^{j}p_{i} \in \R^{3}$ gekennzeichnet. @@ -33,7 +33,7 @@ Der Koordinatenursprung eines Frames $i$ relativ zum Frame $j$ wird durch den Ve 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 \autoref{fig:1} anhand eines Flugzeugs visualisiert und ist Bestandteil späterer Ausführungen. +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\footnote{\url{https://de.wikipedia.org/w/index.php?title=Roll-Nick-Gier-Winkel&oldid=209197743}}, 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} @@ -41,7 +41,10 @@ Eine Orientierung wird durch Rotationen $R$ dargestellt, die auf einen Körper a \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{eq:SO} formuliert 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. + + + +Die Menge aller Rotations-Matrizen $R \in \R^{3 \times 3}$ bilden mit der Matrixmultiplikation die nicht kommutative Gruppe $SO(3) \subset \R^{3\times3}$ \cite[17f.]{Siciliano2016}, dessen Gruppenaxiome in \autoref{eq:SO} formuliert sind. Dies ist die spezielle orthogonale Gruppe $SO(3)$, wobei das Einselement die Matrix 1 ist, dessen diagonale mit eins belegt ist, während alle anderen Werte null sind. \begin{equation} \label{eq:SO} \begin{split} @@ -52,14 +55,14 @@ Die Menge aller Rotations-Matrizen $R \in \R^{3 \times 3}$ bilden mit der Matrix \end{split} \end{equation} -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}. +Die Komposition von Rotationen verschiedener Frames wird in \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} \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 \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. +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}. Diese 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{eq:3} @@ -87,7 +90,7 @@ T &= \begin{pmatrix} \end{pmatrix} \end{equation} -Transformationsmatrizen $T$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SE(3)$, dessen Gruppenaxiome in \autoref{eq:SE} dokumentiert sind, hierbei gilt analog zu \autoref{eq:SO} die 1 Matrix $\in \R^{4\times4}$ als das neutrale Element der Gruppe \cite[17f.]{Siciliano2016}. +Transformationsmatrizen $T$ bilden mit der Matrixmultiplikation eine nicht kommutative Gruppe $SE(3)$, dessen Gruppenaxiome in \autoref{eq:SE} beschrieben sind, hierbei gilt analog zu \autoref{eq:SO} die 1 Matrix $\in \R^{4\times4}$ als das neutrale Element der Gruppe \cite[17f.]{Siciliano2016}. \begin{equation}\label{eq:SE} \begin{split} @@ -113,6 +116,14 @@ Für die kinematische Kette eines robotischen Systems bestehenden aus $n \in \N$ ^{0}T_{8} &= ^{0}T_{1} \times ^{1}T_{2} \times ^{2}T_{3} \times ^{3}T_{4} \times ^{4}T_{5} \times ^{5}T_{6} \times ^{6}T_{7} \times ^{7}T_{8} \end{split} \end{equation} + +\begin{figure}[ht] +\includegraphics[]{images/panda_chain.png} +\caption{Visualisierung der kinematischen Kette eines Franka Emika 'Panda' Roboters anhand der Frames aller Festkörper.} +\label{fig:PC} +\end{figure} + + \section{Arbeitsbereich eines robotischen Systems} @@ -121,15 +132,15 @@ In den Publikationen werden diese Darstellungen gleichgesetzt. Dieses Vorgehen h \subsection{reachability map} Reachability maps visualisieren die Erreichbarkeit durch den Endeffektor, ohne weitere Angaben hinsichtlich der Qualität. Demnach ist beispielsweise ein Objekt erreichbar, was aber nicht eine erfolgreiche Exekution impliziert, da der Endeffektor Möglicherweise eine der definierten Greifposen nicht einnehmen kann. Demnach enthält eine reachability map die Information darüber, dass der Endeffektor die Objektposition erreicht, aber nicht welche Posen Operiert werden können. -Diese \autoref{fig:panda} zeigt eine solche Darstellung im Manual des Referenzroboters 'Panda' aus verschiedenen Perspektiven, um den Arbeitsbereich des Roboters in mehreren Dimensionen zu visualisieren. +Diese \autoref{fig:panda} zeigt eine solche Darstellung im Manual\footnote{\url{https://www.generationrobots.com/media/panda-franka-emika-datasheet.pdf}} des Referenzroboters 'Panda' aus verschiedenen Perspektiven, um den Arbeitsbereich des Roboters in mehreren Dimensionen zu visualisieren. \ffigbox[\FBwidth]% {\begin{subfloatrow}% \ffigbox[\FBwidth]% - {\fbox{\includegraphics[width=0.47\textwidth, height = 5.5cm]{images/panda_tv.png}}}% + {\fbox{\includegraphics[width=0.47\textwidth, height = 5.5cm]{images/panda_sv.png}}}% {\caption{Seitenansicht}\label{fig:SV}}% \ffigbox[\FBwidth]% - {\fbox{\includegraphics[width=0.47\textwidth, height =5.5cm]{images/panda_sv.png}}}% + {\fbox{\includegraphics[width=0.47\textwidth, height =5.5cm]{images/panda_tv.png}}}% {\caption{Ansicht von oben}\label{fig:TV}}% \end{subfloatrow}}% {\caption{Illustration des Arbeitsraums eines Panda Roboters der Franka Emika GmbH aus unterschiedlichen Perspektiven. Alle Angaben sind in Millimeter bemessen.}\label{fig:panda}}% @@ -140,25 +151,38 @@ In capability maps werden zusätzliche Informationen über die Erreichbarkeit de %\cite{Reuleaux} \cite{zacharias2008positioning} \section{ROS und das MoveIt} -ROS ist ein der Öffentlichkeit frei zugängliches Framework, welches auf Anwendungen bezüglich robotischer Systeme spezialisiert ist. Es ermöglicht beispielsweise die Kommunikation zwischen Robotern, Erfassung sensorischer Daten und deren Visualisierung in zusätzlichen Programmen. Dies wird durch die Initialisierung von Nodes realisiert, welche Informationen hinsichtlich eines spezifischen Themas publizieren oder durch das Abonniere des Themas empfangen. Pakete innerhalb eines Arbeitsraums im ROS Kontext Koordinieren die zugrundeliegenden Quelltexte der Nodes und dienen der Abstraktion implementierter Algorithmen. +ROS \footnote{\url{https://www.ros.org/}} ist ein der Öffentlichkeit frei zugängliches Framework, welches auf Anwendungen bezüglich robotischer Systeme spezialisiert ist. Es ermöglicht beispielsweise die Kommunikation zwischen Robotern, Erfassung sensorischer Daten und deren Visualisierung in zusätzlichen Programmen. Dies wird durch die Initialisierung von Nodes realisiert, welche Informationen hinsichtlich eines spezifischen Themas publizieren oder durch das abonnieren des Themas empfangen. Pakete innerhalb eines Arbeitsraums im ROS Kontext Koordinieren die zugrundeliegenden Quelltexte der Nodes und dienen der Abstraktion implementierter Algorithmen. \subsection{Visualisierung in ROS} -RViz ist ein ROS Node zur Visualisierung von Informationen im 3 dimensionalen Raum und wird in dieser Arbeit zur Illustration spezifischer Aspekte der Implementierung genutzt. Die Orientierung innerhalb der grafischen Benutzeroberfläche erfolgt anhand eines Gitters auf der horizontalen XY Ebene, dessen Kanten jeweils einen Meter voneinander distanziert sind. +\autoref{fig:RViz} zeigt RViz als ein ROS Node zur Visualisierung von Informationen im 3 dimensionalen Raum und wird in dieser Arbeit zur Illustration spezifischer Aspekte der Implementierung genutzt. Die Orientierung innerhalb der grafischen Benutzeroberfläche erfolgt anhand eines Gitters auf der horizontalen XY Ebene, dessen Kanten jeweils einen Meter voneinander distanziert sind. + +\begin{figure}[ht] +\includegraphics[width = 7cm, height = 5cm]{images/RViz.png} +\caption{Leere RViz Szene.} +\label{fig:RViz} +\end{figure} \subsubsection{Marker Elemente} Primitive wie Würfel, Pfeile oder Sphären sind simple Marker Elemente, welche anhand deren Position, Orientierung, Farbe und Dimension definiert sind und in RViz durch das Abhören des zugrundeliegenden Themas visualisiert werden, um die Resultate der zugrundeliegenden Implementierung zu inspizieren beziehungsweise analysieren. \subsubsection{Interaktive Marker Elemente} -Interaktive Marker Elemente erweitern die bereits präzisierten Marker um die Interaktionsmöglichkeit durch den Nutzer, wodurch Translationen und Rotationen auf beliebigen Achsen des Markers durch den Mauszeiger realisierbar sind. Zusätzlich kann jeder Marker ein eigenes Menü mit Untermenüs initialisieren, durch dessen Einträge zusätzliche anwendungsspezifische Algorithmen implementiert werden können. Diese Modifikationen werden durch zugrundeliegende visuelle Kontrollelemente des Markers und deren Kommunikation mit dem 'Interaktive Marker Server' realisiert. Jede Interaktion mit einer Instanz eines interaktiven Markers wird von RViz publiziert, der Server reagiert auf diese Nachricht mit der aktualisierten Position oder Orientierung des Markers. Zusätzlich ist die Implementierung weiterer Funktionen möglich, die als Reaktion über den Server kommuniziert werden sollen. +Interaktive Marker Elemente erweitern die bereits präzisierten Marker um die Interaktionsmöglichkeit durch den Nutzer, wodurch Translationen und Rotationen auf beliebigen Achsen des Markers durch den Mauszeiger realisierbar sind. Zusätzlich kann jeder Marker ein eigenes Menü mit Untermenüs initialisieren, durch dessen Einträge zusätzliche anwendungsspezifische Algorithmen implementiert werden können. Diese Modifikationen werden durch zugrundeliegende visuelle Kontrollelemente des Markers und deren Kommunikation mit dem \emph{Interaktive Marker Server}\footnote{\url{http://wiki.ros.org/interactive_markers}} realisiert. Jede Interaktion mit einer Instanz eines interaktiven Markers wird von RViz publiziert. Der Server reagiert auf diese Nachricht mit der aktualisierten Position oder Orientierung des Markers. Zusätzlich ist die Implementierung weiterer Funktionen möglich, die als Reaktion auf eine Handlung in RViz vom Server ausgeführt werden sollen. -\begin{figure}[ht] -\includegraphics[width = 0.47\textwidth, height = 4cm]{images/IM.png} -\caption{Darstellung der Kommunikation zwischen RViz und dem Interaktive Marker Server} -\label{fig:IM} +\begin{figure} +\ffigbox[\FBwidth]% + {\begin{subfloatrow}% + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.47\textwidth, height = 5.5cm]{images/IM.png}}}% + {\caption{Kommunikation zwischen Server und RViz}} + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.47\textwidth, height =5.5cm]{images/IM2.png}}}% + {\caption{Interaktiver Marker mit Kontrollelementen}} + \end{subfloatrow}}% + {\caption{Darstellung eines interaktiven Markers mit visuellen Kontrollelementen und dessen Kommunikation mit der Server Instanz.}\label{fig:IM}}% \end{figure} \subsection{kinematische Operationen in ROS} -In dieser wissenschaftlichen Arbeit erfolgen Berechnungen zur Kinematik, Kollision und Bewegungsplanung ausschließlich mit der ebenfalls öffentlich frei zugänglichen MoveIt Software. Diese definiert den 'move\_group' Node, welcher durch Integration zusätzlicher Nodes und Komponenten dessen vollständigen Funktionsumfang erhält. Beispielsweise werden diese zusätzlichen Nodes innerhalb einer Konfigurationsdatei initiiert, welche gleichermaßen die URDF Datei der zugrundeliegenden robotischen Systeme spezifiziert. Die Generation solcher Konfigurationsdateien erfolgt a priori über den Node des Moveit Assistenten 'MSA'. +In dieser wissenschaftlichen Arbeit erfolgen Berechnungen der Kinematik, Kollision und Bewegungsplanung ausschließlich mit der ebenfalls öffentlich frei zugänglichen MoveIt \footnote{\url{https://moveit.ros.org/}} Software. Diese definiert den \emph{move\_group} Node, welcher durch Integration zusätzlicher Nodes und Komponenten dessen vollständigen Funktionsumfang erhält. Beispielsweise werden diese zusätzlichen Nodes innerhalb einer Konfigurationsdatei initiiert, welche gleichermaßen die URDF Datei der zugrundeliegenden robotischen Systeme spezifiziert. Die Generation solcher Konfigurationsdateien erfolgt a priori über den Node des Moveit Assistenten \emph{MSA}. -\section{Anforderungen automatischer kollaborativer Multi-Roboter Arbeitsplätze} -Marvel et al. adressieren die Skalierbarkeit, Synchronisierung der Roboter, Verteilung der spezifischen Aufgaben und Kollisionsvermeidung als grundlegende Aspekte der Planung eines Multi-Roboter Systems. Offensichtlich stehen diese Aspekte in Wechselwirkung zueinander, denn die Kollisionsdetektion ist beispielsweise vereinfacht, wenn die Exekution der Aufgaben sequentiell erfolgt und daher nur ein Roboter zeitgleich Bewegungen ausführt, dies impliziert zugleich eine weniger komplexe Aufgabenverteilung. Erfolgen die Handlungen der Roboter synchron, so ist die Verteilung der der Aufgaben essenziell für eine erfolgreiche Terminierung und dessen Ausführungszeit und bedingt eine komplexere Kollisionsdetektion. Änderungen der Szenerie, Beispielsweise durch die Hinzunahme oder Abnahme der Roboter, haben ebenfalls Auswirkungen auf die Ausführung beziehungsweise Kalkulationszeit, welche die Skalierbarkeit des Arbeitsraums konkretisiert.\cite{Marvel2018}. Diese Aspekte sind zusätzlich abhängig von der Platzierung in der Domäne, welche die Generierung automatischer Multi-Roboter Arbeitsplätze ermöglicht und daher der Hauptaspekt dieser wissenschaftlichen Arbeit ist. Also eigentlich kann ich hier alles aus Evaluation rein kopieren, das klingt zumindest besser. +\section{Anforderungen automatischer kollaborativer Multi-Roboter Arbeitsräume} +Marvel et al. adressieren die Skalierbarkeit, Synchronisierung der Roboter, Verteilung der spezifischen Aufgaben und Kollisionsvermeidung als grundlegende Aspekte der Planung eines Multi-Roboter Systems \cite{Marvel2018}. Diese Aspekte stehen in Wechselwirkung zueinander, denn die Kollisionsdetektion ist beispielsweise vereinfacht, wenn die Exekution der Aufgaben sequentiell erfolgt und daher nur ein Roboter zeitgleich Bewegungen ausführt, dies impliziert zugleich eine weniger komplexe Aufgabenverteilung. Erfolgen die Handlungen der Roboter synchron, so ist die Verteilung der der Aufgaben essenziell für eine erfolgreiche Terminierung und dessen Ausführungszeit und bedingt eine komplexere Kollisionsdetektion. Änderungen der Szenerie, Beispielsweise durch die Hinzunahme oder Abnahme eines Roboters, haben ebenfalls Auswirkungen auf die Ausführung beziehungsweise Kalkulationszeit, welche die Skalierbarkeit des Arbeitsraums konkretisiert. Diese Aspekte sind zusätzlich abhängig von deren Position in der Domäne, welche die Generierung automatischer Multi-Roboter Arbeitsräume ermöglicht und daher der Hauptaspekt dieser wissenschaftlichen Arbeit ist. Also eigentlich kann ich hier alles aus Evaluation rein kopieren, das klingt zumindest besser. diff --git a/sections/implementierung.tex b/sections/implementierung.tex index 2b06e7a92338d46795e41457f3179b795cde6a54..6ccc1f10dd06a7fa97fde5e79402161a7a084f0a 100644 --- a/sections/implementierung.tex +++ b/sections/implementierung.tex @@ -1,5 +1,5 @@ \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 und in \autoref{fig:8} illustriert. 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 Roboterbeschreibungen, Konfigurationsdateien und implementierte Algorithmen enthalten, 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 @@ -17,7 +17,7 @@ Die ausführliche Auseinandersetzung mit der Struktur des ROS spezifischen Arbei \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{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. +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 \emph{move\_group} Schnittstelle ermöglichen. Diese ist ein Klon des öffentlich zugänglichen Pakets \emph{franka\_ ros} \cite{franka_ros} der Franka Emika GmbH von 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} rechts zeigt die Struktur einer Konfigurationsdatei, welche im \emph{config} Verzeichnis alle Festkörper der Referenzbeschreibung anhand der \emph{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 \emph{MSA} erzeugt werden oder mittels einer Manipulation der \emph{config} und \emph{.launch} Dateien aus \autoref{fig:9} generiert werden. \begin{figure} \centering @@ -45,22 +45,23 @@ 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:9} +\caption{Visualisierung der Verzeichnisstruktur der Roboterbeschreibung und Konfiguration. Bezüglich der Übersichtlichkeit sind nur die Dateien gelistet, deren Modifikation hinsichtlich der Realisierung mehrerer robotischer Systeme relevant ist.}\label{fig:9} \end{figure} -\begin{lstlisting}[language=JSON,firstnumber=1, float, caption={ Dual Setup Beispiel, in mit Modifikationen zur Übergabe der Roboterpositionen.}, label={lst:4}, captionpos=b] +\begin{lstlisting}[language=JSON,firstnumber=1, float, caption={ Dual Setup Beispiel mit Modifikationen zur Übergabe der Roboterpositionen.}, label={lst:4}, captionpos=t] {<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="panda"> <!-- Einbindung der Roboter Komponenten--> <xacro:include filename="panda_arm.xacro"/> <xacro:include filename="hand.xacro"/> -<!-- Deklaration der Namensattribute der zu konkretisierenden Roboter --> +<!-- Deklaration der Namensattribute zu konkretisierender Roboter --> <xacro:arg name="arm_id_1" default="panda_1" /> <xacro:arg name="arm_id_2" default="panda_2" /> <!-- Deklarierung des Positionsattribute, welche aus der Kalkulation, ber die Konfigurationsdatei, in die Roboterbeschreibung bergeben wird--> <xacro:arg name="pos_1" default="0 0 0" /> <xacro:arg name="pos_2" default="1 1 0" /> + <!-- Definition des eindeutigen World-Frames, als Referenz der Roboter --> <link name="world"/> @@ -76,10 +77,10 @@ Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdate \subsection{MoveGroup Interface mit Dual Setup} -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. +Eine Konfigurationsdatei konkretisiert ein robotisches System als Bewegungsgruppe \emph{Move\_Group}, deren Identität eindeutig durch ihr Namensattribut bestimmt ist. Demnach genügt dieses zur Instanziierung eines \emph{Move\_Group} Objekts, welches die Kommunikation zum gewählten Roboter initiiert. Eine duale Konfigurationsdatei ermöglicht analog das Instanziieren und Ansteuern zweier robotischer Systeme durch deren Namensattribut. 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 der Schnittstelle hinsichtlich der Betrachtung mehrerer robotischer Systeme limitiert sind. Der \autoref{lst:5} zeigt einen Ansatz, der die Kollisionsdetektion definierter Kollisionsobjekte in der \emph{allowed kollision matrix (AKM)} deaktiviert, was beispielsweise das Greifen, Halten und Abstellen eines Primitives in einem Dualen Setup ermöglicht. -\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] +\begin{lstlisting}[language=JSON,firstnumber=1, caption={Des Endeffektors rechter und linker Finger kollidieren unweigerlich während der Exekution mit dem Primitiv, wodurch beispielsweise die Greifoperation fehlschlägt. Der illustrierte Quelltext behebt diesen Fehler, indem derartige Kollisionen erlaubt werden.}, label={lst:5}, float, captionpos=t] // Initialisierung der Szene planning_scene::PlanningScene ps(kinematic_model); @@ -105,7 +106,7 @@ planning_scene_diff_publisher.publish(pls); \section{Implementierung zur Positionsermittlung} -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. +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 deren 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}[h!] \centering @@ -134,10 +135,10 @@ Der (Quelltext.6) der Header Datei beschreibt alle Funktionen, die den Algorithm %\lstinputlisting[language=C++, caption ={Implementierung zur Generierung der 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. +Der Algorithmus des inversen Arbeitsraums kalkuliert anhand der persistierten Informationen der Arbeitsraumanalyse die Metrik D. Die Inversion aller Transformationen anhand einer Iteration über den Arbeitsraum, erfolgt durch die in der Bibliothek \emph{tf2} implementierte Realisierung homogener Transformationen dessen Operationen $\in SE(3)$. Zusätzlich erfolgt die Portierung der Metrik und Persistenz der kalkulierten \emph{IRM}. \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 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. +Die Implementierung der Positionsanalyse erfolgt über deren Voxelisierung durch Integration der PCL Bibliothek. Diese ist in C++ vollumfänglich implementiert und ermöglicht performante Operationen auf 3 dimensionale Koordinaten. Dies differenzierte Voxelisierung generiert zunächst ein Gitter aus Vektoren $^{0}v \in \R^{3}$ ähnlich der kubischen Diskretisierung, und bildet jede Transformation $^{0}T_{Base_{TK/KG}} \in ^{0}T_{Base}$ eines Teilkettenglieds der Operationskette $KG_{i}\in TK \subset K$ anhand seiner räumlichen Position auf den Vektor $^{0}v$ ab. Die resultierende Struktur ist in \autoref{eq:30} gezeigt. \begin{equation} \begin{split} @@ -147,7 +148,7 @@ Dictionary &= {(^{0}v, Task)} \end{split} \end{equation} -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 +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, welche $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{equation} \begin{split} @@ -158,5 +159,5 @@ Dictionary_{Metrik} &= {(^{0}v, Task_{Metrik})} \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. +Die resultierende Position pro $TK$ wird in einem eigenen Verzeichnis persistiert, um als Parameter der \emph{Pick and Place} Implementierung geladen zu werden und über jede Instanz, von der Konfigurationsdatei in die Roboterbeschreibung übergeben zu werden. diff --git a/sections/konzept.tex b/sections/konzept.tex index affc3f379923a4e7bb2a8d81762978cc226d583e..745b5b1b172c364738fc43a3ec4c475ded61484d 100644 --- a/sections/konzept.tex +++ b/sections/konzept.tex @@ -1,5 +1,5 @@ \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 YAML 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. +Wie im vorherigen Kapitel beschrieben, charakterisieren wissenschaftliche Arbeiten die Analyse des Arbeitsraums einzelner Roboter, sowie die 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 YAML 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)}% @@ -38,7 +38,7 @@ Wie im vorherigen Kapitel beschrieben, charakterisieren wissenschaftliche Arbeit Die Population valider Transformationen $^{0}T_{Endeff}$, welche Resultat der Vereinigung aus $OR_{total}$ und $P_{total}$ sind, ist Bestandteil der Arbeitsraumanalyse. Dabei ist den Formulierungen 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 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 unterliegt die Menge $P_{total}$ den Größen $q, a \in \R_{+}$, welche das Intervall des entstehenden Würfels beziehungsweise den Abstand zwischen den Vektoren $^{0}p \in P_{total}$ definieren.\par +Basierend auf der Arbeit 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 unterliegt die Menge $P_{total}$ den Größen $q, a \in \R_{+}$, welche 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 zufällig generierter sphärischer Koordinaten abhängt, gleichermaßen unzulänglich. Dies impliziert den Einsatz der sphärischen Diskretisierungen anhand gleichmäßiger beziehungsweise ungleichmäßiger Verteilungen. \par \begin{equation} @@ -47,7 +47,7 @@ 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 performante 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 YAML-Datei, die als Artefakt der Berechnung in Gitlab entnommen werden. +Zusätzlich empfiehlt sich die vollständige Auslagerung der Berechnungen auf performante 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 YAML-Datei, welche die RM repräsentiert. \begin{lstlisting}[language=JSON,firstnumber=1,float, caption={Struktur der RM als Resultat der Arbeitsraumanalyse},captionpos=t, label={lst:1}] Referenzsystem: "Emika Franka 'Panda'" Map Name: "RM_\$(Intervall)_\$(Auflösung)" @@ -72,10 +72,10 @@ Derart zeitaufwändigen Verfahren erfordern die Betrachtung der Komplexität, um \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^{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ärischen Komponente auf die Komplexität dezimiert werden. +Davon 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ärischen 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 \autoref{eq:25} 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 \autoref{eq:25} zeigt. \begin{equation} \begin{split} @@ -129,7 +129,7 @@ Aus vorangegangenen Kapiteln ist bekannt, dass die sphärische Diskretisierung d \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 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 illustriert in seiner Arbeit zur äquidistanten sphärischen Diskretisierung einen Algorithmus zur gleichmäßigen Verteilung vor, welche bisher nicht zum Zweck der Roboterplatzierung genutzt wurde. Die Dokumentierte Pseudoimplementierung wurde für diese wissenschaftliche Arbeit übernommen. \cite{Deserno2004}. +Methoden wie die Fibonacci- oder Spiral- Verteilungen bieten minimale Abweichungen, empfehlen sich daher für die Orientierungsgenerierung und bilden 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 illustriert in seiner Arbeit zur äquidistanten sphärischen Diskretisierung einen Algorithmus zur gleichmäßigen Verteilung vor, welche bisher nicht zum Zweck der Roboterplatzierung genutzt wurde. Die dokumentierte Pseudoimplementierung wurde für diese wissenschaftliche Arbeit übernommen \cite{Deserno2004}. \section{Invertierte Arbeitsräume} 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 $a \in A$ des zu operierenden Objekts, wobei $A \subset SE(3)$ die Menge aller Aufgabenposen relativ zum $Frame_{0}$ ist. @@ -154,7 +154,7 @@ Die Roboterbasis kann der Pose des ersten Festkörpers in Form der Transformatio Die Metrik aus \autoref{eq:18} wird dabei zu den inversen Transformationen $^{0}T_{Base}$ portiert und als Menge $IRM$ in eine YAML Datei persistiert, dessen Struktur der \autoref{lst:2} zeigt, wobei die Felder 'Basis-Pose' und 'Metrik' 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. -\begin{lstlisting}[language=json,firstnumber=1, caption={In 'Metrik' werden alle kalkulierten Werte der Metrik persistiert, während 'Basis-Pose' alle invertierten Endeffektor-Posen enthält},captionpos=t, float, label={lst:2}] +\begin{lstlisting}[language=json,firstnumber=1, caption={In 'Metrik' werden alle kalkulierten Werte der Metrik persistiert, während 'Basis-Pose' alle invertierten Endeffektor Posen enthält},captionpos=t, float, label={lst:2}] Referenzsystem: "Emika Franka 'Panda'" Map Name: "IRM_\$(Intervall)_\$(Auflösung)" Auflösung: float @@ -168,28 +168,28 @@ Das Konzept zur Planung und Erstellung spezifischer Aufgaben, sowie deren Realis 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 Aufgabenbeschreibungen 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 ebenfalls in YAML Dateien persistiert werden, dessen Struktur der \autoref{lst:3} veranschaulicht. -\begin{lstlisting}[language=JSON,firstnumber=1, float, caption={Der Nutzer hat die Möglichkeit, seine Aufgabe zu benennen. Das Feld 'Aufgabenbeschreibung' ist eine Sequenz aus Objekten, dessen Inhalt eine weitere Sequenz aus Aufgaben-Posen in Form einer Kette ist, welche das jeweilige robotische System operieren muss.},captionpos=t, label={lst:3}] +\begin{lstlisting}[language=JSON,firstnumber=1, float, caption={Der Nutzer hat die Möglichkeit, einen Titel der Aufgabe zu definieren. Das Feld 'Aufgabenbeschreibung' ist eine Sequenz beziehungsweise Liste aus Objekten, dessen Inhalt eine weitere Sequenz aus Aufgaben-Posen in Form einer Kette ist, welche das jeweilige robotische System operieren muss.},captionpos=t, label={lst:3}] Name der Aufgabe: String Aufgabenbeschreibung: Objekt : [ "x y z q_x q_y q_z q_w"] \end{lstlisting} \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. +Aufgaben, wie das sequentielle Greifen und Abstellen eines Objektes gehören zur Aufgabengruppe \emph{Pick and Place}, welche in dieser Arbeit hauptsächlich untersucht werden. Diese Aufgaben werden mittels der Positionen konkretisiert, an denen eine Operation erfolgt. Diese sukzessiv zu operierende Menge an Positionen bildet eine Operationskette $K$, 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 unabhängig voneinander oder kooperativ operiert werden. \subsubsection{Gespaltene Operationskette} -Gespaltene Operationsketten 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, das heißt es gibt keine Sequenz eines Objektes, in der sich Posen eines anderen Objektes wiederholen. +Gespaltene Operationsketten partitionieren $K$ in $i \in \N_{>0}$ disjunkte Teilketten $TK \subset K $, welche $i$ Roboter isoliert voneinander bearbeiten. +Diese Aufgaben sind implizit durch die enthaltenen Teilketten im Positionsfeld der Aufgabenbeschreibung gegeben, indem alle enthaltenen Positionen disjunkt sind, das heißt es gibt keine Sequenz eines Objektes, die sich als Posen eines anderen Objektes wiederholen. \subsubsection{Kooperative Operationskette} Kooperative Ketten partitionieren $K$ in $i$ Teilketten $TK_{0}... TK_{i-1} \subset K $, deren Schnittmenge das jeweils letzte und erste Glied von $TK_{j}$ beziehungsweise $TK_{j+1}$, für $0 \leq j < i$, ist. Diese Einteilung impliziert, dass die Position innerhalb der Abstellnachricht des Vorgängerroboters ebenfalls Inhalt der Greifnachricht des Roboters $i$ ist. Diese Logik ist implizit aus der Sequenz eines Objekts entnehmbar, indem eine Pose wiederholt vorkommt. \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. +In dieser Aufgabengruppe bilden alle Positionen, die durch den Endeffektor operiert werden sollen, eine 3-dimensionale Kurve. Kurvenimplementierungen, 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 $^{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_{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. +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 gewertet, obwohl dessen Inhalt bezüglich spezifischer Aufgabenpositionen mangelhaft ist. Basierend auf diesen Beobachtungen ist eine abstrahierende Betrachtung hinsichtlich der Kettenstruktur innerhalb der Aufgabenbeschreibung zielführender. \subsection{differenzierte Voxelisierung} 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}(Voxel)(TK)$ pro Voxel und Kettenlied kalkuliert. Dieser Vorgang hat den Vorteil, die Voxel separat anhand der Teilketten $TK \subset K $ zu betrachten und anhand dieser Zuteilung jedes Objekt einem robotischen System zuzuordnen. Für jeden Voxel lässt sich so ein Index ermitteln, der den Ursprung der Vektoren $^{0}p_{Base} \in ^{0}P_{Base}$ im Voxel berücksichtigt und gleichermaßen nach dessen Inhalt bewertet. diff --git a/sections/sota.tex b/sections/sota.tex index 1049fff66f0b8de6cd0ce11396d2df07dfcf8406..eb57449bb5d36415fd3494ea53b2707b11419447 100644 --- a/sections/sota.tex +++ b/sections/sota.tex @@ -1,5 +1,6 @@ \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 automatischen 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 deren 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. +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 automatischen Schaffung kollaborative Multi-Roboter Arbeitsräume ist. Die Einhaltung der physikalischen Beschränkungen bezüglich genutzter Roboter ist hierbei unerlässlich, um hinsichtlich ihrer Aufgabe und Position ein zufriedenstellendes Ergebnis zu erzielen. Einen Ansatz zur Erfassung dieser robotischer Grenzen konkretisieren Zacharias et al. in deren wissenschaftlichen Arbeit und kombiniert diesen in folgenden Publikationen mit zusätzlichen Aspekten der Kinematik, um einen Algorithmus zu formulieren, welcher sukzessiv die Position eines Roboters hinsichtlich seiner Grenzen bestimmt \cite{Zacharias2009}. Dieses Verfahren ist in die Komponenten +\emph{Arbeitsraumanalyse}, \emph{Arbeitsrauminvertierung} und \emph{Positionsanalyse} unterteilt, welche somit die Gliederung dieses Kapitels definieren, dessen Inhalt die Auseinandersetzung mit deren Methodiken ist. Die daraus gewonnenen Erkenntnisse werden in der konzeptuellen Ausarbeitung und Implementierung genutzt. \autoref{fig:4} zeigt die Reihenfolge der Komponenten im Algorithmus. \begin{figure}[h!] \centering @@ -8,44 +9,33 @@ 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 RM] (IRM) {Arbeitsrauminversion}; \node[rounded corners, draw=black, thick, minimum height=3em, align=center, on chain, join=by {->}, right = of IRM] (Base) {Positionsanalyse}; \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. + \caption{Darstellung des Algorithmus zur sukzessiven Ermittlung einer Roboterposition. Die Kommunikation zwischen den Etappen erfolgt mittels Persistenz der Teilergebnisse. } \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{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 $\in T$ zuzüglich der Information über dessen Erreichbarkeit bilden die 'reachability map' $RM$, welche persistiert wird \autoref{eq:8}. +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}, das unmittelbare Umfeld des Roboters zu erfassen und dieses Anhand einer Metrik zu charakterisieren. Den Berechnungen liegt eine feste Menge generierter Endeffektor-Posen $T \subset SE(3)$ in Form der Transformationen $^{0}T_{Endeff} \in T$ relativ zum $Frame_{0}$ zugrunde. Alle Transformation $\in T$ zuzüglich der Information über dessen Erreichbarkeit bilden die \emph{reachability map (RM)}, welche persistiert wird \autoref{eq:8}. \begin{equation}\label{eq:7} -f_{kin}:T \to \{0 | 1\} +f_{kin}:T \to [0 | 1] \end{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) {}; - \node[] at (-2, 0, 0) (nx) {}; - \node[] at (2, 0, 0) (px) {}; - \node[] at (0, -2, 0) (ny) {}; - \node[] at (0, 2, 0) (py) {}; - \node[] at (0, 0, -3) (nz) {}; - \node[] at (0, 0, 3) (pz) {}; - - - \draw[-] (nx) -- (origin); - \draw[-] (ny) -- (origin); - \draw[-] (nz) -- (origin); - \draw[->] (origin) -- (px); - \draw[->] (origin) -- (py); - \draw[->] (origin) -- (pz); - - \end{tikzpicture} - \caption{Abstrahierte Darstellung der Mengen $\protect P_{total}$ und $\protect OR_{total}$} -\end{figure} + +\ffigbox[\FBwidth]% + {\begin{subfloatrow}% + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.47\textwidth, height = 5.5cm]{images/P_total.png}}}% + {\caption{Menge aller Positionen}\label{fig:PT}}% + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[width=0.47\textwidth, height =5.5cm]{images/OR_total.png}}}% + {\caption{Menge aller Orientierungen} \label{fig:OR}} + \end{subfloatrow}}% + {\caption{Abstrahierte Darstellung der Mengen $\protect P_{total}$ und $\protect OR_{total}$. Ein roter Marker repräsentiert den Vektoren, den der Endeffektor einnimmt. Der grüne Pfeil zeigt in die Richtung, in welche die Finger des Endeffektors ausgerichtet sind.} +\label{fig:5}}% \label{eq:10} zeigt, dass ein Paar aus einem Vektor $^{0}v \in \R^{3}$ und einer Rotation $^{0}R \in SO(3)$ die Transformation $^{0}T_{Endeff}$ als Pose des Endeffektors bildet. 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 erfolgt. Das Kreuzprodukt dieser Mengen beschreibt alle Endeffektor Posen $\in T$ als Grundlage anschließender kinematischer Berechnungen $f_{kin}$. \autoref{eq:9} visualisiert diese Mengen. @@ -71,7 +61,7 @@ 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. Wie \autoref{eq:12} zeigt, ist die Kardinalität der Menge $^{0}P_{total}$ 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, welcher in \autoref{fig:PT} anhand roter Marker illustriert ist. Wie \autoref{eq:12} zeigt, ist die Kardinalität der Menge $^{0}P_{total}$ implizit durch das Intervall $[-q,q]$ und der Auflösung $a$ gegeben. \begin{equation} \label{eq:12} @@ -79,7 +69,7 @@ Die kubische Diskretisierung des Arbeitsraums robotischer Systeme stellt ein Ver \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 einen Vektor $^{0}p$ aus den sphärischen Polarkoordinaten , die $^{0}s \in S^{2}$ auf der erzeugten Sphäre definieren. Die Menge $S^{2}$ aller Vektoren auf einer Sphäre ist in aus \autoref{eq:13} formuliert. 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 farblich. Bezogen auf die Orientierung eines Körpers, können die Polarwinkel als Gier und Nick Winkel eines Objektes interpretiert werden, welche die \autoref{fig:1} illustriert. Der zusätzlichen Roll Winkel $Roll \in [ \, 0,2 \pi \,)$ komplettiert die Rotation des Endeffektors und somit die Menge $OR_{total}$. 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. +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 und in \autoref(fig:OR) durch den Ursprung eines Grünen Pfeils angedeutet ist. Ziel dieses Prozesses ist die Entwicklung aller Orientierungen für einen Vektor $^{0}p$ aus den sphärischen Polarkoordinaten , die $^{0}s \in S^{2}$ auf der erzeugten Sphäre definieren. Die Menge $S^{2}$ aller Vektoren auf einer Sphäre ist in aus \autoref{eq:13} formuliert. 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 farblich. Bezogen auf die Orientierung eines Körpers, können die Polarwinkel als Gier und Nick Winkel eines Objektes interpretiert werden, welche die \autoref{fig:1} illustriert. Der zusätzlichen Roll Winkel $Roll \in [ \, 0,2 \pi \,)$ komplettiert die Rotation des Endeffektors und somit die Menge $OR_{total}$. 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 @@ -106,7 +96,7 @@ 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{Visualisierung der Winkel Azimut $\protect \theta$ und Colatitude $\protect \phi$ in den Farben blau beziehungsweise orange, dabei ist $\protect \overline{sp}$ die Strecke zwischen Zentrum p und einer Koordinate $\protect s \in S^{2}$ auf der Sphäre.}\label{fig:6} + \caption{Visualisierung der Winkel Azimut (blau) $\protect \theta$ und Colatitude (orange) $\protect \phi$, dabei ist $\protect \overline{sp}$ die Strecke zwischen Zentrum p und einer Koordinate $\protect s \in S^{2}$ auf der Sphäre.}\label{fig:6} \end{figure} \begin{equation} @@ -128,7 +118,7 @@ Sphärische Diskretisierungen, deren Verteilung bezüglich dessen Vektoren $s$ k \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}$ dieses Verfahrens ist anhand der gewählten Auflösungen $p, q$ und der Winkelintervalle nach \autoref{eq:16} 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}$ dieses Verfahrens ist anhand der gewählten Auflösungen $p, q$ und der Winkelintervalle nach \autoref{eq:16} berechenbar. \begin{equation} \label{eq:16} @@ -136,7 +126,7 @@ Das Abtasten der Winkelintervalle von $\theta$ und $\phi$ hinsichtlich fester 'A \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 basieren das Tammes's Problem oder hard-spheres Problem auf dieser Problemstellung, bezogen 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. +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 Problem oder hard-spheres Problem auf dieser Problemstellung, bezogen 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} \autoref{eq:18} formuliert die Metrik $D_{Reach}$ zur Klassifizierung der Erreichbarkeit eines Vektors $^{0}v_{Endeff}$. Hierzu erfolgt eine Gegenüberstellung der Menge $OR_{v}$ aller Orientierungen $R$ zu einem Vektor $v$, 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}$ \cite{Porges2015}. @@ -155,7 +145,7 @@ D_{Reach}(v) &= \frac{\vert OR_{v} \vert}{\vert OR_{total} \vert} \end{equation} \section{Arbeitsrauminversion} -Der invertierte Arbeitsraum beschreibt nach Vahrenkamp et al. alle Posen relativ zum Endeffektor, sphärisch um den Ursprung des $Frame_{0}$ verteilt, von denen aus das robotische System den Ursprung 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. +Der invertierte Arbeitsraum beschreibt nach Vahrenkamp et al. alle Posen relativ zum Endeffektor, sphärisch um den Ursprung des $Frame_{0}$ verteilt, von denen aus das robotische System den Ursprung 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 \emph{inverse reachability map (IRM)} persistiert, welche durch die \autoref{eq:19} definiert ist. \begin{equation} \label{eq:19} @@ -163,7 +153,7 @@ IRM := \{((v,R)^{-1}, D_{Reach}(v)) | ((v,R),d) \in RM \} \end{equation} \section{Positionsanalyse} -Inhalt dieses Abschnittes ist die Analyse aller potentiellen Basispositionen $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 \in A$ ergeben. Die Metrik wird dabei nach der Kalkulation auf $P_{Base}$ abgebildet und beschreibt die Zuverlässigkeit dieser Posen \cite{Makhal2018}. Komplexe Aufgaben mit der 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 Operation 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 disjunkte Teilmenge $TP_{0} ...TP_{k-1}\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$. +Inhalt dieses Abschnittes ist die Analyse aller potentiellen Basispositionen $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 \in A$ ergeben. Die Metrik wird dabei nach der Kalkulation auf $P_{Base}$ abgebildet und beschreibt die Zuverlässigkeit dieser Posen \cite{Makhal2018}. Komplexe Aufgaben mit der 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 Operation 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 disjunkte Teilmenge $TP_{0} ...TP_{k-1}\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{equation} @@ -175,7 +165,7 @@ P_{Base} &:= \{(a \times t, d) | (t, d) \in IRM , a \subset SE(3) \} \\ \end{equation} \subsection{Charakterisierung eines Voxels} -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 Voxel 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. +Nun erfolgt die Eruierung des Algorithmus von Makhal et al. \cite{Makhal2018}, welcher alle $k$ Voxel charakterisiert und anhand der enthaltenen Vektoren $^{0}p_{Base}$ bestimmt, welches Voxel 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. \begin{equation} \label{eq:22} diff --git a/thesis.tex b/thesis.tex index 14a198b62801e578f39eeda640ae2e5e94a0952a..0cc2a65eea293aa701514f18ab54ea814b6f1363 100644 --- a/thesis.tex +++ b/thesis.tex @@ -14,9 +14,9 @@ \usepackage[ style=numeric-comp, backend=biber, - url=true, + url=false, doi=true, - isbn=true, + isbn=false, hyperref, ]{biblatex} \addbibresource{bibliography.bib} @@ -24,6 +24,18 @@ \clearfield{note}% } +\renewbibmacro*{doi+eprint+url}{% + \printfield{doi}% + \newunit\newblock% + \iftoggle{bbx:eprint}{% + \usebibmacro{eprint}% + }{}% + \newunit\newblock% + \iffieldundef{doi}{% + \usebibmacro{url+urldate}}% + {}% + } + \usepackage[hidelinks]{hyperref} % makes all links clickable but hides ugly boxes