Kategorien
Augmented Reality Software

Beispiel-Anwendung Azure Spatial Anchors

Microsoft bietet mit den Azure Spatial Anchors eine Cloud-AR-Lösung für Android, iOS und Hololens an. Benutzer*innen können an beliebigen Stellen in der Augmented-Reality-App Ankerpunkte erstellen. Auf die Ankerpunkte können dann andere Benutzer*innen von verschiedenen Geräte, unabhängig vom Betriebssystem, zugreifen. Da die Ankerpunkte mit einem realen Punkt in der Welt verknüpft sind, kann man sie nur aufrufen, wenn man tatsächlich vor Ort ist.

Zum Beispiel kann man in einer Android-Anwendung Ankerpunkte setzen und Informationen dazu erstellen. Die Ankerpunkte kann man dann auch mit einer iOS oder Hololens-Applikation abrufen und an der selben Position die zuvor erstellten Informationen darstellen. Die Ankerpunkte können beliebig lange in der Cloud gespeichert werden.

Um die Position des Ankerpunkts wiederzufinden, werden Feature Points aus Bildern der Umgebung erstellt und gespeichert. Die Umgebung darf sich daher nicht zu stark verändern, damit ein Ankerpunkt wieder gefunden werden kann.

Beispiel Schatzsuche

Um euch ein Beispiel für Azure Spatial Anchors zu zeigen, habe ich eine einfache Schatzsuche oder Schnitzeljagd für Android erstellt. Hilfreiche Tipps zum Erstellen einer App mit Spatial Anchors gibt es auch auf der Quickstart-Seite von Microsoft 1.

  1. Spatial Anchors auf der Azure-Plattform einrichten

    Um die Spatial Anchors verwenden zu können, benötigt ihr einen Azure-Account. Im Azure-Portal sucht ihr nach „Spatial Anchors“ und legt eine neue Resource an. Nachdem ihr alle Daten eingegeben habt, könnt ihr euch die Resource genauer ansehen. Für die Entwicklung einer App benötigt ihr zwei Keys: Account Id und Access Keys/Primary Key.

  2. Unity-Projekt erstellen

    Microsoft stellt im Samples-Repository2 auch einen Unity Wrapper zur Verfügung. Im Unity-Projekt gibt es einige Demo-Szenen zum Ausprobieren und Nachbauen. Zum Ausprobieren ist es am einfachsten, ein neues Projekt gleich in diesem Samples-Projekt hinzuzufügen, da hier alle notwendigen Einstellungen und Plugins schon vorhanden sind. Für ein neues Projekt muss man den Ordner AzureSpatialAnchors.SDK kopieren und über den PackageManager ARFoundation installieren.

    Für die Schnitzeljagd sind zwei Anwendungen notwendig: Einerseits die App zum Erstellen einer Schnitzeljagd (Creator), andererseits die App zum Spielen (Player). Für das Beispiel habe ich beide Anwendungen in eine App verpackt. Sowohl für den Creator als auch für den Player gibt es eine eigene Szene. Dazu gibt es noch ein Hauptmenü, in dem man zwischen den Anwendungen wählen kann.Menü für Schatzsuche

  3. Creator

    In der Creator-App kann man eine neue Schnitzeljagd anlegen. Dazu sind folgende Schritte notwendig:
    – Initialisierung von Azure Spatial Anchors
    – Neuen Ankerpunkt erstellen
    – Umgebung aufnehmen und in der Cloud speichern
    – Hinweis zum Finden des Ankerpunkts hinzufügen
    – Ankerpunkt-Id und Hinweis speichern
    – Wiederholen bis alle gewünschten Ankerpunkte erstellt wurden
    – Daten speichern und versendenCreator-App für Schatzsuche

  4. Player

    In der zweiten Anwendung kann man die zuvor erstellte Schnitzeljagd nun spielen. Es wird immer der Hinweis für den nächsten Ankerpunkt dargestellt, den der Spieler finden muss.
    Die Player-App beinhaltet folgende Schritte:
    – Initialisierung von Azure Spatial Anchors
    – Hinweis zu nächstem Ankerpunkt anzeigen
    – Suche mit der Ankerpunkt-Id konfigurieren
    – Warten, bis der Ankerpunkt gefunden wurde
    – Gefundenen Ankerpunkt darstellen
    – Wiederholen bis alle Ankerpunkte gefunden wurden
    – Anzeigen, dass das Spiel gewonnen wurdePlayer-App für Schatzsuche

  5. Daten austauschen

    Das erstellte Spiel muss für potentielle Spieler zur Verfügung gestellt werden. Bei echten Applikationen ist es sinnvoll, die Daten bzw. einen Link zu den Daten zu teilen. Da es sich hierbei nur um eine Test-App handelt, werden die Daten einfach lokal gespeichert und wieder aufgerufen.

Details

Bei der Suche nach Ankerpunkten kann man einstellen, ob in erster Linie die visuellen Informationen, die Beziehung zu anderen Ankerpunkten oder beide Strategien verwendet werden. Wenn man die Beziehung zwischen den Ankerpunkten verwendet, wird die relative Transformation zwischen Ankerpunkten herangezogen. Nachdem ein Ankerpunkt lokalisiert wurde, werden auch sofort alle anderen Ankerpunkte gefunden, obwohl sie noch nicht sichtbar waren. Bei unserer Schatzsuche ist es gewünscht, dass sich die Spieler*innen tatsächlich zum Ankerpunkt hinbewegen. Dies könnte man durch die Beschränkung auf die visuelle Information erreichen, aber dadurch verringert man auch die Erkennungsrate. Stattdessen messen wir die Entfernung und den Winkel zwischen der aktuellen Kameraposition und dem Ankerpunkt. Nur wenn man nah genug ist und in die richtige Richtung blickt, wird der Ankerpunkt als gefunden dargestellt.

Es werden nur die Bereiche für die Erkennung verwendet, die beim Erstellen des Ankerpunkts von der Kamera aufgenommen wurden. Daher ist es wichtig, dass die Umgebung aus allen Richtungen aufgenommen wird. Ansonsten ist die Erkennung evt. schwierig, wenn andere Benutzer*innen einen Ankerpunkt aus einer anderen Richtung ansteuert. Wenn man eine Schatzsuche für Kinder erstellt, ist es sinnvoll, die Kamera etwas tiefer zu halten um den gleichen Blickwinkel wie die Kinder zu haben. Je nach App ist es sinnvoll, mithilfe einer Animation oder einem kleinen Spiel auf die nötige Bewegung hinzuweisen.

Falls die Möglichkeit besteht, kann man die Spatial Anchors auch mit anderen Lokalisierungsmethoden wie z.B. GPS oder WLAN-Signalen verknüpfen. Mit dieser ungefähren Standortbestimmung erhält man die Information, welche Ankerpunkte in der Nähe sind. Für die exakte Positionierung ist weiterhin die visuelle Erkennung der einzelnen Ankerpunkte notwendig.

Fazit

Azure Spatial Anchors bieten eine einfache Möglichkeit, Augmented Reality über Cloud-AR mit anderen Personen zu teilen. Besonders gut finde ich, dass mehrere Plattformen unterstützt werden. Noch besser wäre es natürlich, wenn die Spatial Anchors erweiterbar wären um sie mit anderen AR-Frameworks zu verknüpfen.

Cloud Anchors sind eine Alternative bzw. Ergänzung zu location-based Augmented Reality. Sie eignen sich vor allem für Innenräume, da dort einerseits GPS-basierte Techniken nicht funktionieren und sich andererseits die gleichmäßigere Beleuchtung für die visuelle Erkennung eignet.

In den meisten Fällen funktioniert die Wiedererkennung sehr gut. Ab und zu ist es mir allerdings passiert, dass ein Ankerpunkt nicht mehr gefunden wurde, obwohl sich die Umgebung nicht verändert hat. Visuelle Erkennung ist immer von mehreren Faktoren abhängig, wie z.B. Beleuchtung oder Materialeigenschaften, und funktioniert nie zu 100 % in allen Umgebungen. Daher empfehle ich auf jeden Fall, die Verwendung von Azure Spatial Anchors vorab sehr genau in der geplanten Umgebung zu testen. Zusätzlich ist es sinnvoll, eine Fallback-Lösung anzubieten. Die Inhalte werden in einer anderen Form dargestellt werden, wenn nach einer gewissen Zeit noch keine Ankerpunkte gefunden wurden.

Interesse?

Falls ihr Cloud-AR mit Azure Spatial Anchors selber ausprobieren wollt, stelle ich euch die Beispiel-App gerne für Android zur Verfügung.

Referenzen

  1. https://docs.microsoft.com/en-us/azure/spatial-anchors/quickstarts/get-started-unity-android
  2. https://github.com/Azure/azure-spatial-anchors-samples.git

Eine Antwort auf „Beispiel-Anwendung Azure Spatial Anchors“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.