Usein kysytyt kysymykset#

Mitkä ovat erot CMUcam1:n ja CMUcam2:n välillä?#

Johdanto#

CMUcam2 sisältää kaiken CMUcam1:n toiminnallisuuden parannetussa muodossa ja paljon muuta. Alla kuvaamme lyhyesti uuden toiminnallisuuden ja erot. Saatat myös haluta tarkastella vastausta kysymykseen, kuinka päättää, ostaako CMUcam1 vai CMUcam2.

Laitteiston yleiskatsaus#

On kaksi tärkeää päälaitteistoeroa: CMUcam2 käyttää eri prosessoria kuin CMUcam1, ja CMUcam2 sisältää kehyspuskurisirun, kun taas CMUcam1:ssä ei ole sellaista.

CMUcam2 käyttää SX52-prosessoria ja CMUcam1 käyttää SX28-prosessoria, molemmat ovat Ubicomin SX-prosessorisarjasta. Molemmissa tapauksissa prosessori toimii 75 MHz:n taajuudella, joten prosessorin nopeudessa tai laskentatehossa ei ole eroa. SX52-prosessorin edut ovat, että siinä on enemmän RAM-muistia (262 vs. 136 tavua), enemmän ROM-muistia (4096 vs. 2048 sanaa) ja enemmän I/O-nastoja. Enemmän RAM- ja ROM-muistia tarkoitti, että pystyimme kirjoittamaan monimutkaisempaa koodia, mikä mahdollisti enemmän toiminnallisuuden sisällyttämisen CMUcam2:een. Suurempi I/O-nastojen määrä tarkoitti, että meillä oli enemmän nastoja jäljellä muihin toimintoihin – kuten useampiin servoihin, useampiin konfiguraatiohyppyjohtimiin jne.

Suuri ero näiden kahden järjestelmän välillä on, että CMUcam2 sisältää AverLogicin AL422B -kehyspuskurisirun, kun taas CMUcam1:ssä ei ole sellaista. Tämä mahdollistaa, että CMUcam2:n laitteisto kaappaa nopeasti yhden täydellisen kehyksen ja tallentaa sen kehyspuskurimuistiin. Tässä on useita etuja:

  • Monimutkaisempi käsittely. CMUcam1:ssä prosessorin oli käsiteltävä pikselidatavirtaa lennossa sitä mukaa kuin kameramoduuli sen tuotti. Tämä suunnittelu auttoi vähentämään järjestelmän laitteiston monimutkaisuutta ja kustannuksia. Se kuitenkin rajoitti käsittelyn monimutkaisuutta, koska se oli suoritettava reaaliaikaisesti pikselien tai kuvarivien välillä. Koska CMUcam2:n prosessori käyttää pikselidataa ruutupuskurista omaan tahtiinsa, se voi suorittaa monimutkaisempaa käsittelyä pikseliä kohti.

  • Nopeampi käsittely. Kääntöpuoli sille, ettei tarvitse pysyä synkronoituna kameramoduulin pikselivirran kanssa, on se, ettei prosessorin tarvitse odottaa kameramoduulia tarvitessaan pikselidataa. Tämän odotusajan poistaminen tarkoittaa, että CMUcam2:n prosessori pystyy itse asiassa käsittelemään ruudun nopeammin kuin CMUcam1, vaikka prosessori ei olekaan yhtään tehokkaampi.

  • Useita operaatioita ruutua kohti. Koska ruutupuskuriin tallennettu kuva ei muutu, CMUcam2 voi suorittaa useita operaatioita yhdelle ruudulle. Niinpä esimerkiksi liike voidaan tunnistaa, alueiden tilastot laskea ja useita värejä seurata kaikki yhdellä ja samalla ruudulla.

  • Paremmat ruutuvedokset. Koska CMUcam1:n oli synkronoitava lähetettävä ruutuvedosdata kameramoduulin datavirran kanssa, se pystyi lähettämään vain yhden datasarakkeen kameraruutua kohti. Tämä tarkoitti, että kuvan eri osat kaapattiin eri aikoina, joten nopeasti liikkuvat kohteet levisivät epäselvinä CMUcam1:n ruutuvedoksiin. Koska CMUcam2 lähettää kuvan ruutupuskurin kiinteästä datasta, tämä ei ole enää ongelma.

  • Parempi hitaampien siirtonopeuksien käsittely. Ruutupuskurin ansiosta CMUcam2:n lähettämän datan ajoitus voidaan täysin erottaa kameramoduulista luetun datan ajoituksesta. Tämä tarkoittaa, että CMUcam2:n ruutuvedoksista ja bittikartta-rivitiloista saatava data ei muutu, kun tiedonsiirron siirtonopeus muuttuu; CMUcam2 välittää saman ruutu- tai bittikarttadatan isäntäprosessorille siirtonopeudesta riippumatta. Sekunnissa käsiteltyjen ruutujen määrä voi kuitenkin silti muuttua hitaammilla siirtonopeuksilla, koska sen on lopulta saatava lähetettyä kaikki yhden ruudun data ennen kuin seuraavia voidaan käsitellä.

  • Parempi kameramoduulin toiminta. Jotta CMUcam1:n prosessori pysyisi synkronoituna kameramoduulin datavirran kanssa, kameramoduulin ruutunopeus oli hidastettava 17 ruutuun sekunnissa. CMUcam2:n käyttämä ruutupuskuri mahdollistaa kameramoduulin käytön täydellä ruutunopeudella. Yksi etu tästä on, että kameran automaattinen valotuksen ja valkotasapainon säätö voi toimia nopeammin, koska se voi tehdä vain yhden säädön ruutua kohti ja nyt ruutuja on enemmän sekunnissa. Toinen etu on, että mustavalkoista analogista videolähtöä (joka toimii vain moduulin toimiessa täydellä ruutunopeudella) voidaan käyttää CMUcam2:n käsitellessä kuvadataa, mikä ei ollut mahdollista CMUcam1:llä.

Toimintojen yleiskatsaus#

CMUcam2 toteuttaa kaiken CMUcam1:n toiminnallisuuden ja lisää myös paljon uutta toiminnallisuutta. Seuraavassa on yhteenveto.

  • Värinseuranta. CMUcam2 toteuttaa värinseurannan aivan kuten CMUcam1. Kuten CMUcam1:ssä, on toteutettu valinnainen bittikartta-rivitila, joka lähettää bittikartan seuratuista pikseleistä. Mukana on myös joitakin parannuksia. On uusi valinnainen rivitila, joka tarjoaa tilastotietoja seuratuista pikseleistä kullekin riville, mukaan lukien seurattujen pikselien keskiarvon sekä minimi- ja maksimisijainnit. Tämä on erittäin hyödyllistä viivan seuraamisessa. On myös uusi valinnainen tila, jossa seurantarajojen tulkinta voidaan kääntää päinvastaiseksi. Tässä tilassa seurantarajojen ulkopuolella olevat pikselit katsotaan ”hyviksi”. Tämä on hyödyllistä kohteen seuraamisessa homogeenista taustaa vasten – ajattele sinisen taustan erikoistehosteita. Se on hyödyllistä myös reunojen tunnistamisessa, kun pikselierotus (kuvattu alla) on käytössä. Myös kohinansuodatusvaihtoehtoa on parannettu, jotta suodatuksen määrää voidaan säätää kohinaisissa tilanteissa.

  • Kuvatilastot. CMUcam2 toteuttaa kuva-alueiden keskiarvo- ja vaihtelutilastojen laskennan aivan kuten CMUcam1. Kuten CMUcam1:ssä, on toteutettu valinnainen rivitila, joka lähettää kuvan kunkin rivin keskiarvon. On myös uusi parannettu rivitila, joka sisältää valinnaisesti vaihtelutiedot rivi riviltä.

  • Liikkeentunnistus. Täysin uusia CMUcam2:ssa ovat liikkeentunnistuskomennot (ruutuerotus). Näillä komennoilla voidaan ohjata CMUcam2 kaappaamaan matalaresoluutioinen versio nykyisestä kuvasta ja vertaamaan sitä jatkuvasti uusiin saapuviin kuviin. CMUcam2:n paketit raportoivat, jos jokin kuvan osa muuttuu enemmän kuin tietyn määrän, mikä voisi viitata liikkeeseen. Nämä paketit voivat kuvata muuttuneiden kuvalohkojen keskipisteen ja laajuuden tai tarjota bittikartan siitä, mitkä kuvalohkot ovat muuttuneet. Tämä tila voidaan myös yhdistää pikselierotukseen (kuvattu alla) tekemään liikkeentunnistuksesta kestävämpi valaistuksen muutoksia vastaan.

  • Histogrammointi. Täysin uusia CMUcam2:ssa ovat histogrammin laskentakomennot. Näillä komennoilla voidaan kaapata yksiulotteinen histogrammi yhdestä värikanavasta jopa 28 lokeron resoluutiolla. Histogrammit tarjoavat hyödyllistä tietoa, joka tiivistää kuvan ulkoasun. Isäntäprosessorin lisäohjelmoinnilla tätä tietoa voidaan käyttää apuna esteiden, tiettyjen kohteiden tai sijaintien tunnistamisessa.

  • Kuvan ikkunointi. CMUcam2 toteuttaa kyvyn rajoittaa käsittely koko kuvan pienelle alueelle (aliikkuna) aivan kuten CMUcam1. CMUcam2:ssa tämä toiminto on jopa hyödyllisempi, koska sillä voidaan tarkastella tarkasti ruutupuskuriin tallennetun yksittäisen kuvan aliikkunoita. Lisäksi pystysuuntaisen ikkunan koon pienentämistä voidaan käyttää sekunnissa käsiteltyjen ruutujen määrän suureen kasvattamiseen vähentämällä huomattavasti CMUcam2:n käsiteltävien pikselien määrää.

  • Lähtöpakettien mukauttaminen. CMUcam2 toteuttaa paljon joustavamman pakettien mukauttamisen kuin CMUcam1. On komentoja, joiden avulla käyttäjä voi mukauttaa jokaisen komennon tuottaman paketin palauttamaan vain tietylle sovellukselle tarvittavat arvot. Tämä voi monissa tilanteissa vähentää huomattavasti isäntäprosessorille lähetettävän ja sen käsittelemän datan määrää.

  • Pikselierotus. Täysin uusi CMUcam2:ssa on valinnainen pikselierotustila. Pikselierotustilassa pikselit esikäsitellään ennen kuin ne välitetään muulle CMUcam2-koodille. Tämä esikäsittelyvaihe lähettää muulle koodille uudet pikseliarvot, jotka ovat nykyisen ja edellisen pikseliarvon välinen erotus. Käytännössä tämä suodattaa pois kaiken muun paitsi kuvan pystysuuntaiset reunat. Tämä on erittäin tehokas operaatio, ja isäntäprosessorin lisäohjelmoinnilla sitä voidaan käyttää esteiden tunnistuksen ja viivan seuraamisen apuna.

  • Alinäytteistys. Täysin uusi CMUcam2:ssa on valinnainen alinäytteistystila. Alinäytteistystilassa CMUcam2:n ohjelmisto pienentää kameran kuvan resoluutiota ennen sen käsittelyä. Etu tästä on, että käsiteltäviä ja lähetettäviä pikseleitä on paljon vähemmän. Koska se tehdään ohjelmistolla, alinäytteistys nopeuttaa käsittelyä vain hyvin vähän. Suuri hyöty on lähetettävän datan määrän vähentämisessä. Vedostetun kuvaruudun tapauksessa alinäytteistys voi helposti pienentää datan kokoa ja siten lyhentää sen lähetysaikaa kertoimella 2 tai 4 tai enemmän. Vastaavasti bittikartta-rivitiloja käytettäessä bittikarttakuvan kokoa voidaan pienentää huomattavasti, mikä vähentää isäntäprosessorin vastaanotettavan ja käsittelemän datan määrää.

  • Servo-ohjaus. Alkuperäinen CMUcam1 tuki vain yhtä servoa, ja tuo servo toimi kunnolla vain tietyillä siirtonopeuksilla ja kun CMUcam1 oli suoratoistotilassa. CMUcam2 tukee jopa viittä servoa. CMUcam2:n servo-ohjaimen koodi on toteutettu taustaprosessina, joten servojen lähdöt pysyvät aina vakaina ja sitä voidaan käyttää kuten mitä tahansa muuta servo-ohjainta. Lisäksi CMUcam2 voidaan määrittää ohjaamaan automaattisesti panorointi- ja kallistusservoja. Tässä tilassa CMUcam2 päivittää servojen asennot joka kerta, kun sitä käsketään laskemaan värinseurantadataa.

  • Virransäästö. Täysin uusia CMUcam2:ssa ovat virransäästötilat. Joissakin sovelluksissa CMUcam2:n ei tarvitse käsitellä kuvadataa jatkuvasti. Näissä tapauksissa CMUcam2 voidaan komentaa siirtymään erilaisiin virrankatkaisu- (tai lepo-) tiloihin. Seurantakomentoja tai servo-ohjausta ei tapahdu, kun CMUcam2 on jossakin näistä tiloista. Yksinkertaisen sarjakomennon lähettäminen herättää kameran takaisin muutamassa millisekunnissa.

Mikä ero on OV6620- ja OV7620-moduulin käyttämisellä CMUcam2:n kanssa?#

Johdanto#

Ominaisuuksien osalta OV7620-anturi on korkeamman resoluution anturi (664x492 raakaa anturipaikkaa) kuin OV6620-anturi (356x292 raakaa anturipaikkaa). Mutta tällä seikalla on hyvin vähän tekemistä niiden kysymysten kanssa, jotka nousevat esiin harkittaessa, mikä näistä antureista sopii parhaiten CMUcam2-sovellukseesi. Seuraavassa on luettelo huomioitavista seikoista.

Resoluutio#

Vaikka on totta, että OV7620-anturi on korkeamman resoluution anturi kuin OV6620, CMUcam2:n kehyspuskurin kiinteän muistikoon vuoksi CMUcam2 tukee OV7620-anturille vain yhtä resoluutiota 160x239. CMUcam2 tukee OV6620-anturille matalaresoluutiotilaa 88x143 ja korkearesoluutiotilaa 176x255. Joten käyttämällä OV6620:tä korkearesoluutiotilassa voi itse asiassa saavuttaa korkeamman resoluution toiminnan kuin OV7620-anturille saatavilla oleva yhden resoluution tila.

Ruutunopeus#

Toinen resoluutioon liittyvä seikka on maksimiruutunopeus jatkuvasti kuvavirtaa käsiteltäessä. Mitä matalampi resoluutio, sitä vähemmän käsiteltäviä pikseleitä ja sitä korkeampi saavutettavissa oleva ruutunopeus. Vaikka ruutunopeutta voidaan kasvattaa muuttamalla alinäytteistysnopeutta ja virtuaalisen ikkunan kokoa, anturin tuottamien pikselien todellisella määrällä on paljon suurempi vaikutus. Tämän vuoksi CMUcam2 voi saavuttaa paljon korkeamman ruutunopeuden, kun OV6620:tä käytetään sen matalaresoluutiotilassa, kuin OV7620:lle saatavilla olevassa yksittäisessä resoluutiotilassa.

Analoginen videolähtö#

Toinen ero näiden kahden anturin välillä on niiden analogisen videolähdön formaatti. OV6620-anturi tuottaa lähdön analogisessa PAL-formaatissa ja OV7620-anturi analogisessa NTSC-formaatissa. Molemmissa tapauksissa lähtö on mustavalkoinen.

On tärkeää huomata, että useimmissa CMUcam2:n käyttötavoissa analogista lähtöä ei käytetä. Tyypillisessä sovelluksessa kuvan käsittelyn tulokset tai raakapikselit lähetetään digitaalisesti sarjaportin kautta isäntätietokoneelle tai mikrokontrollerille, joten tämä ei ole ongelma. Jos kuitenkin reaaliaikainen mustavalkovideo on tärkeä, saatat haluta ottaa analogisen videolähdön formaatin huomioon.

Yhteenveto#

Suosituksemme on, että OV6620-moduuli on paras valinta lähes kaikkiin sovelluksiin, erityisesti kun otetaan huomioon sen alhaisempi hinta ja tällä moduulilla saavutettavissa oleva nopeampi käsittelyaika. Harvinaisissa sovelluksissa, joissa NTSC-yksivärinen analoginen videolähtö vaaditaan, saatat haluta harkita OV7620:tä.

Onko nykyisissä CMUcam2:n laiteohjelmistojulkaisuissa tunnettuja ongelmia?#

Kyllä. Julkaisussa 1.00 ”RM” (Raw Mode) -komento ei toiminut oikein. Julkaisu 1.01 korjaa tuon ongelman.

CMUcam2:n laiteohjelmisto on päivitettävissä, mutta siihen tarvitaan SX-Key (tai yhteensopiva) -ohjelmoija. ROM-kuvien ”hex”-tiedostot ovat saatavilla Lataukset -sivulla.