Guten Abend!

Ich möchte einen Roboter, der mit einer CMUCam 2 ausgestattet ist, in die Lage versetzen, dass er einen kleinen roten Zylinder, der auf dem Boden steht, erkennen und auf diesen Zylinder zufahren kann.

Dabei tritt das Problem auf, dass die Farbe des Zylinder aufgrund wechselnder Lichtverhältnisse nicht zuverlässig erkannt werden kann.

Folgende Lösungsmöglichkeiten habe ich Erwägung gezogen:

- Man verwendet anstatt des RGB-Farbraums den YCrCb-Farbraum (dieser soll nach Angaben des Hersteller weniger anfällig für wechselnde Lichtverhältnisse sein).
- Man nutzt die in der CMUCam implementierten Funktionen White-Balance und Auto-Gain, die vom Hersteller ebenfalls empfohlen werden.
- Man lackiert den Zylinder im oberen Bereich zusätzlich mit einer anderen Farbe. Auf diese Weise könnte man den Befehl "TC" zur Farbverfolgung auf beide Farben anwenden, im Gegenzug aber für die beiden Farben tolerantere Parameter angeben.
- Man verwendet den Line-Mode-Befehl und versucht auf einem seperaten Board eine Formerkennung zu durchzuführen.

Nach reichlicher Überlegung zu diesem Thema, gelange ich aber immer stärker zu der Ansicht, dass eine Farbverfolgung aus physikalischen Gründen nur unter extrem homogenen Bedingungen möglich ist. Etwa dadurch dass man alle wichtigen Parameter auf eine bestimmte Räumlichkeit mit einer ganz bestimmten Belechtung anpasst.

Daher muss man hier vielleicht einen völlig anderen Weg einschlagen, indem man einen Leuchtkörper (z.B. eine LED) auf dem Zylinder anbringt und die Kamera anweist, diesen Leuchtkörper zu verfolgen. Dabei gehe ich davon aus, dass sich die Farbe eines Leuchtköpers nur geringfügig beim Wechsel der sonstigen Lichtverhältnisse ändert. Eine weitere Möglichkeit wäre, vor der Kamera einen Strahler anzubringen, der das Sichtfeld der Kamera ausleuchtet und dadurch eine möglichst homogene Gesamtbeleuchtung gewährleistet.

Es wäre nett, das ein oder andere Feedback zu bekommen.

Basti