Simultaneous Localisation and Mapping (SLAM) ist ein immer wichtigeres Thema innerhalb der Computer Vision Community und findet besonderes Interesse in der Augmented und Virtual Reality Industrie. Da eine Vielzahl von SLAM-Systemen aus Wissenschaft und Industrie zur Verfügung gestellt wird, lohnt es sich zu erforschen, was genau unter SLAM zu verstehen ist. Dieser Artikel gibt eine kurze Einführung in das, was SLAM ist und wofür es im Rahmen der Forschung und Entwicklung im Bereich Computer Vision hier insbesondere der Augmented Reality verwendet wird.
Was ist SLAM?
SLAM ist kein bestimmter Algorithmus oder eine bestimmte Software, sondern bezieht sich auf das Problem der simultanen Lokalisierung d.h. der Position/Orientierung eines Sensors in Bezug auf seine Umgebung, während gleichzeitig die Struktur dieser Umgebung abgebildet wird. Wenn wir also von einem „SLAM-System“ sprechen, bedeutet das „eine Reihe von Algorithmen zur Lösung des Problems der simultanen Lokalisierung und Abbildung“.
SLAM ist nicht notwendigerweise nur ein Computer-Vision-Problem und muss keine visuelle Information beinhalten. In der Tat war ein Großteil der frühen Forschung mit bodengebundenen Robotern, die mit Laserscannern ausgestattet waren, verbunden. Für diesen Artikel werde ich mich jedoch hauptsächlich mit visuellem SLAM beschäftigen – wobei der primäre Modus der Wahrnehmung über eine Kamera erfolgt – da es im Kontext der Augmented Reality von größten Interesse ist, aber viele der diskutierten Themen können allgemeiner angewendet werden.
Die Anforderung, sowohl die Position der Kamera als auch die Map wiederherzustellen, wenn keine davon bekannt ist, unterscheidet das SLAM-Problem von anderen Aufgaben. Beispielsweise ist das markerbasierte Tracking nicht SLAM, da das Markerbild vorher bekannt ist. Auch die 3D-Rekonstruktion mit einem festen Kamerarig ist kein SLAM, denn während die Map wiederhergestellt wird, sind die Positionen der Kameras bereits bekannt. Die Herausforderungen in SLAM besteht darin, sowohl die Kameraposition als auch die Mapstruktur wiederherzustellen, während man anfangs keine der beiden kennt.
Ein wichtiger Unterschied zwischen SLAM und anderen scheinbar ähnlichen Methoden zur Wiederherstellung von Pose und Struktur ist die Anforderung, dass es in Echtzeit arbeiten muss. Dies ist ein etwas wackeliges Konzept, aber im Allgemeinen bedeutet es, dass die Bearbeitung jedes eingehenden Kamerabildes bis zum Eintreffen des nächsten abgeschlossen sein muss, so dass die Pose der Kamera sofort verfügbar ist und nicht als Ergebnis der Nachbearbeitung. Dies unterscheidet SLAM von Techniken wie Struktur und Bewegung, bei denen ein Satz ungeordneter Bilder offline verarbeitet wird, um die 3D-Struktur einer Umgebung in einem potenziell zeitraubenden Prozess wiederherzustellen. Dies kann zu beeindruckenden Ergebnissen führen, aber entscheidend ist, dass Sie nicht wissen, wo sich die Kamera während der Aufnahme befindet.
Eine kurze Geschichte zu SLAM.
Die Erforschung des SLAM-Problems begann innerhalb der Robotik-Community, in der Regel mit Radrobotern, die eine flache Grundplatte durchqueren. Typischerweise wurde dies durch die Kombination von Sensormesswerten mit Informationen über den Steuereingang und den gemessenen Roboterzustand erreicht. Dies mag weit davon entfernt erscheinen, eine Handkamera zu verfolgen, die sich frei im Raum bewegt, verkörpert aber viele der Kernprobleme von SLAM, wie die Erstellung einer konsistenten und genauen Map und die optimale Nutzung mehrerer unzuverlässiger Informationsquellen.
In letzter Zeit ist der Einsatz von visuellen Sensoren zu einem wichtigen Aspekt der SLAM-Forschung geworden, auch weil ein Bild eine reichhaltige Informationsquelle über die Struktur der Umgebung darstellt. Ein großer Teil der Forschung über visuelles SLAM verwendet Stereokameras oder Kameras neben anderen Sensoren, aber seit etwa 2001 zeigen eine Reihe von Arbeiten, wie SLAM erfolgreich mit nur einer einzigen Kamera arbeitet (bekannt als monokulares visuelles SLAM). Als Beispiel kann hier die bahnbrechende Arbeit von Andrew Davison an der Universität Oxford genannt werden.
Dies war entscheidend, um SLAM zu einer weitaus nützlicheren Technologie zu machen, da Geräte, die nur mit einer einzigen Kamera ausgestattet sind – wie Webcams und Mobiltelefone – weitaus häufiger und zugänglicher sind als spezielle Messgeräte. Neuere Arbeiten haben gezeigt, wie mit monokularem visuellem SLAM großformatige Maps erstellt werden können, wie die Maps automatisch mit aussagekräftigen 3D-Strukturen erweitert und wie extrem detaillierte Formen in Echtzeit wiederhergestellt werden können. SLAM ist ein aktives Forschungsfeld im Bereich Computer Vision und es entstehen ständig neue und verbesserte Techniken.
Wie SLAM arbeitet.
Die meisten modernen visuellen SLAM-Systeme basieren auf der Verfolgung einer Reihe von Punkten durch aufeinanderfolgende Kamerarahmen und der Verwendung dieser Spuren, um ihre 3D-Position zu triangulieren, während gleichzeitig die geschätzten Punktpositionen verwendet werden, um die Kameraposition zu berechnen, die sie hätten beobachten können. Es mag den Anschein haben, dass es unmöglich ist, das eine ohne das andere zu berechnen, aber durch Beobachtung einer ausreichenden Anzahl von Punkten ist es möglich, sowohl für die Struktur als auch für die Bewegung eine Lösung zu finden. Selbst mit einer einzigen Kamera ist es möglich, durch die sorgfältige Kombination von Punktmessungen über mehrere Bilder hinweg Pose und Struktur mit hoher Genauigkeit bis hin zu einem unbekannten Global Scale Factor wiederherzustellen. Das folgenden Beispiel zeigt das kommende Kudan SLAM System, das eine Reihe von Punkten verfolgt, wodurch die Position und Ausrichtung der Kamera in Bezug auf die Map geschätzt werden kann.
Im Kern ist SLAM ein Optimierungsproblem, bei dem es darum geht, die beste Konfiguration von Kamerapositionen und Punktpositionen zu berechnen, um den Reproduktionsfehler zu minimieren (die Differenz zwischen dem verfolgten Ort eines Punktes und dem Ort, an dem er die Kameraposition über alle Punkte erhalten soll). Die Methode der Wahl zur Lösung dieses Problems heißt Bündelausgleichung, ein nichtlinearer Kleinst-Quadrat-Algorithmus, der sich bei geeigneter Startkonfiguration iterativ dem minimalen Fehler für das gesamte System annähert.
Das Problem bei der Bündelausgleichung ist, dass es sehr zeitaufwendig sein kann, die beste Lösung zu finden. Zudem wächst die benötigte Zeit mit zunehmender Größe der Map schnell an. Mit dem Aufkommen von Multicore-Maschinen wird dies gelöst, indem die Lokalisierung vom Mapping getrennt wird. Dies bedeutet, dass die Lokalisierung ( die Verfolgung von Punkten, um die aktuelle Kameraposition abzuschätzen) in Echtzeit auf einem Thread erfolgen kann, während der Mapping-Thread die Bündelausgleichung auf der Map im Hintergrund ausführen kann. Nach der Fertigstellung aktualisiert der Mapping-Thread die zur Verfolgung verwendete Map und der Tracker fügt wiederum neue Beobachtungen hinzu, um die Map zu erweitern. Dies ist im obigen Video zu sehen, wo die Verfolgung kontinuierlich ist, die Map aber nur periodisch optimiert wird.
Abgesehen von Details wie der Methode der Punkteverfolgung, der Initialisierung der Map, der Robustheit gegenüber fehlerhaften Übereinstimmungen und verschiedenen Strategien zur effizienteren Optimierung der Map, wird hier die grundlegende Funktionsweise eines SLAM-Systems beschrieben. Darüber hinaus werden häufig zusätzliche Funktionen integriert, um SLAM in der Praxis tauglicher zu machen. Ein entscheidendes Merkmal für ein größeres Mapping ist zum Beispiel das Schließen von Streifen, wobei die allmähliche Anhäufung von Fehlern im Laufe der Zeit verbessert werden kann, indem die aktuelle Position mit einem früheren Teil der Map verknüpft wird, wodurch zusätzliche Einschränkungen für das Optimierungsproblem erzwungen werden, um eine insgesamt korrektere Map zu erhalten.
Eine weitere wesentliche Technik ist die so genannte Relokalisierung, die in der Lage ist, vorübergehend schlechte Tracking-Leistungen zu bewältigen, die sonst zu einem vollständigen Ausfall des Systems führen könnten. Dadurch kann der Tracker neu gestartet werden, indem festgestellt wird, welcher Teil der zuvor besuchten Map dem aktuellen Kamerabild am nächsten kommt. Dies wird im Folgenden anhand unseres SLAM-Systems demonstriert, bei dem das Tracking fehlschlägt und wiederhergestellt wird, sobald die Map wieder sichtbar ist. Dies löst auch das Problem der „kidnapped camera“, bei dem die Kamera beim Verschieben an einen anderen Ort blockiert wird: Das Tracking wird auch nach einem Wechsel des Blickwinkels der Kamera erfolgreich fortgesetzt.
Applikationen.
Das oben genannte gibt einen schnelleren Überblick darüber, was das SLAM-Problem beinhaltet und wie man es lösen würde. Aber warum ist das wichtig und wann ist ein SLAM-System sinnvoll? Wie bei der ursprünglichen Robotik-Forschung ist die Lokalisierung einer Kamera in einer unbekannten Umgebung nützlich, wenn es darum geht, Gelände zu erkunden und zu navigieren, für das keine vorherige Map verfügbar ist – sie wird sogar zur Erforschung der Marsoberfläche verwendet.
Diese Fähigkeit, eine Kamera ohne vorherige Referenz genau zu lokalisieren, ist ebenfalls entscheidend für ihren Einsatz in der Augmented Reality. So können virtuelle Inhalte in Bezug auf die reale Welt fixiert werden: Denn die reale Welt beeinflusst die Map und die Kamera, die die zu erweiternden Bilder aufnimmt. Daher ist eine schnelle und genaue Lokalisierung entscheidend (sonst wäre eine Verzögerung oder Drift in der gerenderten Grafik zu erkennen). Der Unterschied zwischen SLAM und so etwas wie unserem Marker Tracker besteht darin, dass es nicht notwendig ist, ein vordefiniertes Bildtarget zu haben, um Argumentationen zu erzeugen; noch ist es wichtig, dass bestimmte Objekte im Blickfeld bleiben.
Anspruchsvollere Augmented-Reality-Anwendungen sind möglich, da als notwendiger Schritt bei der Lokalisierung eine Map erstellt wird. Dies ermöglicht Anwendungen, die über das einfache Hinzufügen von virtuellen Inhalten in den Weltkoordinatenrahmen hinausgehen, in dem virtuelle Inhalte auf reale Objekte in der Szene reagieren können.
Anstatt eine Map einer Umgebung zu erstellen, kann ein SLAM-System ebenso gut dazu verwendet werden, eine 3D-Rekonstruktion eines Objekts zu erstellen, indem man einfach eine Kamera um dieses herum bewegt. Zum Beispiel wird das kommende Kudan Slam System verwendet, um den Prozess der Erstellung eines punktbasierten 3D-Modells eines komplizierten Objekts zu zeigen und es dann zu verfolgen, während der Hintergrund bewusst ignoriert wird.
Es ist wichtig zu beachten, dass SLAM zwar eine Vielzahl von Anwendungen ermöglicht, aber es gibt einige Dinge, für die es nicht das richtige Werkzeug ist. SLAM-Systeme gehen davon aus, dass sich die Kamera durch eine unveränderliche Szene bewegt, was sie für Aufgaben wie Personenverfolgung und Gestenerkennung ungeeignet macht: Beides sind nicht starr deformierte Objekte und eine nicht statitische Map, obwohl diese Aufgaben tatsächlich durch Computer-Vision bewältigt werden können, sind sie keine „Mapping-“Probleme. Ebenso sind „Vision Tasks“ wie Gesichtserkennung, Bildverständis und Klassifikation nicht mit SLAM verbunden.
Dennoch können, wie oben gezeigt, eine Reihe wichtiger Aufgaben wie die Verfolgung bewegter Kameras, Augmented Reality, Maprekonstruktion, Interaktionen zwischen virtuellen und realen Objekten, Objektverfolgung und 3D-Modellierung mit einem SLAM-System durchgeführt werden. Zudem wird die Verfügbarkeit einer solchen Technologie zu weiteren Entwicklungen und einer höheren Komplexität in Augmented-Reality-Anwendungen führen.