Korkens Optical Flow sensor

Berätta om dina pågående projekt.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Korkens Optical Flow sensor

Inlägg av Korken »

Godagens kära forumister!

Medans jag väntar på att mina KFly kort ska produceras så tog jag mig tiden att läsa på om Optical Flow sensorer. Optical flow är när man ser hur mycket någonting rör sig i en bild och jag ska ha detta för att se hur fort mitt system rör sig över marken för att få en markant ökning i estimerad x-y precision. Detta är en ganska intressant problem och det finns några lösningar på marknaden, dock är de lite för dyra för min smak, över 1000 kr, och så vill jag gärna lära mig om detta.

Jag tänkte använda en metod som heter "Sum of Absolute Differences" (SAD) för att göra min optical flow algoritm. Det är en block baserad metod som passar väldigt bra för inbyggda system, så det ska bli kul att testa å implementera den. :) Utöver detta så la jag till en höjdmätande sonar på samma kort då jag ändå behöver det för mitt system plus för att konvertera "pixelflöde" till m/s.

Lite HW specifikationer:
  • - STM32F407 MCU @ 168 Mhz med 192 kB RAM
    - ADP322 trippel spänningsregulator för 1.8 V, 2.8 V och 3.3 V. (Ramlade över denna på digikey, såg riktigt trevlig ut!)
    - En MAXSONAR för att mäta höjd upp till 5 meter i 20 Hz
    - OV9650 Camera module, kommer medelvärdesbilda en större bild för att få högre ljuskänslighet. Om denna inte är bra nog så går jag nog över en till Micron kamera som den i Kinect.
    - USB Virtual ComPort och en UART I/O
    - Massa LEDs för status
    - Enkelsidig montering med dubbelsidig design, hade nog kunna halverat storleken om jag hade MCUn på baksidan, men ville ha allt på samma sida för prototypen.

    Pris: ca $40 för ett komplett system om 1 st.

Detta kommer bli riktigt kul tror jag! :)
Korten är beställda och Digikey order lagd på delar, bara att vänta på hårdvaran.

Mvh
Emil Fresk

Obligatoriska renderingar av kretskorten:
Nya som är korrekta:
flow_top2.png
flow_bot2.png
Gamla med fel i:
flow_top.png
flow_bot.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Korken 25 december 2013, 12:44:16, redigerad totalt 2 gånger.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Korkens Optical Flow sensor

Inlägg av Andax »

Mycket intressant projekt. Blir nog en mycket kompetent sensor som går att tuna till diverse uppförande.
Jag köpte en mycket enklare Optical Flow sensor baserad på en ic från on optisk mus för ett tag sedan. Ska försöka skaka liv i den nu under julledigheten. Hade dock inte räknat med öroninflammation i min plan!
Användarvisningsbild
lizerdboy
Inlägg: 1606
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: Korkens Optical Flow sensor

Inlägg av lizerdboy »

Wow det här blir spännande :tumupp:
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens Optical Flow sensor

Inlägg av Korken »

Coolt! :tumupp: Du får berätta hur det går med den sen. :)
Jag kollade på sånna, men de har lite för dålig lågljus funktionalitet samt att de brukar ha problem med rotation, men om du hittar fixar mot detta borde de funka kanon!
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Korkens Optical Flow sensor

Inlägg av JimmyAndersson »

Oj, det här kommer bli kul! :)
Jag har haft lite tankar om en sådan modul, så det ska bli intressant att följa projektet.


Psst:
"En MAXSONAR för att mäta höjd i upp till 20 Hz"

Jag tror att det ska vara något annat där på slutet... :)



Andax:
När du mår bättre så får du gärna göra en tråd om det.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens Optical Flow sensor

Inlägg av Korken »

JimmyAndersson: Tackar, ska försöka hålla ganska hög takt på detta så det hinner bli något innan KFly landar. Men känner jag mig själv kommer jag spräcka den tidsplanen. :lol:

Fixat om sonarn :)
Agwan
Inlägg: 1617
Blev medlem: 15 september 2009, 09:05:14

Re: Korkens Optical Flow sensor

Inlägg av Agwan »

Vad tror du att du kommer att få för framerate? Jag är i behov av en exakt lika dan sensor. Men möjligen högre upplösning och högre framerate än vad som behövs i en Quadrocotper.

Jag kollade på att göra phase correlation mellan bilderna. Man applicerar ett hammingfönster på bilderna, beräknar 2D fourriertransformer på båda. Komplexkonjugerar ena bilden, multiplicerar bilderna elementvis och normerar. Inverstransformerar och vips har man förflyttningen. Väldigt duktig på att hantera brus också. Men det är tungt att göra på en mikroprocessor. Möjligen behöver man inte ha speciellt många pixlar.

Det fina med när de använder möss är att de får en jäkla framerate. Kamera är inte lika enkelt. Men jag är intresserad av att utvärdera ditt kort och möjligen hjälpa till om det behövs bara jag kan övertala min kund att han vill använda den här tekniken. Min tanke är att ersätta ett gyro med en sån här för att öka upplösningen. Tanken är då att titta på något långt bort med kameran genom en kikare och få hög upplösning på det sättet. Rörelsen kommer inte att vara stor men en frekvens på kanske 15 Hz, så jag behöver ganska så hög framerate.
Användarvisningsbild
Greve Hamilton
EF Sponsor
Inlägg: 542
Blev medlem: 4 september 2004, 15:03:35
Ort: GBG

Re: Korkens Optical Flow sensor

Inlägg av Greve Hamilton »

Intressant. Det labbades lite med optical flow i en kurs jag läste. Tyvärr minns jag inte så mycket om deras för- respektive nackdelar, men när jag skummar wikipedia verkar det som att vi implementerade Lucas-Kanade och Horn-Schunck. Dock aldrig "på riktigt", utan bara i Matlab. Men ska bli skoj att se hur hög framerate du kommer få.
gkar
Inlägg: 1453
Blev medlem: 31 oktober 2011, 15:28:29
Ort: Linköping

Re: Korkens Optical Flow sensor

Inlägg av gkar »

Det kommer att käka cycler!

Kolla om din kompilator ger optimal kod, annars skriv innerlopen i assembler och använd USADA8 eller en släkting.
http://infocenter.arm.com/help/index.js ... BJGJD.html
monstrum
Inlägg: 619
Blev medlem: 13 januari 2005, 05:38:32
Ort: Göteborg

Re: Korkens Optical Flow sensor

Inlägg av monstrum »

Hur löser man cancelering av rotation? Alltså den bildförskjutning man får då enheten roterar X- eller Y-axeln sett från kameran. Ifall rotationshastigheten och höjden över marken är känd så går det ju att räkna ut hur stort felet blir så man kan kompensera, men det känns lurigt att få någon precision i det.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Korkens Optical Flow sensor

Inlägg av LHelge »

Har du helt missat korkens andra projekttråd?
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Korkens Optical Flow sensor

Inlägg av blueint »

Menar du denna tråd? Korkens styrkort för multirotors (KFly) - Nu med Blogg!

Intressant projekt förresten :tumupp:

Undrar dock hur mycket processorkraft som går åt dock..
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Korkens Optical Flow sensor

Inlägg av Magnus_K »

Kan man bli svartsjuk på någon annans kunskap så är jag det... Jäkligt kul att följa dina projekt, Korken. :tumupp:
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Korkens Optical Flow sensor

Inlägg av Andax »

Kamera-modulen kan ju läsa ut bilder i olika upplösningar. Gissar att den lågpassfiltrerar om man läser ut en lågupplöst bild. Tror den lägsta upplösningen är 352x288. Det räcker säkert för en hyfsad optical flow estimering. Då har man ju bara 100kPixel mot 1.3MPixel vid full upplösning vilket minskar beräkningsbördan ganska mycket.
Sedan går det ju också att köra region-of-interest utläsning. Då kan man ju ta små patchar som ligger optimalt för det man vill skatta fram.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens Optical Flow sensor

Inlägg av Korken »

Oj vad det har skrivits i denna tråd över jul då. :)
Ska försöka svara på lite frågor och korrigera lite missförstånd.
Jag uppdaterade bilderna i första inlägget också, självklart han ett fel smyga sig in men jag hann fixa det. :)

Agwan:
Jag siktar på samma framerate som kameran kan ge ut, dvs 120 fps.
Jag ramlade över ett projekt har gjort en liknande sensor: https://pixhawk.ethz.ch/px4/modules/px4flow och de får ut 240 fps ur sitt system med samma metod.
Så tror det inte ska vara några problem med ganska hög framerate. :) Kommer nog ha en bild på omkring 80 x 80 pixlar.

gkar:
Jodå, jag har planer på att skriva alla innerloopar i ASM, annars kommer det nog inte att gå. :)

monstrum:
Det kan jag kompensera för från KFly systemet.
Funderar dock på att lägga till ett gyro så kan man ha det som ett stand-alone system också.

Magnus_K:
Tackar! :)

Andax:
Jag kommer nog ta en QCIF frame och medelvärdesbilda några block i bilden för att få omkring 50x50 till 80x80 pixel bilder. Detta ska räcka mer än väl för en SAD algoritm.
Varför jag valde en 1.3MPixel kamera är för att de är billiga och enkla att få tag på, sendan om man väljer mindre bild så kan de komma upp i väldigt hög frame rate. :)
Skriv svar