Commit 9b2adcd3 by Werner Westerkamp
parents e6a861c7 e1bc9b28
......@@ -9,13 +9,11 @@ Bei synchronisierten Welten zwischen VR und AR sollte dieser Strahl auch in der
\section{Unreal Engine 4 und HoloLens}
Es gibt keinen Offiziellen Support der HoloLens für dei Unreal Engine 4.
Aktuell wird das einwickeln für die neue AR Plattform nur in Unity unterstützt.
Microsoft hat auf Github einen Fork der Unreal Engine \todo{cite} in dem Support für die Universel Windows Plattform (UWP)\todo{glossar} enthalten ist.
%https://github.com/MICROSOFT-XBOX-ATG/MICROSOFT_UWP_UNREAL/tree/dev_MixedReality
Microsoft hat auf Github einen Fork der Unreal Engine cite{UWP} in dem Support für die Universel Windows Plattform (UWP)\todo{glossar} enthalten ist.
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.
Für die Implementierung wurde dieser Development Branch getestet.
Nach dem bauen der aktuellen Version wurde ein HoloLens Template in die Engine geladen \todo{cite }.
%https://github.com/ProteusVR/Hololens https://www.youtube.com/watch?v=KxvAm2qNJ0Q&feature=youtu.be
Nach dem bauen der aktuellen Version wurde ein HoloLens Template \cite{UE4Holo} in die Engine geladen.
Jedoch gab es Probleme das Projekt zu packen, sodass es auf die HoloLens geladen werden kann.
Deshalb wurde für die AR Implementierung Unity verwendet.
......@@ -24,48 +22,76 @@ Deshalb wurde für die AR Implementierung Unity verwendet.
Die HoloLense Applikation in Unity ist einfach gehalten worden und die notwendige Logic wurde in der VR Applikation in Unreal umgesetzt.
Zunächst setzt man in der HoloLens einen Welt Anker in den Raum.
Weltanker dienen als besonders wichtiger Punkte und das System soll diesen Punkt immer tracken und konstant halten.
Die Unreal Enginesendet regelmäßig einen JSON formatierten String per UDP an die Hololens in dem Start- und Enpunkt des aktullen Lasers enthalten sind.
Diese werden anschließen relativ zum Welt Anker visualisiert.
Die Unreal Engine sendet jedem Frame einen JSON formatierten String per UDP an die Hololens in dem Start- und Enpunkt des aktullen Lasers enthalten sind.
Diese werden anschließen in der Hololens relativ zum Welt Anker visualisiert.
\section{Kalibrierung}
Die Kalibrierung erfolgt anhand des Welt Ankers und eins Vive Trackers.
Der Welt Anker orientiert sich an dem erkannten Boden sodass die y Achse senkrecht nach oben zeigt.
Um die beiden Welten zu synchronisieren wird ein Vive Tracker so platziert, das die beiden Koordinatensysteme übereinstimmen.
Durch einen Tastenduck auf einen Controller wird die aktuelle Rotation und Position des Trackers in der Unreal Engine gespeichert.
Um die beiden Welten zu synchronisieren wird ein Vive Tracker so platziert, das die beiden Koordinatensysteme übereinstimmen (Siehe Abb. \ref{img:holokalib})
Hierfür wurde an dem Tracker ein 3D gedruckte Hilfe angebraucht um die aktuelle Rotation besser erkennen zu können.
Durch einen Tastenduck auf einen Controller wird d ie aktuelle Rotation und Position des Trackers in der Unreal Engine gespeichert.
Mit dieser Transformation kann der Strahl der VR Umgebung in das lokale Koordinatensystem des Weltankers transformiert werden.
\todo{Bilder übereinanderliegen. }
\begin{figure}
\begin{center}
\label{img:holokalib}
\includegraphics[width=\textwidth]{Bilder/HoloLens/Kalib.jpg}
\caption{Mixed Reality Capture der Hololens. Zu sehen ist das Koordinatenkruz und der Vive Tracker. Am Tracker ist das 3D gedruckte Hilfe zu sehen. }
\end{center}
\end{figure}
Welt Anker
verscheiobbar im Debug Modus
Eine Achse Senkrecht zum Boden
Vive Trakcer an Postion und roatioon des Welt anker
speichern auf Knopfdruck der Transformation des Trakcer Oringins
Senden oper UDP
inverse Transofrmation origin
\subsection{Kalibrierungsfehler}
Diese Art der Klibrierung ist einfach, aber an mehrerehn stellen Fehelranfällig mit der aktuellen Hardware.
Das erste Problem ist die menschliche Ungenauigkeit.
Den Tracker muss exakt an die richtige Postion mit der richtigen Rotation gelegt werden.
Dabei ist das Hologram direkt über dem Tracker, verdeckt diesen und erschwert damit das exakte Positionieren
Insbesondere die Rotation ist bei der Rotation ein Problem.
Eine kleiner Rotationsfehler wirkt sich weiter entfernt vom Ursprung stark auf die Kallibrierung aus.
Zum Beispiel bringt ein Fehler von 1\degree bei 2m Distanz eine Verschiebung von 3,4cm $(distance (rotate(1^{\circ}, (2,10)) (2,0))$.
\todo{check distance}
Zu den Menschlichen Fehlern kommen Ungenauigkeiten vom Vive Tracking und dem Hololens Tracking.
Zum einen verschiebt sich der Hololens Ursprung manchmal leicht wenn er nicht direkt angeschaut wird.
Durch erneutes Ansehen der Ursprungsumgebung fängt sich dieser meistens wieder und wird zurück auf die Ursprüngliche Position gesetzt.
Aber es konnten sehr vereinzelnd Dauerhafte Verschiebungen beobachtet werden.
Im Extrafall waren ca.10cm nach unten zu beobachten.
Ein Weiterer Faktor sind die Ungenauigkeiten im Vive Tracking.
Insbesondere sind hierbei die Längen unterscheide zwischen Echtwelt und Virtueller Welt gewesen.
In dem verwendeten Setup wurde ein 2m Zollstock mit einem Vive Controller vermessen.
Dabei war die in VR gemessene Distanz 1,98m.
Dieser Fehler wirkt sich direkt auf das Zusammenspiel der Vive und Hololens aus.
Wird der Controller 2m vom Ursprung weg bewegt, dann bewegt sich der Beam nur um 1,98 in VR udn damit AR und entfernt sich damit von seiner eigentlichen Position.
In der Implementierung wurde das versucht auszugleichen indem alle Werte die per UDP versendet werden mit dem Faktor 1,025 skaliert wurden.
Der Wert wurde experimentell bestimmt.
\todo{Bidler}
Ungenauigkeitne Vive
Ungenauigkeiten Holoens
Unterscheide in Längen
Faktor 1,025
vlt Biler / viodeo mehrfaches knopf drücken ungenauigkeiten
\section{Ergebnisse}
Bilder aus Hioloens perspektive
Funktioniert gut wenn nach am gemeinsamen Punkt
\section{Verbesserungen}
hier oder Ausblick
Marker auf trakcer kleben (kein menschlicher Fehler)
Merher Tracker und damit gesyncte Längen
\subsection{Versicehben der VR Umgebung}
vlt besser im Scenario der Evaluation
\ No newline at end of file
Die Kalibrierung funktioniert, ist aber nicht schnell und fehlerfrei umsetzbar.
Bis die Kalibrierung vollständig stimmt muss der Prozess teilweise ein paar mal wiederholt und getestet werden.
Nahe an dem Weltanker erreicht das umgesetzte Tool den gewünschten Effekt den Laser an den Vive Controller zu hängen.
Entfernt man sich von diesem Punkt, wird das Tracking immer schlechter und die Fehler werden sichtbarer.
Für die Evaluation wurde die VR Umgebung verschoben um getrennte Ort zu simulieren.
Damit der Fehler möglichst klein bleibt und keinen großen Einfluss auf die Evaluation hat wurde die Verschiebung so klein wie möglich gehalten (1.5m).
\chapter{Ausblick}
\label{chapter:08Ausblick}
Zukunftstechnologie aber aktuelle Consumer HArdware noch zu schelcht
Verbesserung des Lighthouse Trackings
Kienct mit integrierten Vive tracking
Virtaul Reality udn Augmendet Reality sind neue und sehr vielversprechende Technologien.
Die Vive und die Hololens sind jeweils die erste Generation und funktionieren für ihren jeweiligen Anwendungszweck sehr gut.
Jedoch gibt es in so frühen Produkten einige Probleme.
Die Hololens ist bei längerem Tragen ungewohnt schwer und der Sichtbereich sehr klein.
Hololens ist eigtlich awesome, aber zu schwer zu kleines FOV
Verbindet man die Systeme miteinander dann werden die Ungenauigkeiten im Tracking verstärkt und deutlich sichtbar.
Neue Versionen der Hardware könnten hier aber erhebliche Vorteile bringen
generiertes Mehs besser als Punktwolke+
\section{Punktwolke}
Das Vorgestellte Aufnehmen der Punktwolke mit Kinect und Lighthouse Tracking bietet eine gute Grundlage, ist aber zum direkten Verwenden noch zu ungenau.
Durch Verbesserung der Kalibrierung des Controllers zu Kinect und das Tracking des Controllers könnte das noch besser werden.
Bei der Kalibering zueinander könnte man einen andern Sensor verwenden bei dem die Position im Gehäuse besser dokumentiert ist.
Außerdem könnte ein Vive Tracker anstellte des Controllers besserer Ergebnisse bringen, da der Ursprung des Tackers geschickter liegt.
In Praktischen Anwendungen sollten die Punktwolken Aufnahmen nachbearbeitet werden.
Die einzelnen Teile der Punktwolke haben vergleichsweise kleine Verschiebungen und besitze häufig gemeinsame Flächen.
An diesen könnte im Nachhinein die exakte Punkwolke berechnet werden.
Ein weiterer Kritikpunk aus der Evaluation sind die zu ungenauen Punktwolken und das normale Nutzer es nicht gewöhnt sind mit Punktwolken zu arbeiten.
Generiert man ein Mesh aus der Wolke, dann könnte dies eine verbesserte Darstellung ergeben.
ein weiter Nachteil an den aktuellen Punktwolken ist das diese statisch sind.
Verändert der Lokale Nutzer den betrachtete Bereich dann erhält der Experte darüber keine Infos.
Ist die Aufnahmetechnik performant genug könnte man dem Lokalen Nutzer in regelmäßig nuee Aufnahmen machen lassen.
Alternativ man positioniert mehrere Kinects aus verschidenen Richtungen im Raum, sodass die Area of Intreast von allen benötigten Richtungen gescannt wird.
Diese Daten könnten live in die VR Umgebung gestreamt und visualisiert werden.
Mit einer live Punktwolke kann das Objekt in der Evaluation auch verändert werden.
Problematisch könnte die Verdeckung durch den Lokalen Nutzer sein.
\section{Vive und Hololens Kalibrierung}
Die Kalibrierung von Vive zu Hololens bringt einige Probleme.
Hier gibt es an einigen stellen Verbesserungspotetial.
Die einfache Lösung wäre die Hololens selber mit einem Tracker zu versehen und man erhält eine dauerhaft sich selber aktualisieren gemeinsamen Punkt.
Damit eliminiert man die Ungenauigkeit aus dem HoloLens Tracking.
Das Problem das das Lighthouse Tracking nicht Längen getreu ist wird dabei nicht gelöst.
Eine weiter Möglichkeit wäre es Vive Tracker mit Markern zu versehen.
Diese können dann mit der HoloLens erkannt werden und in dem Koordinatensystem der HoloLens platziert werden.
Damit umgeht man um einen den menschlichen Kalibrierfehler Fehler und wenn man mehrere Tracker mit Markern verwendet erhält man die Längen in der Hololens und der Vive
Mit dieser Information kann man die exakte Längenverzerrung ausrechnen und beseitigen.
\section{Evaluation}
Das verwendete Evaluatiosnzenario war relativ einfach, sehr abhängig vom Tracking, der Kalibrierung und den jeweiligen Probanden.
Bei weiteren Untersuchungen könnte man die Schwierigkeit anheben.
Um Ungenauigkeiten im Tracking auszugleichen könnte man ein größeres Objekt verwenden als Duplos.
Eine Möglichkeit wäre es einen ca 1m großen Würfel auf jeder Seite mit farbigen Schachbrettmustern zu versehen.
bei groß genugen Feldern sollten Trackingungenauigkeiten ein kleineres Problem darstellen.
Jedoch muss sich bei dem Szenario überlegt werden wie das Vorwissen dem Experten vermittelt wird.
In VR ist das relativ einfach möglich durch Highlights oder Pfeile die zusätzlich eingeblendet werden, im Referenzsznairo ist dies schwieriger.
\section{Interaktionswerkzeuge}
Beim Zusammenspiel im VR und AR könnten auch noch mehr Interaktionstechniken Evaluiert werden.
Bisher hat der Lokale Nutzer keine Möglichkeit dem Experten etwas zu zeigen.
Die einfachste Lösung hierfür wäre dem Lokalen Nutzer selbst einen Conrolelr zu geben mit dem er auf das Objekt zeigen kann.
Alternativ könnte auf die Klick geste der Hololens zurückgegriffen werden.
Klickt der Lokale Nutzer in der Welt etwas an so wird die Linie zwischen Kopf und der Klickposition in der VR Umgebung visualisiert.
Eine weiter Hilfreiche Ergänzung könnte das Visualisieren von Avataren in VR und AR sein.
Allein die Visualisierung der aktuellen Kopfposition (Headsets) des Partners könnte darüber Aufschluss geben, was dieser gerade betrachtet.
Eine Weitere Interaktionsmöglichkeit wäre das plaziern von 3D Objektenbzw Hologrammen in der Welt.
Der Experte hätte damit z.B. die Möglichkeit Referenzobjekte direkt darzustellen.
Bei animierten Hologrammen könnten so direkt Montageschritte visualisert werden.
\todo{cite Virtual Proxy}
......@@ -93,3 +93,16 @@
note = {Accessed: 2017-11-02}
}
@misc{UWP,
title = {Unreal Engien UWP Fork von Microsoft.},
howpublished = {\url{https://github.com/MICROSOFT-XBOX-ATG/MICROSOFT_UWP_UNREAL/tree/dev_MixedReality}},
note = {Accessed: 2017-11-02}
}
@misc{UE4Holo,
title = {Unreal Engien Hololens Template},
howpublished = {\url{https://github.com/ProteusVR/Hololens https://www.youtube.com/watch?v=KxvAm2qNJ0Q&feature=youtu.be}},
note = {Accessed: 2017-11-02}
}
......@@ -51,7 +51,7 @@
%% ---------------------------------
\newcommand{\myname}{Kai Westerkamp}
\newcommand{\mytitle}{\iflanguage{english}{Remote Assistance and Collaboration with 3D Point Clouds}{Fernunterstützung und Zusammenarbeit mit 3D Punktwolken}}
\newcommand{\mytitle}{\iflanguage{english}{Fernunterstützung und Zusammenarbeit mit 3D Punktwolken}{Fernunterstützung und Zusammenarbeit mit 3D Punktwolken}}%Remote Assistance and Collaboration with 3D Point Clouds
\newcommand{\reviewerone}{Prof. Dr.-Ing. Rainer Stiefelhagen}
\newcommand{\reviewertwo}{XXXX}
......
......@@ -29,17 +29,19 @@
\Huge{\mytitle}
\vspace*{2cm}\\
\Large{
\iflanguage{english}{Diploma Thesis of}
\iflanguage{english}{Masterarbeit\\von}
{Masterarbeit\\von}
}\\
\vspace*{1cm}
\huge{\myname}\\
\vspace*{1cm}
\Large{
\iflanguage{english}{At the Department of Informatics}
\iflanguage{english}{An der Fakult\"at f\"ur Informatik}
{An der Fakult\"at f\"ur Informatik}
\\
\iflanguage{english}{Fraunhofer IOSB (IAD)}
Institut für Anthropomatik und Robotik
\\
\iflanguage{english}{in Zusammenarbeit mit Fraunhofer IOSB}
{ Fraunhofer IOSB (IAD)}
}
\end{center}
......@@ -48,10 +50,10 @@
\begin{center}
\begin{tabular}[ht]{l c l}
% Gutachter sind die Professoren, die die Arbeit bewerten.
\iflanguage{english}{Reviewer}{Erstgutachter}: & \hfill & \reviewerone\\
\iflanguage{english}{Second reviewer}{Zweitgutachter}: & \hfill & \reviewertwo\\
\iflanguage{english}{Advisor}{Betreuender Mitarbeiter}: & \hfill & \advisor\\
\iflanguage{english}{Advisor}{Betreuender Mitarbeiter 2}: & \hfill & \sadvisor\\
\iflanguage{english}{Erstgutachter}{Erstgutachter}: & \hfill & \reviewerone\\
\iflanguage{english}{Zweitgutachter}{Zweitgutachter}: & \hfill & \reviewertwo\\
\iflanguage{english}{Betreuender Mitarbeiter}{Betreuender Mitarbeiter}: & \hfill & \advisor\\
\iflanguage{english}{Zweiter betreuender Mitarbeiter}{Zweiter betreuender Mitarbeiter}: & \hfill & \sadvisor\\
%\iflanguage{english}{Second advisor}{Zweiter betreuender Mitarbeiter}: & \hfill & \advisortwo\\
% Der zweite betreuende Mitarbeiter kann weggelassen werden.
\end{tabular}
......@@ -61,7 +63,7 @@
\vspace{2cm}
\begin{center}
\large{\iflanguage{english}{Duration}{Bearbeitungszeit}: \timestart \hspace*{0.25cm} -- \hspace*{0.25cm} \timeend}
\large{\iflanguage{english}{Bearbeitungszeit}{Bearbeitungszeit}: \timestart \hspace*{0.25cm} -- \hspace*{0.25cm} \timeend}
\end{center}
......
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