-
Der Gegenstand betrifft ein Verfahren sowie einen Server zur Bestimmung einer Umgebungskarte.
-
Die Vermessung und Auswertung von einer Umgebung eines mobilen Geräts ist aufgrund der guten Qualität von Kamerabildern von mobilen Geräten als auch guter Sensorwerte möglich. Dabei ist es möglich, dass anhand von Orientierungsdaten (Pose) einer Kamera eines mobilen Gerätes sowie eines jeweiligen Bilder (Frame) einer Kamera des mobilen Gerätes, Merkmale in dem Bild detektiert werden und diesen Merkmalen Punkte einer Punktwolke zugeordnet werden.
-
Merkmale in einem Bild haben eine relative Position in dem Bild und abhängig von einer Position und einer Ausrichtung bzw. Orientierung einer Kamera (Pose Transform) kann hieraus eine Position des Merkmals in einem globalen Koordinatensystem bestimmt werden. Insbesondere ist es möglich, zu fest definierten Referenzpunkten jeweils ein Koordinatensystem zu bestimmen, in dem die Punktkoordinaten der Punkte der Punktwolke bestimmt werden.
-
Das Bestimmen von charakteristischen Merkmalen und das Berechnen von Punktwolken hieraus ist hinlänglich bekannt und wird beispielsweise in sogenannten Augmented Reality (AR) Anwendungen eingesetzt. Bekannte Beispiele solcher Augmented Reality Anwendungen ist das ARKit von Apple® sowie ARCore von Google®. Beides sind anwendungsspezifische Programmierschnittstellen, die es ermöglichen, durch das Mobilgerät mobilstationsseitige Punktwolken für Augmented Reality Anwendungen zu erstellen und zu nutzen.
-
Nachteilig an der Bestimmung der Punktwolke in dem Mobilgerät ist, dass einerseits die Rechenleistung begrenzt ist und andererseits aufgrund von fehlerhaften Sensordaten eine Drift in den Punktkoordinaten in dem globalen Koordinatensystem auftreten kann. So ist es bekannt, dass die Drift 1% bis 10% beträgt, was insbesondere an einer unzureichenden Auswertung der verfügbaren Sensordaten liegen kann.
-
Dem Gegenstand liegt daher die Aufgabe zugrunde, eine auf Punkten und Punktkoordinaten basierende Umgebungskarte zu optimieren.
-
Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 sowie einen Server nach Anspruch 20 gelöst.
-
Gegenständlich wird vorgeschlagen, dass serverseitig Bewegungsdaten eines mobilen Gerätes empfangen werden. Ein mobiles Gerät kann insbesondere ein Mobiltelefon, ein Tablet-Computer, Smart Glasses, Wearables oder dergleichen sein. Bewegungsdaten können insbesondere Neigungs- und Beschleunigungsinformationen sein, die in dem mobilen Gerät mittels geeigneter Sensoren, beispielsweise Neigungssensoren und/oder Beschleunigungssensoren erfasst werden können. Mit Hilfe der Bewegungsdaten ist eine Bewegung des mobilen Gerätes im Raum detektierbar. Insbesondere ist mit Hilfe der Bewegungsdaten eine Positionsbestimmung des mobilen Gerätes relativ zu einem Bezugspunkt möglich. Bewegungsdaten werden insbesondere zwischen zwei Bilder ausgewertet, um die Veränderung der Position des Gerätes relativ zu dem realen Objekt welches in dem Bild erfasst wurde, zu bestimmten.
-
Darüber hinaus wird vorgeschlagen, dass serverseitig Orientierungsdaten einer Kamera des mobilen Gerätes empfangen werden. Orientierungsdaten (Pose) einer Kamera können durch eine Richtung eines Vektors in einem Koordinatensystem ausgedrückt werden, wobei der Vektor insbesondere in der optischen Achse der Kamera liegt. Das Koordinatensystem ist insbesondere ein globales Koordinatensystem, bei dem eine erste Achse parallel zur Gravitation verläuft, eine zweite Achse parallel zur Waagerechten verläuft und eine dritte Achse senkrecht zu der durch die ersten beiden Achsen aufgespannte Ebene verläuft. Hiermit kann die Ausrichtung der optischen Achse der Kamera im dreidimensionalen Raum bestimmt werden.
-
Schließlich wird durch die Kamera des mobilen Gerätes eine Abfolge von Bildern, insbesondere in einem Video erfasst. Wenn ein Bild der Kamera erfasst wurde, kann zusammen hiermit die Orientierungsinformation im Sinne von Orientierungsdaten in dem mobilen Gerät erfasst werden und es kann erfasst werden, welche Bewegungsinformationen zwischen einem der vorhergehenden Bilder und dem aktuellen Bild anhand der Bewegungsdaten erfasst wurden. Diese Information, also die Bewegungsdaten und Orientierungsdaten, zusammen mit dem zugeordneten Bild der Kamera, können serverseitig empfangen werden.
-
Ein Bild der Kamera kann ein sogenannter „Frame“ eines Bewegtbildes sein. Gegenständlich ist es möglich, dass serverseitig jedes Einzelbild oder auch nur zeitlich nicht unmittelbar benachbarte Bilder der Kamera empfangen werden. So ist es beispielsweise möglich, dass nur jedes 5te, jedes lOte, jedes n-te (n>10) Bild der Kamera serverseitig empfangen wird.
-
Zur Erstellung der Umgebungskarte wird nun vorgeschlagen, dass serverseitig das empfangene Bild zusammen mit den Bewegungsdaten und den Orientierungsdaten ausgewertet wird, um eine serverseitige Punktwolke zu erstellen. Die serverseitige Punktwolke wird insbesondere mittels eines SLAM (Simultaneous Localization and Mapping)-Algorithmus im Server erstellt. Das Erstellen einer Punktwolke anhand von Bildern ist an sich bekannt, nicht jedoch, dass hierzu die Bewegungsdaten und die Orientierungsdaten des mobilen Gerätes genutzt werden. Aufgrund der Tatsache, dass serverseitig zum einen größere Rechenleistung zur Verfügung steht und zum anderen zur Erstellung der Punktwolke eine Latenz zulässig ist, wird die serverseitig erstellte Punktwolke in der Regel die Umgebung besser abbilden, als eine mobilstationsseitig erstellte Punktwolke. Mit Hilfe der serverseitigen Punktwolke wird eine Umgebungskarte zumindest in Teilen erstellt.
-
Bei der serverseitigen Auswertung des empfangenen Bildes werden sowohl die Bewegungsdaten als auch die Orientierungsdaten verwendet, insbesondere kann hiermit eine Transformation der erfassten Punkte in dem Bild in Punktkoordinaten in einem globalen Koordinatensystem errechnet werden.
-
Die Bewegungsdaten können auch als IMU-Daten (inertial measurement data) verstanden werden. Die Orientierungsdaten können auch als pose-transform-Daten verstanden werden.
-
Die serverseitig erstellte serverseitige Punktwolke ist höher aufgelöst und weist eine höhere Genauigkeit auf, als eine mobilstationsseitig erstellte Punktwolke. Die höhere Auflösung ist insbesondere durch mehr Rechenleistung und größere Rechengenauigkeit begründet, sowie der Tatsache, dass serverseitig Daten von einer Vielzahl an Bildern aus ganz unterschiedlichen Zeitpunkten, die auch Stunden, Tage oder Wochen auseinander liegen, genutzt werden können, um die Punktwolke laufend zu ergänzen und/oder anzupassen. Die größere Genauigkeit ist damit begründet, dass Merkmale in Bildern mit serverseitig verschiedensten Algorithmen detektiert werden können, um so eine dreidimensionale Struktur innerhalb des Raumes anhand einer Abfolge von Bildern durch Punktkoordinaten beschreiben zu können.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass zusätzlich serverseitig eine durch das mobile Gerät erstellte mobilstationsseitige Punktwolke empfangen wird und diese mobilstationsseitige Punktwolke mit der serverseitigen Punktwolke vereint wird, um eine neue serverseitige Punktwolke zu bestimmen. Da in dem Mobilgerät bereits mit Hilfe von entsprechenden Rechenverfahren eine Punktwolke erstellt wurde, kann diese dazu genutzt werden, die serverseitig errechnete Punktwolke anzureichen. Durch ein Vereinen der mobilstationsseitig errechneten Punktwolke mit der serverseitigen Punktwolke wird die neue serverseitige Punktwolke robuster und genauer.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass Punktkoordinaten eine Punktwolke repräsentieren, wobei Punkte der Punktwolke jeweils einer der Punktkoordinaten entsprechen. Mit Hilfe der Punkte bzw. der Punktkoordinaten können Objekte, respektive besondere Merkmale von Objekten, hinsichtlich ihrer Position im Raum beschrieben werden.
-
Dabei wird vorgeschlagen, dass Punktkoordinaten durch Vektoren repräsentiert werden. Der Ursprung des Vektors kann einerseits ein globalgültiger Ursprung sein und andererseits ist es möglich, dass abhängig von erkannten Punkten oder definierten Ankern jeweils Vektoren zu Punktkoordinaten bestimmt werden. Hierbei ist es möglich, dass beispielsweise GPS-Koordinaten genutzt werden, um den Ursprung eines Vektors zu repräsentieren. Die Punktkoordinaten stellen in einem global gültigen Raum Punkte dar, die reale Objekte repräsentieren.
-
Eine Oberfläche eines realen Objekts kann mit einer Mehrzahl von Punkten im dreidimensionalen Raum beschrieben werden. Abhängig vom Auswertungsalgorithmus ist die Positionierung der Punkte mehr oder minder genau. Durch eine serverseitige Auswertung der Orientierungsdaten als auch der Bewegungsdaten zusammen mit den Bildern der Kamera können die Punkte mit einer höheren Genauigkeit und einer größeren Dichte bestimmt werden. als dies mobilstationsseitig möglich ist, um so die serverseitige Punktwolke zur Bestimmung der Umgebungskarte robuster und genauer zu gestalten.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass beim Vereinen der mobilstationsseitigen Punktwolke mit der serverseitigen Punktwolke die Punkte der serverseitigen Punktwolke um die Punkte der mobilstationsseitigen Punkte zumindest teilweise ergänzen werden. Hierbei ist es möglich, die Punkte der mobilstationsseitigen Punktwolke serverseitig zu wichten und nur Punkte mit einer Wichtung über einem Grenzwert der serverseitigen Punkte hinzuzufügen. Dabei kann eine Dichte der Punkte in einem Bereich relevant sein für die Wichtung der einzelnen Punkte in diesem Bereich.
-
Auch ist es möglich, dass die Punktkoordinaten der Punkte der serverseitigen Punktwolke mit Hilfe der Punktkoordinaten der Punkte der mobilstationsseitigen Punktwolke und/oder umgekehrt zumindest teilweise umgerechnet werden. So ist es beispielsweise möglich, dass ein Merkmal in einem Bild serverseitig durch einen Punkt mit Punktkoordinaten repräsentiert wird, dass mobilstationsseitig durch einen Punkt mit Punktkoordinaten referenziert wurde, welche nur marginal von den Punktkoordinaten des serverseitigen Punktes abweichen. In einem solchen Fall kann beispielsweise durch Interpolation, Mittelung oder anderer Rechenverfahren aus zwei Punkten ein neuer Punkt berechnet werden und dessen Punktkoordinaten können für die neue serverseitige Punktwolke verwendet werden.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass die Punktkoordinaten der Punkte der mobilstationsseitigen Punktwolke mit Hilfe der serverseitig ausgewerteten Bewegungsdaten korrigiert werden. Die Bewegungsdaten können serverseitig mit größerer Genauigkeit ausgewertet werden, als dies mobilstationsseitig möglich ist. Insbesondere kann durch einen Abgleich der Daten der Bewegungssensoren mit Bilddaten, eine Korrektur der Bewegungsdaten serverseitig erfolgen. Die so optimierten Bewegungsdaten können verwendet werden, um die Punktkoordinaten der Punkte der mobilstationsseitigen Punktwolke zu korrigieren. Die Punktkoordinaten der Punkt der mobilstationsseitigen Punktwolke wurden mobilstationsseitig anhand der mobilstationsseitig erfassten und ausgewählten Bewegungsdaten als auch der mobilstationsseitig erfassten und ausgewählten Orientierungsdaten mobilstationsseitig berechnet. Durch Rechenfehler kann hierbei eine Drift entstehen, aufgrund derer die Punktkoordinaten mit zunehmender Dauer der Erfassung der Punkte relativ zueinander und/oder zu einem gemeinsamen Ursprung ungenauer werden. Das heißt, dass in einem globalen Koordinatensystem die Punktkoordinaten mit zunehmender Dauer der Erfassung der Punkte weniger exakt sind. Durch ein Anpassen anhand der serverseitig ausgewerteten Bewegungsdaten kann dieser Drift entgegen gewirkt werden.
-
Selbes gilt für Orientierungsdaten, welche serverseitig empfangen werden und serverseitig ausgewertet werden. Anhand dieser serverseitig ausgewerteten Orientierungsdaten können die mobilstationsseitig erfassten Punktkoordinaten ebenfalls korrigiert werden.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass die serverseitig empfangenen Orientierungsdaten serverseitig mit Hilfe der empfangenen Bewegungsdaten korrigiert werden. Durch die Bewegungsdaten ist es möglich, Fehler in den Orientierungsdaten auszugleichen und umgekehrt.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass in dem empfangenen Bild eine Merkmalserkennung und/oder eine Merkmalsbeschreibung durchgeführt wird. Sogenannte „feature detection“ und „feature description“ ist an sich bekannt. Insbesondere werden MOPS- oder SIFT-Verfahren hierfür eingesetzt. Durch die serverseitige Auswertung des Bildes ist es möglich, Merkmalsbeschreibungen zu optimieren. Sogenannte Deskriptoren „descriptors“ (Merkmalsbeschreibungen) können durch Lernalgorithmen optimiert werden. Zur Merkmalsbeschreibung ist es möglich, die Punktkoordinaten serverseitig auszuwerten und anhand der Auswertung, insbesondere mittels deep-learning-Algorithmen, optimale Deskriptoren zu finden. Merkmalsbeschreibungen sind insbesondere solche Merkmale, die invariant sind, insbesondere gegenüber Rotation, Translation, Panning, Zooming, Lichtveränderung und/oder dergleichen.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass serverseitig in dem empfangen Bild ein bundle adjustment durchgeführt wird.
-
Dadurch, dass die Punktwolke serverseitig gespeichert wird und insbesondere persistent ist, kann sie mit Punktwolken weiterer mobiler Geräte verglichen werden.
-
Auch ist es möglich, umfangreiche Analysen der Punktwolke durchzuführen, um gegebenenfalls in der empfangenen mobilstationsseitigen Punktwolke eine Ausreisserentfernung durchzuführen. Hier ist es möglich, derartige Punkte zu identifizieren, die mit einer hohen Wahrscheinlichkeit fehlerhaft erkannt wurden. Insbesondere kann eine statistische Auswertung erfolgen, sodass Ausreisser detektiert werden, welche aufgrund fehlerhafter Bildauswertung entstanden sind und nicht durch Objekte im Raum bedingt sind.
-
Die mobilstationsseitige Punktwolke wird mittels visueller bewegungsgebundener Odometrie (visual-inertia odometry) erstellt.
-
Problematisch bei rein mobilstationsgebundenen Punktwolken ist das sogenannte „loop closure“, das heißt, das Wiedererkennen von zuvor detektierten Punkten und zuvor besuchten Orten innerhalb einer AR Sitzung. Durch eine serverseitige Punktwolke kann ein loop closure bestimmt werden. Insbesondere ist es möglich, bereits zuvor detektierte Bilder und/oder Punkte zu erkennen und hieraus zu schließen, dass ein sogenanntes „loop closure“ erfolgt ist.
-
Ist ein loop closure serverseitig berechnet worden, kann eine Drift an Punktkoordinaten und Punkten der mobilstationsseitig bestimmten Punktwolke korrigiert werden. Hierbei ist es möglich, die Gesamtdrift eines geschlossenen Ringes (loop closure) zu bestimmen und hieraus rückwirkend einzelne Punktkoordinaten der Punkte der Punktwolke um die Drift oder einen Bruchteil der Drift zu verschieben. Die Verschiebung kann abhängig von einem Verschiebungsvektor sein, der durch die Drift bestimmt ist. Der Betrag des Verschiebungsvektors kann mit zunehmendem zeitlichem Abstand zu dem Bild, in dem das loop closure detektiert wurde, abnehmen.
-
Auch ist es möglich, dass serverseitig das Bild ausgewertet wird. Hierbei können insbesondere Kontrast, Helligkeit, Schärfe, Tiefenschärfe und dergleichen serverseitig ausgewertet werden und Einstellungsdaten abhängig davon für die mobilstationsseitige Kamera bestimmt werden. Solche Einstellungsdaten können dann an das mobile Gerät übermittelt werden, um dort die Kamera einzustellen, so dass die Bildinformationen für das Berechnen der Punktwolke optimiert sind.
-
Auch wird vorgeschlagen, dass die serverseitige Punktwolke, insbesondere die neue serverseitige Punktwolke an das mobile Gerät übermittelt wird. Hierdurch ist es möglich, die in dem Mobilgerät vorhandene Punktwolke zu ersetzen oder zu optimieren. Auch ist es möglich, dass eine solche Punktwolke an Geräte übermittelt wird, in denen mobilstationsseitig überhaupt keine Punktwolke berechnet werden kann. Nur anhand der Bildinformationen sowie der Bewegungs- und Orientierungsdaten kann ein mobiles Gerät zur Bestimmung von Punktwolken beitragen und Punktwolken empfangen.
-
Eine Lokalisierung des mobilen Geräts im Raum kann dann durch Abgleich der aktuellen Punkte in einem Bild mit Punkten in der Punktwolke erfolgen. Liegt eine Übereinstimmung vor, kann daraus die Position des Gerätes bestimmt werden, ohne dass das Gerät selber Positionsinformationen erfassen muss.
-
Zur Bestimmung von Vektorursprüngen ist es möglich, die serverseitige Punktwolke mit Ankern anzureichern. Anker können relativ zu Punkten in der Punktwolke gesetzt werden.
-
Gemäß einem Ausführungsbeispiel wird vorgeschlagen, dass die serverseitige Punktwolke von einem mobilen Gerät empfangen wird und dass in dem mobilen Gerät eine Augmented Reality Anwendung mit der empfangenen Punktwolke initialisiert wird. Somit liegt zu Beginn einer AR-Anwendung bereits eine Information zu der Umgebung in Form einer Punktwolke vor.
-
Auch ist es möglich, dass serverseitig von einer Mehrzahl von mobilen Geräten mobilstationsseitige Punktwolken empfangen werden und dass die empfangenen mobilstationsseitigen Punktwolken verwendet werden, um die serverseitige Punktwolke anzupassen. Hierbei wird ausgenutzt, dass von einer Vielzahl von Geräten Punktwolken von einer bestimmten Umgebung bestimmt werden. Diese Vielzahl der Punktwolken können serverseitig in die serverseitige Punktwolke integriert werden, um diese robuster und genauer zu machen.
-
Auch ist es möglich, Merkmale abhängig von einem semantischen Umfeld der Anwendung zu detektieren. So ist es möglich, serverseitig zumindest zwei Instanzen der Punktwolken zu bestimmen und in jeder Instanz zumindest ein Merkmal durch Merkmalserkennung und/oder Merkmalsbeschreibung anzulernen. Einer jeweiligen Instanz samt der angelernten Merkmale kann an ein mobiles Gerät übermittelt werden.
-
Durch die serverseitig bestimmte Punktwolke ist es möglich, die Position eines mobilen Gerätes zu bestimmen. Hierbei kann eine Punktwolke eines mobilen Gerätes mit der serverseitigen Punktwolke verglichen werden. Insbesondere können die in einem aktuellen Bild erfassten Punkte mit Punkten der Punktwolke verglichen werden und bei einer Übereinstimmung kann eine Positionierung des mobilen Gerätes in der durch die Punktwolke bestimmten virtuellen Umgebung erfolgen.
-
Nachfolgend wird der Gegenstand anhand einer Ausführungsbeispiele zeigenden Zeichnung näher erläutert. In der Zeichnung zeigen:
- 1 ein System zur Bestimmung einer Umgebungskarte;
- 2 eine Darstellung von Merkmalen und deren Erkennung in Bildern sowie einer Zuordnung zu Punkten/Punktkoordinaten;
- 3 eine Anordnung zur Erfassung von Bewegungsdaten, Orientierungsdaten und/oder Punktwolken eines mobilen Gerätes;
- 4 ein Ablauf zu Bestimmung einer serverseitigen Punktwolke;
- 5 ein Ablauf einer loop closure;
- 5a, b ein Anpassen mobilstationsseitiger Punktkoordinaten abhängig von einer Drift;
- 6 ein Ablauf zur Optimierung einer mobilstationsseitigen Punktwolke;
- 7 ein Ablauf zur Erstellung von Einstelldaten für ein Mobilgerät;
- 8 ein Verfahren zur Übermittlung einer Punktwolke an ein Mobilgerät;
- 9 ein Verfahren zur Positionsbestimmung eines mobilen Gerätes.
-
Mit Hilfe des gegenständlichen Verfahrens ist es möglich, basierend auf mobilstationsseitig erfassten Bewegungsdaten, Orientierungsdaten und/oder Punktwolken eine zentrale Punktwolke zu erstellen, um somit Positionierungsaufgaben optimiert zu lösen.
-
Auf einem mobilen Gerät kann eine visuelle und regressgestützte Odometrie zur Erstellung einer mobilstationsseitigen Punktwolke durchgeführt werden. Dies ist hinlänglich bekannt und wird beispielsweise durch Programmierschnittstellen, wie beispielsweise ARKit von Apple® sowie ARCore von Google® unterstützt. Nachteilig an den lokalen Verfahren ist, dass diese zwar ein gutes relatives Positioniervermögen haben, jedoch in großräumigen Umgebungen fehlerhafte Positionierungen durchführen und weder robust noch akkurat genug sind, um diese industriellen Anwendungen zuführen zu können. Außerdem sind die mobilstationsseitigen Punktwolken limitiert, insbesondere aufgrund eines limitierten Speichers als auch aufgrund limitierter Rechenleistung.
-
Daher liegt dem Gegenstand der Gedanke zugrunde, die mobilstationsseitig erfassten Informationen serverseitig so aufzubereiten, dass eine Umgebungskarte und eine Positionierung darin auch in großen Umgebungen über eine Vielzahl von Mobilgeräten mit einer hohen Genauigkeit und großen Robustheit möglich ist.
-
Es wird vorgeschlagen, dass serverseitig die von einer mobilstationsseitig durchgeführten Odometrie verfügbaren Daten genutzt und angereichert werden. Hierzu sind Mobilstationen 2 über ein Weitverkehrsnetz 4 mit einem zentralen Server 6 verbunden, wie in 1 gezeigt. Eine bidirektionale Kommunikation ist möglich.
-
Gegenständlich werden von den Mobilstationen 2 an den Server 6 über das Weitverkehrsnetz 4 zumindest Bewegungsdaten und Orientierungsdaten übermittelt. Darüber hinaus kann auch eine Übermittlung der Punktwolke, insbesondere der sogenannten „raw feature points“ übermittelt werden. Die Bewegungsdaten werden auch als IMU (inertial measurement stater) beschrieben und die Orientierungsdaten werden auch als pose transform Daten beschrieben.
-
Serverseitig wird mit den empfangenen Daten in einem SLAM-System (Simultaneous Localization and Mapping) eine serverseitige Punktwolke errechnet. Zur Erstellung der Punktwolke ist es notwendig, Punkten Punktkoordinaten über Vektoren zuzuordnen. Hierzu wird eine Auswertung der Bildinformationen, der Orientierungsinformationen und der Bewegungsinformationen durchgeführt. Dies ist schematisch in der 2 dargestellt.
-
2 zeigt eine Szene, bei der drei markante Punkte 8 detektierbar sind. Solche markante Punkte 8 können durch Merkmale beschrieben werden, die über geeignete Merkmalsbeschreibung (descriptors) detektierbar sind. Die Merkmale der Punkte 8 sind insbesondere invariant gegenüber Veränderungen, wie beispielsweise Bewegung, Lichtveränderung, Panning, Zoom oder dergleichen. Auch ist es möglich, solche Merkmalsdeskriptoren zu definieren, die eine höherrangige Invarianz aufweisen.
-
In einem ersten Bild 10 sind die Punkte 8 in einer bestimmten Anordnung zueinander dargestellt. Anhand der Orientierungsdaten 12 ist es möglich, den Punkten nicht nur Koordinaten innerhalb des Bildes 10 zuzuordnen, sondern gegebenenfalls auch Koordinaten, die durch Vektoren 14 mit zumindest einem gemeinsamen Ursprung 16 beschrieben werden können. Dies ist insbesondere dann möglich, wenn neben den Orientierungsdaten 12 auch Bewegungsdaten 16 erfasst werden und beispielsweise in einem zweiten Bild 10 mit anderen Orientierungsdaten 12 die gleichen Punkte 8 in einer anderen Zuordnung zueinander detektiert werden. Die Veränderung der Punkte 8, insbesondere deren relative Zuordnung zueinander in den Bildern 10, zusammen mit den Orientierungsinformationen 12 und den Bewegungsinformationen 16 ermöglicht es, mobilstationsseitig und/oder serverseitig die Vektoren 14 der Punktkoordinaten der Punkte 8 zu errechnen.
-
Hierbei wird insbesondere ein kartesisches Koordinatensystem 18 eingesetzt, wobei die y-Achse parallel zur Gravitation, die x-Achse parallel zur Waagerechten und die z-Achse senkrecht auf der durch die x- und y-Achse aufgespannten Ebene steht. Die Vektoren 14 sind insbesondere dreidimensionale Vektoren. Über die Orientierungsinformation 12 und die Bewegungsinformation 16 kann ein Transformationstensor, mit dem aus den lokalen in dem Bild erfassten Positionen der Punkte die global gültigen Vektoren 14 errechnet werden können, bestimmt werden.
-
Gegenständlich wird von einer Mobilstation 2 zunächst jeweils ein Bild 10, die dazugehörige Orientierungsdaten 12 und die zwischen zwei Bildern 10 erfassten Bewegungsdaten 16, wie in 3 gezeigt, an den Server 6 übermittelt. In dem Server 6 wird der so erhaltende Bilddatenstrom ausgewertet und mittels eines SLAM-Systems eine serverseitige Punktwolke berechnet.
-
Da serverseitig zum einen eine höhere Rechenleistung zur Verfügung steht und auch die Speicherkapazität im Grunde unbegrenzt ist, kann die Anzahl der Punkte einer Punktwolke ebenso nahezu unbegrenzt sein. Dies ermöglicht es, eine Punktwolke für eine große Umgebung basierend auf Informationen von einem oder mehreren mobilen Geräten 2 zu bestimmen. Dabei wird beispielsweise vorgeschlagen, dass in einem Schritt 20 von zumindest einem mobilen Gerät 2 Orientierungsdaten 12, Bewegungsdaten 16 und Bilder 10 empfangen werden. Nach dem Empfang wird beispielsweise eine Merkmalserkennung durchgeführt und Punkte anhand von Merkmalsbeschreibungen detektiert. Die so detektierten Punkte werden extrahiert 22.
-
Anschließend kann eine Bewertung der Merkmalsbeschreibungen im Schritt 24 durchgeführt werden. Schließlich wird aus den extrahierten Punkten eine Punktwolke 30 im Schritt 26 bestimmt. Diese Punktwolke 30 wird serverseitig in einem Speicher abgelegt. Die Punktwolke 30 ist gebildet aus einer Mehrzahl von Punkten, die einen eindeutigen Kenner und zumindest Punktkoordinaten aufweisen.
-
Die serverseitig errechnete Punktwolke 30 basiert insbesondere auf einer Mehrzahl von Informationen von beispielsweise einer Mehrzahl verschiedener Mobilgeräte. Zur Positionserkennung ist es nun möglich, mobilstationsseitig erkannte Punkte mit den Punkten der Punktwolke zu vergleichen. Bei einer Übereinstimmung kann dann eine Positionsbestimmung des mobilen Gerätes erfolgen, indem wiederum über die Orientierungsdaten 12 ausgehend von den erkannten Punkten, die Position des Mobilgeräts 2 in der Punktwolke und mithin der realen Umgebung bestimmt werden kann.
-
Da die serverseitige Punktwolke 30 robuster und genauer ist, ist die Positionsbestimmung ebenfalls genauer. An den Schritt 20 kann bei der Auswertung, wie in der 5a dargestellt ein Schritt 32 anschließen. In diesem Schritt 32 erfolgt ein Vergleich bisher erfasster Bilder 10 und Punkte 8 mit solchen der serverseitigen Punktwolke, um beispielsweise ein loop closure durchzuführen. Mit Hilfe dieses loop closures ist es möglich, festzustellen, ob sich ein Mobilgerät 2 nach einer bestimmten Zeit an einer gleichen Position befindet und/oder gleiche Merkmale in einem Bild zu erkennen sind. Dies ist insbesondere von Interesse, um eine Drift, die sich nach einer Weile einstellt, zu korrigieren. Die nach der Erfassung der loop closure (32) erfassten Punkte werden im Schritt 34 zu der Punktwolke 30 hinzugefügt.
-
Wird ein loop closure detektiert, so ist es möglich, diese serverseitig detektierte Information zu verwenden, um eine mobilstationsseitige Drift in den Punkten der mobilstationsseitigen Punktwolke zu eliminieren. Hierzu wird in einem Schritt 36 zunächst festgestellt, um welchen Betrag sich die mobilstationsseitig errechnete Position des mobilen Gerätes 2, welche anhand der Bewegungsdaten 16 und Orientierungsdaten 12 ermittelt wurde, abweicht von der tatsächlichen Position des mobilen Gerätes 2. Da serverseitig erkannt wurde, dass das mobile Gerät 2 wieder in seiner Ursprungsposition angelangt ist, ist die Position relativ zum Anfang einer AR-Session eindeutig definiert. Weicht die mobilstationsseitig errechnete Position davon ab, liegt eine Drift vor, deren Betrag bestimmt werden kann (36). Mit Hilfe dieses serverseitig bestimmten Betrags der Drift ist es möglich, die Punkte der mobilstationsseitig berechneten Punktwolke anzupassen (38).
-
Dabei erfolgt eine Korrektur der Punktkoordinaten bzw. Vektoren 14 einzelner Punkte 8. Auch ist es möglich, eine mobilstationsseitig errechnete Punktwolke um serverseitig errechnete Punkte einer Punktwolke zu ergänzen. Hierzu wird die zwischen den Schritten 20 und 26 erstellte Punktwolke 30 erfasst. Darüber hinaus wird in einem Schritt 40 eine mobilstationsseitige Punktwolke empfangen. Die Punkte der mobilstationsseitig empfangenen Punktwolke können ergänzt, korrigiert oder in einer sonstigen Weise durch die serverseitig bestimmte Punktwolke 30 verändert werden. Die so optimierte Punktwolke 30 kann dann in einem Schritt 42 von dem Server 6 an das mobile Gerät 2 übermittelt werden.
-
Da serverseitig eine Auswertung des Bildes 10 durchgeführt wird, wird nach dem Empfangen des Bildes 10 (20) im Schritt 24 eine Merkmalserkennung durchgeführt. Bei dieser Merkmalserkennung wird die Invarianz der Merkmale überprüft und insbesondere können Merkmale anhand von deep learning-Strategien definiert werden.
-
Anschließend kann überprüft werden, ob die Merkmalserkennung in einem Bild 10 gut oder schlecht war (44) und hieraus abgeleitet werden, ob das erfasste Bild 10 in seiner Qualität für die Merkmalserkennung ausreichend gut war. Abhängig von dieser Auswertung kann in einem Schritt 46 zumindest ein Einstellparameter für die Kamera (Belichtung, Kontrast, Farbe und dergleichen) bestimmt werden und an das mobile Gerät 2 übermittelt werden. Dort kann die Kamera entsprechend eingestellt werden.
-
Auch ist es möglich, die mobilstationsseitig erfasste Orientierung zu optimieren. Hierzu wird nach dem Empfangen 20 eine Berechnung der Orientierungsdaten 12 in einem Schritt 48 serverseitig durchgeführt. Die Berechnung der Orientierungsdaten 12 kann dabei zum einen die von dem mobilen Gerät 2 empfangenen Bewegungsdaten 16 und Orientierungsdaten 12 nutzen und zum anderen kann einen Abgleich zwischen den mobilstationsseitig erfassten Punkten und den serverseitig vorhandenen Punkte der Punktwolke 30 erfolgen. So ist es beispielsweise möglich, dass die mobilstationsseitige Punktwolke bzw. die Punkte eines Bildes 10 in der serverseitigen Punktwolke 30 vorhanden sind, jedoch die Punktkoordinaten voneinander abweichen. Es kann festgestellt werden, dass diese Abweichung der Punktkoordinaten aufgrund eines fehlerhaften Umrechnungstensors bestehen, welcher gegebenenfalls aufgrund einer fehlerhaften Orientierungsinformation des mobilen Gerätes 2 bestimmt wurde. Ist dies der Fall, kann in einem Schritt 50 eine Abschätzung der tatsächlichen Orientierung der Kamera des mobilen Geräts 2 berechnet werden. Diese Information kann an das Mobilgerät 2 zurück gesendet werden, welches seine Orientierungsinformation updaten kann.
-
Darüber hinaus ist es möglich, in der Punktwolke 30 im Schritt 52 Anker zu bestimmen, welche ebenfalls in Schritt 54 an das Mobilgerät 2 übermittelt werden können.
-
Eine geräteunabhängige Positionsbestimmung ist ebenfalls möglich. Hierbei können mobilstationsseitig erfasste Punkte in einem Schritt 56 an den Server 6 übermittelt werden. In einem Schritt 58 erfolgt ein Vergleich dieser Punkte mit den Punkten der mobilstationsseitigen Punktwolke 30. Anhand dieses Vergleiches ist eine Positionsbestimmung möglich, in dem eine Übereinstimmung in den Punkten festgestellt wird. Basierend hieraus, kann eine Positionsbestimmung (60) erfolgen.
-
Die bestimmte Position sowie gegebenenfalls eine um Punkte der serverseitigen Punktwolke 30 angereicherte Punktwolke kann zurück an das mobile Gerät gesendet werden (62).
-
Die serverseitige Punktwolke wird laufend überprüft und ergänzt. Da laufend von einem oder mehreren mobilen Geräten Informationen serverseitig empfangen werden, wird die Punktwolke ständig um Punkte ergänzt und/oder es werden Punkte korrigiert. Dadurch wird die serverseitige Punktwolke mit zunehmender Betriebsdauer immer genauer und detaillierter. Serverseitig kann durch Bundle Adjustment, Feature Matching und Outlier Removal die Qualität der einzelnen Punkte der Punktwolke optimiert werden. Merkmale bzw. Merkmalsbeschreibung (descriptors) können fortlaufend verändert und ergänzt werden. Abhängig von der semantischen Umgebung können unterschiedliche Merkmalsbeschreibungen (descriptors) verwendet werden, um die Bildinformationen optimiert auswerten zu können und diese in Punkte der Punktwolke umrechnen zu können.
-
Insbesondere kann überprüft werden, wie gut und wie häufig eine Positionsbestimmung von mobilen Geräten anhand der dort erfassten Punkte durch Vergleich mit der Punktwolke ist und die jeweiligen Deskriptoren können verändert werden.
-
Das gegenständliche Verfahren erstellt somit serverseitig eine Punktwolke, die eine im Wesentlichen globale Gültigkeit hat und über eine Mehrzahl von Geräten erfasst und einer Mehrzahl von Geräten zur Verfügung gestellt werden kann.