Vanliga frågor#
Vilka är skillnaderna mellan CMUcam1 och CMUcam2?#
Introduktion#
CMUcam2 inkluderar all funktionalitet hos CMUcam1 i en förbättrad form och mycket mer. Nedan beskriver vi kort den nya funktionaliteten och skillnaderna. Du kanske också vill titta på svaret på frågan om hur man avgör om man ska köpa en CMUcam1 eller CMUcam2.
Hårdvaruöversikt#
Det finns två huvudsakliga hårdvaruskillnader som är viktiga: CMUcam2 använder en annan processor än CMUcam1 och CMUcam2 innehåller ett bildbuffertchip medan CMUcam1 inte gör det.
CMUcam2 använder SX52-processorn och CMUcam1 använder SX28-processorn, båda är från SX-processorserien från Ubicom. I båda fallen körs processorn på 75 MHz så det finns ingen skillnad i processorhastighet eller beräkningskraft. Fördelarna med SX52-processorn är att den har mer RAM (262 mot 136 byte), mer ROM (4096 mot 2048 ord) och fler I/O-pinnar. Mer RAM och ROM innebar att vi kunde skriva mer komplex kod vilket gjorde att vi kunde inkludera mer funktionalitet i CMUcam2. Det större antalet I/O-pinnar innebar att vi hade fler pinnar över för andra funktioner – som fler servon, fler konfigurationsbyglar osv.
Den stora skillnaden mellan de två systemen är att CMUcam2 inkluderar bildbuffertchippet AL422B från AverLogic medan CMUcam1 inte gör det. Detta gör att CMUcam2-hårdvaran snabbt kan fånga en enda komplett bild och lagra den i bildbuffertminnet. Detta har ett antal fördelar:
Mer komplex bearbetning. I CMUcam1 måste processorn bearbeta pixeldataströmmen i realtid allteftersom den matas ut av kameramodulen. Denna design bidrog till att minska systemhårdvarans komplexitet och kostnad. Den begränsade dock bearbetningens komplexitet eftersom den måste utföras i realtid mellan pixlar eller mellan bildrader. Eftersom processorn på CMUcam2 kommer åt pixeldata från bildbufferten i sin egen takt kan den utföra mer komplex bearbetning per pixel.
Snabbare bearbetning. Baksidan av att inte behöva förbli synkroniserad med kameramodulens pixelström är att processorn inte behöver vänta på kameramodulen när den behöver pixeldata. Att eliminera denna väntetid innebär att CMUcam2-processorn faktiskt kan bearbeta en bild snabbare än vad CMUcam1 kan, trots att processorn inte är kraftfullare.
Flera operationer per bild. Eftersom bilden som lagras i bildbufferten inte ändras kan CMUcam2 utföra flera operationer på en enda bild. Så till exempel kan rörelse detekteras, regionstatistik beräknas och flera färger spåras, allt på en enda bild.
Bättre bilddumpar. Eftersom CMUcam1 var tvungen att synkronisera de överförda bilddumpdata med kameramodulens dataström kunde den endast skicka en kolumn data per kamerabild. Detta innebar att olika delar av bilden fångades vid olika tidpunkter, så snabbt rörliga objekt smetades ut över CMUcam1:s bilddumpar. Eftersom CMUcam2 överför bilden från de fasta data i bildbufferten är detta inte längre ett problem.
Bättre hantering av lägre baudhastigheter. Att ha en bildbuffert innebär också att tidsstyrningen för de data som CMUcam2 överför helt kan frikopplas från tidsstyrningen för de data som läses från kameramodulen. Detta innebär att CMUcam2-data från bilddumpar och bitmapp-radlägen inte ändras när kommunikationens baudhastighet ändras; CMUcam2 kommer att kommunicera samma bild- eller bitmappsdata till värdprocessorn oavsett baudhastighet. Antalet bilder som bearbetas per sekund kan dock fortfarande ändras med långsammare baudhastigheter eftersom den ändå så småningom måste slutföra sändningen av alla data från en bild innan de följande kan bearbetas.
Bättre drift av kameramodulen. För att processorn i CMUcam1 skulle kunna förbli synkroniserad med dataströmmen från kameramodulen måste kameramodulens bildhastighet sänkas till 17 fps. Bildbufferten som CMUcam2 använder gör att vi kan driva kameramodulen vid full bildhastighet. En fördel med detta är att kamerans automatiska exponerings- och vitbalansjustering kan arbeta snabbare eftersom den bara kan göra en enda justering per bild och nu finns det fler bilder per sekund. Den andra fördelen är att den analoga svartvita videoutgången (som endast fungerar när modulen arbetar vid full bildhastighet) kan användas medan CMUcam2 bearbetar bilddata, vilket inte var fallet med CMUcam1.
Funktionsöversikt#
CMUcam2 implementerar all funktionalitet hos CMUcam1 och lägger även till en hel del ny funktionalitet. Följande är en sammanfattning.
Färgspårning. CMUcam2 implementerar färgspårning precis som CMUcam1 gjorde. Liksom i CMUcam1 implementeras ett valfritt bitmapp-radläge som överför en bitmapp av de spårade pixlarna. Det finns även några förbättringar. Det finns ett nytt valfritt radläge som ger statistik över spårade pixlar för varje rad, inklusive medelvärdet samt de minsta och största positionerna för de spårade pixlarna. Detta är mycket användbart för linjeföljning. Det finns också ett nytt valfritt läge där tolkningen av spårningsgränserna kan inverteras. I detta läge betraktas pixlar utanför spårningsgränserna som ”bra”. Detta är användbart för att spåra ett objekt mot en homogen bakgrund – tänk på specialeffekter med blue screen. Det är också användbart för att upptäcka kanter när pixeldifferentiering (beskrivs nedan) är aktiverad. Brusfiltreringsalternativet har också förbättrats för att möjliggöra justering av mängden filtrering för brusiga situationer.
Bildstatistik. CMUcam2 implementerar beräkningen av medelvärdes- och variationsstatistik för bildregioner precis som CMUcam1 gjorde. Liksom i CMUcam1 implementeras ett valfritt radläge som överför medelvärdet för varje rad i bilden. Det finns också ett nytt förbättrat radläge som valfritt inkluderar variationsinformation rad för rad.
Rörelsedetektering. Helt nya i CMUcam2 är kommandon för rörelsedetektering (bildskillnad). Dessa kommandon kan användas för att instruera CMUam2 att fånga en lågupplöst version av den aktuella bilden och kontinuerligt jämföra denna med nya inkommande bilder. Paket från CMUcam2 rapporterar om någon del av bilden ändras mer än en angiven mängd, vilket potentiellt skulle indikera rörelse. Dessa paket kan beskriva tyngdpunkten och utbredningen av de ändrade bildblocken eller tillhandahålla en bitmapp över vilka bildblock som har ändrats. Detta läge kan också kombineras med pixeldifferentiering (beskrivs nedan) för att göra rörelsedetekteringen mer robust mot förändringar i belysningen.
Histogrambildning. Helt nya i CMUcam2 är kommandon för histogramberäkning. Dessa kommandon kan användas för att fånga ett endimensionellt histogram av en enda färgkanal med en upplösning på upp till 28 fack. Histogram ger användbar information som sammanfattar en bilds utseende. Med ytterligare programmering på värdprocessorn kan denna information användas för att hjälpa till att upptäcka hinder, specifika objekt eller platser.
Bildfönstring. CMUcam2 implementerar möjligheten att begränsa bearbetningen till en liten region (delfönster) av hela bilden precis som CMUcam1 gjorde. I CMUcam2 är denna funktion ännu mer användbar eftersom den kan användas för att noggrant undersöka delfönster av en enda bild som lagras i bildbufferten. Att minska den vertikala fönsterstorleken kan också användas för att kraftigt öka antalet bilder som bearbetas per sekund genom att kraftigt minska antalet pixlar som behöver bearbetas av CMUcam2.
Anpassning av utmatningspaket. CMUcam2 implementerar mycket flexiblare paketanpassning än CMUcam1. Det finns kommandon som gör att användaren kan anpassa varje paket som genereras av varje kommando till att endast returnera de värden som behövs för en viss tillämpning. Detta kan i många situationer kraftigt minska mängden data som överförs till och bearbetas av värdprocessorn.
Pixeldifferentiering. Helt nytt i CMUcam2 är ett valfritt pixeldifferentieringsläge. I pixeldifferentieringsläge förbehandlas pixlar innan de skickas vidare till resten av CMUcam2-koden. Detta förbehandlingssteg skickar nya pixelvärden till resten av koden vilka är skillnaden mellan det aktuella pixelvärdet och det föregående. I princip filtrerar detta bort allt utom vertikala kanter i bilden. Detta är en mycket kraftfull operation och kan med ytterligare programmering på värdprocessorn användas för att underlätta hinderdetektering och linjeföljning.
Nedsampling. Helt nytt i CMUcam2 är ett valfritt nedsamplingsläge. I nedsamplingsläge minskar CMUcam2-programvaran upplösningen på kamerabilden innan den bearbetas. Fördelen med detta är att det finns många färre pixlar att bearbeta och överföra. Eftersom det görs i programvara resulterar nedsampling endast i en mycket liten ökning av bearbetningshastigheten. Den stora fördelen är att mängden överförda data minskar. När det gäller en dumpad bildruta kan nedsampling enkelt minska datastorleken och därmed minska överföringstiden med en faktor på 2 eller 4 eller mer. På samma sätt kan storleken på bitmappsbilden minskas kraftigt när bitmapp-radlägen används, vilket minskar mängden data som en värdprocessor måste ta emot och bearbeta.
Servostyrning. Den ursprungliga CMUcam1 stödde endast en enda servo och den servon fungerade endast korrekt vid specifika baudhastigheter och när CMUcam1 var i streaming-läge. CMUcam2 stöder upp till fem servon. Servostyrningskoden i CMUcam2 är implementerad som en bakgrundsprocess så att servoutgångarna alltid förblir stabila och den kan användas som vilken annan servostyrenhet som helst. Dessutom kan CMUcam2 konfigureras för att automatiskt styra pan- och tilt-servon. I detta läge uppdaterar CMUcam2 servopositionerna varje gång den kommenderas att beräkna färgspårningsdata.
Strömbesparing. Helt nya i CMUcam2 är strömbesparingslägen. I vissa tillämpningar behöver CMUcam2 inte kontinuerligt bearbeta bilddata. I dessa fall kan CMUcam2 kommenderas att gå in i en mängd olika avstängnings- (eller vilo-) lägen. Inga spårningskommandon eller servostyrning sker när CMUcam2 är i ett av dessa lägen. Att skicka ett enkelt seriellt kommando väcker kameran igen på några millisekunder.
Vad är skillnaden mellan att använda OV6620- och OV7620-modulen med CMUcam2?#
Introduktion#
Vad gäller kapacitet är OV7620-sensorn en sensor med högre upplösning (664x492 råa sensorpositioner) än OV6620-sensorn (356x292 råa sensorpositioner). Men detta faktum har mycket lite att göra med de frågor som uppstår när man överväger vilken av dessa sensorer som bäst matchar din tillämpning av CMUcam2. Nedan följer en lista med överväganden.
Upplösning#
Även om det är sant att OV7620-sensorn är en sensor med högre upplösning än OV6620, stöder CMUcam2 på grund av den fasta minnesstorleken på CMUcam2:s bildbuffert endast en enda upplösning på 160x239 för OV7620-sensorn. CMUcam2 stöder ett lågupplösningsläge på 88x143 och ett högupplösningsläge på 176x255 för OV6620-sensorn. Så genom att använda OV6620 i högupplösningsläge kan man faktiskt uppnå drift med högre upplösning än det enkla upplösningsläge som finns för OV7620-sensorn.
Bildhastighet#
En annan upplösningsrelaterad fråga är maximal bildhastighet vid kontinuerlig bearbetning av en ström av bilder. Ju lägre upplösning, desto färre pixlar behöver bearbetas och desto högre bildhastighet kan uppnås. Även om en ökning av bildhastigheten kan uppnås genom att ändra nedsamplingshastigheten och den virtuella fönsterstorleken, har det faktiska antalet pixlar som sensorn matar ut en mycket större effekt. På grund av detta kan CMUcam2 uppnå en mycket högre bildhastighet när OV6620 körs i sitt lågupplösningsläge än det enkla upplösningsläge som finns för OV7620.
Analog videoutgång#
En annan skillnad mellan de två sensorerna är formatet på deras analoga videoutgång. OV6620-sensorn matar ut i analogt PAL-format och OV7620-sensorn matar ut i analogt NTSC-format. I båda fallen är utsignalen svartvit.
Det är viktigt att notera att den analoga utgången i de flesta användningar av CMUcam2 inte kommer att användas. I en typisk tillämpning överförs resultaten av bildbearbetningen eller de råa pixlarna digitalt via den seriella porten till värddatorn eller mikrokontrollern, så detta är inget problem. Men om live svartvit video är viktigt kan du behöva ta hänsyn till formatet på den analoga videoutgången.
Sammanfattning#
Vår rekommendation är att OV6620-modulen är det bästa valet för nästan alla tillämpningar, särskilt med tanke på dess lägre kostnad och den snabbare bearbetningstid som kan uppnås med denna modul. I de sällsynta tillämpningar där NTSC monokrom analog videoutgång krävs kan du överväga OV7620.
Finns det några kända problem med de aktuella CMUcam2-firmwareutgåvorna?#
Ja. I 1.00-utgåvan fungerade inte kommandot ”RM” (Raw Mode) korrekt. 1.01-utgåvan åtgärdar det problemet.
Firmware i CMUcam2 är uppgraderbar, men en SX-Key- (eller kompatibel) programmerare behövs för att göra det. ”hex”-filerna för ROM-avbildningarna finns tillgängliga på sidan Nedladdningar.