doppel-m ...das Universum und der Rest.

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern
Start Künstliche Intelligenz + Roboter Bilderkennung Optisch-reaktive Hindernisvermeidung

Optisch-reaktive Hindernisvermeidung

E-Mail Drucken

Wie kann ein autonomer mobiler Roboter in einer unstrukturierten Umgebung Hindernisse erkennen und Kollisionen vermeiden? Der Roboter soll mit nur einer Kamera ausgerüstet sein (kein Stereosehen). Von Rodney A. Brooks und anderen Forschern wurde hierzu ein rein reaktives Konzept entwickelt und erprobt. Reaktiv bedeutet hier, dass die einzelnen Bilder der Umgebung direkt in die Robotersteuerung umgesetzt werden und dass praktisch keine Hindernispositionen gespeichert werden. Motiviert werden diese Arbeiten nicht zuletzt durch die Marsforschung. Getestet wurde das Konzept mit dem kleinen Pebbles III Robot von IS Robotics Inc. Er wurde von zwei Raupenketten angetrieben, und von einem Mikrocontroller Motorola 68332 gesteuert. Das optische System bestand aus einer Kamera Chinon 3 mm, etwa 25 cm über dem Boden, und einem digitalen Signalprozessor C30 von Texas Instruments. Alle Berechnungen wurden vom Roboter durchgeführt anhand der Bilder aus 64 x 64 Pixeln.


Diese knappe Einführung basiert auf dem Artikel Visually-Guided Obstacle Avoidance in Unstructured Environments; in Proceedings of IROS '97, Grenoble, France, September 1997, pp. 373-379; von L. M. Lorigo, R. A. Brooks und W. E. L. Grimson. Der Artikel kann z. B. von der Website von Rodney A. Brooks (http://www.ai.mit.edu/people/brooks/) unter "Publications" heruntergeladen werden.

Hindernisse erkennen

Steuerungsfluss der optisch-reaktiven HindernissvermeidungVerschiedene Softwaremodule errechnen mit je einer anderen Methode die Hindernisgrenzen im aktuellen Bild der Kamera. Jedes der Module nutzt eine andere Bilddarstellung, beispielsweise RGB (rot, grün, blau), HSV (Hue [Farbton], Saturation [Sättigung], Value [Helligkeitswert]) sowie Kantendarstellung (Werte der Helligkeitsänderungen von Pixel zu Pixel horizontal und vertikal, große Werte entsprechen Kanten im Bild). Je nach Umgebungsbedingungen sind die Module unterschiedlich gut geeignet, Hindernisse zu erkenne. Es müssen nicht unbedingt alle Kanäle ausgewertet werden (z. B. nur R und G im RGB-Modul).

Die Hindernisgrenzen im aktuellen Bild werden von jedem Modul separat ermittelt. Dazu werden 20 Pixel breite Streifen des Bildes (64x64 Pixel) ausgewertet (siehe Grafik). Die Streifen sind um je einen Pixel versetzt, so dass das ganze Bild überdeckt wird. Auf jedem dieser Streifen wird ein 20 Pixel breites und 10 Pixel hohes Fenster pixelweise von unten nach oben bewegt. Die Höhe des Hindernisses (y-Koordinate der "Unterkante" des Hindernisses) wird für jeden Streifen ermittelt. Die Höhen werden in einem eindimensionalen Array gespeichert, indiziert durch die x-Koordinate der Streifenmitten. Dieses Array liefert die Hindernisgrenzen des aktuellen Bildes für das jeweilige Modul. Je höher ein Hindernis im Bild ist, desto weiter weg ist es im Allgemeinen.

Beispiel: Kamerabild, 64x64 PixelBeispiel: Kamerabild, 64x64 Pixel, mit 20 Pixel breitem Streifen und darin zwei Fenster, je 30x20 Pixel. Die Histogramme dieser Fenster sind in den folgenden Grafiken dargestellt.

Histogramm des Rotanteils im unteren FensterHistogramm des Rotanteils im unteren Fenster. Für jeden Intensitätswert der Farbe Rot, gibt die Höhe des jeweiligen weißen Balkens die Zahl der Pixel im Fenster mit diesem Intensitätswert an. In diesem Histogramm gibt es mehr Pixel mit hoher Rotintensität als im folgenden.

Histogramm des Rotanteils im oberen FensterHistogramm des Rotanteils im oberen Fenster. Hier überwiegen die dunklen Rottöne.

Die Robotersteuerung geht davon aus, dass der Boden direkt vor dem Roboter hindernisfrei ist und das dieser Bereich im Bild unten abgebildet ist. Das Histogramm des oberen Fensters weicht stark vom Histogramm des untersten Fensters ab. Dies wird als Hindernis interpretiert. Die Differenz der Histogramme lässt sich definieren als

Definition: Differenz der Histogramme

Dabei ist H0(i) die Zahl der Pixel mit der Intensität i im Bezugs-Fenster (unterstes Fenster). Ha(i) der entsprechende Wert für das aktuelle Fenster.


Zur Kombination der drei Module können die Werte der drei Hindernis-Arrays beispielsweise punktweise gemittelt werden.

Motorsteuerung

Vor einem entfernten Hindernis muss der Roboter seinen Kurs wenig ändern, vor einem nahen Hindernis dagegen stark. Daher ist der gewünschte Drehwinkel des Roboters proportional zur Differenz zwischen der durchschnittlichen Höhe der Hindernisse auf der linken und rechten Bildhälfte. Der errechnete Winkel kann positiv und negativ sein entsprechend der Ausweichrichtung. Die Geschwindigkeit des Roboters sollte bei nahen Hindernissen klein sein, bei entfernten groß. Sie kann daher proportional zur durchschnittlichen Höhe der Hindernisse im Bild sein.

Vor sehr nahen Hindernissen kann sich der Roboter festfahren. Falls die Hindernisse im Bild daher zu tief sind, sollte er auf der Stelle drehen. Sobald keine sehr nahen Hindernisse mehr im Bild sind, kann der Roboter seine Fahrt fortsetzen. Zusätzlich könnten Entfernungs- oder Berührungs-Sensoren verwendet werden.

Link

Website von Rodney A. Brooks (inklusive Veröffentlichungen)
http://www.ai.mit.edu/people/brooks/

Zuletzt aktualisiert am Donnerstag, 17. Dezember 2009 um 20:54 Uhr