Commit 27c8a6f4 by Kai Westerkamp

Fotos

parent 0e0e87ba
...@@ -9,13 +9,12 @@ Der Betrachter kann sich frei in der virtuellen Welt bewegen und erkennt schnell ...@@ -9,13 +9,12 @@ Der Betrachter kann sich frei in der virtuellen Welt bewegen und erkennt schnell
Eine Fehlerquelle sind die Kanten von Objekten zu Flächen, die von der Kinect nicht gesehen werden. Eine Fehlerquelle sind die Kanten von Objekten zu Flächen, die von der Kinect nicht gesehen werden.
Das Bild der Kinect ist perspektivisch und wird beim Errechnen der Punktwolke dort ein Punkt approximiert, dann entstehen Flächen die nicht der Realität entsprechen. (siehe \ref{img:KinectSides} ). Das Bild der Kinect ist perspektivisch und wird beim Errechnen der Punktwolke dort ein Punkt approximiert, dann entstehen Flächen die nicht der Realität entsprechen. (siehe \ref{img:KinectSides} ).
\todo{Bild 2 ändern / vergrößern?}
\begin{figure} \begin{figure}
\label{img:KinectSides} \label{img:KinectSides}
\subfigure[Aufnahme aus Sicht der Kinect ]{\includegraphics[width=0.49\textwidth]{Bilder/1FrameKamera.png}} \subfigure[Aufnahme aus Sicht der Kinect ]{\includegraphics[width=0.49\textwidth]{Bilder/1FrameKamera.png}}
\subfigure[Aufnahme von der Seite]{\includegraphics[width=0.49\textwidth]{Bilder/1FrameSeite.png}} \subfigure[Aufnahme von der Seite]{\includegraphics[width=0.49\textwidth]{Bilder/1FrameSeite.png}}
\caption{Aufnahme der Kinect aus verschiedenen Perspektiven. In Bild (b) sind falsche Punkte zu sehen, die durch die Rekonstruktion aus einem 2D Bild entstehen.} \caption{Aufnahme der Kinect aus verschiedenen Perspektiven. In Bild (b) sind falsche Punkte zu sehen, die durch die Rekonstruktion aus einem 2D Bild entstehen. }
\end{figure} \end{figure}
...@@ -68,16 +67,15 @@ Normale[x,y] = Normalize(-dzXAxis,-dzYAxis,1.0)\\ ...@@ -68,16 +67,15 @@ Normale[x,y] = Normalize(-dzXAxis,-dzYAxis,1.0)\\
Mit dem Skalarprodukt lässt sich der Winkel zwischen dem Kameravektor $(0,0,1)$ und der Normalen ausrechnen. Mit dem Skalarprodukt lässt sich der Winkel zwischen dem Kameravektor $(0,0,1)$ und der Normalen ausrechnen.
Ein maximaler Winkel von 65\degree hat in den Tests ein gutes Ergebnis geliefert. Ein maximaler Winkel von 65\degree hat in den Tests ein gutes Ergebnis geliefert.
\todo{Quellen auf Kinect und Lighthose} \todo{Quellen auf Kinect und Lighthouse -> vlt besser in related}
\section{Zusammenfügen von Frames} \section{Zusammenfügen von Frames}
Ein wichtiger Teil bei dem Aufnehmen der Punktwolke ist das Zusammenfügen von mehreren Frames. Ein wichtiger Teil bei dem Aufnehmen der Punktwolke ist das Zusammenfügen von mehreren Frames.
Hierfür wurde die Kinect mit dem Lighthouse Tracking System verbunden und verzichtet damit auf aufwändige Berechnungen. Hierfür wurde die Kinect mit dem Lighthouse Tracking System verbunden und verzichtet damit auf aufwändige Berechnungen.
Für das Zusammenfügen der einzelnen Frames werden ein paar Informationen benötigt.
\todo{Foto Halterung} Die Frames der Kinect und die daraus resultierenden Punktwolken haben ihren Ursprung im Tiefensensor.
Im lokalen Koordinatensystem der Kinect, also jedes Frames liegt der Ursprung in dem Tiefensensor. Die Transformation $transformControllerToKinect$ zwischen dem Koordinatensystem des Controllers und der Kinect wurde bestimmt
die Transformation $transformControllerToKinect$ zwischen dem Koordinatensystem des Controllers und der Kinect wurde bestimmt und die globale Transformation des Controllers $transformController$ ist in der OpenVR API abfragbar.
und die globale Transformation des Controllers $transformController$ ist in der OpenVR API abfragbar
Die Transformation der lokalen Punktwolke in ein globale ist mit diesen beiden Transformationen möglich. Die Transformation der lokalen Punktwolke in ein globale ist mit diesen beiden Transformationen möglich.
\begin{equation} \begin{equation}
\begin{split} \begin{split}
...@@ -111,8 +109,6 @@ Der Ursprung des Controllers lässt sich aus den Modellen von SteamVR auslesen. ...@@ -111,8 +109,6 @@ Der Ursprung des Controllers lässt sich aus den Modellen von SteamVR auslesen.
Dieser liegt geschickt für VR Anwendungen, ist aber für das Tracking von Objekten ungeschickt. Dieser liegt geschickt für VR Anwendungen, ist aber für das Tracking von Objekten ungeschickt.
Bei der Implementation stand noch kein Vive Tracker zur Verfügung. Bei der Implementation stand noch kein Vive Tracker zur Verfügung.
Für die Arbeit wurde der Controller so nah wie möglich an dem Teifensensor, also direkt darüber angebracht (siehe Abb.\ref{img:KinecttoVive}). Für die Arbeit wurde der Controller so nah wie möglich an dem Teifensensor, also direkt darüber angebracht (siehe Abb.\ref{img:KinecttoVive}).
\todo{Bilder}
\begin{figure} \begin{figure}
...@@ -125,10 +121,11 @@ Für die Arbeit wurde der Controller so nah wie möglich an dem Teifensensor, al ...@@ -125,10 +121,11 @@ Für die Arbeit wurde der Controller so nah wie möglich an dem Teifensensor, al
\begin{figure} \begin{figure}
\label{img:KinecttoVive} \label{img:KinecttoVive}
\subfigure[Befestigung der Kienct ]{\includegraphics[width=0.32\textwidth]{Bilder/1FrameKamera.png}} \subfigure[Befestigung der Kienct]{\includegraphics[width=0.32\textwidth]{Bilder/KincetHalterung.JPG}}
\subfigure[Befestigung der Kienct ]{\includegraphics[width=0.32\textwidth]{Bilder/1FrameKamera.png}} \subfigure[Kinect mit Controler]{\includegraphics[width=0.32\textwidth]{Bilder/KinecController1.JPG}}
\subfigure[Relative Position in 3D]{\includegraphics[width=0.32\textwidth]{Bilder/KinectToVive.png}} \subfigure[Relative Position in 3D]{\includegraphics[width=0.32\textwidth]{Bilder/KinectToVive.png}}
\caption{Befestigung des Controllers an der Kinect. Die Mitte des Controllers ist direkt über dem Tiefensensor. Die Koordinatenkreuze zeigen den jeweiligen Ursprung des Geräts ([x,y,z] Achse=[rot,grün,blau])} \caption{Befestigung des Controllers an der Kinect. Die Mitte des Controllers ist direkt über dem Tiefensensor.
In Bild a) ist die 3D gedruckte Halterung zusehen. Der Controller wird auf den Zylinder gesteckt. In c) ist die Virtuelle Repräsentation. Koordinatenkreuze zeigen den jeweiligen Ursprung des Geräts ([x,y,z] Achse=[rot,grün,blau]}
\end{figure} \end{figure}
......
...@@ -9,7 +9,7 @@ Bei synchronisierten Welten zwischen VR und AR sollte dieser Strahl auch in der ...@@ -9,7 +9,7 @@ Bei synchronisierten Welten zwischen VR und AR sollte dieser Strahl auch in der
\section{Unreal Engine 4 und HoloLens} \section{Unreal Engine 4 und HoloLens}
Es gibt keinen offiziellen Support der HoloLens für die Unreal Engine 4. Es gibt keinen offiziellen Support der HoloLens für die Unreal Engine 4.
Aktuell wird das Einwickeln für die neue AR Plattform nur in Unity unterstützt. Aktuell wird das Einwickeln für die neue AR Plattform nur in Unity unterstützt.
Microsoft hat auf Github einen Fork der Unreal Engine cite{UWP} in dem Support für die Universal Windows Plattform (UWP)\todo{glossar} enthalten ist. Microsoft hat auf Github einen Fork der Unreal Engine cite{UWP} in dem Support für die Universal Windows Plattform (UWP) enthalten ist.
UWP beitet eine allgemeine Plattform für Apps, die auf allen Windows basierten Systemen funktionieren. UWP beitet eine allgemeine Plattform für Apps, die auf allen Windows basierten Systemen funktionieren.
In diesem Repositoy befindet sich auch ein Development Branch, der die HoloLens Unterstüzung in Unreal integriert. In diesem Repositoy befindet sich auch ein Development Branch, der die HoloLens Unterstüzung in Unreal integriert.
Für die Implementierung wurde dieser Development Branch getestet. Für die Implementierung wurde dieser Development Branch getestet.
......
...@@ -13,7 +13,15 @@ Als Referenzszenario wurde ein Videostream gewählt. Als Vorbereitung sendet der ...@@ -13,7 +13,15 @@ Als Referenzszenario wurde ein Videostream gewählt. Als Vorbereitung sendet der
\section{Versuchsaufbau} \section{Versuchsaufbau}
Das Hardwareproblem wurde in der Evaluation durch Duplosteine simuliert. Das Hardwareproblem wurde in der Evaluation durch Duplosteine simuliert.
Aus den Steinen wurde insgesamt 2 Turmpaare aus 2 relativ ähnlichen Türmen gebaut. Aus den Steinen wurde insgesamt 2 Turmpaare aus 2 relativ ähnlichen Türmen gebaut (Siehe Abb. \ref{img:tuerme}).
\begin{figure}
\label{img:tuerme}
\subfigure[Turmpaar 1]{\includegraphics[width=0.49\textwidth]{Bilder/turmpaar1seite.JPG}}
\subfigure[Turmpaar 2]{\includegraphics[width=0.49\textwidth]{Bilder/turmpaar2seite.JPG}}
\caption{Die beiden Duplo Türme die in der Evaluation verwendet wurden. Die Makierung auf dem Tisch sind für die exakte Positionierung. }
\end{figure}
\todo{Todo Bilder von beiden Turmpaaren auf dem Tisch} \todo{Todo Bilder von beiden Turmpaaren auf dem Tisch}
In den Türmen wurden verschiedene Farben benutzt, sodass jeder Turm insgesamt 13 farbige Ebenen hat. In den Türmen wurden verschiedene Farben benutzt, sodass jeder Turm insgesamt 13 farbige Ebenen hat.
Jede Farbe wurde mit einer eindeutigen kleinen Beschriftung versehen, bestehend aus einem Buchstaben und einer Zahl. Jede Farbe wurde mit einer eindeutigen kleinen Beschriftung versehen, bestehend aus einem Buchstaben und einer Zahl.
...@@ -21,7 +29,7 @@ Diese Beschriftung kann dazu verwendet werden um die Korrektheit bei einem Exper ...@@ -21,7 +29,7 @@ Diese Beschriftung kann dazu verwendet werden um die Korrektheit bei einem Exper
Des weiterem wurde darauf geachtet, dass in jedem Turmpaar eine Farbsequenz von 4 aneinander grenzenden Farben eindeutig ist. Des weiterem wurde darauf geachtet, dass in jedem Turmpaar eine Farbsequenz von 4 aneinander grenzenden Farben eindeutig ist.
Hierbei sollten sich die Türme aber möglichst ähnlich sein um die Aufgabe zu erschweren. Hierbei sollten sich die Türme aber möglichst ähnlich sein um die Aufgabe zu erschweren.
Auf einem fahrbaren Tisch wurden für beide Turmpaare Maskierungen angebracht, damit diese immer an der gleichen Position auf dem Tisch stehen. Auf einem fahrbaren Tisch wurden für beide Turmpaare Makierungen angebracht, damit diese immer an der gleichen Position auf dem Tisch stehen.
Für das VR Szenario wurde zusätzlich ein Vive Tracker auf dem Tisch platziert. Für das VR Szenario wurde zusätzlich ein Vive Tracker auf dem Tisch platziert.
Damit ist es möglich, das Objekt auch in der virtuellen Welt zu tracken und richtig zu positionieren. Damit ist es möglich, das Objekt auch in der virtuellen Welt zu tracken und richtig zu positionieren.
......
::set localPath=C:\Users\kaiwe\Desktop\TeXworks-win-0.6.2-201704300708-git_7ecce17 set localPath=C:\Users\kaiwe\Desktop\TeXworks-win-0.6.2-201704300708-git_7ecce17
set localPath=..\..\TeXworks-win-0.6.2-201704300708-git_7ecce17 ::set localPath=..\..\TeXworks-win-0.6.2-201704300708-git_7ecce17
set ausarbeitungpath=. set ausarbeitungpath=.
start %localPath%\TeXworks.exe %ausarbeitungpath%\thesis.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\thesis.tex
start %localPath%\TeXworks.exe %ausarbeitungpath%\thesis.bib start %localPath%\TeXworks.exe %ausarbeitungpath%\thesis.bib
start %localPath%\TeXworks.exe %ausarbeitungpath%\01einleitung.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\01einleitung.tex
::start %localPath%\TeXworks.exe %ausarbeitungpath%\03points.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\03points.tex
::start %localPath%\TeXworks.exe %ausarbeitungpath%\04tiles.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\04tiles.tex
::start %localPath%\TeXworks.exe %ausarbeitungpath%\05visualize.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\05visualize.tex
::start %localPath%\TeXworks.exe %ausarbeitungpath%\06Holoens.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\06Holoens.tex
start %localPath%\TeXworks.exe %ausarbeitungpath%\07Evaluation.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\07Evaluation.tex
start %localPath%\TeXworks.exe %ausarbeitungpath%\08Ausblick.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\08Ausblick.tex
start %localPath%\TeXworks.exe %ausarbeitungpath%\Anhang.tex start %localPath%\TeXworks.exe %ausarbeitungpath%\Anhang.tex
Ausarbeitung/Bilder/1FrameSeite.png

99 KB | W: | H:

Ausarbeitung/Bilder/1FrameSeite.png

76.9 KB | W: | H:

Ausarbeitung/Bilder/1FrameSeite.png
Ausarbeitung/Bilder/1FrameSeite.png
Ausarbeitung/Bilder/1FrameSeite.png
Ausarbeitung/Bilder/1FrameSeite.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -102,7 +102,7 @@ ylabel={Zeit in s}, ...@@ -102,7 +102,7 @@ ylabel={Zeit in s},
at (axis cs:28.5,\pgfkeysvalueof{/pgfplots/ymin}) {}; at (axis cs:28.5,\pgfkeysvalueof{/pgfplots/ymin}) {};
\node [label=below:13] \node [label=below:13]
at (axis cs:31.5,\pgfkeysvalueof{/pgfplots/ymin}) {}; at (axis cs:31.5,\pgfkeysvalueof{/pgfplots/ymin}) {};
\node [label=below:Gesammt] \node [label=below:Gesamt]
at (axis cs:34.5,\pgfkeysvalueof{/pgfplots/ymin}) {}; at (axis cs:34.5,\pgfkeysvalueof{/pgfplots/ymin}) {};
\end{scope} \end{scope}
......
...@@ -102,7 +102,7 @@ ylabel={Zeit in s}, ...@@ -102,7 +102,7 @@ ylabel={Zeit in s},
at (axis cs:28.5,\pgfkeysvalueof{/pgfplots/ymin}) {}; at (axis cs:28.5,\pgfkeysvalueof{/pgfplots/ymin}) {};
\node [label=below:13] \node [label=below:13]
at (axis cs:31.5,\pgfkeysvalueof{/pgfplots/ymin}) {}; at (axis cs:31.5,\pgfkeysvalueof{/pgfplots/ymin}) {};
\node [label=below:Gesammt] \node [label=below:Gesamt]
at (axis cs:34.5,\pgfkeysvalueof{/pgfplots/ymin}) {}; at (axis cs:34.5,\pgfkeysvalueof{/pgfplots/ymin}) {};
\end{scope} \end{scope}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment