Commit fd7665fc by Werner Westerkamp

Merge branch 'master' of ssh://git.breab.org:2223/kai/MasterArbeit

# Conflicts: # Ausarbeitung/02related.tex
parents af676f94 62921c6d
Pipeline #391 passed with stage
in 1 minute 14 seconds
......@@ -90,24 +90,24 @@ Die App nimmt mit der Frontkamera eine Smartphones die Umgebung auf und projizie
\section{3D Punktwolken Scan}
\section{3D-Punktwolken-Scan}
%http://ieeexplore.ieee.org/document/4650967/references?ctx=references
Aus einem Tiefeinbild wie das der Kinect können Punktwolken aus einer Perspektive berechnet werden.
Für größere Aufnahmen werden aber häufig mehrere Punktwolken aufgenommen, die anschließend vereint werden müssen.
Diesen Vorgang nennt man Registration.
Hierbei muss für die verschiedenen Ansichten der getrennt aufgenommenen Punktwolken eine relative Position und Orientierung gefunden werden sodass überlappende Teile perfekt übereinanderliegen.
Hierbei muss für die verschiedenen Ansichten der getrennt aufgenommenen Punktwolken eine relative Position und Orientierung gefunden werden, sodass überlappende Teile perfekt übereinander liegen.
Einer der beliebtesten Algorithmen für die Registration ist Iterative Closest Point (ICP) \cite{121791}
Bei IPC versucht die optimale Transformation zwischen zwei Datensätzen zu finden indem eine Fehlermetrik zwischen den Punktwolken minimiert wird.
IPC versucht die optimale Transformation zwischen zwei Datensätzen zu finden, indem eine Fehlermetrik zwischen den Punktwolken minimiert wird.
Hierbei wird versucht für jeden Punkt aus der einen Punktwolke der jeweils nächste Punkt aus der andern Punktwolke bestimmt.
Dabei wird die Annahme getroffen, dass jeder Punkt einen zugehörigen Punkt in der andern Punktwolke hat.
Dabei wird die Annahme getroffen, dass jeder Punkt einen zugehörigen Punkt in der anderen Punktwolke hat.
Da Punktwolken sich häufig nur teilweise überlappen, wurden viele Versuche unternommen den Bereich einzuschränken.
Eine Möglichkeit ist die Feature Erkennung \cite{982886} \cite{4650967}, bei der zuerst ein Bereich ausgewählt wird, der in beiden Punktwolken identisch ist.
Eine Möglichkeit ist die Feature-Erkennung \cite{982886,4650967}, bei der zuerst ein Bereich ausgewählt wird, der in beiden Punktwolken identisch ist.
Eine Alternative ist das Einbeziehen weiterer Informationen zur Regression. So können Farben \cite{603871} und Normalen \cite{normal} das Ergebnis verbessern.
Jedoch sind diese Prozesse Zeit- und Rechenaufwändig.
Für die Kinect gibt es kostenlose Tools, die versuchen mit verschiedenen Methoden einen 3D-Scan anzufertigen.
Jedoch sind diese Prozesse zeit- und rechenaufwändig.
Für die Kinect gibt es kostenlose Tools, die versuchen, mit verschiedenen Methoden einen 3D-Scan anzufertigen.
Das Programm 3D-Scan der Microsoft Corporation \cite{3DScan} funktioniert, in dem man die Kinect langsam um das Objekt herum bewegt.
Es wird dabei versucht die Kamerabewegung zu errechnen und nach abgeschlossener Aufnahme wird das 3D-Modell berechnet.
Bewegt man sich zu schnell so bricht der Scan ab und man muss erneut beginnen.
Bewegt man sich zu schnell, so bricht der Scan ab und man muss erneut beginnen.
%http://www.kscan3d.com/ -> nicht mehr supported :(
......@@ -117,28 +117,28 @@ Ein Ansatz hierbei ist, dass der lokale Nutzer einen Videostream aufnimmt. Diese
Eine Erweiterung dieses Prinzips ist von Bauer et al. \cite{806696} vorgestellt worden.
Hierbei wird in einem AR-HMD des lokalen Nutzers der 2D-Mauszeiger des Experten eingeblendet.
Die Position des Mauszeigers ist aber schnell veraltet, wenn sich der lokale Nutzer bewegt.
Der Experte sieht hierbei nur ein 2D-Abbild der Realität, das für komplexere 3D-Aufgaben nicht immer ausreicht.
Christine et al. \cite{Chastine:2008} ermöglichen es dem Experten einen 3 dimensionalen Pfeil in der lokalen Ansicht zu manipulieren.
Jedoch sieht der Experte hierbei nur ein 2D-Abbild der Realität, das für komplexere 3D-Aufgaben nicht immer ausreicht.
Christine et al. \cite{Chastine:2008} ermöglichen es dem Experten, einen dreidimensionalen Pfeil in der lokalen Ansicht zu manipulieren.
Jedoch ist das Ausrichten des Pfeil schwierig und zeitintensiv.
Botteccia et al. \cite{Bottecchia:2010} erlauben dem Experten vorgefertigte 3D-Animationen im Sichtfeld des Lokalen Nutzers zu platzieren.
Dieses Vorgehen dient dazu dem lokalen Nutzer zu demonstrieren wie eine Aufgabe zu lösen ist, jedoch ist dieses Vorgehen wegen den vorgefertigten Animationen nicht sehr flexibel.
Botteccia et al. \cite{Bottecchia:2010} erlauben dem Experten, vorgefertigte 3D-Animationen im Sichtfeld des lokalen Nutzers zu platzieren.
Dieses Vorgehen dient dazu, dem lokalen Nutzer zu demonstrieren, wie eine Aufgabe zu lösen ist, jedoch ist dieses Vorgehen wegen den vorgefertigten Animationen nicht sehr flexibel.
Tachia et al. \cite{Tecchia:2012} nutzen statische Tiefensensoren um dynamisch die Umgebung des Experten und des lokalen Nutzers aufzunehmen.
Tachia et al. \cite{Tecchia:2012} nutzen statische Tiefensensoren, um dynamisch die Umgebung des Experten und des lokalen Nutzers aufzunehmen.
Die 3D-Szene des Lokalen Nutzers und die Hände des Experten werden zusammengefügt und beiden Seiten präsentiert.
Das erlaubt dem Experten mit Handgesten Hilfestellungen zu geben.
Kurata et al. \cite{1364691} ahbe ein System entwickelt bei dem der lokale Nutzer eine Kamera und einen Laserpointer auf der Schulter trägt.
Der Experte sieht die Umgebung durch die Kamera und kann mit dem Laserpointer einen Point of Interest in der Echten Welt markieren.
Kurata et al. \cite{1364691} haben ein System entwickelt, bei dem der lokale Nutzer eine Kamera und einen Laserpointer auf der Schulter trägt.
Der Experte sieht die Umgebung durch die Kamera und kann mit dem Laserpointer einen Point of Interest in der echten Welt markieren.
Lanir et al. \cite{Lanir:2013:OCP:2470654.2481309} haben dieses Konzept erweitert.
Auf einem beweglichen Roboterarm wurde eine Kamera und ein portabler Beamer befestigt.
Der Experte kann den Roboterarm steuern und so seine Sicht anpassen und mit dem Beamer 2D-Einzeichnungen in die Echte Welt projizieren.
Oda et al. \cite{Oda:2015:VRR:2807442.2807497} haben ein System vorgestellt bei dem der Experte virtueller Replikate manipuliert.
Die Objekte beim Lokalen Nutzer werden durch ein optisches Tracking System lokalisiert.
In einer VR-Umgebung werden für einen Experten zugehörige Virtuelle Proxys visualisiert.
Diese Virtuellen Proxys sind vorgefertigte 3D-Repräsentationen der Objekte.
Der Experte erklärt dem Lokalen Nutzer wie er die Objekte zusammenzubauen hat.
Hierfür stehen dem Experten Virtuelle Replikate zur Verfügung.
Oda et al. \cite{Oda:2015:VRR:2807442.2807497} haben ein System vorgestellt, bei dem der Experte virtuelle Replicas manipuliert.
Die Objekte beim lokalen Nutzer werden durch ein optisches Trackingsystem lokalisiert.
In einer VR-Umgebung werden für einen Experten zugehörige virtuelle Proxys visualisiert.
Diese virtuellen Proxys sind vorgefertigte 3D-Repräsentationen der Objekte.
Der Experte erklärt dem lokalen Nutzer, wie er die Objekte zusammenzubauen hat.
Hierfür stehen dem Experten virtuelle Replikate zur Verfügung.
Der Experte kann ein Objekt virtuell kopieren und an die richtige Position setzen.
Der Lokale Benutzer bekommt diese virtuelle Kopie relativ zu den Originalen in seiner AR-Umgebung visualisiert.
......@@ -158,44 +158,44 @@ Der Lokale Benutzer bekommt diese virtuelle Kopie relativ zu den Originalen in s
\section{Verwendete Technologien}
In diesem Unterkapitel wird verwendete Hardware und Software vorgestellt.
In diesem Unterkapitel wird die verwendete Hardware und Software vorgestellt.
\subsection{HTC Vive und Lighthouse Tracking}
\label{sect:vive}
Die HTC Vive ist im Kern ein Head-Mounted Display (HMD), das von HTC in Kooperation mit Valve seit April 2016 produziert und verkauft wird.
Das System besteht aus dem HMD, zwei Controllern und zwei Basistationen.
Das System besteht aus dem HMD, zwei Controllern und zwei Basisstationen.
Für den Betrieb wird zusätzlich ein leistungsstarker Computer benötigt, der das Simulieren und Rendern der virtuellen Welt übernimmt.
Das Headset wird hierfür mit Kabeln (USB, HDMI und Strom) an den Rechner angeschlossen.
Die Controller kommunizieren kabellos mit Headset, das die Daten an den Computer weiterleitet.
Die Controller kommunizieren kabellos mit dem Headset, das die Daten an den Computer weiterleitet.
Die Vive verwendet das von Valve entwickelte Lighthouse Tracking.
Hierfür emittieren 2 passive Basisstationen infrarote Laserstrahlen.
Hierfür emittieren zwei passive Basisstationen infrarote Laserstrahlen.
Diese werden zu einer Laserwand aufgefächert und mit Motoren in regelmäßigen Abständen waagerecht und senkrecht über den Raum geschwenkt.
An den Controllern und dem HMD sind Sensoren angebracht, die es ermöglichen, die zeitliche Differenzen zwischen den Lichtblitzen an den verschiedenen Sensoren wahrzunehmen.
Aus diesen Zeitunterschieden lässt sich die aktuell Position und Rotation der Controller und des HMDs bestimmen.
Dieses Verfahren ermöglicht es, mit 2 Basistationen beliebig viele Gegenstände zu tracken, jedoch wird aktuell nur 1 HMD und 2 Controller an einem Computer unterstützt.
Außerdem ist es mit der aktuellen Version nicht möglich, mehr als zwei Basistationen gleichzeitig zu betreiben. Bei zwei Basisstationen ist der maximale Abstand eingeschränkt.
Zwischen den Lichtblitzen wird die Postion der Geräte mit den ebenfalls verbauten Gyrosensor und Beschleunigungsmesser approximiert.
Dieses Verfahren ermöglicht es, mit zwei Basisstationen beliebig viele Gegenstände zu tracken, jedoch werden aktuell nur ein HMD und zwei Controller an einem Computer unterstützt.
Außerdem ist es mit der aktuellen Version nicht möglich, mehr als zwei Basisstationen gleichzeitig zu betreiben. Bei zwei Basisstationen ist der maximale Abstand eingeschränkt.
Zwischen den Lichtblitzen wird die Position der Geräte mit den ebenfalls verbauten Gyrosensor und Beschleunigungsmesser approximiert.
Seit dem 27. März 2017 ist der Vive Tracker als Erweiterung des Systems für Entwickler erhältlich.
Dieser Tracker dient als Erweiterung zum Tracken beliebiger Geräte mit dem Lighhouse Tracking System.
Er ist kompakter als ein Controller, hat keine Eingabetasten aber und eine ebene Auflagefläche mit einer 1/4 Zoll Schraube zur Befestigung.
Für die Kommunikation mit dem Computer wird ein weiterer kabelloser USB Adapter verwendet.
Dieser Tracker dient als Erweiterung zum Tracken beliebiger Geräte mit dem Lighthouse Tracking System.
Er ist kompakter als ein Controller, hat aber keine Eingabetasten und eine ebene Auflagefläche mit einer 1/4 Zoll Schraube zur Befestigung.
Für die Kommunikation mit dem Computer wird ein weiterer kabelloser USB-Adapter verwendet.
Theoretisch können an einem System beliebig viele zusätzliche Tracker angeschlossen werden.
Praktisch liegt die Obergrenze bei 16 getrackten Geräten (1 HMD, 2 Controller, 13 Tracker).
Eine weitere Ergänzung für die HTC Vive ist der TPCAST wireless adapter.
Eine weitere Ergänzung für die HTC Vive ist der TPCAST Wireless Adapter.
Hierbei wird das Kabel zwischen dem Headset und dem HMD durch eine kabellose Alternative ausgetauscht.
Die USB Daten werden per WLAN übertragen, das Bild mit einer speziell dafür entwickelten hochfrequenten Funkverbindung und für die Stromversorgung wird eine handelsübliche Powerbank verwendet.
Die USB-Daten werden per WLAN übertragen, das Bild mit einer speziell dafür entwickelten hochfrequenten Funkverbindung und für die Stromversorgung wird eine handelsübliche Powerbank verwendet.
Als Bibliothek zur Kommunikation mit der HTC Vive wird das OpenVR verwendet.
Als Bibliothek zur Kommunikation mit der HTC Vive wird OpenVR verwendet.
Die OpenVR-API von Valve erlaubt es, auf VR-Hardware von verschiedenen Herstellern zuzugreifen.
Die Genauigkeit des Lighthouse Trackings wurde in einigen Arbeiten untersucht.
Das HMD zittert in Ruhelage mit einer Basistation um 0,3mm und mit 2 Basistation erhöht sich diese Ungenauigkeit auf 2,1mm \cite{lighthouseAccuracy}.
Das HMD zittert in Ruhelage mit einer Basisstation um 0,3mm und mit zwei Basisstationen erhöht sich diese Ungenauigkeit auf 2,1mm \cite{lighthouseAccuracy}.
Bei eigenen Messungen wurden teilweise größere Ungenauigkeiten festgestellt.
In der Abb. \ref{img:Jitter} ist eine Messung mit einer maximalen Abweichung von fast 5mm zu sehen.
Die Präzision des Vive trackings wurde auch untersucht.
Die Präzision des Vive-Trackings wurde auch untersucht.
\cite{lighthouseAccuracy} spricht von einem durchschnittlichen Fehler von 1,5 -1,9 mm beim wiederholten Positionieren an Punkten entlang eines Maßstabs.
\todo{Paper \cite{Niehorster2017TheAA} }
\todo{Paper https://dl.acm.org/citation.cfm?id=2996341}
......@@ -205,7 +205,7 @@ Die Präzision des Vive trackings wurde auch untersucht.
\begin{figure}
\begin{center}
\includegraphics[width=\textwidth]{Bilder/JitterTester.png}
\caption{Messung des Zitterns des HMD in Ruhelage mit dem Jitter Tester \cite{Jitter}. Postion ist in in mm, Rotation in Grad angegeben}
\caption{Messung des Zitterns des HMD in Ruhelage mit dem Jitter Tester \cite{Jitter}. Position ist in in mm, Rotation in Grad angegeben}
\label{img:Jitter}
\end{center}
\end{figure}
......@@ -214,11 +214,11 @@ Die Präzision des Vive trackings wurde auch untersucht.
\subsection{HoloLens}
Die Microsoft HoloLens \cite{Hololens1} ist eine Augmented Reality Brille, die es erlaubt interaktive Projektionen in der echten Welt darzustellen.
Die Brille funktioniert ohne zusätzliche Hardware wie ein Smartphone oder einen zusätzlichen Computer.
Der Nutzer schaut auf jedem Auge durch einen transparenten Bildschirm, auf denen 3D-Projektionen eingeblendet werden.
Die Steuerung erfolgt durch die Kopfbewegung, Gesten und Sprachsteuerung.
Die Hololens verfügt über ein inside-out Tracking zur Positionsbestimmung in Räumen.
Die Microsoft HoloLens \cite{Hololens1} ist eine Augmented Reality Brille, die es erlaubt, interaktive Projektionen in der echten Welt darzustellen.
Die Brille funktioniert ohne zusätzliche Hardware wie einen Smartphone oder einem zusätzlichen Computer.
Der Nutzer schaut auf jedem Auge durch einen transparenten Bildschirm, auf dem 3D-Projektionen eingeblendet werden.
Die Steuerung erfolgt durch Kopfbewegungen, Gesten und Sprachsteuerung.
Die Hololens verfügt über ein Inside-Out-Tracking zur Positionsbestimmung in Räumen.
Als Sensoren werden ein Beschleunigungsensor, ein Gyroskop, ein Magnetometer, eine Tiefenkamera und vier ``environment understanding'' Kameras \cite{Hololens2} verwendet.
Die Hololens baut sich mit Hilfe dieser Sensoren ein grobes Mesh der Umgebung auf, das es regelmäßig updatet und verfeinert.
......@@ -226,15 +226,15 @@ Die Hololens baut sich mit Hilfe dieser Sensoren ein grobes Mesh der Umgebung au
\subsection{Unreal Engine4}
Die Unreal Engine 4 \cite{UE4} ist eine der meistgenutzten Spiele-Engines.
Die Engine wird von Epic Games entwickelt und kann bis zu einem Jahresumsatz von 3000 US-Dollar kostenlos genutzt werden.
Unreal unterstützt viele verschiedene Plattformen wie Konsolen, Smartphones, PCs und Virtual Realtiy.
Das Framework der Unreal Engine besteht unter anderem aus einer Grafik-Engine, einer Physik-Engine und einem mitgelieferten Editor mit vielen Werkzeugen zur Spielentwickelung.
Die Implementierung eines Spiels kann entweder in C++ erfolgen oder mit Hilfe des Blueprint Visual Scriptings der Unreal Engine 4.
Diese Blueprints sind eine von Epic Games entwickelte grafische Benutzeroberfläche die es ermöglicht, objektorientiert zu arbeiten.
Unreal unterstützt viele verschiedene Plattformen wie Konsolen, Smartphones, PCs und Virtual Reality.
Das Framework der Unreal Engine besteht unter anderem aus einer Grafik-Engine, einer Physik-Engine und einem mitgelieferten Editor mit vielen Werkzeugen zur Spieleentwicklung.
Die Implementierung eines Spiels kann entweder in C++ oder mit Hilfe des Blueprint Visual Scriptings der Unreal Engine 4 erfolgen.
Diese Blueprints sind eine von Epic Games entwickelte grafische Benutzeroberfläche, die es ermöglicht, objektorientiert zu arbeiten.
Die Programmierung erfolgt dabei durch einen Graphen, bei dem verschiedene Knoten (Methoden) per Drag and Drop verbunden werden.
Diese Blueprints werden automatisiert in C++ Code übersetzt.
Diese Blueprints werden automatisiert in C++-Code übersetzt.
C++ und Blueprints können in einem Projekt kombiniert und parallel verwendet werden.
Auch die Rendering-Engine \bzw{} das Unreal Material System lässt sich im Stil der Blueprints anpassen.
Die dabei entstehende Grafen werden anschließend zu passenden Grafik Shadern übersetzt.
Die dabei entstehende Graphen werden anschließend zu passenden Grafik-Shadern übersetzt.
Eine direkte Anpassung der Shader ist nicht möglich.
In der Implementierung wurden Blueprints und C++ verwendet. Viele Funktionen sind einfach durch die visuelle Skriptsprache erreichbar und umsetzbar.
Reicht die Funktionalität der Blueprints nicht aus, so wurden diese Funktionen in C++ implementiert.
......@@ -242,23 +242,23 @@ Reicht die Funktionalität der Blueprints nicht aus, so wurden diese Funktionen
\subsection{Unity}
Unity \cite{unity} ist wie die Unreal Engine eine der meißt genutzen Spieleplatformen.
Sie verfügt über einen ähnlichen Funktionsumfang und die PRogrammierung erfolgt in C\#.
Ein wichtige Unterschied ist das Unity die Entwicklung für die HoloLens und die Universal Windows PLattform (UWP) unterstützt.
Deshalb wurde für die Entwicklung der HoloLens Anwendung Unity verwendet.
Unity \cite{unity} ist wie die Unreal Engine eine der meistgenutzten Spieleplatformen.
Sie verfügt über einen ähnlichen Funktionsumfang und die Programmierung erfolgt in C\#.
Ein wichtige Unterschied ist, dass Unity die Entwicklung für die HoloLens und die Universal Windows Plattform (UWP) unterstützt.
Deshalb wurde für die Entwicklung der HoloLens-Anwendung Unity verwendet.
\subsection{Kinect}
Die Kinect \cite{Kinect} ist ein Hardware zur Steuerung der Videospielkonsolen Xbox360 und Xbox One.
Spiler können damit anstelle des herkömmlichen Controllers alleine durch Körperbewegungen und Sprache die Software bedienen.
Die erste Generation der Kinect wurde im November 2010 veröffentlicht und Anfang 2013 die 2. Generation.
Als Sensoren ist eine Farbkamera, eine Tiefenkamera und ein Mikrofonarray verbaut.
Zu der Kinect wurde 2012 ein nicht Kommerzielles Software Development Kit veröffentlicht.
Das SDK verfügte unter anderm über Treiber für Windows und bietet die Möglichkeit in C++, C\# oder Visual Baisc Applicationen auf die Kinect zuzugreifen.
Unter anderem können ungefilterte Sensordaten abgegriffen werden, aber auch das erkannte Skelett von Personendie sich im Sichtfeld befinden.
Außerdem bietet das SDK die Möglichkeit ein Tiefenbild in eine Punktwolke umzuwandeln.
Die Kienct wurde in vielen Forschungsprojekten verwendet. Es ist ein einheitlicher, günstiger Sensor der Tiefendaten aufnimmt.
Die Kinect \cite{Kinect} ist eine Hardware zur Steuerung der Videospielkonsolen Xbox360 und Xbox One.
Spieler können damit anstelle des herkömmlichen Controllers alleine durch Körperbewegungen und Sprache die Software bedienen.
Die erste Generation der Kinect wurde im November 2010 veröffentlicht und Anfang 2013 die zweite Generation.
Als Sensoren sind eine Farbkamera, eine Tiefenkamera und ein Mikrofonarray verbaut.
Zu der Kinect wurde 2012 ein nichtkommerzielles Software Development Kit veröffentlicht.
Das SDK verfügte unter anderem über Treiber für Windows und bietet die Möglichkeit in C++, C\# oder Visual Basic Applications auf die Kinect zuzugreifen.
Unter anderem können ungefilterte Sensordaten abgegriffen werden, aber auch das erkannte Skelett von Personen, die sich im Sichtfeld befinden.
Außerdem bietet das SDK die Möglichkeit, ein Tiefenbild in eine Punktwolke umzuwandeln.
Die Kinect wurde in vielen Forschungsprojekten verwendet. Es ist ein einheitlicher, günstiger Sensor der Tiefendaten aufnimmt.
Außerdem werden viele benötigten Funktionen direkt im SDK mitgeliefert.
In dieser Arbeit wurde eine Kienct 2 für das Aufnehmen einzelner Punktwolken verwendet.
In dieser Arbeit wurde eine Kinect 2 für das Aufnehmen einzelner Punktwolken verwendet.
......@@ -164,7 +164,7 @@ Im Gegensatz zur Translation war die Messung der Rotation sehr genau und erzeugt
\begin{figure}
\begin{center}
\includegraphics[width=\textwidth]{Bilder/PunktwolkeRaw.png}
\caption{Eiene Punktwolkenaufnahme mit der vorgstellten Technik. Hierbei wurden 12 Aufnahmen aus verscheidenen Richtugen zu eienr Punktwolke zusammengefügt. An den Kanten sind Verscheibungen zu erkennen. }
\caption{Eine Punktwolkenaufnahme mit der vorgestellten Technik. Hierbei wurden 12 Aufnahmen aus verschiedenen Richtungen zu einer Punktwolke zusammengefügt. An den Kanten sind Verschiebungen zu erkennen. }
\label{img:CloudRaw}
\end{center}
\end{figure}
......
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