Mobile Augmented Reality - inovex.de · SLAM Verfahren (ARKit + ARCore) Einsatz in unbekannten...

47
Mobile Augmented Reality Mobile Augmented Reality Steffen Tröster - Mobile / Fullstack Developer Steffen Tröster - Mobile / Fullstack Developer @stetro @stetro

Transcript of Mobile Augmented Reality - inovex.de · SLAM Verfahren (ARKit + ARCore) Einsatz in unbekannten...

Mobile Augmented RealityMobile Augmented RealitySteffen Tröster - Mobile / Fullstack Developer Steffen Tröster - Mobile / Fullstack Developer

�� �� @stetro@stetro

Was ist Augmented Reality? (AR)Was ist Augmented Reality? (AR)

AnwendungsgebieteAnwendungsgebiete

SpieleSpiele

NavigationNavigation

Bilderung (Museen, Schulen ...)Bilderung (Museen, Schulen ...)

EinrichtungEinrichtung

MessungenMessungen

IndustrieIndustrie

MedizinMedizin

Mobile AnsätzeMobile Ansätze

 

Head-up-DisplayHead-up-Display

Einblendung von InformationKein Kamerabild - Keine BildkompositionTracking eher anhand GPS und Kompass

Standardhardware mit MarkernStandardhardware mit Markern

Begrenzte Einsatzmöglichkeiten

SLAM auf spezieller HardwareSLAM auf spezieller Hardware

Tango, Hololense, structure.ioWeniger für den MassenmarktVielseitig durch Tiefeninformationen

SLAM - Simultaneous Localization and Mapping

SLAM Verfahren (ARKit + ARCore)SLAM Verfahren (ARKit + ARCore)

Einsatz in unbekannten UmgebungenLäuft auf Standardhardware ohne spezielle Sensoren *

* Vorausgesetzt sind kalibrierte Sensoren & entsprechende Permformance

vormals Google Project TangoPositionstracking, Raycasting, Pointcloud,Ebenenerkennung, LightEstimationAPIs für C/C++, Java, Unity, UnrealDeveloper Release

Wie funktioniert das?Wie funktioniert das?

3D Szene3D Szene

Virtuelle KameraVirtuelle KameraExtrinsische Merkmale: 6 FreiheitsgradeIntrinsische Merkmale: Fokus, Verzerrungen

Ziel in AR: Merkmale der virtuellen Kamera mit der echten Kameragleichsetzen

Video HintergrundVideo Hintergrund

Herausforderung:Herausforderung:

Augmented Reality Pipeline in DepthAugmented Reality Pipeline in Depth

  

Feature DetectionFeature DetectionZiel: Das �nden Markanter Merkmale im BildKantendetektion (Canny, ...)Eckenerkennung / Interest Points (FAST, SURF,FREAK, ...)

FAST - Features from Accelerated Segment Test

Feature DescriptionFeature DescriptionRobustheit: Invarianz gegenüber Rotation SkalierungAusgangswerte - Float / BinärKombinationen wie ORB oder LIFT

SIFT - Scale-Invariant Feature Transform BRIEF - Binary Robust Independent Elementary Features BRISK - Binary Robust Invariant Scalable Keypoints ORB - Oriented FAST and Rotated BRIEF LIFT - Learned Invariant Feature Transform

Feature MatchingFeature MatchingDas Finden korrespondierender Punkte in 2 Bildern"Die Distanz zwischen Featuren"zB. Euclidean oder Hamming Distanz

Beispiel Rotations InvarianzBeispiel Rotations Invarianz

LIFT - Learned Invariant Feature TransformLIFT - Learned Invariant Feature TransformLIFT: Learned Invariant Feature Transform

Augmented Reality Pipeline in DepthAugmented Reality Pipeline in Depth

Visual Inertial Odometry (1/4)Visual Inertial Odometry (1/4)IMU: Gyroscope & Accelerometer (noisy sensors)Integration über Beschleunigung und Lageänderungenführt zu 6 DOF

Visual Inertial Odometry (2/4)Visual Inertial Odometry (2/4)

Visual Inertial Odometry (3/4)Visual Inertial Odometry (3/4)Feature Detection zwischen mehreren Bildern3D Triangulation führt zu gewinnung der 6 DOF

Aus Matching Triangulation entsteht Pointcloud

Visual Inertial Odometry (4/4)Visual Inertial Odometry (4/4)6DoF aus 2 QuellenKalmann Filter wird angewendet

"Das Kalman-Filter dient dazu, Fehler in realenMesswerten zu reduzieren und Schätzungen fürnicht messbare Systemgrößen zu liefern"(Wikipedia)

ARCore kann zB. 1 Sekunde ohne Bild überbrücken

Augmented Reality Pipeline in DepthAugmented Reality Pipeline in Depth

SLAMSLAMSimultaneous Localization and MappingPointcloud (mit Merkmalen) + Poses => KarteRinge können detektiert werdenKorrigiert Drift aus Visual Inertial Odometry

Tatsächliche UmsetzungTatsächliche UmsetzungLeider bei ARCore & ARKit unbekanntWelche Features + Matcher werden verwendet?Wie sieht das Kartenmodell aus?Verfahren zur Drift Korrektur?

Typische ProblemstellungenTypische Problemstellungen

 

Interaktion - RaycastingInteraktion - Raycasting

Umgebung Verstehen - Ebenen (1/2)Umgebung Verstehen - Ebenen (1/2)

Bestimmung aus Pointcloud mit RANSAC (RAndom SAmple Consensus)Bestimmt Ebene, nicht die Ausbreitung (Ortsvektor + Normale)

Umgebung Verstehen - Ebenen (2/2)Umgebung Verstehen - Ebenen (2/2)

Polygone aus 3D Punkten => Schwer bestimmbar!Auf 2D reduzieren für gutes LaufzeitverhaltenKonvexe Hülle in O(n log n)Vorheriges Clustering möglich

Umgebung Verstehen - Rekonstruktion (1/4)Umgebung Verstehen - Rekonstruktion (1/4)

Wie von Pointcloud zu Polygonen kommen?TSDF: Truncated Signed Distance Function

Tiefenrepräsentation in VoxelEntfertung zur nächsten Ober�äche

Umgebung Verstehen - Rekonstruktion (2/4)Umgebung Verstehen - Rekonstruktion (2/4)

Umwandlung von Raster in PolygonenMarching-Cubes

Umgebung Verstehen - Rekonstruktion (3/4)Umgebung Verstehen - Rekonstruktion (3/4)Project Tango - real-time 3D reconstruction on mobile phone

Umgebung Verstehen - Rekonstruktion (4/4)Umgebung Verstehen - Rekonstruktion (4/4)

Spatial mapping with #ARKit7:04 PM - Feb 3, 2018

2,160 700 people are talking about this

Tim Field@nobbis

Occlusion (1/2)Occlusion (1/2)

Tiefeninformationen aus Pointcloud oderRekonstruktionenFilter der Tiefeninformationen durch Bild Material

Occlusion (2/2)Occlusion (2/2)Project Tango - Unity Mesh Builder Occlusion

Vielen Dank!Vielen Dank!Fragen?Fragen?Steffen Tröster Mobile Application Developer

inovex GmbH Mail: [email protected]