Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

Erleichterung der Entwicklung visueller SLAM-Anwendungen

Simultaneous Localization and Mapping (SLAM) beschreibt den Prozess, bei dem ein Gerät, beispielsweise ein Roboter, mithilfe von Sensordaten ein Bild seiner Umgebung erstellt und gleichzeitig seine Position innerhalb dieser Umgebung bestimmt. Es gibt viele verschiedene Möglichkeiten, SLAM zu implementieren, sowohl in Bezug auf die eingesetzten Softwarealgorithmen als auch die verwendeten Sensoren, die Kameras, Sonar, Radar, LiDAR und grundlegende Positionsdaten umfassen können, die eine Inertial Measurement Unit (IMU) verwenden.

Die Verfügbarkeit kostengünstiger und kleiner Kameras hat die Popularität von monokularen Visual SLAM-Systemen gesteigert, die eine einzige Standardkamera verwenden, um die Ortungs- und Kartierungsfunktionen auszuführen. Solche visuellen SLAM-Systeme sind in einer Vielzahl von Robotern zu finden, einschließlich Mars-Rover und -Lander , Feldroboter in der Landwirtschaft, Drohnen und möglicherweise autonome Fahrzeuge. Visual SLAM-Systeme bieten auch dort Vorteile, wo kein GPS verfügbar ist, zum Beispiel in Innenräumen oder in Großstädten, wo Hindernisse durch Gebäude die GPS-Genauigkeit verringern.

In diesem Artikel wird der grundlegende visuelle SLAM-Prozess beschrieben, der die Module und die Algorithmen abdeckt, die an der Objekterkennung und -verfolgung sowie Fehlerkorrektur beteiligt sind. Die Vorteile der Auslagerung der SLAM-Berechnung und -Funktionalität auf dedizierte DSPs werden diskutiert und das CEVA-SLAM SDK-Entwicklungskit wird als Veranschaulichung der Vorteile verwendet, die durch Befolgen dieser Entwicklungsroute erzielt werden können.

Direktes und funktionsbasiertes SLAM

Es gibt viele verschiedene Ansätze für die Implementierung von visuellem SLAM, aber alle verwenden die gleiche Gesamtmethode, indem sie Setpoints durch aufeinanderfolgende Kameraframes verfolgen, um ihre 3D-Position zu triangulieren, während gleichzeitig diese Informationen zur Annäherung der Kamerapose verwendet werden. Parallel dazu verwenden SLAM-Systeme kontinuierlich komplexe Algorithmen, um die Differenz zwischen projizierten und tatsächlichen Punkten – den Reprojektionsfehler – zu minimieren.

Visuelle SLAM-Systeme können als direkt oder merkmalsbasiert klassifiziert werden, je nachdem, wie sie die Informationen aus einem empfangenen Bild verwenden. Direct-SLAM-Systeme vergleichen ganze Bilder miteinander, liefern umfassende Informationen über die Umgebung und ermöglichen die Erstellung einer detaillierteren Karte, jedoch auf Kosten von Verarbeitungsaufwand und -geschwindigkeit. Dieser Artikel konzentriert sich auf merkmalsbasierte SLAM-Methoden, die das Bild nach definierten Merkmalen wie Ecken und „Blobs“ durchsuchen und die Schätzung von Standort und Umgebung nur auf diesen Merkmalen basieren. Obwohl merkmalsbasierte SLAM-Methoden erhebliche Mengen wertvoller Informationen aus dem Bild verwerfen, ist der Kompromiss ein vereinfachter Prozess, der rechnerisch einfacher zu implementieren ist.


Abbildung 1:Direktes vs. funktionsbasiertes SLAM. (Quelle:https://vision.in.tum.de/research/vslam/lsdslam)

Der visuelle SLAM-Prozess

Die Hauptschritte bei merkmalsbasiertem SLAM sind die Extraktion eines Satzes von spärlichen Merkmalen aus den Eingabebildern, der Abgleich der Merkmale, die aus verschiedenen Kameraposen erhalten wurden, und das Lösen des SLAM-Problems durch Minimieren des Merkmals-Reprojektionsfehlers (der Unterschied zwischen der verfolgten Position eines Punktes). und wo erwartet wird, dass die Kamerapose geschätzt wird, über alle Punkte).

Diese Schritte werden unter Verwendung eines unten beschriebenen Satzes von Bausteinen ausgeführt, die allen merkmalsbasierten SLAM-Implementierungen gemeinsam sind. Visual SLAM ist ein sich entwickelndes Gebiet, das erhebliche Forschungsarbeiten erfordert, und für jedes Modul wurden verschiedene Algorithmen entwickelt und vorgeschlagen, von denen jeder Vor- und Nachteile hat, abhängig von der genauen Art der SLAM-Implementierung. Die folgende Beschreibung erwähnt eine Teilmenge der aktuellen, beliebtesten Algorithmen.

Die Merkmalsextraktion, Abbildung 2, ist ein Prozess, der nützliche Informationen in einem Bild wie Ecken, Kanten, Kleckse und komplexere Objekte wie Türen und Fenster effizient als kompakten Merkmalsvektor darstellt. Zu den beliebten Merkmalsextraktionsalgorithmen gehören Difference of Gaussian (DoG) und Features from Accelerated Segment Test (FAST9), eine Eckenerkennungsmethode, die sich aufgrund ihrer Recheneffizienz gut für die Echtzeit-Videoverarbeitung eignet.


Abbildung 2:SLAM-Feature-Extraktion. (Quelle:https://medium.com/towards-artificial-intelligence/orient-fast-and-rotated-brief-orb-1da5b2840768)

In der Merkmalsbeschreibung wird die Region um jedes extrahierte Merkmal in einen kompakten Deskriptor umgewandelt, der mit anderen Deskriptoren abgeglichen werden kann. Merkmale können beispielsweise durch ihr Aussehen oder durch die Intensität der Pixel in einem Patch um den Merkmalspunkt herum beschrieben werden. ORB und FREAK sind Beispiele für beliebte Feature-Deskriptor-Algorithmen.

Beim Feature Matching werden extrahierte Features (Deskriptoren) über mehrere Frames hinweg abgeglichen. Merkmale werden über zwei Bilder hinweg abgeglichen, indem alle Merkmale im ersten Bild mit allen Merkmalen im zweiten Bild verglichen werden. Die Hamming-Distanz-Funktion wird häufig beim Merkmalsabgleich verwendet, da sie effizient in Hardware unter Verwendung der XoR- und Bitzählfunktionen an Bitsätzen von Daten wie Vektoren ausgeführt werden kann. Die Hamming-Distanz gibt einen Hinweis darauf, wie viele Bits in zwei Vektoren unterschiedlich sind. Das heißt, je niedriger die Punktzahl, desto näher die Übereinstimmung.

Loop Closure ist der letzte Schritt im SLAM-Prozess und gewährleistet eine konsistente SLAM-Lösung, insbesondere wenn Lokalisierungs- und Mapping-Operationen über einen längeren Zeitraum durchgeführt werden. Loop Closure beobachtet dieselbe Szene durch nicht benachbarte Frames und fügt eine Einschränkung zwischen ihnen hinzu, um die akkumulierte Drift in der Posenschätzung zu reduzieren. Wie bei den anderen visuellen SLAM-Modulen wurde eine Vielzahl von Algorithmen für die Schleifenschließung entwickelt, von denen die beliebtesten die Bündelanpassung, die Kalman-Filterung und die Partikelfilterung sind.

VSLAM-Algorithmen sind ein aktives Forschungsgebiet und die oben genannten sind Beispiele für eine zunehmende Anzahl von Techniken, die in den letzten Jahren entstanden sind. Feature-basierte SLAM-Verfahren sind für eingebettete Lösungen vorzuziehen, da sie schnellere Verarbeitungsgeschwindigkeiten ermöglichen und die Speicherbandbreite effizienter nutzen. Darüber hinaus weisen funktionsbasierte Lösungen eine höhere Robustheit unter einer Reihe von Bedingungen auf, darunter schnelle Helligkeitsänderungen, schwache Lichtverhältnisse, schnelle Kamerabewegungen und Okklusionen.

Die Wahl des spezifischen Algorithmus wird durch die Eigenschaften der jeweiligen Anwendung bestimmt, einschließlich Kartentypen, Sensortypen, erforderliche Genauigkeit und vieles mehr. Viele SLAM-Systeme enthalten eine Kombination von Algorithmen, die am besten für die unterschiedlichsten Szenarien geeignet sind.

Herausforderungen bei der SLAM-Implementierung

Die visuelle SLAM-Verarbeitung ist extrem rechenintensiv und belastet herkömmliche, CPU-basierte Implementierungen stark, was zu übermäßigem Stromverbrauch und niedrigen Bildraten mit nachfolgenden Auswirkungen auf Genauigkeit und Akkulaufzeit führt. Entwickler neuer SLAM-Anwendungen benötigen Lösungen, die ein höheres Maß an Integration und einen geringeren Stromverbrauch bieten. Sie verwenden zunehmend dedizierte Bildverarbeitungseinheiten (VPUs) in ihren Designs. Eine VPU ist eine Art Mikroprozessor mit einer Architektur, die speziell für die Beschleunigung von Bildverarbeitungsaufgaben wie SLAM entwickelt wurde und verwendet werden kann, um die Bildverarbeitungsverarbeitung von der Hauptanwendungs-CPU zu entlasten. VPUs wie CEVAs CEVA-XM6, Abbildung 3, umfassen Funktionen wie einen geringen Stromverbrauch, starke ALUs, leistungsstarke MAC-Fähigkeiten, einen Speicherzugriff mit hohem Durchsatz und dedizierte Bildverarbeitungsanweisungen. Die Geräte unterstützen auch die leistungsstarken Gleitkommafunktionen, die von Bildverarbeitungsanwendungen benötigt werden.


Abbildung 3:Bildverarbeitungseinheit CEVA XM6. (Quelle:CEVA)

Doch selbst bei VPUs muss der Entwickler von visuellem SLAM noch einige Herausforderungen meistern, da das Erstellen von effizientem Code für die verschiedenen SLAM-Module ein nicht triviales Unterfangen ist und es auch schwierig sein kann, die VPU mit dem Hauptprozessor zu verbinden.

Die Erstellung von effizientem Code ist in eingebetteten Anwendungen von entscheidender Bedeutung, bei denen die Ausführungsgeschwindigkeit und der Stromverbrauch optimiert werden müssen. Die Codierung von visuellen SLAM-Modulen ist eine komplexe Aufgabe, die möglicherweise das Abrufen, Speichern und Bearbeiten großer Datenmengen erfordert. Bei der Merkmalsübereinstimmung werden beispielsweise Deskriptoren als 128-Bit-Vektoren im Speicher gespeichert, und um Merkmale über aufeinanderfolgende Rahmen hinweg abzugleichen, müssen typischerweise 200 Merkmale mit 2000 Kandidaten verglichen werden, was zu 400.000 Übereinstimmungsoperationen führt. Die Abgleichsoperation erfordert offensichtlich viel Speicher, aber auch, wenn die Größe der abgetasteten Daten klein ist, kann der hohe Aufwand für das Abrufen und Formatieren der Daten die Effizienz des codierten Algorithmus beeinträchtigen.

Die Bündelanpassung ist ein weiterer Algorithmus, der komplexe lineare Algebra beinhaltet, die die Manipulation großer Matrizen beinhaltet. Es gibt verschiedene Techniken, um die Codierung für diese und andere VSLAM-Module zu optimieren, aber die Implementierung dieser Techniken erfordert ein hohes Maß an visionsspezifischer Codierungsexpertise.

Die Speicherverwaltung ist eine weitere Herausforderung in der Bildverarbeitung. Von einem Bild erfasste Daten werden typischerweise in aufeinanderfolgende Speicherorte geladen, und das Arbeiten mit zufälligen Patches in einem Bild bedeutet, mit Daten umzugehen, die nicht in aufeinanderfolgenden Speicherorten gespeichert sind. Softwareroutinen, die einen Merkmalsabgleich durchführen, müssen Deskriptoren aus nicht aufeinanderfolgenden Speicherorten abrufen, was den Einrichtungsaufwand weiter erhöht.

VSLAM-Entwicklungstools

Da die Markteinführungsgeschwindigkeit in der heutigen Umgebung entscheidend ist, ist es für einen Entwickler nicht immer praktisch, sich die Zeit zu nehmen, um sich die Fähigkeiten und das Wissen anzueignen, die für die Implementierung eines effizienten Bildverarbeitungscodes erforderlich sind. Glücklicherweise gibt es eine Reihe von Tools, die die Beschleunigung kostengünstiger SLAM-Anwendungen erleichtern; Anwendungsentwicklungskits sind verfügbar, die eine Kombination aus Vision-spezifischen Softwarebibliotheken, optimierter Hardware und Integrationstools bieten, damit der Entwickler die Vision-spezifischen Aufgaben einfach von der CPU auf die VPU auslagern kann.

Das CEVA SLAM SDK, Abbildung 4, ist ein führendes Beispiel für ein solches Toolset für die Anwendungsentwicklung.


Abbildung 4:Das CEVA SLAM SDK. (Quelle:CEVA)

Basierend auf der CEVA XM6 DSP- und CEVA NeuPro AI-Prozessorhardware ermöglicht das CEVA SLAM SDK die effiziente Integration von SLAM-Implementierungen in Low-Power-Embedded-Systeme. Das SDK enthält eine Reihe von Bausteinen, darunter Bildverarbeitungsbibliotheken, die einen effizienten Code für die Merkmalserkennung und -anpassung sowie die Bündelanpassung bieten. Es bietet auch Unterstützung für die lineare Algebra, das Lösen linearer Gleichungen, das schnelle Lösen von Gleichungen mit geringer Dichte und die Matrixmanipulation.

Die CEVA XM6-Hardware ist mit innovativen Funktionen für die Bildverarbeitung optimiert, wie dem parallelen Ladebefehl, der das Problem des nicht aufeinanderfolgenden Speicherzugriffs anspricht, und auch einem einzigartigen, dedizierten Befehl zur Ausführung der Hamming-Distanz-Berechnung. Das SDK enthält auch eine detaillierte CPU-Schnittstelle, die es dem Entwickler ermöglicht, die Bildverarbeitungsfunktionalität einfach in die Hauptanwendungs-CPU zu integrieren.

Zur Veranschaulichung der Leistung des SDK als Entwicklungswerkzeug wurde bei einer Referenzimplementierung eines vollständigen SLAM-Tracking-Moduls mit 60 Bildern pro Sekunde ein Stromverbrauch von nur 86 mW gemessen.

Schlussfolgerung

Visual SLAM-Systeme werden in einer Vielzahl von Anwendungen immer beliebter, beispielsweise bei landwirtschaftlichen Feldrobotern und Drohnen. Es gibt eine Reihe alternativer Methoden für die Implementierung von visuellem SLAM, aber mit dem zunehmenden Einsatz in eingebetteten Anwendungen sind die Effizienz der Codierung und der geringe Stromverbrauch kritische Faktoren.

Während es für Entwickler üblich ist, VPUs zu verwenden, um die rechenintensiven Bildverarbeitungsaufgaben von der Haupt-CPU zu entlasten, bleiben erhebliche Herausforderungen bestehen, um effizienten Code zu erstellen und auch die Schnittstelle zwischen VPU und CPU zu verwalten.

Mit der Markteinführungszeit können Entwickler die Produktentwicklung beschleunigen, indem sie die in SLAM-spezifischen Entwicklungstoolkits wie dem CEVA SLAM SDK integrierten Funktionen nutzen.


Eingebettet

  1. Die Rolle der Extrusion in 3D-Druckanwendungen
  2. KI-Anwendungen in der globalen Lieferkette
  3. Alle Anwendungen der Phthalocyaninpigmente
  4. Alle Anwendungen von Basisfarbstoffen
  5. Alle Anwendungen von Pigment Blue
  6. Die Entwicklung moderner Kunststoffe
  7. So wählen Sie einen Controller aus
  8. Die Anwendungen von Industrievibratoren
  9. Industrie 4.0:die Entwicklung einzigartiger Cybersicherheit
  10. Der Einfluss von visuellem Management in der Branche