1(10)
2(10) Innehållsförteckning shistorik...2 1 Introduktion...3 2 tekniker...4 2.1 2D-tracking/3D-tracking...4 2.2 Landmärken/nyckelpunkter...5 2.3 3D-modeller...5 2.4 3D-rendering...5 2.5 SLAM...5 2.6 MonoSLAM...6 2.7 Ego-motion...6 3 Mjukvaror/företag/bibliotek...6 3.1 13th lab PointCloud...6 3.2 Aurasma...7 3.3 Direct3D...7 3.4 Kinect...7 3.5 Metaio...8 3.6 OpenGL...8 3.7 OpenNI...8 3.8 SceneLib...8 3.9 Volumental...9 3.10 Vuforia...9 shistorik Status Datum Person Kommentar 13-12-17 Lena Douglas Granskat 0.5 13-12-16 Jakob Jönsson Små ändringar Granskat 0.4 13-12-16 Sergei Prasalovich Ej granskat 0.3 13-12-13 Lena Douglas Ny version av mindmap, lite utförligare text Granskat 0.2 13-12-07 Sergei Prasalovich Se kommentarer Ej granskat 0.1 13-12-05 Lena Douglas Första utkast
3(10) Referenser Nr Titel Länk [1] Durrant-Whyte H. and Bailey T., Simultaneous Localisation and Mapping (SLAM): Part I The Essential Algorithms, IEEE ROBOTICS AND AUTOMATION MAGAZINE (2006). http://citeseerx.ist.psu.edu/viewdoc/su mmary?doi=10.1.1.128.4195 [2] Bailey T. and Durrant-Whyte H., Simultaneous Localisation and Mapping (SLAM): Part II. [3] Davison et al., MONOSLAM: Real-time single camera SLAM, IEEE Trans. Pattern Analysis and Machine Intelligence (2007). [4] Brooks M. J., Chojnacki W., Baumela L., Determining the egomotion of an uncalibrated camera from instantaneous optical flow, Journal of the Optical Society of America A (1997). [5] Irani M., Rousso B., Peleg S., Recovery of Ego-Motion Using Image Stabilization, IEEE Computer Society Conference on Computer Vision and Pattern Recognition: 21 23 (June 1994). http://wwwpersonal.acfr.usyd.edu.au/tbailey/paper s/slamtute2.pdf http://spiral.imperial.ac.uk/bitstream/1 0044/1/695/1/MonoSLAM%20Real- Time%20Single%20Camera %20SLAM.pdf http://cs.adelaide.edu.au/~wojtek/paper s/motionimproved.pdf http://www.vision.huji.ac.il/papers/ego -mtn-cvpr94.pdf 1 Introduktion Augmented reality (AR), eller förstärkt verklighet, handlar om att förstärka den verklighet vi upplever genom våra sinnen syn, hörsel och känsel, med hjälp av tex bilder, ljud eller vibrationer. En stor del av Savantics forskardagar har i år varit relaterade till just AR, då vi har tittat närmare både på olika tekniker inom området och en del programvaror och mjukvarubibliotek. Vi har helt fokuserat på AR via visuella applikationer, dvs kopplade till bildanalys eller datorseende. När vi skulle sammanfatta resultatet av forskardagarna blev det tydligt hur brett begreppet AR är. Augmented reality förekommer redan inom många olika områden och ett stort antal olika tekniker och algoritmer används för att skapa den förstärkta verkligheten. Genom en illustration försöker vi här sammanfatta vår uppfattning av hur de olika teknikerna och mjukvarorna hänger ihop med varandra. I bilden illustreras metoder med gula boxar, medan mjukvaror/företag markeras med blå ellipser och rena mjukvarubibliotek med gröna ellipser. Nedanför följer förtydliganden och kortare beskrivningar om var och en av metoderna/mjukvarorna.
4(10) 2 tekniker Visuell AR är starkt kopplat till objektigenkänning i bilder. Oavsett om man använder digitala glasögon eller skärmen i en smartphone krävs en bild av verkligheten som man kan manipulera, tex genom att överlagra information i 2D eller 3D. I denna bild behövs referenspunkter/nyckelpunkter eller landmärken, för att orientera sig i bilden och för att skapa koordinater i bilden. För att identifiera objekt i bilden används tracking i 2D eller 3D. Om man överlagrar en bild kan både 2D- och 3D-objekt användas. Virtuella objekt i 3D kan rekonstrueras från 2D-data och visas överlagrade i bilden, så att användaren kan rotera det virtuella 3D-objektet på sin skärm. Med hjälp av moderna 3D-renderingstekniker kan objekten i 3D skapas i realtid. 2.1 2D-tracking/3D-tracking Inom AR handlar tracking om att identifiera ytor och/eller objekt, tex plana ytor som något kan projiceras på, eller tredimensionella objekt som överlagras med ett virtuellt objekt. Även tracking i realtid i rörliga bilder kan vara aktuellt, tex genom skärmen i en smartphone som användaren förflyttar i olika riktningar, vilket kräver både translationer och rotationer. Det finns två huvudspår inom tracking, den ena är baserad på landmärken/nyckelpunkter (feature-
5(10) based), den andra är modellbaserad, se även avsnittet 3D-modeller. 2.2 Landmärken/nyckelpunkter Feature-based metoder går ut på att identifiera och extrahera särdrag eller nyckelpunkter i bilderna, och att använda dessa för att rekonstruera 3D-informationen i ett scenario. I vanliga bilder kan man leta efter landmärken, tex med hjälp av kanter, hörn, eller 'fläckar' (sk 'blobs', dvs områden där bildegenskaper som färg och kontrast är ungefär samma), tex med SURF-, SIFT- eller FASTalgoritmerna. Vissa geometriska villkor krävs. SIFT = Scale Invariant Feature Transform, algoritm för identifikation av nyckelpunkter, hittar främst hörn. FAST = Features from Accelerated Segment Test, hittar också hörn. SURF = Speeded Up Robust Features, liknar SIFT men är snabbare, patenterad i USA. Om nyckelpunkterna till en viss bild sparas i en databas kan de användas för att trigga igång en applikation, bilden kallas då trigger-bild. Själva trigger-bilden, som kan vara given eller skapas av användaren som en del av applikationen, blir då ofta överlagrad med virtuella objekt. 2.3 3D-modeller Det finns två typer av 3D-modeller, enklast möjliga är en ytmodell där alla ytor approximeras med enkla geometriska objekt som trianglar. I detta enkla ramverk byggs objekten upp som skelett (wireframes), dessa är visserligen inte visuellt så tilltalande men är enkla att göra beräkningar på om objektet tex rör sig, dvs beräkningar av nya ställningar och positioner, skalningar och omformningar, osv. Det andra sättet att representera objekt är genom solida modeller. Dessa kräver dock mycket mer processorkraft. När objektet är definierat som 3D-modell används 3D-rendering för att ge objektet ett mer realistiskt utseende. 2.4 3D-rendering 3D-rendering är en teknik för att överföra det enkla ramverk som används i 3D-modeller till mer realistiska objekt genom att simulera ett mer realistiskt utseende och lägga på ljuseffekter, och även simulera objektets fysikaliska egenskaper. Inom AR-applikationer är realistiskt utseende oftast inte av så stor vikt, däremot är det viktigt att kunna göra beräkningarna i realtid. 2.5 SLAM Mobila robotar som saknar extern styrning, och som inte heller har en given karta att navigera efter, måste bygga upp en karta över ett område samtidigt som de rör sig genom området. SLAM, dvs Simultaneous Localisation and Mapping, avser det problem som uppstår då dessa två steg ska ske samtidigt, dvs uppbyggnaden av kartan ska ske samtidigt med lokaliseringen i samma karta. Ett robotsystem som ska klara av att navigera i tex en inomhusmiljö måste kunna hantera att en del landmärken är fixerade, som väggar och dörrkarmar, medan andra kan vara potentiellt rörliga, som
6(10) möbler eller människor. Ett sätt att hantera problemet är genom att ha flera parallella kartor, för olika typer av landmärken (fixa/rörliga). För orienteringen används ofta flera sensorer i kombination för att kunna beräkna avstånd, tex två kameror för stereoseende, antingen i det vanliga synliga spektrumet eller i infrarött spektrum (IR). Förutom nyckelpunkter kan andra metoder användas som tex histogram över färger, gradientlutningar, egenvektorer eller Fourier-transformen för att hitta de lågfrekventa komponenterna i bilden. För IR-laser kan man använda linje-segment för att leta efter hörn och vinklar. Andra matematiska metoder som används är Kalman- och partikelfilter. För en bra introduktion till SLAM, se [1] och [2]. 2.6 MonoSLAM MonoSLAM är en variant av SLAM där endast en kamera används, dvs stereoseende är uteslutet för avståndsberäkningar för navigering. Istället används nyckelpunkter för att identifiera landmärken och navigering efter dessa. Scenelib är tex baserad på MonoSLAM [3]. 2.7 Ego-motion Ego-motion refererar till kamerans egna rörelse i en statisk miljö, och innebär att kamerans rörelse i 3D uppskattas från en serie 2D bilder, tex i autonom videobaserad robotnavigering (visuell odometri). Landmärken och nyckelpunkter används för att konstruera optiskt flöde mellan två efterföljande kamerabilder (det går även bra med två kameror i stereo). Kamerans rörelse i 3D rekonstrueras sedan från optiska flödesdata [4]. Dessa tekniker förlitar sig på de underliggande algoritmer som används för att identifiera nyckelpunkterna, och kan vara tunga beräkningsmässigt. Andra metoder finns, där bildintensiteten används direkt för att beräkna ego-motion [5]. En viss a priori-kunskap om scenen krävs dock (tex plana föremål, linjära segment, små rotationer, translationer, etc) för att undvika oklarheter i rörelsetolkningen [5], och för att förenkla algoritmerna. 3 Mjukvaror/företag/bibliotek Nedan följer en sammanfattad redovisning, i alfabetisk ordning, av de mjukvaror och bibliotek som vi utforskat och utvärderat under forskardagarna. 3.1 13 th lab PointCloud Extended map finns. Ingen 3D rendering. Två utvecklingsverktyg finns: Browser Development och en SDK för ios. Några av de egenskaper som är inkluderade är bildigenkänning och tracking, SLAM, samt att spara och ladda in 3D SLAM kartor. I applikationer för mobiltelefoner kan även andra sensorer användas, förutom kameran, som
7(10) tex accelerometer och gyroskop, om dessa finns tillgängliga. http://13thlab.com/ 3.2 Aurasma Inget API? Tveksam prestanda. Dålig trigger. Triggerbild är vinkelberoende. Begränsat antal 2D modeller. 3D-trigger. Snyggt exempel. http://www.aurasma.com/ 3.3 Direct3D Bibliotek för visualisering av 3D-modeller. Konkurrerande bibliotek till OpenGL, ägs av Windows. http://www.microsoft.com/en-us/download/details.aspx?id=23803 3.4 Kinect RGB-kamera, plus IR-sändare och IR-sensor för djup, plus fyra mikrofoner. Utvecklad för spel men RGB- och IR-data går lika bra att använda till andra applikationer. Kinect finns i två versioner (2013), Kinect Xbox 360 som är den vanliga spelkonsolen, och Kinect for Windows (Kinect 4W), som endast går att koppla till pc, inte till spelkonsolen. Fungerande miljö finns, vi testade på en Kinect Xbox 360 kopplad till pc med Microsoft SDK för Xbox 360, se http://www.microsoft.com/enus/kinectforwindows/develop/beta.aspx. Detta var den gamla versionen av Kinect Xbox 360 med tillhörande strömförsörjning. Senare versioner säljs utan strömadapter och går inte att koppla till pc. I samband med Volumentals mjukvara testade vi även Windows SDK för Kinect 4W, se http://www.microsoft.com/en-us/kinectforwindows/develop/overview.aspx. Det finns många sidor på nätet, många exempel att testa, se tex OpenKinect (http://openkinect.org/wiki/main_page), eller Microsofts egna exempel för Kinect för Windows (open source under Apache license) hos CodePlex http://kinectforwindows.codeplex.com/, läs mer här http://www.theregister.co.uk/2013/03/13/kinext_code_open_sourced/ Vi testade även några Kinect-exempel för SLAM, tex från MRPT (Mobile Robot
8(10) Programming Toolkit) (http://www.mrpt.org/application%3akinect-3d-slam), och OpenSLAM (http://h.org/rgbdslam.html). Har man ingen Kinect men ändå vill testa att använda Kinect-data finns en del dataset tillgängliga via, tex, http://gti-work.blogspot.se/2012/05/kinect-datasets.html. Vi har inte undersökt någon av dessa själva dock. 3.5 Metaio Bra trigger. API finns. Creator finns. Prestandaproblem. Stabil tracking. Extended maps oklart. Fyra olika SDKs finns tillgängligt, för Android, ios, Unity3D och Windows. Kan detektera och spåra objekt i 2D, 3D och markörer. För okända objekt kan även tracking ske med SLAM, 'instant tracking' och GPS/inertia. Patentskyddad mjukvara, tillgänglig i olika versioner, en gratisversion med vattenstämpel, en Basic license som är utan vattenstämpel för 2D tracking, och en Pro license som är utan vattenstämpel både för 2D och 3D tracking. http://www.metaio.com/ 3.6 OpenGL Multi-plattformsbibliotek för effektiv visualisering av 3D-modeller i grafikkortet. Har plattforms-oberoende API. http://www.opengl.org/ 3.7 OpenNI Open Natural Interface OpenNI: http://www.openni.org/ Fungerar inte med Kinect Xbox 360 SDK, däremot med Kinect for Windows SDK. Har ej utvärderats, förutom kopplat till Volumentals programvara. 3.8 SceneLib Omoget för egna tester. Känslig för hur man rör sig. Dålig precision.
9(10) Bara Linux-versionen testad, Windows-versionen fick vi inte igång. Många styrparametrar. Landmärken är primitiva. Se referens [3]. Installation för Windows SDK: DirectShow API inkluderar DirectX SDK, därför kunde vi inte köra SceneLib2 på Windows. Den ursprungliga bilden bör vara relativt nära (0.5 1 m), annars kommer mätningarna på en del patchar inte att lyckas. För att förbättra sökning av landmärken: Öka antalet partiklar (100), Ändra antal försök (attempts) (default är 10 för 30Hz, 20 för 60 Hz), Om sökradien görs större (0.5-5.0 m), öka även antalet partiklar, När frekvensen för antalet bildrutor ändras (30Hz-->100Hz), ändra t_delta (0.033333-->0.01) och antal försök (attempts), Om storleken på bilderna ändras, ändra även cam.* parametrarna och positionen för de ursprungliga landmärkena / 4 patcharna, Tänk på att patch-storleken är 11x11 pixel, För att behålla orienteringen/riktningen bör kameran spåra ett tillräckligt antal landmärken för att kunna finna den initiala positionen. Video 14: Att vända kameran 180 grader och sedan återgå till ursprungsläget fungerade framgångsrikt, med igenkänning av de ursprungliga patcharna. Video 15: Att vända kameran hela varvet 360 grader fungerade däremot inte, de ursprungliga patcharna identifierades inte. http://www.doc.ic.ac.uk/~ajd/scene/ 3.9 Volumental Fungerar med en Kinect Xbox 360 om man använder Kinect for Windows SDK, men inte med Kinect Xbox 360 SDKn. Bra 3D modeller för stora och orörliga objekt. Bakgrunden kan störa. http://www.volumental.com/recordings/record 3.10 Vuforia Väldigt likt Metaio.
10(10) Öppen kod. Sämre triggering. Kan detektera och spåra 2D bilder samt även enkla 3D objekt (exempelvis 2D-bilder på sidorna av en kub), 'frame markers', virtuella knappar samt text. Tre olika SDK finns tillgängliga, för Android, ios, och ett externt bibliotek till Unity (multiplattform spelmotor). Simultan igenkänning av upp till fem objekt, textigenkänning, och robust spårning. http://www.qualcomm.com/solutions/augmented-reality