arrow arrow--cut calendar callback check chevron chevron--large cross cross--large download filter kununu linkedin magnifier mail marker menu minus Flieger phone play plus quote share

Augmented Reality mit ARCore und ARKit

Für alle, überall!

Wenn man die Entwicklung von Augmented Reality und gerade Google Tango in den letzten Jahren verfolgt hat, sorgt die Veröffentlichung von ARCore und ARKit zugleich für Erleichterung, wirft allerdings auch die Frage auf: Kann ich jetzt alles das Tango Devices können mit meinem eigenen Telefon machen, nur durch ein Softwareupdate? Oder anders gefragt: Was kann Tango mehr, was ich mit ARCore nicht machen kann?

Verfügbarkeit

ARCore räumt eins der größten Hindernisse für eine kommerziell erfolgreiche Augmented Reality Anwendung aus dem Weg: Verfügbarkeit. Zumindest Anwendungen für Endverbraucher müssen das ganze Publikum adressieren können, nicht nur ein paar Enthusiasten in ihrer Technologie Blase. Um erfolgreich sein zu können und sich durchzusetzen, muss jeder die Applikation verwenden können.

Trotz Googles hohem Marktanteil ist es nicht einfach ein neues Ökosystem von Tango Devices aufzubauen, insbesondere wenn die großen Gerätehersteller nicht voll mitziehen. Dies ist Apples strategischer Vorteil: Sie können das Hardware Setup der Geräte selbst bestimmen, wie schon geschehen für das iPhoneX. Aus Google’s Perspektive macht es daher absolut Sinn ARCore auch für Geräte ohne Zusatzhardware verfügbar zu machen, auch ohne den Zugzwang der durch Apple’s ARKit Veröffentlichung entsteht.

Zum Zeitpunkt der Entstehung dieses Artikel unterstützt das ARCore Preview nur Google Pixel und Samsung S8 Geräte. Google hat allerdings angekündigt, dass die Verfügbarkeit bis zum Ende des Previews auf 100 Millionen Geräte ausgeweitet werden soll.

Plattform-übergreifendes Feature-Set

Für Entwickler zeichnet sich noch eine Veränderung zum Guten ab: Indem das Feature-Set der beiden AR Lösungen so gut wie gleich ist, muss eine Augmented Reality Applikation nicht mehr für jede Plattform neu konzipiert werden.

Indoor Navigation

Unsere Bemühungen der letzten Jahre, ein Indoor Navigation System mit Google Tango zu erstellen, versetzen uns in die Lage zu evaluieren wie gut sich dieser Anwendungsfall mit ARCore abbilden lässt, und die Dinge zu identifizieren die man mit Tango umsetzen kann, die (bisher) nicht mit ARCore machbar sind. Wie der geneigte Leser vielleicht mittlerweile erraten haben mag: Ja, wir arbeiten an einem direkten Vergleich als Indoor-Positionierungskomponente unserer Augmented Reality indoor Navigations Lösung. Als ersten Schritt hier ein Vergleich der Kernfeatures der Tango Java API und ihres Pendants für ARCore:

Feature Vergleich

Sowohl Tango als auch ARCore konstatieren drei Hauptfeatures. In den nächsten Abschnitten werden wir einen Überblick über ihre Gemeinsamkeiten und Unterschiede geben, und die uns bekannten Vorteile und Limitierungen skizzieren.

Tango and ARKit Motion Tracking

Das sowohl von Tango und ARCore umgesetzte Feature ist Motion Tracking (Bewegungsnachverfolgung): Die Softwarebibliothek ist hier in der Lage anhand der Gerätesensoren (Intertial Measurement Unit, Beschleunigungssensor) die Translation und Rotation des Gerätes zu einem Nullpunkt zu berechnen. Auch wenn das zunächst trivial erscheinen mag, steckt der Teufel im Detail: Aufgrund der hohen Framerate der Sensoren addieren sich kleine Messfehler über die Zeit zu signifikanten Fehlern auf, ein Problem das in der Literatur als „Sensor Drift“ beschrieben wird.

Tango: Area Learning

Um die durch Sensor Drift verursachten Messfehler herausrechnen zu können, verwendet Tango den zusätzlich verbauten Tiefensensor, um die exakte Position der visuellen Charakteristika im Kamerabild zu messen. Durch den Vergleich von Konstellationen dieser Charakteristika kann ein in einem Trainingslauf besuchter Ort zu einem späteren Zeitpunkt wiedererkannt werden.

Dieser Ansatz kann auch ohne zusätzliche Sensoren funktionieren. Als Resultat von Googles eigenen Indoor Navigation Projekten für Lowes hat Google einen sogenannten Visual Positioning Service (VPS) angekündigt, der in der Zukunft in der Lage sein wird, besuchte Orte in Innenräumen durch die Suche in einer von Google bereitgestellten Datenbank zu identifizieren. Zum Zeitpunkt der Entstehung dieses Artikels befand sich VPS in einer „closed“ beta Phase.

ARCore: Environment understanding

Auch wenn ARCore auch Charakteristika aus dem Kamerabild errechnet, fehlt an dieser Stelle der Tiefensensor der deren korrekte Position sicherstellt. Nichtsdestotrotz scheinen die Erfahrungswerte aus der Entwicklung der Tango-Devices auszureichen um zumindest den Sensor-Drift anhand dieser Features auszugleichen. ARCore errechnet zudem aus diesen Charakteristika des zweidimensionalen Kamerabildes dreidimensionale Ebenen und deren Ausmaße.

Da dieses Feature im Regelfall dafür verwendet wird augmentierte Objekte in die reale Welt einuzufügen, kann der Entwickler diese mit sogenannten Ankern (Konstellationen von Charakteristika) verankern.

Indoor Navigation: Initiale Position

Wenn der Anwender einer Indoor Navigation Applikation die App das erste Mal startet, muss das Indoor Positionierungs System seine initiale Position berechnen. Mit Tangos Area Learning kann dies durch das Laden einer sogenannten ADF (Area Description File) Datei erfolgen, die während eines Trainingsdurchlaufs aufgenommen wurde.

Hier liegt ein für unseren Anwendungsfall wichtiger Unterschied zu Tango: Bisher kann ARCore keine vorher gestarteten Sessions persistieren, oder Anchor in jegweder Form laden. Daher muss ein ARCore basiertes Indoor Navigations System entweder von einem bekannten Ursprung starten, einen Service wie VPS verwenden, oder eine eigene Lösung für dieses Problem bereitstellen.

Tango: Depth Perception

Während ARCore ein mathematisches Modell verwendet, um die Umgebung des Geräts anhand des Kamerabildes abzuschätzen, können Tango Geräte diese „echt“ Messen. Daher sind Tango Geräte in der Lage auch dreidimensionale Scans von komplexen Objekten anzufertigen, eine Aufgabe der ARcore nicht gewachsen ist.

ARCore: Lighting Estimation

ARCore ist primär dazu gedacht Entwicklern zu helfen augmentierte Objekte in reale Umgebungen zu rendern. Diese Objekte müssen bezüglich der Beleuchtung der dargestellten Szene entsprechen, damit sie sich realistisch ins Bild einbetten. Zu diesem Zweck errechnet ARCore mit dem Feature Light Estimation die Richtung und Intensität der Lichtquellen im Kamera Bild, um bei dieser Aufgabe unterstützen zu können.

What about ARKit?

Währen der Fokus momentan noch auf ARCore liegt, planen wir unsere Aktivitäten auch auf Apples ARKit auszuweiten.

Letztendlich bleibt hoffnungsvoll zu sagen das es mit der Veröffentlichung dieser Frameworks tatsächlich möglich wird Augmented Reality auf mobilen Geräten für Alle, Überall verfügbar zu machen.