Die eingebaute Onboard-Kamera CMUCAM, in zwei Modellen
Für jemanden, der beginnt, einen persönlichen programmierbaren Roboter zu bauen, gehört eine Kamera sicherlich nicht zu den ersten Sensoren, die getestet werden, allein schon wegen der Kosten und der Komplexität. Da das Sehen für uns Menschen jedoch eine so wichtige Rolle bei der Wahrnehmung der Welt spielt, wenden sich viele sehr bald der visuellen Information zu..
Deshalb bietet die bekannte Carnegie Mellon University seit einigen Jahren speziell für kleine Roboter eine generische Onboard-Kamera namens CMUCAM an. Dieses Modell wird von mehreren Elektronikherstellern auf der Grundlage der von der Universität herausgegebenen Spezifikationen implementiert. Auf dieser Website werden zwei CMUCAM-Modelle angeboten :
- Die NXTCAM von Mindsensors für den Lego Mindstorms NXT Bausatz
- Die Vision Sensor Pixy CMUCAM 5
Die CMUCAM ist keine eingebaute Kamera wie jene, die wir von Computern oder Mobiltelefonen her kennen. Sie ist zugleich etwas mehr und etwas weniger.
CMUCAM: In erster Linie ein optisches System
Die CMUCAM ist ein System bestehend aus einer Kamera und einem Mikroprozessor, die beide integriert sind. Es handelt sich um ein Low-End-Bildanalysegerät, das über eine serielle Schnittstelle mit dem PC bzw. dem Roboter verbunden werden kann. Eingebettet in den Mikroprozessor, bietet die CMUCAM die Grundfunktionen der Bildanalyse.
Das System wurde speziell für persönliche Roboteranwendungen (für die Freizeit oder den Unterricht) entwickelt, mit Bedacht auf Einfachheit und geringen Kostenaufwand. Die Kapazitäten der CMUCAM sind bewusst gering, da sie für den Einbau in kleine Roboter konzipiert ist, bei denen Energie und Verarbeitungskapazität sowie Speicher begrenzt sind.
Bisher werden 3 Kameragenerationen angeboten. Auf einer eigenen Seite des Robotikinstituts der Carnegie Mellon Universität werden die jeweiligen Spezifikationen vorgestellt: http://www.cs.cmu.edu/~cmucam
Wie funktioniert die CMUCAM ?
Mit der CMUCAM lassen sich in erster Linie benutzerdefinierte Farben verfolgen. Die Farben werden automatisch vom eingebauten Prozessor erkannt, der dem Roboter Rohdaten liefert, darunter die Anzahl und Koordinaten der Farbbereiche (Blobs genannt) und die erkannte Farbe.
Mit Hilfe dieser Informationen kann der Roboter so programmiert werden, dass er auf diese Farbbereiche reagiert: Verfolgung eines Objekts, einer Linie usw.
NXTCAM
Präsentation
Hier wird nun ein konkretes Beispiel vorgestellt: die NXTCAM der Firma Mindsensors, die auch auf dieser Website erhältlich ist. Das Folgende gilt nun speziell für diese Kamera, aber die meisten Anwendungen sind für die anderen CMUCAM-Implementierungen identisch. |
Folgende zwei Schritte werden mit der CMUCAM durchgeführt :
- die Parametrierung der Farbkarte (Colormap)
- die Anwendung auf dem Roboter (oder Tracking)
Eigenschaften
LDie NXTCAM weist folgende technische Daten auf:
- Das Sichtfeld beträgt etwa 43°
- Die NXTCAM hat eine Kapazität von rund 30 Frames pro Sekunde
- USB- und RJ12-Stecker für den PC und den Roboter
- Stromverbrauch: 42 mA (maximal) und 4,7 V
Die Kamera übermittelt folgende Informationen in Echtzeit: Anzahl der Objekte (max. 8), Farbe der Objekte, Form der Objekte (schachtel- oder linienförmig). Und all das in Echtzeit wie alle NTX-Sensoren.
Installation
Bevor die NXTCAM an den PC angeschlossen werden kann, müssen die USB-Treiber für die NXTCAM installiert werden. Die Treiber für PC und MAC sind unter folgender Adresse verfügbar: : http://www.mindsensors.com/index.php?module=documents&JAS_DocumentManager_op=viewDocument&JAS_Document_id=44
Für die Installation auf einem PC mit Windows XP ist zunächst die entsprechende Zip-Datei herunterzuladen (siehe Link oben) und zu entpacken. Danach ist die NXTCAM mit einem USB-Kabel an den Computer anzuschließen, der dann das neue Gerät erkennt. In dem sich öffnenden Fenster ist anzugeben, wo die Datei, die soeben entpackt wurde, abgespeichert wurde. Dieser Vorgang ist ein zweites Mal auf dieselbe Weise zu wiederholen (da ja zwei Treiber installiert werden sollen). Die Installation auf einem PC, auf dem Windows Vista installiert ist, bzw. auf einem Macintosh-Computer wird auf der Website von Mindsensors erklärt (http://www.mindsensors.com).
Die Spezifikationen der CMUCAM sehen eine serielle Schnittstelle als Anschluss vor. Die Implementierung von Mindsensors verfügt jedoch über einen USB-Anschluss. Deshalb wird ein zweiter Treiber installiert, als Verbindung zwischen dem seriellen Port und dem USB-Anschluss.
Anschließen der CMUCAM an den PC
Bevor die CMUCAM auf dem Roboter eingesetzt werden kann, müssen zunächst in einem ersten Schritt die Farben, die verfolgt werden sollen, auf der CMUCAM parametriert werden. Hierfür ist das Open Source-Tool NXTCamView herunterzuladen, das unter folgender Adresse erhältlich ist: http://nxtcamview.sourceforge.net
In diesem Optionen-Fenster von NXTCamView können die Einstellungen für die Verbindung zur NXTCam festgelegt werden. Zunächst die Verbindung zur NXTCam. Wählen Sie im der Dropdown-Menü den für die NXTCam vorgesehenen COM-Anschluss. Klicken Sie auf die Schaltfläche „Test“. Ist die Verbindung gültig, erscheint der Satz „Success: NXTCam responded" in Grün unterhalb der Test-Schaltfläche. Andernfalls vergewissern Sie sich, dass das USB-Kabel richtig an die NXTCam und den PC angeschlossen ist. Klicken Sie auf „OK“.
Es erscheint das NXTCamView-Arbeitsfenster. Auf die Schaltfläche „Connect“ klicken, das rote Feld unten links wird grün.
Nun ist die NXTCam einsatzbereit. Als nächsten Schritt gilt es, die NXTCAM zu parametrieren, um die Farben, die sie verfolgen soll, zu definieren (man spricht von „Tracking“).
Parametrieren der Farbkarte (Colormap)
Der erste Schritt besteht darin, Bildaufnahmen durchzuführen und mithilfe dieser Bilder die Farben festzulegen, die in der Folge verfolgt (getrackt) werden sollen. Hierfür müssen die Mindest- und Höchstwerte der Farbintensität jeder der drei Farben Rot, Grün und Blau festgelegt werden. Die festgelegten Werte definieren die sogenannte Farbkarte (engl. Colormap).
Die Schwierigkeit liegt darin, dass die Farbe eines Objekts allein schon aufgrund der Platzierung der Kamera sowie der örtlichen Lichtgegebenheiten im Allgemeinen nicht einheitlich ist. Die von der NXTCam empfangene Bildqualität ist nicht sehr gut und das Bild ist ein wenig unscharf. Das liegt daran, dass die Kamera keine sehr hohe Auflösung hat. Man kann versuchen, den Fokus manuell einzustellen (durch Drehen am Kamerafokus) oder die Parameter in NXTCamView (AutoWhiteBalance oder AutoAdjust Parameter) anzupassen.
Zurück zur Parametereinstellung für die zu verfolgenden Farben. Hierfür wird folgendermaßen vorgegangen:
- Erstellen Sie ein Foto mittels der Schaltfläche „Capture“ in NXTCamView.
- Klicken Sie auf dem erstellten Bild auf ein Objekt in der gewünschten Farbe. Dadurch werden die Cursor der drei Farben im Fenster „Colors“ automatisch positioniert und die entsprechenden Farbbereiche im Bild gelb blinkend markiert.
Farbebezeichnung mit NXTCAMView - Passen Sie die Farben Rot, Grün und Blau mit dem Cursor im Fenster „Colors“ an, um die unteren und oberen Begrenzungen für jede der drei Farben festzulegen. Beim Ändern der Farbparametrierung wird im Fenster „Capture“ eine mehr oder minder große Fläche hervorgehoben. Das Programm zeigt an, welche Flächen auf dem Foto dem von Ihnen gewählten Farbton entsprechen. Sobald der Gegenstand, der verfolgt werden soll, zur Gänze markiert ist, kann davon ausgegangen werden, dass die Farben korrekt parametriert wurden.
- Auf diese Weise können Sie bis zu 8 Farben festlegen, indem Sie die Boxen 1 bis 8 im Fenster „Colors“ anklicken und für jede einzelne Farbe die Parametrierung, wie zuvor beschrieben, durchführen.
- Laden Sie die Parametrierung auf den in der NXTCAM eingebauten Prozessor herunter. Dazu die Schaltfläche „Upload“ im Fenster „Colors“ anklicken.
- Der letzte Schritt ist optional. Es geht darum, die vorgenommene Parametrierung anhand eines Test-Trackings mit NXTCamView zu testen. Dieser Schritt wird im nächsten Absatz ausführlich beschrieben.
Demo-Videos im Flash-Format sind unter folgendem Link verfügbar: http://nxtcamview.sourceforge.net/DemoScreenCam.htm
Tracking
Beim „Tracking“ geht es darum, die Position einer Farbe auf einem bestimmten Bild herauszufinden. Dabei werden alle Bereiche mit ein und derselben Farbe in einem Bild umrahmt. Das macht die CMUCAM automatisch, indem sie die Position (den Frame) jedes identifizierten Bereichs (maximal 8 Farbbereiche pro Bild) übermittelt.
Es gibt mehrere Bildverarbeitungsalgorithmen für das Tracking. Die CMUCAM 2 bietet einen einfachen Algorithmus, bei dem für jeden erstellten Frame nur eine einzige Verarbeitung erforderlich ist. Der Algorithmus funktioniert folgendermaßen: Beginnend oben links beim erstellten Frame, untersucht die CMUCAM Zeile für Zeile jedes einzelne Pixel. Fällt der Wert eines Pixels in den zuvor festgelegten Farbbereich, so wird er als getrackt markiert. Es wird auch geprüft, ob das Pixel innerhalb des getrackten Bereichs das oberste, das unterste, das linkeste oder das rechteste ist. Ist dies der Fall, wird der Tracking-Bereich ausgeweitet. Der Algorithmus speichert die Summe der horizontalen sowie der vertikalen Pixeldaten im getrackten Bereich. Diese beiden Summen können in der Folge zur Schwerpunktbestimmung des getrackten Bereichs eingesetzt werden, indem diese beiden Zahlen durch die Anzahl der getrackten Pixel dividiert werden. Dieser Schwerpunkt wird Zentroïd gennant .
Zurück zu Schritt 6 des vorhergehenden Absatzes. Ein Tracking-Fenster ist in NXTCamView verfügbar (sollte es nicht angezeigt werden, klicken Sie auf die Tracking-Schaltfläche). In diesem Fenster kann ein Test-Tracking durchgeführt werden, während die NXTCam mit dem PC verbunden ist. Wurden die Farben zuvor korrekt auf die NXTCam heruntergeladen, werden diese nun im Bild unten rechts im Tracking-Fenster sichtbar. Zum Starten der Bildaufnahme durch die NXTCam bitte die Schaltfläche „Start“ anklicken. Daraufhin erscheint im weißen Bereich des Tracking-Fensters eine grafische Darstellung der von der NXTCam durchgeführten Schritte in Echtzeit.
NXTCamView stellt nämlich die Objekte in Form von Kästchen für die entsprechende Farbe in Kombination mit den dazugehörigen Daten dar.
Folgende Daten werden zu jedem Kästchen angezeigt:
- C = Nummer der Farbe, wenn mehr als eine Farbe hochgeladen wurde
- X = aAbszisse des Punktes oben links vom dargestellten Kästchen (der Plan nimmt im Fenster oben links seinen Ursprung)
- Y = Ordinate desselben Punkts
- W = Kästchenbreite
- H = Kästchenhöhe
- A = vom Kästchen belegter Bereich (Blob)
Soweit ein erster Überblick darüber, wie die CMUCAM funktioniert. Sie liefert Daten zu den Farbbereichen, die in ihrem Sichtfeld parametriert werden. Nun kann die NXTCam auf dem Roboter montiert und wie jeder andere Sensor genutzt werden.
Installation auf dem Roboter
Die NXTCam wird folgendermaßen auf dem Lego Mindstorms NXT Roboter installiert. Zunächst wird die Kamera auf dem Roboter befestigt und mit einem im Set enthaltenen RJ12-Verbindungskabel (ähnlich einem Telefonkabel) an den intelligenten Lego Mindstorms NXT Stein angeschlossen.
LÜber diese Verbindung wird die NXTCAM mit Strom versorgt und die Informationen werden zum Mikroprozessor des intelligenten Lego Mindstorms NXT Steins geleitet (bei Stromversorgung leuchtet eine gelbe Diode auf der Rückseite der NXTCAM).
Programmierung mit NXT-G : Importieren des Programmiersteins
Zur Bedienung der Kamera ist der programmierbare Stein notwendig.
Der Quellcode für den Stein ist auf der Mindsensors-Website unter folgendem Link abrufbar: : http://www.mindsensors.com/index.php?module=documents&JAS_DocumentManager_op=viewDocument&JAS_Document_id=46
Die Installation ist sehr einfach und muss nur ein einziges Mal durchgeführt werden:
- Den zip-File (komprimierte Datei) herunterladen und auf dem PC speichern (wo, spielt keine Rolle)
- Die zip-Datei entpacken
- In der NXT-G Umgebung im Menü „Tools“ auf „Block Import and Export Wizard“ („Assistent für den Import und Export von Blöcken“) klicken »
- Im sich öffnenden Fenster auf die Schaltfläche „Browse“ („Durchsuchen“) klicken und den in Schritt 2 erstellten Ordner auswählen
- Den Block, der installiert werden soll, auswählen
- Anhand des Dropdown-Menüs wählen, in welcher Advanced Palette der Block hinzugefügt werden soll
- Auf „Importieren“ klicken
Programmierbeispiel für die NXTCAM
Da nun alle Voraussetzungen zum Programmieren geschaffen wurden, stellen wir hier eine sehr einfache Programmierung vor.
Andere, komplexere Programmierbeispiele sind unter folgender Adresse verfügbar : http://nxtcamview.wiki.sourceforge.net/Projects
Die Installation ist sehr einfach und muss nur ein einziges Mal durchgeführt werden:
Mithilfe dieses Programm kann die Anzahl der getrackten Objekte auf dem Display des intelligenten Lego Mindstorms NXT Steins angezeigt werden.
Der NXTCAM-Block kommt hierfür zweimal zum Einsatz:
- Einmal mit der Funktion „Enable Tracking“, wodurch die Versorgung der NXTCAM durch den intelligenten Stein sichergestellt wird.
- Ein zweites Mal mit der Funktion „Get First Object“, wodurch das erste von der NXTCAM geortete Objekt übermittelt wird, das einer der parametrierten Farben aus der Farbkarte entspricht.
Es gibt noch weitere NXTCAM-Funktionen, mit denen Objekte nach Größe oder Farbe eingeteilt oder der x-te Gegenstand der Liste abgerufen werden kann (zur Erinnerung: Die NXTCAM kann maximal 8 Objekte auf einmal tracken). Es steht auch eine Online-Hilfe mit einer Beschreibung des Blocks zur Verfügung.
PHinweis: Es kann vorkommen, dass auf dem NXTCAM-Stein „No device“ angezeigt wird. Lassen Sie sich davon nicht beirren; im Allgemeinen kann das Programm NXT-G trotzdem auf den Roboter heruntergeladen werden und funktioniert. Vergessen Sie nicht, die Nummer des Ports, an den die NXTCAM angeschlossen ist, zu parametrieren (wie alle anderen Sensoren auch). Die Adressparameter müssen im Normalfall nicht geändert werden.
Tipps
Hier sind nun einige Tipps und Tricks für einen erfolgreichen Einsatz der CMUCAM:
- Es sollte möglichst vermieden werden, dass sich die Spektren der ausgewählten Farben überschneiden, da das die Arbeit der Kamera deutlich erschwert.
- Im Online-Tracking-Modus wird empfohlen, die Anzahl der Farben auf 1 zu beschränken.
- Die CMUCAM ist für den Einsatz in einer mit weißem Licht beleuchteten Umgebung konzipiert (Glühlampen). Ist das Bild ein wenig rötlich, hängt das damit zusammen, dass eine zu starke Infrarotquelle vorhanden ist, die entweder reduziert oder entfernt werden sollte. Optische Infrarotfilter sind auf der Mindsensors-Website erhältlich. Solche Filter sind dann nötig, wenn die CMUCAM im Außenbereich zum Einsatz kommt (wegen der Infrarotstrahlen des Sonnenlichts).
- Je stärker die Farbkontraste, desto besser die Wahrnehmung der CMUCAM. Nehmen wir beispielsweise eine rote Kugel vor einem weißem Hintergrund. Generell erzielt man in Räumen mit gleichmäßiger Beleuchtung die besten Ergebnisse. Durch diese beiden Parameter kann die Leistung der NXTCam in einer natürlichen Umgebung möglicherweise eingeschränkt sein. Nichtsdestoweniger ist die NXTCam optimal, um sich mit dem Einsatz optischer Sensoren in der Robotik vertraut zu machen.
Generation Robots (http://www.generationrobots.de)
Jegliche Verwendung oder Vervielfältigung bedarf der vorherigen ausdrücklichen Genehmigung.