Domande frequenti#

Quali sono le differenze tra la CMUcam1 e la CMUcam2?#

Introduzione#

La CMUcam2 include tutte le funzionalità della CMUcam1 in forma migliorata e molto di più. Di seguito descriviamo brevemente le nuove funzionalità e le differenze. Potresti anche voler guardare la risposta alla domanda su come decidere se acquistare una CMUcam1 o una CMUcam2.

Panoramica dell’hardware#

Ci sono due principali differenze hardware importanti, la CMUcam2 utilizza un processore diverso rispetto alla CMUcam1 e la CMUcam2 incorpora un chip frame buffer mentre la CMUcam1 no.

La CMUcam2 utilizza il processore SX52 e la CMUcam1 utilizza il processore SX28, entrambi provenienti dalla serie di processori SX di Ubicom. In entrambi i casi il processore funziona a 75 MHz, quindi non c’è differenza nella velocità del processore o nella potenza di calcolo. I vantaggi del processore SX52 sono che ha più RAM (262 contro 136 byte), più ROM (4096 contro 2048 parole) e più pin di I/O. Più RAM e ROM significavano che potevamo scrivere codice più complesso, il che ci ha permesso di incorporare più funzionalità nella CMUcam2. Il maggior numero di pin di I/O significava che avevamo più pin disponibili per altre funzioni – come più servo, più jumper di configurazione, ecc.

La grande differenza tra i due sistemi è che la CMUcam2 include il chip frame buffer AL422B di AverLogic mentre la CMUcam1 no. Questo consente all’hardware della CMUcam2 di acquisire rapidamente un singolo fotogramma completo e memorizzarlo nella memoria del frame buffer. Ciò ha una serie di vantaggi:

  • Elaborazione più complessa. Nella CMUcam1 il processore doveva elaborare il flusso di dati dei pixel al volo, man mano che veniva emesso dal modulo fotocamera. Questo design aiutava a ridurre la complessità e il costo dell’hardware del sistema. Tuttavia, limitava la complessità dell’elaborazione perché doveva essere eseguita in tempo reale tra un pixel e l’altro o tra una riga dell’immagine e l’altra. Poiché il processore della CMUcam2 accede ai dati dei pixel dal frame buffer al proprio ritmo, può eseguire un’elaborazione più complessa per pixel.

  • Elaborazione più veloce. Il rovescio della medaglia del non dover rimanere sincronizzati con il flusso di pixel del modulo fotocamera è che il processore non deve attendere il modulo fotocamera quando ha bisogno dei dati dei pixel. Eliminare questo tempo di attesa significa che il processore della CMUcam2 può effettivamente elaborare un fotogramma più velocemente di quanto possa fare la CMUcam1, anche se il processore non è più potente.

  • Operazioni multiple per fotogramma. Poiché l’immagine memorizzata nel frame buffer non cambia, la CMUcam2 può eseguire operazioni multiple su un singolo fotogramma. Così, ad esempio, si potrebbe rilevare il movimento, calcolare le statistiche di regione e tracciare più colori tutto su un singolo fotogramma.

  • Migliori dump dei fotogrammi. Poiché la CMUcam1 doveva sincronizzare i dati del dump del fotogramma trasmesso con il flusso di dati del modulo fotocamera, poteva inviare solo una colonna di dati per fotogramma della fotocamera. Ciò significava che parti diverse dell’immagine venivano acquisite in momenti diversi, così gli oggetti in rapido movimento apparivano sfocati nei dump dei fotogrammi della CMUcam1. Poiché la CMUcam2 trasmette l’immagine dai dati fissi presenti nel frame buffer, questo non è più un problema.

  • Migliore gestione delle velocità di trasmissione (baud rate) più basse. Avere un frame buffer significa anche che la temporizzazione dei dati trasmessi dalla CMUcam2 può essere completamente disaccoppiata dalla temporizzazione dei dati letti dal modulo fotocamera. Ciò significa che i dati della CMUcam2 provenienti dai dump dei fotogrammi e dalle modalità bitmap a righe non cambiano quando cambia il baud rate delle comunicazioni: la CMUcam2 comunicherà gli stessi dati di fotogramma o bitmap al processore host indipendentemente dal baud rate. Tuttavia il numero di fotogrammi elaborati al secondo può comunque variare con baud rate più bassi, poiché è comunque necessario completare l’invio di tutti i dati di un fotogramma prima che i successivi possano essere elaborati.

  • Migliore funzionamento del modulo fotocamera. Affinché il processore nella CMUcam1 potesse rimanere sincronizzato con il flusso di dati proveniente dal modulo fotocamera, la frequenza dei fotogrammi del modulo doveva essere rallentata a 17 fps. Il frame buffer utilizzato dalla CMUcam2 ci permette di far funzionare il modulo fotocamera alla piena velocità dei fotogrammi. Un vantaggio di ciò è che la regolazione automatica dell’esposizione e del bilanciamento del bianco della fotocamera può operare più rapidamente, poiché può effettuare una sola regolazione per fotogramma e ora ci sono più fotogrammi al secondo. Il secondo vantaggio è che l’uscita video analogica in bianco e nero (che funziona solo quando il modulo opera alla piena frequenza dei fotogrammi) può essere utilizzata mentre la CMUcam2 sta elaborando i dati dell’immagine, cosa che non era possibile con la CMUcam1.

Panoramica delle funzionalità#

La CMUcam2 implementa tutte le funzionalità della CMUcam1 e aggiunge anche molte nuove funzionalità. Di seguito un riepilogo.

  • Tracciamento del colore. La CMUcam2 implementa il tracciamento del colore proprio come faceva la CMUcam1. Come nella CMUcam1, è implementata una modalità bitmap a righe opzionale che trasmette una bitmap dei pixel tracciati. Ci sono anche alcuni miglioramenti. È presente una nuova modalità a righe opzionale che fornisce statistiche dei pixel tracciati per ciascuna riga, comprese le posizioni media, minima e massima dei pixel tracciati. Questo è molto utile per il line following. È inoltre presente una nuova modalità opzionale in cui l’interpretazione dei limiti di tracciamento può essere invertita. In questa modalità i pixel al di fuori dei limiti di tracciamento sono considerati «buoni». Ciò è utile per tracciare un oggetto su uno sfondo omogeneo – si pensi agli effetti speciali del blue screen. È utile anche per rilevare i bordi quando è abilitata la differenziazione dei pixel (descritta di seguito). Anche l’opzione di filtraggio del rumore è stata migliorata per consentire la regolazione della quantità di filtraggio nelle situazioni rumorose.

  • Statistiche dell’immagine. La CMUcam2 implementa il calcolo delle statistiche di media e variazione delle regioni dell’immagine proprio come faceva la CMUcam1. Come nella CMUcam1, è implementata una modalità a righe opzionale che trasmette la media di ciascuna riga dell’immagine. È inoltre presente una nuova modalità a righe migliorata che include facoltativamente le informazioni sulla variazione riga per riga.

  • Rilevamento del movimento. Completamente nuovi nella CMUcam2 sono i comandi di rilevamento del movimento (differenziazione dei fotogrammi). Questi comandi possono essere utilizzati per istruire la CMUcam2 ad acquisire una versione a bassa risoluzione dell’immagine corrente e confrontarla continuamente con le nuove immagini in arrivo. I pacchetti provenienti dalla CMUcam2 segnalano se una qualsiasi parte dell’immagine cambia più di una quantità specificata, cosa che potrebbe potenzialmente indicare un movimento. Questi pacchetti possono descrivere il centroide e l’estensione dei blocchi di immagine cambiati oppure fornire una bitmap di quali blocchi di immagine sono cambiati. Questa modalità può anche essere combinata con la differenziazione dei pixel (descritta di seguito) per rendere il rilevamento del movimento più robusto rispetto ai cambiamenti di illuminazione.

  • Istogrammi. Completamente nuovi nella CMUcam2 sono i comandi di calcolo dell’istogramma. Questi comandi possono essere utilizzati per acquisire un istogramma monodimensionale di un singolo canale di colore con una risoluzione fino a 28 intervalli (bin). Gli istogrammi forniscono informazioni utili che riassumono l’aspetto di un’immagine. Con una programmazione aggiuntiva sul processore host, queste informazioni possono essere utilizzate per aiutare a rilevare ostacoli, oggetti specifici o posizioni.

  • Finestratura dell’immagine. La CMUcam2 implementa la capacità di limitare l’elaborazione a una piccola regione (sottofinestra) dell’immagine completa proprio come faceva la CMUcam1. Nella CMUcam2 questa funzione è ancora più utile perché può essere usata per esaminare da vicino le sottofinestre di una singola immagine memorizzata nel frame buffer. Inoltre, ridurre la dimensione verticale della finestra può essere utilizzato per aumentare notevolmente i fotogrammi elaborati al secondo, riducendo di molto il numero di pixel che devono essere elaborati dalla CMUcam2.

  • Personalizzazione del pacchetto di uscita. La CMUcam2 implementa una personalizzazione dei pacchetti molto più flessibile rispetto alla CMUcam1. Ci sono comandi che consentono all’utente di personalizzare ogni pacchetto generato da ciascun comando in modo da restituire solo i valori necessari per una particolare applicazione. Questo può ridurre notevolmente la quantità di dati trasmessi ed elaborati dal processore host in molte situazioni.

  • Differenziazione dei pixel. Completamente nuova nella CMUcam2 è una modalità di differenziazione dei pixel opzionale. In modalità di differenziazione dei pixel, i pixel vengono pre-elaborati prima di essere passati al resto del codice della CMUcam2. Questo passaggio di pre-elaborazione invia al resto del codice nuovi valori di pixel che sono la differenza tra il valore del pixel corrente e quello precedente. In sostanza, ciò che fa è filtrare tutto tranne i bordi verticali dell’immagine. Si tratta di un’operazione molto potente e, con una programmazione aggiuntiva sul processore host, può essere utilizzata per aiutare nel rilevamento degli ostacoli e nel line following.

  • Sottocampionamento. Completamente nuova nella CMUcam2 è una modalità di sottocampionamento opzionale. In modalità di sottocampionamento il software della CMUcam2 riduce la risoluzione dell’immagine della fotocamera prima di elaborarla. Il vantaggio di ciò è che ci sono molti meno pixel da elaborare e trasmettere. Poiché viene eseguito via software, il sottocampionamento comporta solo un piccolissimo aumento della velocità di elaborazione. Il grande beneficio consiste nel ridurre la quantità di dati trasmessi. Nel caso del dump di un fotogramma dell’immagine, il sottocampionamento può facilmente ridurre la dimensione dei dati e quindi ridurre il tempo di trasmissione di un fattore 2 o 4 o più. Analogamente, quando si utilizzano le modalità bitmap a righe, la dimensione dell’immagine bitmap può essere notevolmente ridotta, diminuendo la quantità di dati che un processore host deve ricevere ed elaborare.

  • Controllo dei servo. La CMUcam1 originale supportava un solo servo e quel servo funzionava correttamente solo a specifici baud rate e quando la CMUcam1 era in modalità streaming. La CMUcam2 supporta fino a cinque servo. Il codice del controller dei servo nella CMUcam2 è implementato come un processo in background, così le uscite dei servo rimangono sempre stabili e può essere utilizzato come si userebbe qualsiasi altro controller di servo. Inoltre, la CMUcam2 può essere configurata per controllare automaticamente i servo di pan e tilt. In questa modalità la CMUcam2 aggiornerà le posizioni dei servo ogni volta che le viene comandato di calcolare i dati di tracciamento del colore.

  • Risparmio energetico. Completamente nuove nella CMUcam2 sono le modalità di risparmio energetico. In alcune applicazioni la CMUcam2 non è tenuta a elaborare continuamente i dati dell’immagine. In questi casi si può comandare alla CMUcam2 di entrare in una varietà di modalità di spegnimento (o sospensione). Nessun comando di tracciamento o controllo dei servo avverrà quando la CMUcam2 è in una di queste modalità. L’invio di un semplice comando seriale risveglia la fotocamera in pochi millisecondi.

Qual è la differenza tra l’uso del modulo OV6620 e OV7620 con la CMUcam2?#

Introduzione#

In termini di capacità, il sensore OV7620 è un sensore a risoluzione più alta (664x492 posizioni grezze del sensore) rispetto al sensore OV6620 (356x292 posizioni grezze del sensore). Ma questo fatto ha ben poco a che fare con le questioni che sorgono quando si considera quale di questi sensori si adatti meglio alla tua applicazione della CMUcam2. Di seguito è riportato un elenco di considerazioni.

Risoluzione#

Sebbene sia vero che il sensore OV7620 è un sensore a risoluzione più alta rispetto all’OV6620, a causa della dimensione fissa della memoria del frame buffer della CMUcam2, la CMUcam2 supporta solo un’unica risoluzione di 160x239 per il sensore OV7620. La CMUcam2 supporta una modalità a bassa risoluzione di 88x143 e una modalità ad alta risoluzione di 176x255 per il sensore OV6620. Quindi usando l’OV6620 in modalità ad alta risoluzione si può effettivamente ottenere un funzionamento a risoluzione più alta rispetto alla modalità a risoluzione singola disponibile per il sensore OV7620.

Frequenza dei fotogrammi#

Un altro problema legato alla risoluzione è la frequenza massima dei fotogrammi durante l’elaborazione continua di un flusso di immagini. Più bassa è la risoluzione, minore è il numero di pixel da elaborare e più alta è la frequenza dei fotogrammi ottenibile. Sebbene un aumento della frequenza dei fotogrammi possa essere ottenuto modificando la frequenza di sottocampionamento e la dimensione della finestra virtuale, il numero effettivo di pixel emessi dal sensore ha un effetto molto maggiore. Per questo motivo, la CMUcam2 può raggiungere una frequenza dei fotogrammi molto più elevata quando l’OV6620 è utilizzato nella sua modalità a bassa risoluzione rispetto alla modalità a risoluzione singola disponibile per l’OV7620.

Uscita video analogica#

Un’altra differenza tra i due sensori è il formato dell’uscita video analogica dei due sensori. Il sensore OV6620 emette in formato analogico PAL e il sensore OV7620 emette in formato analogico NTSC. In entrambi i casi l’uscita è in bianco e nero.

È importante notare che nella maggior parte degli utilizzi della CMUcam2 l’uscita analogica non verrà usata. In un’applicazione tipica i risultati dell’elaborazione dell’immagine o i pixel grezzi vengono trasmessi digitalmente tramite la porta seriale al computer host o al microcontrollore, quindi questo non è un problema. Tuttavia, se il video in bianco e nero in tempo reale è importante, potresti voler tenere conto del formato dell’uscita video analogica.

Riepilogo#

La nostra raccomandazione è che il modulo OV6620 sia la scelta migliore per quasi tutte le applicazioni, soprattutto considerando il suo costo inferiore e il tempo di elaborazione più rapido ottenibile con questo modulo. Nelle rare applicazioni in cui è richiesta un’uscita video analogica monocromatica NTSC potresti voler considerare l’OV7620.

Ci sono problemi noti con le attuali versioni del firmware della CMUcam2?#

Sì. Nella release 1.00 il comando «RM» (Raw Mode) non funzionava correttamente. La release 1.01 risolve quel problema.

Il firmware della CMUcam2 è aggiornabile, ma per farlo è necessario un programmatore SX-Key (o compatibile). I file «hex» per le immagini ROM sono disponibili nella pagina Download.