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

bitte builde omg

parent 0e11e034
Branches
No related tags found
No related merge requests found
Pipeline #11754 failed
......@@ -168,6 +168,18 @@
}
@misc{Wikipedia.2021,
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},
......@@ -188,3 +200,15 @@
}
@inproceedings{Zacharias2009,
author = {Zacharias, Franziska and Sepp, Wolfgang and Borst, Christoph and Hirzinger, Gerd},
title = {Using a model of the reachable workspace to position mobile manipulators for 3-d trajectories},
pages = {55--61},
publisher = {IEEE},
isbn = {978-1-4244-4597-4},
booktitle = {2009 9th IEEE-RAS International Conference on Humanoid Robots},
year = {12/7/2009 - 12/10/2009},
doi = {10.1109/ICHR.2009.5379601}
}
......@@ -2,24 +2,24 @@
\usepackage{inconsolata}
\lstdefinestyle{common-style}{
basicstyle=\ttfamily,
morecomment=[s]{<!--}{-->},
commentstyle={\color{gray}},
numbers=left,
numberstyle=\ttfamily,
stepnumber=1,
numbersep=5pt,
xleftmargin=2em,
framexleftmargin=2em,
showstringspaces=false,
breaklines=true,
frame=lines,
backgroundcolor=\color{background},
autogobble=true,
basicstyle=\scriptsize\ttfamily, % the size of the fonts that are used for the code
showspaces=false, % show spaces adding particular underscores
showstringspaces=false, % underline spaces within strings
showtabs=false, % show tabs within strings adding particular underscores
% frame=tlrb, % adds a frame around the code
framexleftmargin=1em, % space between left part of frame and listing
tabsize=2, % sets default tabsize to 2 spaces
breaklines=true, % sets automatic line breaking
breakatwhitespace=true, % sets if automatic breaks should only happen at whitespace
keywordstyle={\color{blue}\textbf}, % keywords are blue
commentstyle={\color{gray}}, % comments
literate={\$}{{{\$}}}1,
basewidth=0.5em,
breakindent=40pt,
breakautoindent=true,
escapechar=\&,
aboveskip={0.1\baselineskip}
}
}
\colorlet{punct}{red!60!black}
\definecolor{background}{HTML}{EEEEEE}
......@@ -45,10 +45,21 @@
morecomment=[l]{//}, morecomment=[s]{/*}{*/},
}
\lstdefinelanguage{JSON}{
style=common-style,
morecomment=[s]{<!--}{-->},
literate=
\lstdefinelanguage{json}{
basicstyle=\ttfamily,
numbers=left,
numberstyle=\ttfamily,
numbersep=5pt,
xleftmargin=2em,
framexleftmargin=2em,
stepnumber=1,
numbersep=8pt,
showstringspaces=false,
breaklines=true,
frame=lines,
backgroundcolor=\color{background},
autogobble=true,
literate=
*{0}{{{\color{numb}0}}}{1}
{1}{{{\color{numb}1}}}{1}
{2}{{{\color{numb}2}}}{1}
......@@ -67,6 +78,7 @@
{]}{{{\color{delim}{]}}}}{1},
}
\lstdefinelanguage{JRAG}[]{java}{
style=common-style,
morekeywords={abstract,public,private,boolean,aspect,null,syn,inh,coll,eq,with,int,contributes,new,return,for,if,else,this,to,true,false},
......@@ -86,7 +98,6 @@
\lstdefinestyle{AST} { language=AST,style=common-style }
\lstdefinestyle{JRAG} { language=JRAG,style=common-style }
\lstdefinestyle{Java} { language=Java,style=common-style }
\lstdefinestyle{JSON} { language=JSON,style=common-style }
\lstset{
......
......@@ -48,7 +48,7 @@ Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdate
\caption{Visualisierung der Verzeichnisstruktur der Roboterbeschreibung und Konfiguration. Bezüglich der Übersichtlichkeit sind nur die Dateien gelistet, deren Modifikation in Hinsichtlich der Realisierung mehrerer robotischer Systeme relevant ist.}\label{fig:9}
\end{figure}
\begin{lstlisting}[language=JSON,firstnumber=1, caption={ Dual Setup Beispiel, in mit Modifikationen zur Übergabe der Roboterpositionen.}, label={lst:4}, captionpos=b]
\begin{lstlisting}[language=json,firstnumber=1, caption={ Dual Setup Beispiel, in mit Modifikationen zur Übergabe der Roboterpositionen.}, label={lst:4}, captionpos=b]
{<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="panda">
<!-- Einbindung der Roboter Komponenten-->
<xacro:include filename="panda_arm.xacro"/>
......@@ -79,7 +79,7 @@ Die Roboterbeschreibung ist Grundlage der Generierung valider Konfigurationsdate
Eine Konfigurationsdatei konkretisiert ein robotisches System als Bewegungsgruppe 'MoveGroup', dessen Identität eindeutig durch ihr Namensattribut bestimmt ist. Demnach genügt dieses zur Instanziierung eines MoveGroup Objekts, welcher die Kommunikation zum gewählten Roboter initiiert. Eine duale Konfigurationsdatei ermöglicht analog das Instanziieren und Ansteuern zweier robotischer Systeme. Dabei ist eine Fehlfunktion dieser Instanzen während einer Operation observierbar, wobei die Planung und Exekution durch eine vermeintlich unbeabsichtigte Kollision zwischen Endeffektor und Primitiv detektiert wird, woraufhin die auszuführende Handlung negativ terminiert. Dies impliziert, dass die Funktionen des MoveGroup Interface hinsichtlich der Betrachtung mehrerer robotischer Systeme limitiert sind. Der \autoref{lst:5} zeigt einen Ansatz, der die Kollisionsdetektion definierter Kollisionsobjekte in der allowed kollision matrix 'AKM' deaktiviert, was Beispielsweise das Greifen, Halten und Abstellen eines Primitives in einem Dualen Setup ermöglicht.
\begin{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. Der illustrierte Quelltext Auszug stellt einen Ansatz zur Umgehung dar und ermöglicht eine erfolgreiche Terminierung des Vorgangs.}, label={lst:5}, captionpos=b]
// Initialisierung der Szene
planning_scene::PlanningScene ps(kinematic_model);
......
......@@ -49,7 +49,7 @@ r = \frac {a}{2}
Durch die Wahl des festen Abstands $a$ bezüglich der kubischen Diskretisierung und Definition der Vektoren $^{0}p \in P_{total}$ als Zentrum einer Sphäre, wird der Radius $r \in \R_{+}$ der Sphäre nach \autoref{eq:23} kalkuliert.
Zusätzlich empfiehlt sich die vollständige Auslagerung der Berechnungen auf performantere Rechner, um diese mit mehreren Rechenkernen zu operieren. Beispielsweise empfiehlt sich für diese Arbeit das Hochleistungsrechenzentrum der TU-Dresden. \autoref{lst:1} zeigt die Struktur der JSON-Datei, die als Artefakt der Berechnung in Gitlab entnommen werden. Die Felder 'resolution' und 'maxdistance' entstammen den Parametern der kubischen Diskretisierung und definieren den Namen der Datei. Das Feld 'pose' enthält die String-Repräsentation aller Endeffektor-Posen in einer Liste. Diese bestehen aus Position und Orientierung, wobei die Orientierung als Quaternion notiert ist, was dem Präfix q\_ zu entnehmen ist. Das Ergebnis der kinematischen Funktion aus \autoref{eq:7} als Informationen bezüglich der Erreichbarkeit der Pose ist als Wahrheitswert/bool in der Liste des Feldes 'value' dokumentiert.
\begin{lstlisting}[language=JSON,firstnumber=1, caption={Struktur der RM als Resultat der Arbeitsraumanalyse},captionpos=b, label={lst:1}]
\begin{lstlisting}[language=json,firstnumber=1, caption={Struktur der RM als Resultat der Arbeitsraumanalyse},captionpos=b, label={lst:1}]
{"name": "RM_\$(maxdistance)_\$(resolution)"
"resolution": float,
"max_distance": float,
......@@ -152,7 +152,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 JSON Datei persistiert, dessen Struktur der \autoref{lst:2} zeigt, wobei die Felder 'pose' und 'value' nicht aus der zugrundeliegenden $RM$ übernommen wurden. Das Ergebnis dieses Algorithmus kann bei Formeln der Form \autoref{eq:20} Angewendet werden, um die Roboter Positionierung hinsichtlich der Definition einer spezifischen Aufgabe zu errechnen.
\begin{lstlisting}[language=JSON,firstnumber=1, caption={In 'value' werden alle kalkulierten Werte der Metrik persistiert, während 'pose' alle invertierten Endeffektor Posen enthält},captionpos=b, label={lst:2}]
\begin{lstlisting}[language=json,firstnumber=1, caption={In 'value' werden alle kalkulierten Werte der Metrik persistiert, während 'pose' alle invertierten Endeffektor Posen enthält},captionpos=b, label={lst:2}]
{"name": "IRM_\$(maxdistance)_\$(resolution)"
"resolution": float,
"max_distance": float,
......@@ -165,7 +165,7 @@ 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 Aufgaben ermöglicht. Dabei empfehlen sich Interaktive Marker durch ihren Funktionsumfang zur Repräsentation der Kollisionsobjekte, und bieten weitere Optionen zur Aufgabenbeschreibung in ihren Menüs.
Eine valide Aufgabenbeschreibung kann in JSON Dateien persistiert werden, dessen Struktur der \autoref{lst:3} veranschaulicht und zur Durchführung der Aufgabe durch robotische Systeme bedingt ist.
\begin{lstlisting}[language=JSON,firstnumber=1, caption={Der Nutzer hat die Möglichkeit, seine Aufgabe zu benennen. Das Feld 'position' ist eine Liste aller Aufgaben-Posen in Form einer Kette, die das jeweilige robotische System operieren muss.},captionpos=b, label={lst:3}]
\begin{lstlisting}[language=json,firstnumber=1, caption={Der Nutzer hat die Möglichkeit, seine Aufgabe zu benennen. Das Feld 'position' ist eine Liste aller Aufgaben-Posen in Form einer Kette, die das jeweilige robotische System operieren muss.},captionpos=b, label={lst:3}]
{"name": "TASK_"
"position": [ "x y z q_x q_y q_z q_w"],
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment