Das Versprechen von Robotern bestand schon immer darin, Menschen von stumpfsinnigen, monotonen oder anderen unerwünschten Aufgaben zu befreien und die Qualität dieser Aufgaben durch hohe Geschwindigkeit und Genauigkeit zu verbessern. Selbstständig arbeitende Haushaltsroboter der ersten Generation verwenden jedoch relativ grobe Techniken zur Erkundung und Navigation in der jeweiligen Umgebung. Zu den elementaren Verfahren zählen unter anderem vom Anwender ausgelegte, aus Infrarotsendern bestehende Sperren, die den Roboter über seine eingebauten Infrarotsensoren daran hindern, eine Treppe hinunter zu fallen oder in ein anderes Zimmer abzuwandern.
Ein eingebauter Erschütterungssensor kann dem Roboter signalisieren, dass er mit einem Objekt zusammengestoßen ist und nicht mehr nach vorne weiterarbeiten sollte. Modernere, lernfähigere Ausführungen merken sich sogar, dass sie diese Ecke nicht mehr aufsuchen sollen. Und während Roboter der ersten Generation in der Fertigungsautomation unermüdlich, schneller und exakter als ihre menschlichen Vorgänger arbeiten, hängt ihr Erfolg davon ab, dass die zu bearbeitenden Teile in einer bestimmten Ausrichtung ankommen und an immer derselben Stelle liegen, was den Herstellungsprozess komplexer macht. Jede Abweichung der Teileposition oder -orientierung resultiert in Fertigungsfehlern.
Menschen nutzen ihre Augen und andere Sinne, um die sie umgebende Welt einzuschätzen und in ihr zu navigieren. Theoretisch sollten Robotersysteme genau das Gleiche können - und hier können Kameramodule, Bildverarbeitungsprozessoren und verschiedene Softwarealgorithmen helfen. Bis vor kurzem hat man solche Technologien nur in komplexen, teuren Systemen gefunden. Aber die Fortschritte digitaler integrierter Schaltkreise in Bezug auf Kosten, Rechenleistung und Stromverbrauch ebnen den Weg für die Verbreitung intelligenter Bilderkennung in den unterschiedlichsten Projekten, und das schließt auch Massenmärkte wie Roboteranwendungen mit ein.
Software-Techniken
Will man Robotersysteme entwickeln, die sich auf ihre Umgebung einstellen, muss man Bilderkennungsalgorithmen auf Rechnern einsetzen, die Daten von den Bildsensoren in verwertbare Informationen über die Umgebung umsetzen können. Zwei weit verbreitete Aufgaben für Roboter liegen darin, externe Objekte und deren Ausrichtung zu erkennen und die Position und Ausrichtung des Roboters zu bestimmen. Viele Roboter sind so konzipiert, dass sie mit einem oder mehreren bestimmten Objekten interagieren. Situationsadaptive Roboter müssen diese Objekte auch in ungewöhnlicher Platzierung und Ausrichtung erkennen.
Kameras liefern einen Datenstrom für Millionen von Pixeln pro Sekunde, was eine enorme Herausforderungen für die Bildverarbeitung aufwirft. Eine Lösung dieses Problems liegt in der Erkennung von aus Pixelgruppen bestehenden Bildteilen wie Ecken, Kanten oder Linien in jedem Video-Einzelbild. Solch eine Transformation von Pixeldaten in Bildmerkmale kann die Datenverarbeitungsanforderungen in dieser Stufe der Bildverarbeitungs-Pipeline um einen Faktor Tausend oder mehr reduzieren. Millionen von Pixeln werden auf Hunderte von Bildmerkmalen reduziert, die ein Roboter dann zur Erkennung von Objekten und ihrer Lage im Raum heranziehen kann
Die Erkennung von Objekten anhand von bestimmten Merkmalen setzt die Akquisition bestimmter Charakteristika von bereits erfassten Bildern eines jeden vorkommenden Objekts aus unterschiedlichen Winkeln und in unterschiedlicher Ausrichtung voraus. Dann kann man mit Hilfe dieser in einer Datenbasis abgespeicherten Bildmerkmale einen Lernalgorithmus für eine Maschine so trainieren, dass sie neue Objekte akkurat erkennen und identifizieren kann. Nachteile dieses Anlernverfahrens für Maschinen sind die Komplexität und die enorme Menge an benötigten Lerndaten.
Der richtige Algorithmus
Einer der bekanntesten Algorithmen für die Objekterkennung ist der Viola-Jones-Algorithmus. Er eignet sich besonders gut für die Erkennung von Gesichtern, kann aber auch für die Identifizierung anderer gängiger Objekte herangezogen werden.
Will man die Ausrichtung eines Objekts über die Bildmerkmale bestimmen, benötigt man einen Algorithmus wie den Statistik-basierten RANSAC. Der zieht eine Untergruppe von Bildmerkmalen zur Modellierung einer möglichen Objektausrichtung heran und bestimmt dann, wie viele andere Merkmale diesem Modell entsprechen. Das Modell mit der größten Anzahl von übereinstimmenden Bildmerkmalen entspricht der korrekt erkannten Objektausrichtung.
Um sich bewegende Objekte zu erkennen, kann man die Merkmalerkennung mit Nachverfolgungs-Algorithmen kombinieren. Sobald eine Gruppe von Bildmerkmalen zur korrekten Identifizierung eines Objekts verwendet worden ist, können Filteralgorithmen wie Kalman oder Kanade-Lucas-Tomasi die Bewegung dieser Charakteristika über einzelne Videobilder hinweg nachverfolgen. Solche Verfahren erweisen sich trotz Änderungen bezüglich Ausrichtung und Abschattung als robust, da sie nur eine Untergruppe der Bildmerkmale nachverfolgen müssen, um erfolgreich zu sein.
Die beschriebenen Algorithmen reichen für stationäre Roboter aus. Für sich bewegende Roboter werden zusätzliche Algorithmen benötigt, wenn man sie sicher durch ihre Umgebung manövrieren will. Simultaneous localization and mapping ist eine Algorithmus-Kategorie, mit deren Hilfe ein Roboter eine Karte seiner Umgebung erstellen und seinen eigenen Standort nachverfolgen kann. Solche Algorithmen setzen Verfahren für eine dreidimensionale Kartografierung der Umgebung voraus. Für das räumliche Sehen gibt es viele Sensorlösungen. Ein weit verbreitetes Konzept ist die Verwendung zweier 2D-Kameras, die als "Stereokamera" konfiguriert werden und ähnlich wie der Gesichtssinn des Menschen arbeiten. Stereokameras stützen sich auf epipolare Geometrie, um für jeden Punkt ein einer Szenerie eine 3D-Position abzuleiten. Dafür werden Projektionen von zwei 2D-Bildern herangezogen.
Prozessoptionen
Will man das "Sehvermögen" eines Roboters effizient implementieren, tut man gut daran, die erforderlichen Verarbeitungsschritte in einzelne Stufe aufzubrechen. Die von den besprochenen Algorithmen beherrschte Verarbeitung lässt sich in vier Stufen aufteilen. Was die rechnerische Verarbeitung angeht, weist jede Stufe ihre eigenen Charakteristika und Randbedingungen auf. Es gibt eine Vielzahl von Bildverarbeitungsprozessen und verschiedene Arten eignen sich durchaus besser für die jeweilige, vom benutzten Algorithmus abhängige Verarbeitungsstufe hinsichtlich Rechenleistung, Stromaufnahme, Kosten, Funktionsflexibilität und anderer Faktoren. Ein Bildverarbeitungschip besteht unter Umständen aus mehreren Prozessorkernen unterschiedlicher Ausprägung, da es ja gilt, die einzigartigen Anforderungen mehrerer Verarbeitungsstufen zu erfüllen.
Die erste Verarbeitungsstufe umfasst Algorithmen, die die Vorverarbeitungsfunktionen übernehmen:
Größenanpassung
Farbraum-Umsetzung
Bilddrehung und -invertierung
De-Interlacing
Farbkorrektur und Gamut-Mapping
Gammakorrektur und
Kontrastverbesserung.
In dieser Stufe wird jedes Pixel eines jeden Einzelbildes verarbeitet. Die Anzahl der Operationen pro Sekunde ist daher enorm. Für das Stereosehen müssen zwei Bildebenen gleichzeitig verarbeitet werden. Für diese Art von Operationen kommt unter anderem ein dedizierter Hardwareblock in Frage, der als IPU (Image processing unit) bezeichnet wird.
Die zweite Verarbeitungsstufe übernimmt die Erkennung von Bildmerkmalen. Hier werden Ecken, Kanten und andere wichtige Bildregionen extrahiert. Dieser Verarbeitungsschritt basiert immer noch auf einer Auswertung einzelner Pixel und eignet sich daher gut für hoch parallele Architekturen, die in diesem Fall komplexere mathematische Funktionen wie Ableitungen erster und zweiter Ordnung beherrschen müssen.
Gebräuchliche Prozessoroptionen sind DSPs, FPGAs, GPUs, IPUs und APUs. DSPs und FPGAs sind hoch flexibel und deshalb besonders attraktiv, wenn Applikationen noch im Fluss und nicht ausgereift sind. Diese Flexibilität kann aber gegenüber anderen Konzepten Kompromisse in Bezug auf Stromaufnahme, Rechenleistung und Kosten bringen.
Am anderen Ende des Flexibilität-versus-Fokus-Spektrums positionieren sich die speziell für Bilderkennungsaufgaben entwickelten IPU oder APU mit dediziertem Funktionsumfang. Sie kann mehrere Dutzend Milliarden Operationen pro Sekunde abarbeiten, ist aber durch ihre Anwendungsoptimierung kein Kandidat für einen weiter gesteckten Funktionsumfang. Zwischen den Extremen liegt die GPU. Diese findet man seit langem in Computern, neuerdings aber auch in Applikationsprozessoren für Smartphones, Tablets und andere hochvolumige Applikationen.
Fließkommaberechnungen wie die Methode der kleinsten Quadrate in optischen Algorithmen, Deskriptor-Berechnungen in SURF (Speeded up robust features) und "Point Cloud Processing" eignen sich sehr gut für parallele GPU-Architekturen. Solche Algorithmen können alternativ auf SIMD Vector Processing Engines wie ARMs NEON oder dem AltiVec-Funktionsblock in Power Architecture-CPUs laufen.
In der dritten Bildverarbeitungsstufe erkennt und klassifiziert das System Objekte anhand von so genannten Feature Maps (Bildmerkmalkarten). Im Gegensatz zur Pixel-basierten Verarbeitung der vorangehenden Stufen sind diese Algorithmen zur Objekterkennung in ihrer Struktur und ihren Datenzugriffsmodi hoch nicht-linear. Aber immer noch braucht man Rechenleistung pur, um viele unterschiedliche Bildmerkmale mit Hilfe einer umfangreichen Klassifizierungs-Datenbasis auszuwerten.
Solche Anforderungen sind geradezu ideal für konventionelle Single- und Multi-Core-Prozessoren. Dieses Selektionskriterium lässt sich gleichermaßen auf die vierte Stufe der Bildverarbeitung anwenden, die erkannte Objekte über viele Einzelbilder hinweg verfolgt, ein Modell der Umgebung implementiert und bewertet, ob verschiedene Situationen entsprechende Reaktionen auslösen sollen. Entwicklungsumgebungen, Infrastruktur und Bibliotheken wie OpenCL, OpenCV und MATLAB können die Entwicklung und den Test von Software vereinfachen und beschleunigen. Sie ermöglichen die Evaluation von verschiedenen Algorithmusabschnitten auf unterschiedlichen Prozessoroptionen, einschließlich der Möglichkeit, Teilaufgaben unterschiedlichen Prozessorkernen zuzuweisen. Wegen der datenintensiven Natur der Bildverarbeitung sollte man bei der Evaluation von Prozessoren nicht nur die Anzahl der Rechenkerne und deren Taktfrequenz bewerten, sondern auch die Funktionen für das Datenhandling.