Întrebări frecvente#

Care sunt diferențele dintre CMUcam1 și CMUcam2?#

Introducere#

CMUcam2 include toate funcționalitățile CMUcam1 într-o formă îmbunătățită și multe altele. Mai jos descriem pe scurt noua funcționalitate și diferențele. Ați putea dori, de asemenea, să vă uitați la răspunsul la întrebarea despre cum să decideți dacă să achiziționați un CMUcam1 sau CMUcam2.

Prezentare generală a hardware-ului#

Există două diferențe principale de hardware care sunt importante: CMUcam2 folosește un procesor diferit față de CMUcam1, iar CMUcam2 încorporează un cip de buffer de cadre în timp ce CMUcam1 nu.

CMUcam2 utilizează procesorul SX52, iar CMUcam1 utilizează procesorul SX28, ambele fac parte din seria de procesoare SX de la Ubicom. În ambele cazuri, procesorul rulează la 75 MHz, deci nu există nicio diferență în viteza procesorului sau puterea de calcul. Avantajele procesorului SX52 sunt că are mai multă RAM (262 vs. 136 octeți), mai mult ROM (4096 vs. 2048 cuvinte) și mai mulți pini I/O. Mai multă RAM și ROM însemna că puteam scrie cod mai complex, ceea ce ne-a permis să încorporăm mai multă funcționalitate în CMUcam2. Numărul mai mare de pini I/O însemna că aveam mai mulți pini rămași pentru alte funcții – cum ar fi mai multe servouri, mai mulți jumperi de configurare etc.

Marea diferență dintre cele două sisteme este că CMUcam2 include cipul de buffer de cadre AL422B de la AverLogic, în timp ce CMUcam1 nu. Acest lucru permite hardware-ului CMUcam2 să captureze rapid un singur cadru complet și să îl stocheze în memoria bufferului de cadre. Acest lucru are o serie de avantaje:

  • Procesare mai complexă. În CMUcam1, procesorul trebuia să proceseze fluxul de date de pixeli în timp real, pe măsură ce era emis de modulul camerei. Acest design a ajutat la reducerea complexității și a costului hardware-ului sistemului. Totuși, a limitat complexitatea procesării, deoarece aceasta trebuia efectuată în timp real între pixeli sau între rândurile imaginii. Deoarece procesorul de pe CMUcam2 accesează datele de pixeli din bufferul de cadre în ritmul propriu, poate efectua o procesare mai complexă per pixel.

  • Procesare mai rapidă. Reversul faptului de a nu trebui să rămână sincronizat cu fluxul de pixeli al modulului camerei este că procesorul nu trebuie să aștepte modulul camerei atunci când are nevoie de date de pixeli. Eliminarea acestui timp de așteptare înseamnă că procesorul CMUcam2 poate procesa efectiv un cadru mai rapid decât o poate face CMUcam1, chiar dacă procesorul nu este mai puternic.

  • Operații multiple pe cadru. Deoarece imaginea stocată în bufferul de cadre nu se modifică, CMUcam2 poate efectua operații multiple pe un singur cadru. Astfel, de exemplu, se poate detecta mișcarea, se pot calcula statisticile regiunii și se pot urmări mai multe culori, toate pe un singur cadru.

  • Descărcări de cadre mai bune. Deoarece CMUcam1 trebuia să sincronizeze datele descărcării cadrului transmise cu fluxul de date al modulului camerei, putea trimite doar o coloană de date pe cadru al camerei. Aceasta însemna că diferite părți ale imaginii erau capturate în momente diferite, astfel încât obiectele care se mișcau rapid apăreau întinse în descărcările de cadre ale CMUcam1. Deoarece CMUcam2 transmite imaginea din datele fixe din bufferul de cadre, acest lucru nu mai reprezintă o problemă.

  • Gestionare mai bună a ratelor de baud mai mici. Existența unui buffer de cadre înseamnă, de asemenea, că sincronizarea datelor transmise de CMUcam2 poate fi complet decuplată de sincronizarea datelor citite de la modulul camerei. Aceasta înseamnă că datele CMUcam2 din descărcările de cadre și modurile de linie bitmap nu se modifică atunci când se schimbă rata de baud a comunicațiilor; CMUcam2 va comunica aceleași date de cadru sau bitmap procesorului gazdă, indiferent de rata de baud. Totuși, numărul de cadre procesate pe secundă poate încă varia cu rate de baud mai mici, deoarece tot trebuie să finalizeze în cele din urmă trimiterea tuturor datelor dintr-un cadru înainte ca următoarele să poată fi procesate.

  • Funcționare mai bună a modulului camerei. Pentru ca procesorul din CMUcam1 să poată rămâne sincronizat cu fluxul de date de la modulul camerei, rata de cadre a modulului camerei a trebuit încetinită la 17 fps. Bufferul de cadre pe care îl folosește CMUcam2 ne permite să operăm modulul camerei la viteza completă a cadrelor. Un avantaj al acestui lucru este că reglarea automată a expunerii și a balansului de alb al camerei poate funcționa mai rapid, deoarece poate face o singură ajustare pe cadru, iar acum există mai multe cadre pe secundă. Al doilea avantaj este că ieșirea video analogică alb-negru (care funcționează numai atunci când modulul operează la rata completă de cadre) poate fi utilizată în timp ce CMUcam2 procesează datele imaginii, lucru care nu era posibil cu CMUcam1.

Prezentare generală a funcționalității#

CMUcam2 implementează toate funcționalitățile CMUcam1 și, de asemenea, adaugă multe funcționalități noi. Următorul text este un rezumat.

  • Urmărirea culorii. CMUcam2 implementează urmărirea culorii la fel cum a făcut-o CMUcam1. Ca și în CMUcam1, este implementat un mod opțional de linie bitmap care transmite un bitmap al pixelilor urmăriți. Există, de asemenea, unele îmbunătățiri. Există un nou mod opțional de linie care oferă statistici ale pixelilor urmăriți pentru fiecare rând, inclusiv pozițiile medie, minimă și maximă ale pixelilor urmăriți. Acest lucru este foarte util pentru urmărirea liniei. Există, de asemenea, un nou mod opțional în care interpretarea limitelor de urmărire poate fi inversată. În acest mod, pixelii din afara limitelor de urmărire sunt considerați „buni”. Acest lucru este util pentru urmărirea unui obiect pe un fundal omogen – gândiți-vă la efectele speciale de tip ecran albastru. Este util și pentru detectarea marginilor atunci când este activată diferențierea pixelilor (descrisă mai jos). Opțiunea de filtrare a zgomotului a fost, de asemenea, îmbunătățită pentru a permite ajustarea cantității de filtrare în situații cu zgomot.

  • Statistici de imagine. CMUcam2 implementează calculul statisticilor de medie și variație ale regiunilor imaginii la fel cum a făcut-o CMUcam1. Ca și în CMUcam1, este implementat un mod opțional de linie care transmite media fiecărei linii a imaginii. Există, de asemenea, un nou mod de linie îmbunătățit care include opțional informații de variație linie cu linie.

  • Detectarea mișcării. Complet noi în CMUcam2 sunt comenzile de detectare a mișcării (diferențiere de cadre). Aceste comenzi pot fi utilizate pentru a instrui CMUcam2 să captureze o versiune de rezoluție joasă a imaginii curente și să o compare continuu cu noile imagini primite. Pachetele de la CMUcam2 raportează dacă orice parte a imaginii se schimbă cu mai mult decât o cantitate specificată, ceea ce ar putea indica mișcare. Aceste pachete pot descrie centroidul și amploarea blocurilor de imagine modificate sau pot furniza un bitmap cu blocurile de imagine care s-au schimbat. Acest mod poate fi, de asemenea, combinat cu diferențierea pixelilor (descrisă mai jos) pentru a face detectarea mișcării mai robustă la schimbările de iluminare.

  • Histogramare. Complet noi în CMUcam2 sunt comenzile de calcul al histogramei. Aceste comenzi pot fi utilizate pentru a captura o histogramă unidimensională a unui singur canal de culoare la o rezoluție de până la 28 de intervale. Histogramele oferă informații utile care rezumă aspectul unei imagini. Cu programare suplimentară pe procesorul gazdă, aceste informații pot fi utilizate pentru a ajuta la detectarea obstacolelor, a obiectelor specifice sau a locațiilor.

  • Ferestruire de imagine. CMUcam2 implementează capacitatea de a restrânge procesarea la o regiune mică (subfereastră) a imaginii complete la fel cum a făcut-o CMUcam1. În CMUcam2 această funcție este și mai utilă, deoarece poate fi utilizată pentru a examina îndeaproape subferestrele unei singure imagini stocate în bufferul de cadre. De asemenea, reducerea dimensiunii verticale a ferestrei poate fi utilizată pentru a crește foarte mult numărul de cadre procesate pe secundă prin reducerea semnificativă a numărului de pixeli care trebuie procesați de CMUcam2.

  • Personalizarea pachetelor de ieșire. CMUcam2 implementează o personalizare a pachetelor mult mai flexibilă decât CMUcam1. Există comenzi care permit utilizatorului să personalizeze fiecare pachet generat de fiecare comandă pentru a returna doar valorile necesare pentru o anumită aplicație. Acest lucru poate reduce foarte mult cantitatea de date transmise către și procesate de procesorul gazdă în multe situații.

  • Diferențierea pixelilor. Complet nou în CMUcam2 este un mod opțional de diferențiere a pixelilor. În modul de diferențiere a pixelilor, pixelii sunt preprocesați înainte de a fi transmiși restului codului CMUcam2. Acest pas de preprocesare trimite noi valori de pixeli către restul codului, care sunt diferența dintre valoarea pixelului curent și cea anterioară. Practic, ceea ce face acest lucru este să filtreze totul, cu excepția marginilor verticale din imagine. Aceasta este o operație foarte puternică și, cu programare suplimentară pe procesorul gazdă, poate fi utilizată pentru a ajuta la detectarea obstacolelor și urmărirea liniei.

  • Subeșantionare. Complet nou în CMUcam2 este un mod opțional de subeșantionare. În modul de subeșantionare, software-ul CMUcam2 reduce rezoluția imaginii camerei înainte de a o procesa. Avantajul acestui lucru este că există mult mai puțini pixeli de procesat și transmis. Deoarece se realizează prin software, subeșantionarea are ca rezultat doar o creștere foarte mică a vitezei de procesare. Beneficiul mare constă în reducerea cantității de date transmise. În cazul unui cadru de imagine descărcat, subeșantionarea poate reduce cu ușurință dimensiunea datelor și, prin urmare, poate reduce timpul de transmitere cu un factor de 2 sau 4 sau mai mult. În mod similar, atunci când se utilizează moduri de linie bitmap, dimensiunea imaginii bitmap poate fi mult redusă, scăzând cantitatea de date pe care un procesor gazdă trebuie să le primească și să le proceseze.

  • Controlul servourilor. CMUcam1 original suporta doar un singur servo, iar acel servo funcționa corect numai la anumite rate de baud și când CMUcam1 se afla în modul de flux continuu. CMUcam2 suportă până la cinci servouri. Codul controlerului de servouri din CMUcam2 este implementat ca un proces de fundal, astfel încât ieșirile servourilor rămân întotdeauna stabile și poate fi utilizat așa cum ar fi utilizat orice alt controler de servouri. În plus, CMUcam2 poate fi configurat să controleze automat servourile de panoramare și înclinare. În acest mod, CMUcam2 va actualiza pozițiile servourilor de fiecare dată când i se comandă să calculeze datele de urmărire a culorii.

  • Economisirea energiei. Complet noi în CMUcam2 sunt modurile de economisire a energiei. În unele aplicații, CMUcam2 nu trebuie să proceseze continuu datele imaginii. În aceste cazuri, CMUcam2 poate fi comandat să intre într-o varietate de moduri de oprire (sau de repaus) a alimentării. Nu vor avea loc comenzi de urmărire sau control al servourilor atunci când CMUcam2 se află într-unul dintre aceste moduri. Trimiterea unei simple comenzi seriale trezește camera înapoi în câteva milisecunde.

Care este diferența dintre utilizarea modulului OV6620 și a modulului OV7620 cu CMUcam2?#

Introducere#

În ceea ce privește capacitățile, senzorul OV7620 este un senzor cu rezoluție mai mare (664x492 locații brute de senzor) decât senzorul OV6620 (356x292 locații brute de senzor). Dar acest fapt are foarte puțin de-a face cu problemele care apar atunci când se ia în considerare care dintre acești senzori se potrivește cel mai bine aplicației dvs. a CMUcam2. Urmează o listă de considerații.

Rezoluție#

Deși este adevărat că senzorul OV7620 este un senzor cu rezoluție mai mare decât OV6620, din cauza dimensiunii fixe a memoriei bufferului de cadre al CMUcam2, CMUcam2 suportă doar o singură rezoluție de 160x239 pentru senzorul OV7620. CMUcam2 suportă un mod de rezoluție joasă de 88x143 și un mod de rezoluție înaltă de 176x255 pentru senzorul OV6620. Deci, folosind OV6620 în modul de rezoluție înaltă, se poate obține de fapt o funcționare la rezoluție mai mare decât modul cu rezoluție unică disponibil pentru senzorul OV7620.

Rată de cadre#

O altă problemă legată de rezoluție este rata maximă de cadre atunci când se procesează continuu un flux de imagini. Cu cât rezoluția este mai mică, cu atât mai puțini pixeli trebuie procesați și cu atât mai mare este rata de cadre realizabilă. Deși o creștere a ratei de cadre poate fi obținută prin modificarea ratei de subeșantionare și a dimensiunii ferestrei virtuale, numărul real de pixeli emiși de senzor are un efect mult mai mare. Din acest motiv, CMUcam2 poate atinge o rată de cadre mult mai mare atunci când OV6620 este operat în modul său de rezoluție joasă decât modul de rezoluție unică disponibil pentru OV7620.

Ieșire video analogică#

O altă diferență între cei doi senzori este formatul ieșirii video analogice a celor doi senzori. Senzorul OV6620 emite în format analogic PAL, iar senzorul OV7620 emite în format analogic NTSC. În ambele cazuri, ieșirea este alb-negru.

Este important de reținut că în majoritatea utilizărilor CMUcam2 ieșirea analogică nu va fi utilizată. Într-o aplicație tipică, rezultatele procesării imaginii sau pixelii bruți sunt transmiși digital prin portul serial către computerul gazdă sau microcontroler, deci acest lucru nu reprezintă o problemă. Totuși, dacă videoul alb-negru în direct este important, atunci ați putea dori să luați în considerare formatul ieșirii video analogice.

Rezumat#

Recomandarea noastră este că modulul OV6620 este cea mai bună alegere pentru aproape toate aplicațiile, mai ales având în vedere costul său mai redus și timpul de procesare mai rapid realizabil cu acest modul. În aplicațiile rare în care este necesară ieșirea video analogică monocromă NTSC, ați putea dori să luați în considerare OV7620.

Există probleme cunoscute cu versiunile actuale de firmware CMUcam2?#

Da. În versiunea 1.00, comanda „RM” (Raw Mode) nu funcționa corect. Versiunea 1.01 remediază această problemă.

Firmware-ul din CMUcam2 poate fi actualizat, dar este necesar un programator SX-Key (sau compatibil) pentru a face acest lucru. Fișierele „hex” pentru imaginile ROM sunt disponibile pe pagina Descărcări.