Häufig gestellte Fragen#

Was sind die Unterschiede zwischen der CMUcam1 und der CMUcam2?#

Einführung#

Die CMUcam2 umfasst die gesamte Funktionalität der CMUcam1 in erweiterter Form und noch viel mehr. Nachfolgend beschreiben wir kurz die neue Funktionalität und die Unterschiede. Vielleicht möchten Sie sich auch die Antwort auf die Frage ansehen, wie Sie entscheiden, ob Sie eine CMUcam1 oder eine CMUcam2 kaufen.

Hardware-Überblick#

Es gibt zwei wichtige Hauptunterschiede in der Hardware: Die CMUcam2 verwendet einen anderen Prozessor als die CMUcam1 und die CMUcam2 enthält einen Frame-Buffer-Chip, während die CMUcam1 dies nicht tut.

Die CMUcam2 verwendet den SX52-Prozessor und die CMUcam1 verwendet den SX28-Prozessor, beide gehören zur SX-Prozessorserie von Ubicom. In beiden Fällen läuft der Prozessor mit 75 MHz, es gibt also keinen Unterschied in der Prozessorgeschwindigkeit oder der Rechenleistung. Die Vorteile des SX52-Prozessors sind, dass er mehr RAM (262 gegenüber 136 Byte), mehr ROM (4096 gegenüber 2048 Wörter) und mehr I/O-Pins hat. Mehr RAM und ROM bedeuteten, dass wir komplexeren Code schreiben konnten, der es uns ermöglichte, mehr Funktionalität in die CMUcam2 zu integrieren. Die größere Anzahl von I/O-Pins bedeutete, dass wir mehr Pins für andere Funktionen übrig hatten – wie mehr Servos, mehr Konfigurationsjumper usw.

Der große Unterschied zwischen den beiden Systemen besteht darin, dass die CMUcam2 den AL422B Frame-Buffer-Chip von AverLogic enthält, während die CMUcam1 dies nicht tut. Dies ermöglicht es der CMUcam2-Hardware, schnell ein einzelnes vollständiges Frame zu erfassen und es im Frame-Buffer-Speicher abzulegen. Dies hat eine Reihe von Vorteilen:

  • Komplexere Verarbeitung. Bei der CMUcam1 musste der Prozessor den Pixeldatenstrom im laufenden Betrieb verarbeiten, während er vom Kameramodul ausgegeben wurde. Dieses Design half, die Komplexität und die Kosten der Systemhardware zu reduzieren. Es begrenzte jedoch die Komplexität der Verarbeitung, da diese in Echtzeit zwischen Pixeln oder zwischen Bildzeilen durchgeführt werden musste. Da der Prozessor der CMUcam2 in seinem eigenen Tempo auf Pixeldaten aus dem Bildpuffer zugreift, kann er komplexere Verarbeitung pro Pixel durchführen.

  • Schnellere Verarbeitung. Die Kehrseite davon, nicht mit dem Pixelstrom des Kameramoduls synchronisiert bleiben zu müssen, ist, dass der Prozessor nicht auf das Kameramodul warten muss, wenn er Pixeldaten benötigt. Die Beseitigung dieser Wartezeit bedeutet, dass der CMUcam2-Prozessor tatsächlich ein Bild schneller verarbeiten kann als die CMUcam1, obwohl der Prozessor nicht leistungsfähiger ist.

  • Mehrere Operationen pro Frame. Da sich das im Bildpuffer gespeicherte Bild nicht ändert, kann die CMUcam2 mehrere Operationen an einem einzigen Frame durchführen. So könnte beispielsweise Bewegung erkannt, Bereichsstatistiken berechnet und mehrere Farben verfolgt werden, alles an einem einzigen Frame.

  • Bessere Frame Dumps. Da die CMUcam1 die übertragenen Frame-Dump-Daten mit dem Datenstrom des Kameramoduls synchronisieren musste, konnte sie pro Kamerabild nur eine Datenspalte senden. Das bedeutete, dass verschiedene Teile des Bildes zu unterschiedlichen Zeitpunkten erfasst wurden, sodass sich schnell bewegende Objekte über CMUcam1-Frame-Dumps hinweg verschmiert wurden. Da die CMUcam2 das Bild aus den festen Daten im Bildpuffer überträgt, ist dies kein Problem mehr.

  • Bessere Handhabung niedrigerer Baudraten. Ein Bildpuffer bedeutet auch, dass das Timing der von der CMUcam2 übertragenen Daten vollständig vom Timing der aus dem Kameramodul gelesenen Daten entkoppelt werden kann. Das bedeutet, dass sich die CMUcam2-Daten aus Frame Dumps und Bitmap-Zeilenmodi nicht ändern, wenn sich die Kommunikations-Baudrate ändert; die CMUcam2 übermittelt dem Host-Prozessor unabhängig von der Baudrate dieselben Frame- oder Bitmap-Daten. Die Anzahl der pro Sekunde verarbeiteten Bilder kann sich jedoch bei langsameren Baudraten weiterhin ändern, da schließlich das Senden aller Daten eines Bildes abgeschlossen sein muss, bevor die folgenden verarbeitet werden können.

  • Bessere Bedienung des Kameramoduls. Damit der Prozessor der CMUcam1 mit dem Datenstrom des Kameramoduls synchronisiert bleiben konnte, musste die Bildrate des Kameramoduls auf 17 fps verlangsamt werden. Der Bildpuffer, den die CMUcam2 verwendet, ermöglicht es uns, das Kameramodul mit voller Bildgeschwindigkeit zu betreiben. Ein Vorteil davon ist, dass die automatische Belichtungs- und Weißabgleichanpassung der Kamera schneller arbeiten kann, da sie pro Bild nur eine einzige Anpassung vornehmen kann und es nun mehr Bilder pro Sekunde gibt. Der zweite Vorteil ist, dass der analoge Schwarzweiß-Videoausgang (der nur funktioniert, wenn das Modul mit voller Bildrate arbeitet) verwendet werden kann, während die CMUcam2 Bilddaten verarbeitet, was bei der CMUcam1 nicht der Fall war.

Funktionsübersicht#

Die CMUcam2 implementiert die gesamte Funktionalität der CMUcam1 und fügt zudem viele neue Funktionen hinzu. Im Folgenden eine Zusammenfassung.

  • Farbverfolgung. Die CMUcam2 implementiert die Farbverfolgung genau wie die CMUcam1. Wie bei der CMUcam1 ist ein optionaler Bitmap-Zeilenmodus implementiert, der eine Bitmap der verfolgten Pixel überträgt. Es gibt auch einige Erweiterungen. Es gibt einen neuen optionalen Zeilenmodus, der Statistiken der verfolgten Pixel für jede Zeile liefert, einschließlich der mittleren, minimalen und maximalen Positionen der verfolgten Pixel. Dies ist für das Linienfolgen sehr nützlich. Es gibt auch einen neuen optionalen Modus, in dem die Interpretation der Verfolgungsgrenzen invertiert werden kann. In diesem Modus werden Pixel außerhalb der Verfolgungsgrenzen als „gut“ betrachtet. Dies ist nützlich, um ein Objekt vor einem homogenen Hintergrund zu verfolgen – denken Sie an Blue-Screen-Spezialeffekte. Es ist auch nützlich, um Kanten zu erkennen, wenn Pixeldifferenzierung (unten beschrieben) aktiviert ist. Die Rauschfilteroption wurde ebenfalls erweitert, um die Anpassung des Filterungsgrades für verrauschte Situationen zu ermöglichen.

  • Bildstatistik. Die CMUcam2 implementiert die Berechnung der Mittelwert- und Variationsstatistik von Bildbereichen genau wie die CMUcam1. Wie bei der CMUcam1 ist ein optionaler Zeilenmodus implementiert, der den Mittelwert jeder Bildzeile überträgt. Es gibt auch einen neuen erweiterten Zeilenmodus, der optional Variationsinformationen zeilenweise enthält.

  • Bewegungserkennung. Völlig neu in der CMUcam2 sind Befehle zur Bewegungserkennung (Frame Differencing). Diese Befehle können verwendet werden, um die CMUcam2 anzuweisen, eine niedrig aufgelöste Version des aktuellen Bildes zu erfassen und diese kontinuierlich mit neuen eingehenden Bildern zu vergleichen. Pakete der CMUcam2 melden, ob sich ein Teil des Bildes um mehr als einen bestimmten Betrag ändert, was möglicherweise auf Bewegung hindeutet. Diese Pakete können den Schwerpunkt und die Ausdehnung der veränderten Bildblöcke beschreiben oder eine Bitmap darüber liefern, welche Bildblöcke sich geändert haben. Dieser Modus kann auch mit Pixeldifferenzierung (unten beschrieben) kombiniert werden, um die Bewegungserkennung robuster gegenüber Beleuchtungsänderungen zu machen.

  • Histogrammbildung. Völlig neu in der CMUcam2 sind Befehle zur Histogrammberechnung. Diese Befehle können verwendet werden, um ein eindimensionales Histogramm eines einzelnen Farbkanals mit einer Auflösung von bis zu 28 Klassen zu erfassen. Histogramme liefern nützliche Informationen, die das Erscheinungsbild eines Bildes zusammenfassen. Mit zusätzlicher Programmierung auf dem Host-Prozessor können diese Informationen dazu verwendet werden, Hindernisse, bestimmte Objekte oder Orte zu erkennen.

  • Bildfensterung. Die CMUcam2 implementiert die Fähigkeit, die Verarbeitung auf einen kleinen Bereich (Unterfenster) des gesamten Bildes zu beschränken, genau wie die CMUcam1. In der CMUcam2 ist diese Funktion sogar noch nützlicher, da sie verwendet werden kann, um Unterfenster eines einzelnen im Bildpuffer gespeicherten Bildes genau zu untersuchen. Außerdem kann die Reduzierung der vertikalen Fenstergröße verwendet werden, um die pro Sekunde verarbeiteten Bilder stark zu erhöhen, indem die Anzahl der von der CMUcam2 zu verarbeitenden Pixel stark reduziert wird.

  • Anpassung der Ausgabepakete. Die CMUcam2 implementiert eine viel flexiblere Paketanpassung als die CMUcam1. Es gibt Befehle, die es dem Benutzer ermöglichen, jedes von jedem Befehl erzeugte Paket so anzupassen, dass nur die für eine bestimmte Anwendung benötigten Werte zurückgegeben werden. Dies kann in vielen Situationen die Menge der an den Host-Prozessor übertragenen und von ihm verarbeiteten Daten stark verringern.

  • Pixeldifferenzierung. Völlig neu in der CMUcam2 ist ein optionaler Pixeldifferenzierungsmodus. Im Pixeldifferenzierungsmodus werden Pixel vorverarbeitet, bevor sie an den Rest des CMUcam2-Codes weitergegeben werden. Dieser Vorverarbeitungsschritt sendet neue Pixelwerte an den Rest des Codes, die die Differenz zwischen dem aktuellen Pixelwert und dem vorherigen sind. Im Grunde filtert dies alles außer den vertikalen Kanten im Bild heraus. Dies ist eine sehr leistungsfähige Operation und kann mit zusätzlicher Programmierung auf dem Host-Prozessor zur Unterstützung der Hinderniserkennung und des Linienfolgens verwendet werden.

  • Down Sampling. Völlig neu in der CMUcam2 ist ein optionaler Down-Sampling-Modus. Im Down-Sampling-Modus reduziert die CMUcam2-Software die Auflösung des Kamerabildes, bevor sie es verarbeitet. Der Vorteil davon ist, dass es viel weniger Pixel zu verarbeiten und zu übertragen gibt. Da es in Software erfolgt, führt Down Sampling nur zu einer sehr geringen Erhöhung der Verarbeitungsgeschwindigkeit. Der große Vorteil liegt in der Reduzierung der übertragenen Datenmenge. Im Falle eines gedumpten Bildframes kann Down Sampling die Datengröße leicht reduzieren und somit die Übertragungszeit um den Faktor 2 oder 4 oder mehr verringern. Ebenso kann bei Verwendung von Bitmap-Zeilenmodi die Größe des Bitmap-Bildes stark reduziert werden, wodurch die Datenmenge verringert wird, die ein Host-Prozessor empfangen und verarbeiten muss.

  • Servosteuerung. Die ursprüngliche CMUcam1 unterstützte nur einen einzelnen Servo, und dieser Servo funktionierte nur bei bestimmten Baudraten und wenn sich die CMUcam1 im Streaming-Modus befand ordnungsgemäß. Die CMUcam2 unterstützt bis zu fünf Servos. Der Servosteuerungscode in der CMUcam2 ist als Hintergrundprozess implementiert, sodass die Servoausgänge immer stabil bleiben und er wie jeder andere Servocontroller verwendet werden kann. Zusätzlich kann die CMUcam2 so konfiguriert werden, dass sie Schwenk- und Neigeservos automatisch steuert. In diesem Modus aktualisiert die CMUcam2 die Servopositionen jedes Mal, wenn sie angewiesen wird, Farbverfolgungsdaten zu berechnen.

  • Energiesparen. Völlig neu in der CMUcam2 sind Energiesparmodi. In manchen Anwendungen muss die CMUcam2 nicht kontinuierlich Bilddaten verarbeiten. In diesen Fällen kann die CMUcam2 angewiesen werden, in eine Vielzahl von Power-Down- (oder Sleep-) Modi zu wechseln. Es finden keine Verfolgungsbefehle oder Servosteuerungen statt, wenn sich die CMUcam2 in einem dieser Modi befindet. Das Senden eines einfachen seriellen Befehls weckt die Kamera in wenigen Millisekunden wieder auf.

Was ist der Unterschied zwischen der Verwendung des OV6620- und des OV7620-Moduls mit der CMUcam2?#

Einführung#

Was die Fähigkeiten betrifft, ist der OV7620-Sensor ein Sensor mit höherer Auflösung (664x492 Roh-Sensorpositionen) als der OV6620-Sensor (356x292 Roh-Sensorpositionen). Aber diese Tatsache hat sehr wenig mit den Problemen zu tun, die sich bei der Überlegung ergeben, welcher dieser Sensoren am besten zu Ihrer Anwendung der CMUcam2 passt. Im Folgenden finden Sie eine Liste von Überlegungen.

Auflösung#

Es ist zwar wahr, dass der OV7620-Sensor ein höher auflösender Sensor als der OV6620 ist, aber aufgrund der festen Speichergröße des Frame-Puffers der CMUcam2 unterstützt die CMUcam2 für den OV7620-Sensor nur eine einzige Auflösung von 160x239. Die CMUcam2 unterstützt für den OV6620-Sensor einen niedrig auflösenden Modus von 88x143 und einen hochauflösenden Modus von 176x255. Wenn man also den OV6620 im hochauflösenden Modus verwendet, kann man tatsächlich einen höher auflösenden Betrieb erreichen als der einzige für den OV7620-Sensor verfügbare Auflösungsmodus.

Bildrate#

Ein weiteres auflösungsbedingtes Problem ist die maximale Bildrate bei der kontinuierlichen Verarbeitung eines Bildstroms. Je niedriger die Auflösung, desto weniger Pixel müssen verarbeitet werden und desto höher ist die erreichbare Bildrate. Obwohl eine Erhöhung der Bildrate durch Änderung der Downsampling-Rate und der virtuellen Fenstergröße erreicht werden kann, hat die tatsächliche Anzahl der vom Sensor ausgegebenen Pixel einen viel größeren Einfluss. Aus diesem Grund kann die CMUcam2 eine viel höhere Bildrate erreichen, wenn der OV6620 in seinem niedrigen Auflösungsmodus betrieben wird, als im einzigen Auflösungsmodus, der für den OV7620 verfügbar ist.

Analoger Videoausgang#

Ein weiterer Unterschied zwischen den beiden Sensoren ist das Format des analogen Videoausgangs der beiden Sensoren. Der OV6620-Sensor gibt im analogen PAL-Format aus, und der OV7620-Sensor gibt im analogen NTSC-Format aus. In beiden Fällen erfolgt die Ausgabe in Schwarz-Weiß.

Es ist wichtig zu beachten, dass bei den meisten Anwendungen der CMUcam2 der analoge Ausgang nicht verwendet wird. In einer typischen Anwendung werden die Ergebnisse der Bildverarbeitung oder die Rohpixel digital über den seriellen Port an den Host-Computer oder Mikrocontroller übertragen, sodass dies kein Problem darstellt. Wenn jedoch Live-Schwarz-Weiß-Video wichtig ist, sollten Sie das Format der analogen Videoausgabe berücksichtigen.

Zusammenfassung#

Unsere Empfehlung ist, dass das OV6620-Modul für fast alle Anwendungen die beste Wahl ist, insbesondere angesichts seiner niedrigeren Kosten und der mit diesem Modul erreichbaren schnelleren Verarbeitungszeit. In den seltenen Anwendungen, in denen ein NTSC-Monochrom-Analogvideoausgang erforderlich ist, sollten Sie das OV7620 in Betracht ziehen.

Gibt es bekannte Probleme mit den aktuellen CMUcam2-Firmware-Versionen?#

Ja. In der Version 1.00 funktionierte der Befehl „RM“ (Raw Mode) nicht korrekt. Die Version 1.01 behebt dieses Problem.

Die Firmware in der CMUcam2 ist aktualisierbar, aber dazu wird ein SX-Key- (oder kompatibles) Programmiergerät benötigt. Die „hex“-Dateien für die ROM-Images sind auf der Seite Downloads verfügbar.