Teknisk dokumenaion Oscar Carlsson Version 1.0 Saus Granskad Godkänd Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 1
PROJEKTIDENTITET Reglereknisk projekkurs WalkCAM 2007/VT Linköpings ekniska högskola ISY Namn Ansar Telefon E-pos Henrik Johansson Projekledare 0703 50 53 26 henjo828@suden.liu.se Andreas Fälskog Dokumenansarig 0706 66 70 55 andfa970@suden.liu.se Miun Dey Tesansarig 0707 41 37 84 mide726@suden.liu.se Lars Furedal Design 0703 34 51 35 larfu592@suden.liu.se Oscar Carlsson Implemenaion 0705 33 08 17 oscca558@suden.liu.se E-poslisa för hela gruppen: walkcam@bredband.ne Hemsida: hp://walkcam.hopo.org Kund: SAAB Aeroech 581 82 LINKÖPING kundel. 0132 31 000 fax: 0132 98 449 Konakperson hos kund: Hans Bohlin 0132 31 539 0706 74 42 91 hans.bohlin@saabgroup.com Besällare: Jeroen Hol B BV2A:541 013 28 28 03 hol@isy.liu.se Kursansarig: Anders Hansson B B2A:550 0132 81 681 hansson@isy.liu.se Handledare: Henrik Ohlsson B B2A:526 013 28 23 06 ohlsson@isy.liu.se Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 2
Innehåll 1 INLEDNING... 5 1.1 PARTER... 5 1.2 BAKGRUND... 5 1.3 DISPOSITION... 5 2 SYSTEMÖVERSIKT... 6 2.1 SYSTEMBESKRIVNING... 6 2.2 UTVECKLINGSMILJÖ... 6 2.3 KOORDINATSYSTEM... 6 2.4 MODULÖVERSIKT... 7 2.4.1 Daainsamlingsmodul... 8 2.4.2 Beräkningsmodul... 8 2.4.3 Presenaionsmodul... 8 3 DATAINSAMLINGSMODUL... 9 3.1 GRÄNSSNITT... 9 3.2 DETALJERAD DESIGN... 9 3.2.1 Hårdara... 9 3.2.2 Mjukara... 11 4 BERÄKNINGSMODUL... 13 4.1 GRÄNSSNITT... 13 4.2 DETALJERAD DESIGN... 13 4.2.1 Opical flow... 13 4.2.2 Kalibrering... 18 4.2.3 Odomeri/dödräkning... 18 5 PRESENTATIONSMODUL... 21 5.1 GRÄNSSNITT... 21 5.2 DETALJERAD DESIGN... 21 5.2.1 Anändargränssni... 21 5.2.2 Resulapresenaion... 22 6 REFERENSER... 23 Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 3
Dokumenhisorik ersion daum uförda förändringar uförda a granskad 0.1 2007-05-07 Försa ukas AF HJ LF OC HJ LF 0.2 2007-05-08 Korrigera enl. granskning a 0.1 OC 0.3 2007-05-12 Uppdaeringar och illägg i beräkning och i referenser OC AF 0.4 2007-05-13 Appendix uppdaera med rä funkionsanrop sam räad efer inspekion OC LF HJ 1.0 2007-05-15 Upphöjd ill 1.0 ill leerans HJ Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 4
1 Inledning Den ekniska dokumenaionen är skrien i syfe a möjliggöra idareueckling konsrukion underhåll felsökning och anändning a de personnaigeringssysem som uecklas a projekgruppen WalkCAM id Linköpings uniersie i samarbee med SAAB Aeroech under åren 2007. 1.1 Parer De parer som ingår i projeke är: kund besällare examinaor projekgrupp handledare och experer. Kund: Hans Bohlin (SAAB Aeroech) Besällare: Jeroen Hol (ISY Reglereknik) Examinaor: Anders Hansson (ISY Reglereknik) Projekgruppen: Andreas Fälskog Henrik Johansson Miun Dey Lars Furedal Oscar Carlsson Handledare: Henrik Ohlsson (ISY Reglereknik) Exper: Peer Wallman (SAAB Aeroech) 1.2 Bakgrund Projeke syfar ill a ara e försa seg i a uärdera en del i e ny naigaionssysem å SAAB Aeroech. Uärderingen är menad a klargöra issa grundläggande möjligheer och begränsningar med kamerabaserad odomeri. Uärderingen ska kunna anändas som del i beslusmaerial gällande olika ekniker som kan kombineras genom sensorfusion. Syfe är a skapa e personnaigeringssysem för anändning a exempelis blåljusmyndigheer och miliär. 1.3 Disposiion Dokumene ugår från den srukur som uecklades för projeke i designspecifikaionen [2] och följer e upplägg som är förenlig med LIPS-modellen [1] som har anäns under hela projeke. Inledningsis preseneras den generella srukuren för produken och senare beskris den dealjerade designen. I appendix A preseneras sluligen de funkioner som förekommer i programkoden. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 5
2 Sysemöersik Syseme är indela i mindre delsysem för a underläa en uppdelning a arbee sam för a göra produken mer öerskådlig och läare a idareueckla. 2.1 Sysembeskrining Sysemes huudsakliga uppgif är a samla in daa från kameror monerade på en ryggsäcksram i rörelse. Efer dea skall nödändiga beräkningar uföras för a besämma posiion och rikning. Sluligen preseneras resulae a rörelsen grafisk off-line. 2.2 Uecklingsmiljö All daa för bearbening sparas på en PC. Alla beräkningar och presenaionen sker på en annan PC. Beräkningarna görs i Malab med Image Processing Toolbox och Signal Processing Toolbox insallera. 2.3 Koordinasysem För beräkningar anänds å olika koordinasysem i syseme. E som följer ryggsäcksramen och e markfixera koordinasysem. Figur 2-1 isar de ryggsäcksfixerade syseme. Figuren isar ryggsäcksramen uppifrån med y-axeln framå. C V beecknar änser kamera och C H höger kamera. Origo placeras mi emellan kamerorna. N φ y E ω C V x C H Figur 2-1 Ryggsäcksfixera koordinasysem Figur 2-2 Markfixera koordinasysem Figur 2-2 isar de markfixerade koordinasyseme. N pekar mo norr och E mo ös. Vinkeln φ anger ryggsäcksramens aiyd i förhållande ill norr posii i rikning mours. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 6
2.4 Modulöersik Figur 2-3 Gro sysembeskrining a WalkCAM Ingående delsysem har begränsas ill deras huudsakliga arbesområden och följande moduler har idenifieras: Daainsamlingsmodul Beräkningsmodul Presenaionsmodul Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 7
2.4.1 Daainsamlingsmodul Daainsamlingsmodulen besår a å kameror som är monerade på en ryggsäcksram. Kamerorna är kopplade ill en PC som också den är monerad på ryggsäcksramen. Uppgifen för denna modul är a samla in ideosrömmar från de båda kamerorna och spara ner dessa ill daorn. Daorn dris på 220V och baerierna som skall dria modulen är å sycken 12- ols. Dea innebär a spänningen måse omandlas ill 220V från 24V ilke görs med en spänningsomandlare. 2.4.2 Beräkningsmodul Beräkningsmodulen ugörs a en PC med Malab. Videosrömmarna imporeras från daainsamlingsmodulen och analyseras sedan med Opical Flow. Därefer uförs beräkning a ryggsäcksramens hasighe och inkelhasighe. Odomerin beräknar den förflyade sräckan och de görs genom a inegrera den skaade hasigheen. I dödräkningen fås den nya posiionen fram genom a addera den förflyade sräckan som har fås genom odomerin. Med hjälp a e kalmanfiler haneras mäsörningar och en felmarginal för beräkningarna räknas u. Ur dea fås skaningar a ryggsäcksramens posiion och hasighe. En a modulens ikigase uppgifer är a den ska kunna göra en bra skaning a noggrannheen i posiionsberäkningen. 2.4.3 Presenaionsmodul Presenaionsmodulen besår a e grafisk gränssni för a isa beräkna resula på. Tillryggalagd äg och felmarginal i posiion är den primära informaionen som isas. Modulen har äen som uppgif a leerera daa ill beräkningsmodulen i form a al a ideosrömmar som analysen ska ugå från. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 8
3 Daainsamlingsmodul 3.1 Gränssni Daainsamlingsmodulen är en hel frisående modul som anänds för a samla in filmerna som anänds a beräkningsmodulen. Filmerna är i filformae Mulipage TIFF ilke är en bildfil med filändelsen TIF. TIF-filen innehåller många sidor där arje sida är en bild. Efersom modulen besår a å kameror sparas filmerna ner i å separaa filer en från arje kamera. Filmen som sparas ner från den änsra kameran är döp ill änserkamera.if filmen från den högra ill högerkamera.if. De är dessa filer som anges i presenaionsmodulen för a uföra beräkningarna. 3.2 Dealjerad design 3.2.1 Hårdara Delarna i denna modul sier på en ryggsäcksram enlig Figur 3-1. Figur 3-1 Placering a komponener på ryggsäcksramen För a dria daorn måse spänningen från å 12-ols baerier omandlas ill 220V dea görs som i Figur 3-2. Tå 12-ols baerier seriekopplas så a de illsammans genererar 24V. Kamerorna dris på 12V ar och kopplas direk ill ena baerie. Daorn kopplas in på 220V från spänningsomandlaren som i sin ur dris på 24V. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 9
Figur 3-2 Srömförsörjning Kamerorna är gråskalekameror a märke Pulnix med benämningen TMC-1402 och har en max upplösning på 1392x1040 pixlar sam en insamlingsak på maximal 96 bilder per sekund enlig dokumenaionen. Dessa kameror har ubybar objeki där skärpa och ljussyrka kan sällas in. De objeki som illhandahölls a kunden har e synfäl på 34x24 cm då kamerorna är 84cm oanför marken. Kamerorna kopplas in ill daorn ia e PCI-kor från Cognex e så kalla frame-grabberkor. Då kamerorna är a äldig hög kalie högre än ad som behös för a kunna uföra beräkningarna är de möjlig a simulera sämre kameror för a se ad som kräs för a uföra beräkningarna. Då de ine finns någon möjlighe a ha en skärm inkopplad under iden då inspelningen pågår anänds e WLAN-kor. Kore som sier i moduldaorn gör de möjlig a syra moduldaorn med hjälp a en bärbar daor i e så kalla daor-ill-daor näerk. För a kunna sköa moduldaorn ia den bärbara daorn har programme Remoe Deskop anäns. Programme är inbygg i Windows och gör a den bärbara daorn kan göra all som skulle kunna ha gjors då angenbord mus och skärm ar inkopplade. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 10
3.2.2 Mjukara För a uppnå så bra beräkningsresula som möjlig måse insamlingsaken (framerae) ara så hög som möjlig. I programme AccuPixel går de a sälla in bl.a. Shuer Mode Shuer Swich och Scanmode ilke ger skillnader i insamlingsaken se Figur 3-3. Figur 3-3 AccuPixel programme Efer esningar uppnår kamerorna en insamlingsak på ca 28 bilder per sekund om Scanmode är insälld på PS 500L och en insamlingsak på ca 49 bilder per sekund då Scanmode är insäll på PS 250L. Då Scanmode är insälld på PS 500L och PS 250L anänder kameran en bild insamling som kallas Parial scan. Parial scan innebär a endas de 500 resp 250 miersa linjerna från kamera bilden samlas in ilke ger en upplösning på 1392x500 resp. 1392x250. Enlig dokumenaionen ill kamerorna [7] ska insamlingsaken ara 56 bilder per sekund då Scanmode är insälld på 500L och 98 bilder per sekund då Scanmode är insälld på 250L. Efersom bilden endas blir 1392x250 pixlar sor ilke ger e synfäl på 34x6 cm då PS 250L anänds anses PS 500L ara den bäsa insällningen. Shuer Mode sälls i läge Manual och sedan får Shuer Swich och Gamma Knees sällas in för a ge en skarp bild id rörelse uan a bilden blir för mörk. Uomhus id solsken kan Shuer Swich 1/500 med fördel anändas. Programme som anänds för a samla in ideosrömmarna är skapa med hjälp a QuickBuild som är en del i PCision-serien från Cognex. I QuickBuild skapades å så kallade Cogjob där Cogjob1 hör ihop med den änsra kameran och Cogjob2 med den högra. Varje Cogjob beskrier e flöde på ad som ska göras med arje bild som samlas in. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 11
Figur 3-4 QuickBuild Job edior Varje bild som fångas in a kamerorna går förs in i CogAffineTransform och därefer in i CogImageFile där den sparas som en sida i TIFF filen ilke kan ses i Figur 3-4. I CogAffineTransform skalas bilden ner ill 1/10 del a dess upplösning ilke blir 139x50 pixlar. Dea görs för a få ner sorleken på filen som alla bilder sparas ner ill. Tesningar har isa a om sorleken är för sor appas issa bilder bor ilke får förödande konsekenser när beräkningarna ska göras. I CogAffineTransform rids äen bilden 90 grader respekie 270 grader mosols för höger respekie änser kamera. Bilderna rids för a få rörelserna i bilden a gå å samma håll efersom kamerorna sier på arsin sida på ryggsäcksmesen. För a göra en körbar fil a de filer som skapas QuickBuild så anänds programme Applicaion Wizard. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 12
4 Beräkningsmodul 4.1 Gränssni Beräkningsmodulen anropas funkionsis från presenaionsmodulens huudfunkion som körs då Sar-knappen i anändargränssnie rycks in. Den försa delen i beräkningsmodulen som iniieras id en beräkning är de funkioner som hanerar beräkningarna a de opiska flöde dessa iniieras a funkionen opical_flow som anropar ge_opical_flow för respekie filmfil. ge_opical_flow beräknar hasigheer mellan de närliggande bilderna i filmen och anale beräkningar blir e mindre än anale bilder om ine någo anna anges som exra argumen ill funkionen. För beräkning a opisk flöde anropas från ge_opical_flow funkionen calc_flow. Beräkna opisk flöde filreras med funkionen filer_flow arefer hasigheen beräknas med funkionen esimae_elociy. De beräknade hasigheerna för de båda filmerna reurneras ia opical_flow ill presenaionsmodulens huudfunkion för a kalibreras i funkionen ransform_flow2el. De kalibrerade hasigheerna för de båda kamerorna ges sedan som argumen ill funkionen odomeri som räknar samman hasigheerna ill illryggalagd sräcka uryck i de markfasa koordinasyseme enlig Figur 2-2. I funkionen odomeri ingår äen en kalmanfilrering där sörningar och modellfel skaas och reurneras som fel i slugilig posiion och sammanlagd sräcka. När illryggalagd sräcka och färdäg inklusie felskaningar reurneras ill presenaionsmodulen redoisas resulae för anändaren. 4.2 Dealjerad design Modulen för beräkning a färdägen uifrån ideosrömmarna som daainsamlingsmodulen producerar kan delas in i re delar. Dessa delar har benämns Opical flow Kalibrering sam Odomeri och beskris uförligare nedan. 4.2.1 Opical flow Den del a beräkningsmodulen som kallas Opical Flow beräknar ine bara de opiska flöde uan anänder äen de opiska flöde ill a beräkna kamerans hasighe relai marken. Delmodulen besår allså a å delar dels beräkning a opiska flöde och dels beräkning a kamerans hasighe. De opiska flöde kan både ses som pixlarnas hasigheer och som pixlarnas förflyning mellan å bilder. Efersom algorimerna ine e någo om hur lång id som gå mellan bilderna ore de naurligare a ala om förflyningar. I dea dokumen förekommer båda synsäen efersom de gör de i den eori som finns i ämne. De skall sägas a kamerans hasighe i dea skede ine mosarar erklig hasighe uan en förflyning i anal pixlar. Omandlig ill erklig hasighe görs i kalibreringen. 4.2.1.1 Algorim för beräkning a opisk flöde För beräkning a de opiska flöde har å olika yper a algorimer esas. Den ena ypen är s.k. deriaameoder och den andra baseras på beräkningar i frekensplane. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 13
4.2.1.1.1 Deriaameoder Deriaameoderna baseras på beräkning a bildernas pariella deriaor a inensieen i x- led y-led sam i ids-led. Bilderna som anänds är gråskalebilder där inensieen I arierar från sar (I = 0) ill i (I = 255). Efersom bildinformaionen är diskre så beräknas deriaorna som differenser enlig: [5] I x I y (x y) = I (x y) = I 1 1 (x y) I (x+ 1 y) 1 (x y) I (x y + 1 ) 1 I (x y) = I1(x y) I 2(x y) Förflyningen h i x-led och y-led beräknas sedan som: I (x y) h (x y) = x I (x y) x I (x y) h (x y) = y I (x y) y Förflyningen beräknas allså genom linjär exrapolaion från punken där deriaan beräknas. Den sreckade kuran i Figur 4-1 isar a de generell se ine är någon bra approximaion. Deriaan kan ariera krafig från en pixel ill en annan. Linjär exrapolaion skulle däremo fungera bra om deriaan ar linjär under hela den förflyade sräckan. Dea kan åsadkommas genom smoohing a bilden ds. någon form a medelärdesbildning som rundar a den spesiga kuran se heldragen kura i Figur 4-1. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 14
Inensie LiTH 120 110 med smoohing uan smoohing 100 90 80 70 60 0 5 10 15 20 25 30 35 pixel i x-led Figur 4-1 - Inensie med och uan smoohing En nackdel med smoohing är a man appar i precision i beräkningarna. Precisionen kan emellerid förbäras genom a man efer en beräkning förflyar ena bilden enlig den beräknade förflyningen och uför en ny beräkning. Den nya förflyningen adderas sedan ill den gamla och ju fler ieraioner man gör deso bäre blir skaningen. 4.2.1.1.2 Frekensmeoder Med frekensmeoder menas a man öergår ill frekensdomänen för a analysera förflyningen mellan å bilder. I korhe går algorimerna u på a man suderar fasskillnaden i de båda bildernas Fourierransformer. Anag a i har å bilder i 1 i 2 där i 2 är en ranslaerad kopia a i 1 allså ingen roaion. i2( x y) i1 ( x a y b) En å-dimensionell diskre Fourierransform beräknas för respekie bild och relaionen mellan respekie fourierransformer blir då: [6] I i( kalb) 2 ( k l) I1( k l) e där (k l) är koordina i ransformdomänen. Efer a ha beräkna Fourierransformer (.ex. med ff2 i Malab) beräknas följande ko som kallas NCS (normalized cross power specrum) för a hia fasskillnaden mellan bilderna: [6] I I NCS I I I e I I i( kalb) i( kalb) 1 2 1 1 1 1 i( kalb) e i( kalb) 1I 2 I1I1 e I1I1 e Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 15
Urycke oan isar a de enda som blir kar efer förkorningar är exponenialurycke ilke beskrier fasskillnaden. Under förusäning a bildinformaionen är koninuerlig så blir inersransformen a NCS en dirac i (ab) och koordinaerna för diracen ger allså förflyningen. Nu är ine bilderna koninuerliga och de får ill följd a diracen sprids u ill närliggande pixlar och resulae blir ine lika ydlig.[6] Tekniken är illalande då de går snabb a beräkna och de behös förmodligen inga ieraia beräkningar. Äen denna meod kan förbäras genom förbehandling a bilderna med.ex. smoohing. 4.2.1.1.3 Uärdering a algorimer Projeke har uärdera re olika algorimer: LucasKanade En aancerad form a deriaameod PhaseBased En aancerad frekensbaserad meod Deriaes En enkel form a deriaameod LucasKanade och PhaseBased har ine programmeras a projeke uan hämas från inerne källhänisning finns under beskrining a respekie malab-funkioner. LucasKanade har modifieras en aning för a passa illämpningen. Den enkla Deriaes som projeke programmera isade sig ara allför enkel och klarar ine a a besämma förflyningen mellan bilderna på e illfredsällande sä. Den algorim som anäns mes och ge bäs resula är LucasKanade. Den uför både smoohing och ierai beräkning. Den beräknar äen flöde på flera pyramidniåer a bilderna ds beräkningar görs äen på rekursi nedsamplade bilder. En nedsampling innebär a bildens upplösning haleras i x- och y-led. Beräkning på olika pyramidniåer gör a noggrannheen blir bra inom e sörre hasighesinerall. Pyramidbilden med lägs upplösning fångar upp sora förflyningar medan den med högs upplösning fångar upp små förflyningar. PhaseBased isade efer inledande eser ine lika bra resula som LucasKanade och projeke alde därför a gå idare med den senare. Dea har få ill följd a denna algorim ine esas i någon sörre usräckning och projeke kan därför ine förkasa den. Tärom så rekommenderar projeke en grundlig uärdering efersom a den förmodligen är snabbare än LucasKanade då inga ieraia beräkningar behös. En änkbar bris med de algorimer som esas kan ara a de anar a förflyningen mellan å bilder är en ren ranslaion ds ingen roaion. Både deriaameoden och frekensmeoden kan emellerid uökas ill a hanera roaioner och dea kan eenuell leda ill bäre skaningar. 4.2.1.2 Beräkning a kamerans hasighe När de opiska flöde beräknas åersår a ur flöde beräkna hur kameran har rör sig i förhållande ill marken. Kamerorna anas sia på konsan höjd öer marken och ha egenskaper såsom skärpa och ljussyrka konsana. Då kan förändringen mellan å bilder i en Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 16
sekens beskrias som en ranslaion och en roaion kring bildens cenrum. Varje pixel i bilden kommer få en förflyning orsakad a dels ranslaionen och dels roaionen. Förflyning orsakad a roaionen ges a roaionens inkelhasighe ω på ilke asånd r från roaionscenrum som pixeln befinner sig sam hur lång id T de är mellan bilderna. Förflyningen ges allså a ωrt. De som ska besämmas är bildens ranslaionsrörelse. Teoreisk är de möjlig a äen besämma inkelhasighe ur en kameras opiska flöde men de isar sig fungera dålig då r är så lie som de blir i en bild. Den maximala inkelhasigheen som en person med ryggsäck kan änkas uppnå illsammans med den kora id som går mellan å bilder (1/30s) gör a roaions-bidrage kan försummas. Translaionsrörelsen beräknas isälle som medelärde a arje pixels förflyning. Ännu bäre resula kan fås om de finns e må på noggrannheen hos arje pixels beräknade förflyning den kan då anändas för a göra e ika medelärde. Vidare kan en del pixlars förflyningar filreras bor innan medelärdesbildning för a förbära resulae. Efersom a hela bilden förflyar sig kommer delar a den mark som syns i försa bilden ha försunni u ur den andra bilden se Figur 4-2 ill änser. För a endas få med förflyningar från gemensamma punker filreras en ram a ärden run hela bilden bor se Figur 4-2 ill höger. Ramens jocklek besäms a den maximala förflyningen mellan å bilder ilken beräknas uifrån maximal färdhasighe bildfrekens sam markasånd mellan å pixlar. Figur 4-2 Till änser: Mörka område isar öerlappning id förflyning Till höger: Flödesekorer inom ia ramen fileras bor Uräkning a ramens jocklek: Bildupplösning: 139x50 Bildya (på marken): 35x13 cm Maximal hasighe: ca 1 m/s Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 17
Bildfrekens: 30 bilder/s Markasånd mellan å pixlar: 35/139 0.25 cm Förflyning/bild id max hasighe: 1/30 3.3 cm Förflyning i pixlar: 3.3/0.25 13 pixlar Med anledning a dea äljs en ram-jocklek på ca 13 pixlar. Vid beräkning a hasigheen har filrering med ram implemeneras medans ikning ine kunna genomföras efersom de ine finns någo illförlilig må på noggrannheen i de anända algorimerna. 4.2.2 Kalibrering För a beräkna ryggsäcksramens momenana roaion och ranslaion ur de hasighesekorer som fås ur ideosrömmarna måse relaionen mellan rörelser i den inspelade filmen och ryggsäcksramens rörelse ara känd. Denna relaion beror dels på insällningar på kameran och frame-grabberkore ilke objeki som anänds ill kamerorna sam asånde mellan kameran och marken då sekensen spelades in. Därför skall en ny kalibrering göras om dessa förhållanden ändras signifikan. Relaionen är ofa ine densamma för båda kamerorna äen dea måse kompenseras för. En kalibrering ugår från a å ideosrömmar är inspelade öer en rak uppmä sräcka. När presenaionsmodulens huudfunkion körs i kalibreringsläge beräknas omedelbar efer opical_flow en konsan skalär parameer som kompenserar för olikheer mellan de å kamerorna enlig anagande a efersom kalibreringssräckan är rak ska summan a hasighesekorerna i y-led ara densamma för änser kamera som för höger. Denna parameer anänds sedan id de försa beräkningarna i funkionen ransform_flow2el. Efer a skillnader mellan de båda kamerorna kompenseras för exekeras resen a funkionerna precis som id en erklig körning men med en proisorisk kalibreringsfakor. Denna räknas u enlig anagande a summan a de momenana hasigheerna i y-led approximai bör mosara den illryggalagda sräckan. Kalibreringsfakorn säs därför ill de inläsa kalibreringsasånde diidera med summan a hasighesekorerna i y-led för änser kamera. När beräkningarna är sluförda jämförs den beräknade sräckan med den sräcka som angiis i anändargränssnie (se Figur 5-1) och kalibreringsfakorn juseras för a kompensera för fele i kommande beräkningar. 4.2.3 Odomeri/dödräkning Kalmanfilre är en yp a obseraör som agis fram för a ara opimal. Kalmanfilres uppgif är a skaa illsånden (bl.a. rikning och far) uifrån de illgängliga mäsignalerna. I odomeriberäkningen kommer e filer som kallas Exended Kalmanfiler a anändas. Denna yp a filer uppdaeras och linjäriserar i arje akuell idpunk a daasekensen. De ekaioner som bygger upp illsåndsmodellen för filre är bl.a. de för φ och r nedan (se sycke 4.2.3.2 Dödräkning). Filre gör äen en esimering a illsånden med hänsyn ill insignalerna ilka modelleras som i brus. I beräkningarna as äen skaningsfele fram för a kunna agöra hur noggranna resulaen är. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 18
Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 19 Tillsånden som anänds i modellen ges a Tabell 4-1. Tabell 4-1 Tillsånd i modellen Tillsånd Beskrining E Posiion i x-led N Posiion i y-led φ Vinkel från Norr x Hasighe i x-led uryck i de ryggsäcksfasa koordinasyseme. y Hasighe i y-led uryck i de ryggsäcksfasa koordinasyseme. ω Vinkelhasighe för ryggsäcken. Tillsåndsmodellen grundar sig på ekaionerna i Tabell 4-2. Hasigheerna E och N är urycka i de markfasa koordinasyseme medan acceleraionerna a x och a y är urycka i de ryggsäcksfasa koordinasyseme. I syseme som anänds förekommer dock diskrea määrden ilke är anledningen ill a den diskrea illsåndsmodellen anänds. Dessuom måse hasigheerna E och N uryckas i de ryggsäcksfasa koordinasyseme ilke görs m h a geomeri i den diskrea illsåndsmodellen se Tabell 4-2. Tabell 4-2 Tillsåndsmodell Koninuerlig Diskre y x x x N E a a N E y y y x x x y x N y x E a a N N N E E E 1 1 1 1 1 1 ) cos sin ( ) sin cos ( Som mäningar anänds hasigheerna x xh y och yh som är hämade från opicalflowmodulen enlig nedan d är asånde mellan kamerorna. 2 2 d d y h y y y x h x x x Insignaler ill syseme blir acceleraionerna i x- och y-led sam inkelacceleraionen. Dessa modelleras som i brus. Koariansmariserna för mä- repskie processsörningen R och Q as fram experimenell genom a proa fram ärden som ger rimliga resula i fråga om beräknad posiion och felskaning a denna. Linjäriseringen i kalmanfilre görs i samband med definiionen a A-marisen i illsåndsmodellen där uryck för cosinus och sinus
förekommer. Dea sker med förenklingen a anända försa ermen i en aylorueckling a urycken allså sinus respekie cosinus för φ i föregående idpunk. 4.2.3.1 Odomeri Skaad hasighesdaa från kalmanfilre inegreras för a ge den förflyade sräckan. En dr enkel förklaring fås a sambanden: r där r är lika med posiionen och är lika med d dr hasigheen. Efersom är känd kan posiionen inegreras fram som: d d r d 4.2.3.2 Dödräkning Dödräkning anänds inom posiionering. Räkningen går u på a kända referenspunker unyjas för a därefer kunna relaera den egna posiionen ill dessa punker. Om sarpunken är illgänglig går de a räkna fram en posiion för arje idpunk. Formler som anänds id beräkningarna är: ( ) r ( ) r där r och är 2-D ekorer med komponener i N- och 0 0 0 0 E-rikning r 0 är sarpunken och 0 sarrikningen. är hasigheen och är inkelhasigheen och formler för dessa ges oan (se sycke 4.2.3 Rörelseberäkningar). De är kamerorna som mäer hasigheen. Alla dödräkningsmeoder har den gemensamma brisen a om ingen konroll sker genemo referenspunker kommer fele i posiionsuppfaningen a successi öka med iden. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 20
5 Presenaionsmodul 5.1 Gränssni De är presenaionsmodulen som illhandahåller de yre gränssnie mo anändarna a syseme. Där ska anändaren ange ilka filer som beräkningarna ska göras på sam sarposiion sarrikning och sräcka som kalibreringen grundas på. Presenaionsmodulen gör alla anrop ill de olika beräkningarna i beräkningsmodulen. 5.2 Dealjerad design Presenaionsmodulen åskådliggörs som e programfönser indela i å huudsakliga områden e där sarärden anges och beräkningar saras sam e där resula a beräkningar isas i form a sräcka och felmarginal. Den grafiska presenaionen a beräkningarna öppnas i e ny fönser. 5.2.1 Anändargränssni Anändargränssnie är skapa med Malab-programme Guide ilke är en layou edior för grafiska anändargränssni. Guide genererar auomaisk en M-fil där de finns funkioner som körs då knappar rycks in i programfönsre. I sarknapps funkionen uförs förs konroller så a alla inmaningsfäl är ifyllda. Därefer anropas de olika funkionerna opical_flow(file1file2) ransform_flow2el(_righ _lef calibraion_facor lef_righ_facor camera_disance) sam odomeri(_origo omega sarpos_x sarpos_y direcion) i ur och ordning ilka finns beskrina i appendix A. Före kalibrering Efer normalkörning Figur 5-1 Tå useenden a Anändargränssnie I Figur 5-1 isas å a anändargränssnies olika useenden. Försa gången sarknappen rycks in efer a programme har saras så måse en kalibreringssräcka anges ilke sarar kalibreringen. När kalibreringen är gjord försinner kalibreringsruan för a åskådliggöra a kalibreringen är uförd. Då sarknappen rycks in är de möjlig a soppa beräkningarna genom a rycka på soppknappen som endas är synlig då sarknappen är inryck. Då soppknappen rycks in soppas beräkningarna genom a beräkningsfunkionerna konrollerar Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 21
om ariabeln sop är ändrad ill 1. Om ine beräkningarna soppas uan de får beräkna klar så isas resularuan med illryggalagd sräcka sam esimerad felmarginal i norr och öslig rikning. 5.2.2 Resulapresenaion Resulaen preseneras i grafisk i form a en äg pload uifrån den sarposiion som anges. Dea uförs genom a upprinings funkionen plo_roue anropas med ekorer innehållande informaion om posiioner sam med de sarärden som angas i anändargränssnie. Med ugångspunk från den gina sarposiionen rias sedan sreck mellan arje esimerad posiion som erhållis från odomerin genom a loopa igenom daaekorerna. Resulae rias i en ny figur i Malab i Figur 5-2 ses e exempel på hur en pload äg kan se u efer beräkning. Figur 5-2 Resulapresenaion Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 22
6 Referenser [1] Sensson Tomas & Krysander Chrisian (2004) Projekmodellen LiPS. Version 1.2 Bokakademin Linköpings uniersie. [2] Furedal Lars (2007) Designspecifikaion WalkCAM ersion 0.4 LiTH. [3] hp://www.programsalon.com/downloads49/sourcecode/graph/exure_mapping/deail167 578.hml [4] hp://www.mahworks.com/malabcenral/fileexchange/loadfile.do?objectype=file&obj ecid=2422 [5] Lucas B D (1984) Generalized Image Maching by he Mehod of Differences docoral disseraion hp://www.ri.cmu.edu/pubs/pub_5610.hml [6] William Sco Hoge (2003) A Subspace Idenificaion Exension o he Phase Correlaion Mehod Medical Imaging 22(2):277-280 Inerne: hp://lmi.bwh.harard.edu/papers/pdfs/2003/hogetmi2003.pdf [7] JAI PULNiX TM-1402 Series Operaion Manual 10053 Re A hp://www.jaipulnix.com Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 23
Appendix A - Beskrining a funkioner och anrop i Malab A.1 ge_opical_flow Huudfunkion för beräkning a hasighe ur en kameras bildsekens. Funkionen beräknar hasigheer mellan bild(i) och bild(i+1) där i är bildnummer och anal beräkningar blir anal bilder minus 1 eller de anal som angiis som inargumen. För beräkning a opisk flöde anropas funkionen calc_flow. Beräkna opisk flöde filreras med funkionen filer_flow arefer hasigheen beräknas med funkionen esimae_elociy funcion elociy=ge_opical_flow( filename sarleel flow_lengh mehod mehod_args) Indaa: filename bildsekensens filnamn gråskala muliframe TIF. sarleel Vilken pyramidniå skall beräkningarna börja på flow_lengh Hur många bilder i bildsekensen skall behandlas (0=alla) mehod Vilken meod som skall anändas 1=LucasKanade 2=Fasbaserad 3=Enkel deriaa mehod_args argumen a skicka idare ill algorim Udaa: elociy - maris besående a [Vx Vy] där Vx och Vy är kolumnekorer A.2 calc_flow Iniierar beräkning a opisk flöde. Anropar funkion för respekie algorim: calc_flow_lk Lucas Kanade calc_flow_pb Fas-baserad algorim calc_flow_der Enkel deriaa-baserad algorim uan smoohing funcion [ucer]=calc_flow(image1 image2 mehod mehod_args) Indaa: image1 image2 bilder som beräkningen skall uföras på mehod Vilken meod som skall anändas 1=LucasKanade 2=fasbaserad 3=enkel deriaa mehod_args argumen a skicka idare ill algorim Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna cer noggrannheen för arje flödesberäkning A.3 calc_flow_lk Dea är den algorim som anänds i försa hand och som ger de bäsa resulae. Beräkningsgången är i princip enlig beskrining i 4.2.1.1 med lie förfinade meoder. Koden är hämad från Inerne. En del mindre anpassningar har gjors i originalkoden. Funkionen anropar funkionen HierarchicalLK för beräkning a opisk flöde med LucasKanade algorim. Här säs paramerar som anänds id beräkningen. funcion [u cer]=calc_flow_lk(image1 image2 mehod_args) Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 24
Indaa: image1 image2 bilder som beräkningen skall uföras på mehod_args argumen ill algorim Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna cer noggrannheen för arje flödesberäkning Källa: [3] A.4 HierarchicalLK Den försa beräkningen görs med anrop a funkionen LucasKanade och eferföljande beräkningar (flera ieraioner eller flera niåer) görs med LucasKanadeRefined. funcion [u cer] = HierarchicalLK(im1 im2 numleels windowsize ieraions display) Indaa: im1 im2 - bilder som beräkningen skall uföras på numleels anal pyramidniåer som skall beräknas windowsize fönsersorlek id smoohing ieraions hur många ieraioner som skall göras för arje pyramidniå display skall resula isas i plo 0=nej 1=ja Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna cer noggrannheen för arje flödesberäkning A.5 LucasKanade Beräknar flöde för den öersa bilden i pyramiden (lägs upplösning) och endas för den försa ieraionen. funcion [u ] = LucasKanade(im1 im2 windowsize); Indaa: im1 im2 - bilder som beräkningen skall uföras på windowsize fönsersorlek id smoohing Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna cer noggrannheen för arje flödesberäkning A.6 LucasKanadeRefined Beräknar flöde för reserande pyramidniåer och ieraioner. Skillnaden mellan denna och LucasKanade är a den ar den gamla beräkningen a u och som indaa och adderar resula från ny beräkning. funcion [ucer] = LucasKanadeRefined(uIn In im1 im2); Indaa: uin In flödesekorer från idigare beräkning im1 im2 - bilder som beräkningen skall uföras på Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 25
Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna A.7 calc_flow_pb Beräknar opisk flöde med en fasbaserad algorim hämad från Mahworks hemsida [4]. Algorimen har ine esas i någon sörre usräckning men kan ara inressan då den bygger på en hel annan grundidé än LucasKanade och den enkla deriaameoden. funcion [u ]=calc_flow_pb(image1 image2) Indaa: image1 image2 bilder som beräkningen skall uföras på Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna Källa: [4] A.8 calc_flow_der En enkel beräkning a flöde enlig beskrining i sycke 4.2.1.1 (Algorim för beräkning a opisk flöde) dock uan smoohing och ieraioner. funcion [u ]=calc_flow_der(image1 image2) Indaa: image1 image2 bilder som beräkningen skall uföras på Udaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilderna A.9 esimae_elociy Skaa markens rörelse basera på de opiska flöde. Beräkning görs med minsakadraskaning och anagande a alla pixlar förflya sig samma sräcka ds. ingen roaion. funcion [x y]=esimae_elociy(u) Indaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilden Udaa: x y - elociy in x- and y-direcion A.10 filer_flow Filrera bor dåliga flödesekorer från flöde enlig idigare beskrining. funcion [u_filered _filered]=filer_flow(u frame_hickness) Indaa: u flödesekorer i x- resp. y-led maris med samma dimension som bilden frame_hickness jocklek på den ram inom ilken flödesekorer skall as bor Udaa: U_filered _filered filrerade flödesekorer Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 26
A.11 odomeri Huudfunkion för odomeridelen som ur hasighesdaa från ryggsäcksmesen beräknar posiion sräcka sam dess felskaningar med hjälp a e Exended Kalmanfiler. funcion [E_ecorN_ecordisanceE_errorN_errorP_his] = odomeri(_lef_righsarpos_xsarpos_ydirecion) Indaa: _lef maris besående a [_x _y] där _x och _y är hasighesekorer i respekie led för änser kamera. _righ maris besående a [_x _y] där _x och _y är hasighesekorer i respekie led för höger kamera. sarpos_x skalär med sarärde i x-rikning. sarpos_y skalär med sarärde i y-rikning. direcion skalär med sarärde för inkel mo norr. Udaa: E_ecor ekor innehållande koordinaer i x-led N_ecor ekor innehållande koordinaer i y-led disance skalär med ärde på den illryggalagda sräckan E_error skaning a fele i posiion i x-led. N_error skaning a fele i posiion i y-led. P_his maris besående a koariansmariser från samliga idpunker. A.12 ransform_flow2el Anpassar hasigheerna från rörelser i pixlar per bildrua ill meer per sekund med hjälp a den kalibreringsfakor som beräknas id kalibrering. funcion [_lef_cam _righ_cam] = ransform_flow2el(_lef _righ calibraion_facor lef_righ_facor camera_disance) Indaa: _lef maris besående a [_x _y] där _x och _y är hasighesekorer i respekie led för änser kamera. Enhe: pixlar/frame. _righ maris besående a [_x _y] där _x och _y är hasighesekorer i respekie led för höger kamera. Enhe: pixlar/frame. calibraion_facor den kalibreringsfakor som räknas u id kalibrering som ska ge en korrek oalsräcka mä i meer. lef_righ_facor den konsan som id kalibrering beräknas för a kompensera för skillnader i uppmäa hasigheer mellan höger och änser kamera. camera_disance asånde mellan de båda kamerorna. Udaa: _lef_cam maris besående a [_x _y] där _x och _y är hasighesekorer i respekie led för änser kamera. Enhe: meer/sekund. _righ_cam maris besående a [_x _y] där _x och _y är hasighesekorer i respekie led för höger kamera. Enhe: meer/sekund. Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 27
A.13 walkcam_openingfcn Denna funkion finns i filen walkcam.m. Funkionen körs en gång då anändaren skrier walkcam i Malabs kommandorad. Funkionen är auomagenererad a GUIDE sam a de globala ariblerna calibraion_facor lef_righ_facor iniieras. funcion walkcam_openingfcn(hobjec eendaa handles arargin) Indaa: hobjec Handag ill figuren. eendaa Resererad för framida Malab ersioner handles Srukur med handag och anändardaa arargin Kommando linje med argumen ill walkcam Udaa: - A.14 sar_callback Denna funkion finns i filen walkcam.m. Funkionen körs arje gång då anändaren rycker på sar-knappen i anändargränssnie. I funkionen görs förs en konroll på a alla fäl är ifyllda. Därefer görs en konroll om de ska genomföras en kalibreringskörning eller en normalkörning. De som skiljer id de olika körningarna är a id kalibreringskörningen så säs de globala ariblerna calibraion_facor lef_righ_facor om sam a id en normalkörning så isas resulae i resularuan. funcion sar_callback(hobjec eendaa handles) Indaa: hobjec Handag ill figuren. eendaa Resererad för framida Malab ersioner handles Srukur med handag och anändardaa Udaa: - A.15 sop_callback Denna funkion finns i filen walkcam.m. Funkionen körs arje gång då anändaren rycker på sopp-knappen i anändargränssnie. Här uppdaeras den globala ariabeln sop ill ärde 1. funcion sar_callback(hobjec eendaa handles) Indaa: hobjec Handag ill figuren. eendaa Resererad för framida Malab ersioner handles Srukur med handag och anändardaa Udaa: - Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 28
A.16 exi_callback Denna funkion finns i filen walkcam.m. Funkionen körs arje gång då anändaren rycker på aslua-knappen i anändargränssnie. Här as handage ill anändargränssnie bor ilke gör a anändargränssnie försinner. funcion exi_callback(hobjec eendaa handles) Indaa: hobjec Handag ill figuren. eendaa Resererad för framida Malab ersioner handles Srukur med handag och anändardaa Udaa: - Reglereknisk projekkurs WalkCAM LIPs Andreas Fälskog walkcam@bredband.ne 29