Implementering av interaktionsmetoder i 3D med haptik för undervisning i mekanisk konstruktion NIKLAS SCHERP

Storlek: px
Starta visningen från sidan:

Download "Implementering av interaktionsmetoder i 3D med haptik för undervisning i mekanisk konstruktion NIKLAS SCHERP"

Transkript

1 Implementering av interaktionsmetoder i 3D med haptik för undervisning i mekanisk konstruktion NIKLAS SCHERP Examensarbete Stockholm, Sverige 2010

2 Implementering av interaktionsmetoder i 3D med haptik för undervisning i mekanisk konstruktion NIKLAS SCHERP Examensarbete i datalogi om 30 högskolepoäng vid Magisterprogrammet, datalogi Kungliga Tekniska Högskolan år 2010 Handledare på CSC var Lars Kjelldahl Examinator var Yngve Sundblad TRITA-CSC-E 2010:023 ISRN-KTH/CSC/E--10/023--SE ISSN Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC Stockholm URL:

3 Sammanfattning I detta examensarbete, som är den del av EU Tempus-projektet, har undersökts och implementerats olika metoder för interaktion i en 3D VR-miljö med målet att de ska användas för undervisning i mekanisk konstruktion på ett universitet i Kairo. Prototypen har designats och implementerats för att användas till att montera en pump med maskindelar (som är 3DS-modeller från Kairo) och samtidigt mäta tiden som en del av en arbetsstudie. Tidtagningen var ett önskemål från universitetet i Kairo. Utrustningen för interaktionen är den vanliga datormusen och ett haptiskt pekdon. Olika metoder för att flytta objekt har implementerats och jämförts. Med den första metoden kan användaren markera ett objekt och sen placera det genom att klicka på dess korrekta destination. Med den andra metoden kan användaren dra ett objekt till dess destination. Förflyttningarna kan göras i alla riktningar (x, y, och z). Vi tror att interaktion med haptik är mer naturlig än att använda musen. Tidtagning har inkluderats i prototypen och fungerar med alla interaktionsmetoder. Det är möjligt att ändra inställningar genom att ändra i en fil med en texteditor. Dessa inställningar gör det möjligt att montera en annan maskin än den som har använts vid testerna av prototypen i detta examensarbete. Instruktioner för hur den filen ska ändras finns i ett appendix i slutet av denna rapport. Prototypen innehåller inget riktigt GUIgränssnitt eftersom detta arbete endast fokuserar på 3D-interaktionsmetoder ur en programmerares och användares synvinkel. En utvärdering av prototypen har inte kunnat göras inom tidsgränsen för detta arbete. Ett frågeformulär har skrivits och inkluderats i appendix för att underlätta en sådan undersökning i framtiden. För implementationen har programspråket Python använts. Under arbetet med att implementera funktionerna upptäcktes att CAD-figurerna har för hög upplösning och antalet polygoner i dem måste minskas för att de ska kunna användas i undervisningen. Haptiken var svår att få att fungera bra i prototypen på grund av begränsningar i utvecklingsmiljön. En begränsning är att området för avkänning är begränsat och alla objekt som ligger utanför detta ignoreras. Dessa begränsningar beskrivs mer utförligt i denna rapport. Python har också en del begränsningar som programmeringsspråk till att utveckla 3D-applikationer, men för en prototyp som denna var det tillräckligt. Trots allt tror vi att en fungerande prototyp hade krävt mer tid att utveckla så att det haft tillräcklig kvalitet för att användas i undervisningen. Även en separat version för haptiken vid sidan av de övriga interaktionsmetoderna hade varit nödvändig.

4 Abstract Implementation of methods for interaction and use of haptic for education in mechanical construction In this master s project being part of a EU Tempus project we investigate and implement different methods for interaction in 3D VR environment with the goal that it will be used for teaching in mechanic construction at a university in Cairo. The prototype that has been designed and implemented aims at assembling machine elements to a pump (delivered as 3DS models from Cairo) and also for measuring time as part of a work study environment according to wishes from the Cairo university. Interaction devices used are an ordinary 2D mouse and a haptic device. Different methods of moving objects have been implemented and compared. With the first method the user can mark an object and then place it by clicking on its destiny position. With the second method the user can drag the object to its destiny position. Movements can be done in all directions (x, y,and z). We feel that interaction with the haptic device is more natural than with the mouse. Time measurement has been included in the prototype and is working in all interaction modes. The different settings are possible to change in a file using a text editor. These settings makes it possible to for instance assembly other machine components than has been used during testing in this prototype. Details on the setting file is included in appendix of this report. The prototype does not include a real GUI interface but has only been focused on 3D interaction from a user's and implementer s point of view. An evaluation of the prototype could not be done within the time limits of this work. A questionnaire has been set up to make it easier to do such an evaluation in the future. The implementation used the Python programming language. During implementation it was found that resolution of the CAD-models is too high and that the number of polygons need to be cut down before use in education. The haptic was hard to get working in the prototype because of limitations in the development environment. One limitation is that the space for registration use a limited region and all objects are ignored outside of this region. These limitations are described in more detail in this master s thesis. Python also has some limitation as a programming language for developing 3D-applications, but for a prototype like this it was acceptable. Although we think that a working prototype has been developed more time would be needed to make a system of enough quality to be used in education and also that a separate version of the program for the haptic is needed.

5 Innehållsförteckning 1 Introduktion om Virtual Reality Vad Virtual Reality är för något? Blandformer av Virtual Reality Hårdvaran för Virtual Reality Haptik Skärmar Vad det brukar användas till? Problem med Virtual Reality Virtual Reality som utbildningsverktyg i mekanisk konstruktion Tempus-projektet Om projektet Projektets mål Projektets begränsningar Användningen på ASU Programmet Vizard Översikt Specifikationerna Bra egenskaper Svagheter Körmiljön Planeringen av prototypen Examensarbetets mål Avgränsningar Relaterat arbete Hur prototypen bör se ut Genomförande De olika metoderna som övervägdes Rotation och skalning av vyn Funktion Matrishanteringen Markering av objekt Problemställning Shader för omarkerat objekt Shader för markerat objekt Peka och placera Problemställning Implementation Markera och dra Problemställning Implementation Peka och dra med haptik Förutsättningar Implementation Kollisionsdetektion vid haptisk förflyttning Detektion av haptik Tidtagningen Utseendet Utplacering av objekt vid start...24

6 6 Diskussion Gränssnittet Interaktion med musen Haptiken Prestandan Buggar i Vizard Resultat och slutsatser Resultatet Kodkvaliteten Testning av prototypen Haptiken Testresultatet Framtida arbete Förslag på förbättringar Förslag på användartest Versioner Haptik Litteratur Bilaga A: Ordlista Bilaga B: Mini-manual Bilaga C: File format Bilaga D: Questions about the program Bilaga E: How to set up haptic and Vizard...38

7 1 Introduktion om Virtual Reality I detta kapitel beskrivs Virtual Reality, dess historia och ett antal grundläggande begrepp inom detta område. De som är bekanta med vad Virtual Reality är kan hoppa över det här kapitlet. I detta examensarbete har Virtual Reality inte använts under utvecklingen av prototypen, men resultatet ska vara möjligt att köra i de VR-system som ASU ska använda. En speciell programvara har använts för att utveckla prototypen. Programmet gör det enkelt att anpassa prototypen till en VR-miljö. Mer om detta program i nästa kapitel. 1.1 Vad Virtual Reality är för något? Virtual Reality brukar förkortas VR och är en teknik för att interagera med en datorgenererad värld. Det finns många olika definitioner och typer (Pantelidis, 1996), men det gemensamma för alla är alltså interaktionen. Interaktion kan ske på olika sätt och ofta är det haptiska verktyg som används. Det är dock inte nödvändigt att använda haptik eller någon annan typ av force feedback 1 för att det ska kallas "Virtual Reality". Det är inte heller nödvändigt att använda så kallade VR-hjälmar (HMD, Head Mounted Display). Kraven för att det ska kallas Virtual Reality är följande (Psotka, 1995): Det ska gå att interagera med objekten, dvs plocka, flytta, osv. Interaktionen bör vara naturlig. Användaren ska kunna titta åt olika håll i den virtuella världen och kunna förflytta sig i denna. Det finns olika typer av Virtual Reality. Artikeln (Pantelidis, 1996) listar några olika typer: Genom skärm: Det absolut vanligaste sättet att presentera 3D-informationen på. Det är också det billigaste eftersom det räcker med att använda standardhårdvara, som kan köpas överallt där datorer säljs. Immersiv: vilket innebär att användaren är helt omsluten av den virtuella miljön. För att uppnå detta används vanligen en HMD (Head Mounted Display) för att titta sig omkring i miljön. Simulator för bil, flyg och andra fordon. Används för att träna körning med det fordon som avses. Simulatorn är då inredd som en riktig bil eller som en cockpit med bildskärmar istället för vanliga fönster. Ratten samt övriga reglage är kopplad sensoriskt till en dator. Force feedback kan förekomma. I en flygsimulator är det vanligt att det finns en rörlig hytt som reflekterar hur mycket planet lutar. Spegelvärld där användaren ser en avatar av sig själv, där denne kan interagera i miljön. CAVE är ett rum med upp till sex väggar som får bilden projicerad utifrån på väggarna. Denna typ har idag oftast ersatts av HMD eftersom det är billigare och 1 Force feedback är när en händelse i 3D-miljön ger en respons i form av en kraft eller motstånd i den utrustning som användaren håller i. Exempel är vibrationer i rattar för spel eller det motstånd som kan kännas när en penna på ett haptiskt pekdon stöter emot ett objekt. 1

8 är då inte knutet till någon lokal med fast installerad utrustning. Tidigare fanns en CAVE som kallades VR-kuben på KTH. Den användes för forskning och demonstrationer. En enklare indelning existerar också (Mujber, 2004): Icke-immersiv: Med vanlig standardutrustning för dator som mus, tangentbord och skärm. Semi-immersiv: Joystick, haptik och större skärm, eventuellt projektor. Full immersiv: HMD, CAVE. Den icke-immersiva typen kostar minst att ordna och full immersiv är betydligt dyrare. 1.2 Blandformer av Virtual Reality Utöver Virtual Reality finns också blandformer: Augmented Reality: Här placeras virtuella objekt in i en bild av vår verkliga värld. Augmented Virtuality: Här är det tvärtom, verkliga objekt i en virtuell värld. Den som är intresserad av mer läsning rekommenderas lästipsen som finns i litteraturlistan. 1.3 Hårdvaran för Virtual Reality Haptik Ett viktigt och vanligt redskap inom Virtual Reality är haptik. Ett haptiskt pekdon brukar se ut som i figur 1 på nästa sida. Det består av en penna på en arm, som kan röras i olika riktningar. På pennan finns knappar som på en mus för att greppa med. Med haptik kan användaren ta på objekt på ett annat sätt än med musen. Musen ger en något onaturlig interaktion med virtuella objekt eftersom den rör sig i bordsplanet och enbart har två frihetsgrader 2. En kropp i 3D-rummet har sex frihetsgrader, tre för rotation och tre för translation [1]. Frihetsgrader brukar ha det kortare namnet DOF, efter engelskans Degrees Of Freedom. För haptik används frihetsgrader för att ange vad de klarar att göra. Den utrustning som används i detta projekt (Phantom Omni) har sex frihetsgrader för geometrin och tre för haptiken. Det finns även sådana som är billigare (Falcon) och den har bara tre för geometrin. När det gäller haptiken är det ofta endast tre frihetsgrader, alltså ingen vridkraft i pennan. Haptik brukar användas till en hel del, än så länge mest inom forskning. Exempel på 2 Frihetsgrader är ett begrepp inom fysik och mekanik. Det anger hur partiklar (objekt) kan röra sig i en 3D-värld. Frihetsgraderna kan delas upp i translationsfrihetsgrader och rotationsfrihetsgrader. 2

9 användningsområden är utbildning av sjuksköterskor där de får träna på att sätta in sprutor. Ett annat användningsområde är visualisering av seismiska data där det är svårt att förstå den volymetriska datamängden. Då är haptik bra för att känna sig fram. Det ska även gå att göra modellering av föremål med haptik (Salisbury, 1999). Det finns ett program som stöder användning av haptik och det är ClayTools från Sensable, som också är tillverkaren av Phantom Omni. [9]. Figur 1: Ett haptiskt pekdon, här Phantom Omni. Bild från vrealities.com Skärmar För Virtual Reality är det vanligt att kunna se bilden i 3D. Det finns olika sätt att göra det på. Varje metod har sina fördelar och nackdelar. Den enklaste och billigaste metoden är den anaglyfiska. Det innebär att bilden delas upp i två olika färger, vanligen röd och cyan. Även kombinationen röd och grön förekommer. Kostnaden för ett par sådana glasögon är mycket låg. Det fungerar med en vanlig datorskärm utan några speciella krav. Att dela upp bilden är enkelt med OpenGL och programmet Vizard, som beskrivs i kapitel 3.3, har detta stöd inbyggt. I båda ramverken kan detta konfigureras med ett enda kommando. Med anaglyfisk 3D är det vanligt att ghosteffekter uppstår på grund av att färgerna på bilden inte exakt överensstämmer med glasögonens filter. Det problemet undviks med metoder baserade på polarisation. Med denna metod används en särskild skärm där det finns två olika polarisationsriktningar inbyggda. Det går att göra samma sak med projektor och då används två stycken projektorer med varsitt polarisationsfilter på. Det skulle i princip kunna gå att sätta polarisationsfilter på vanliga projektorer om de som används är av DLP-typ 3. Till detta krävs förstås särskilda glasögon med polarisationsfilter. Filtren ska stämma med riktningarna på glasögonens respektive öga. Fördelen med denna metod är att bilden blir bättre än vad den anaglyfiska kan erbjuda. 3 Det går inte att sätta polarisationsfilter på LCD-projektorer eftersom de redan har ett sådant inbyggt. Två filter med olika riktning ger inte ändrad polarisation, utan bilden blir istället blockerad. 3

10 Det finns ett sätt till att få 3D och det är att använda skärm som klarar en uppdateringsfrekvens på minst 120 Hertz. Till det används glasögon som växlar mellan ögonen (shutter glasses). Växlingen går till på det sättet att glasögonen har flytande kristaller och ett polarisationsfilter i glaset. Bilden blockeras genom att det sätts en spänning på de flytande kristallerna så att inget ljus släpps igenom. Varje öga får därför varannan bild, 60 gånger per sekund. Det behövs också oftast en infraröd ljusgivare som synkroniserar glasögonen så att bilderna ges till rätt öga. Varannan bildruta visas på höger och varannan på vänster. För att kunna visa i 3D utan att flimmer uppstår bör uppdateringsfrekvensen alltså vara minst 120 Hertz på skärmen. Därför har det varit vanligt att CRT-skärmar användes eftersom LCD-skärmarna inte klarat detta krav på prestanda. Det finns numera LCDskärmar som kan användas till detta, men det fanns inte många att välja på under hösten Det finns ytterligare en typ av skärmar, som dock inte skall förväxlas med vanlig LCD. De ger en 3D-bild och metoden kallas autostereoskopisk. Det innebär att särskilda glasögon eller något annat hjälpmedel inte används för att se bilden i 3D. En sådan skärm är WOWvx från Philips. Om fler tillverkare börjar göra autostereoskopiska skärmar eller om de överhuvudtaget når konsumentmarknaden återstår att se. 1.4 Vad det brukar användas till? Virtual Reality kan användas till en rad olika ändamål. Utbildning som i detta fall är ett av dem och den vanligaste. Exempel på områden där Virtual Reality är lämpligt att använda är: Konstruktion (mekanisk, arkitektur, osv...) Medicin (kirurgi och tandläkare) Träning i simulator (bil, flyg, osv...) Molekyler, kemi. (T.ex ett annat examensarbete inom Tempus, Wikell 2009). Datorspel (Dock brukar interaktionen inte vara naturlig ). I övrigt, som inte är utbildning, kan det användas för till exempel arktitektur och design. Däremot finns tillämpningar där Virtual Reality är olämpligt. Sådana är till exempel där användaren interagerar med sig själv på något sätt, som att sätta in kontaktlinser (Pantelidis, 1996). Eftersom utrustning för Virtual Reality brukar vara dyrbar, åtminstone om full immersion önskas, brukar de som använder tekniken vara begränsat till institutioner och större företag. Sådana skulle kunna vara till exempel biltillverkare, flygindustrin och universitet där det finns ett behov av detta. Det är ju till exempel inte så lämpligt att träna nya tandläkare på riktiga patienter utan att först testa på virtuella objekt. Innan Virtual Reality fanns utfördes träningen på dockor, men de kan endast användas ett begränsat antal gånger och kostar pengar att ersätta. För användning i datorspel finns glasögon och tillhörande givare att köpa, men haptik (bortsett från forcefeedback) och immersiv 3D-upplevelse lär dröja ett tag till. 4

11 1.5 Problem med Virtual Reality Virtual Reality är inte helt problemfri. Ett vanligt problem med Virtual Reality är illamående. En orsak av flera till problemet är att det användaren ser inte stämmer med vad balanssinnet rapporterar. Användaren sitter stilla medan denne förflyttar sig i den virtuella världen [2]. Normalt brukar avvikelser i balanssinnet, av hjärnan, tolkas som att något olämpligt har ätits och därför uppstår illamåendet. För att det ska uppstå krävs att det ska vara immersivt (hela synfältet) och att användaren rör sig i 3D-miljön. Det räcker inte med endast en bild på en skärm (Johnsson, 2003). Problemet ökar med antalet detaljer i den virtuella världen. Symptomen brukar vara av arten sjösjuka dvs yrsel, illamående, koncentrations-svårigheter och trötthet. Upp till 80-90% av användarna får symptom. I Tempus-projektet kommer 3D-glasögon att användas och de ger inte dessa problem eftersom de inte täcker hela synfältet. Däremot kan glasögonen ge ont i ögonmusklerna vid längre tids användning och det är på grund av att ögonen intar en onaturlig position i förhållande till fokuspunkten (skelning). Några faktorer som påverkar graden av illamåendet (förutom verklighetsgraden): Täckningsgraden av synfältet (inneslutning). Fördröjning mellan manöver och respons. Hur snabbt användaren rör sig i den virtuella världen. Mängden 3D-information. 1.6 Virtual Reality som utbildningsverktyg i mekanisk konstruktion För varje tillämpningsområde ställs specifika krav på utrustningen. I fallet med att lära ut mekanisk konstruktion behöver den virtuella miljön efterlikna den verkliga situationen, även om det inte är helt nödvändigt. Det beror naturligtvis på hur mycket kostnader som ska läggas ut på utrustningen. Tillverkningsprocessen omfattar följande steg: (1) tillverkning, (2) montering, (3) kontroll och verifiering. Steg 1 innebär att maskindelarna tillverkas, steg 2 innebär att delarna sätts ihop till en färdig produkt, och i steg 3 testas att produkten fungerar. Det program som har utvecklats i detta examensarbete omfattar steg 2, nämligen monteringssteget. I programmet ska därför finnas färdiga delar som har gjorts i ett CAD-program. Målet med Virtual Reality i monteringssteget brukar vara följande (Mujber, 2004): Att minska antalet steg och tiden som behövs för att göra delarna till en produkt. Delarna måste nämligen designas för att kunna sättas ihop utan svårigheter. Att utvärdera hur bra monteringen blir. Hur svårt det är att montera och vad det kostar i form av arbetstid. Även risken för att fel görs vid monteringen utvärderas. Att verifiera montering, men också demontering. Det får naturligtvis inte vara för svårt att ta isär apparaten om det blir aktuellt med reparation. Montering sker inte bara vid tillverkningen utan även vid reparation och underhåll. 5

12 Inget av dessa mål handlar primärt om utbildning av montörer, men det hindrar inte att Virtual Reality används till det ändå. Tidtagningen, som ska finnas i programmet, är tänkt att hjälpa studenterna att optimera sin strategi vid monteringsarbetet. Det är närmast relaterat till punkt två ovan. 2 Tempus-projektet 2.1 Om projektet Tempus-projektet startades under år Det är ett samarbete mellan Ain Shams University (ASU) i Egypten, Helwan University i Egypten, KTH i Stockholm och Nottinghams universitet i Storbritannien. Projektet är finansierat av EU. Bland annat ska exempelvis speciella 3D-skärmar köpas in till studenternas laborationssal. Arbetet utförs av examensarbetare och anställda på de respektive universitet som deltar i projektet. Projektet fortsätter även efter att detta examensarbete blivit färdigt. 2.2 Projektets mål Tempus-projektet är ett projekt vars syfte är att bygga upp ett VR-labb på Ain Shams University (ASU) i Egypten. Laborationssalen ska användas för undervisning i mekanisk konstruktion. KTH och Nottingham bidrar med kunskaper som ASU inte har. KTH bidrar med 3D-grafiken och detta examensarbete är en del av det. Den planerade laborationssalen ska bestå av en föreläsningssal med möjlighet att visa 3D-bilder med hjälp av stereoprojektion. Salen ska rymma cirka 25 personer. De ska använda två projektorer som är modifierade med INFITEC-teknik 4 och studenterna (åskådarna) har speciella glasögon för att kunna se bilden. Utöver föreläsningssalen ska också finnas ett antal datorer i laborationssal för studenterna att träna på. De är utrustade med speciella LCD-skärmar som kan visa bilden i 3D och enligt planer ska det också finnas någon form av haptik. Övriga mål inom Tempus-projektet är följande: Förbättra och förnya kurserna för teknologstudenterna på Ain Shams University. Utvidga kunskaperna och använda ny teknik för ingenjörers arbete. Introducera nya sätt att lära ut metoder, med inriktning mot samarbete och interaktion mellan studenter. Göra virtuella experiment inom olika kunskapsområden. Träning för de lärare och övrig personal på att använda den nya tekniken. Erbjuda träning för ingenjörer som arbetar i industrin. 4 Projektorerna är typ F30 och normalt polariserade, men i detta fall är det INFITEC som används, vilket innebär att varje öga får varsitt våglängdsintervall inom rött, grönt och blått. 6

13 2.3 Projektets begränsningar Det är tänkt att det ska finnas minst åtta datorer i laborationssalen för studenterna. Det faktum att datorerna ska användas av studenter måste beaktas eftersom hårdvaran, till exempel haptiska pekdon är små, dyrbara och lätta att ta med sig. Det har förekommit diskussioner om de ska ha två haptiska pekdon per dator, men de är osäkra på om varje dator ska ha två stycken, endast en, eller ingen alls. De är dyra och det är också enligt uppgift onödigt att ha två stycken. 2.4 Användningen på ASU I Tempus-projektet ska det tas fram program som är tänkta att användas på universitetet i Egypten. De som ska använda dem är lärare och studenter på mekanisk konstruktion och maskin. Studenterna ska genomföra experiment och övningar inom utbildningen. De program som tas fram genom examensarbetena inom projektet kommer förmodligen att användas som prototyper och behöver därför utvecklas på något sätt innan de kan användas i undervisningen. Varje program som utvecklas är tänkt att vara fristående och kommer inte att sättas ihop till en applikation. 3 Programmet Vizard 3.1 Översikt Det program som har valts för arbetet inom Tempus-projektet är Vizard från Worldviz. På nästa sida finns en bild på hur programmeringsmiljön ser ut. Det är ett program som gör det möjligt att på relativt kort tid göra en prototyp med hjälp av Python-script. Python är centralt i Vizard på så sätt att all kod som skrivs är i Python. Programmet kostar pengar, men bygger på öppna projekt som OpenSceneGraph och fysikmotorn ODE. 3.2 Specifikationerna I Vizard ingår ett stort antal olika moduler för visualisering i 3D och Virtual Reality. Långt ifrån alla används i Tempus, men för att ge en helhetsbild av vad det är för program ges här en lista på en del av de egenskaper och specifikationer som Vizard har i kortform: Python 2.4 OpenSceneGraph 1.2 Stöd för många olika modellformat, inklusive 3DS (3D-studio) som används i Tempus Stöd för udda hårdvara som används för Virtual Reality. 7

14 Haptikstöd (endast Senasble-hårdvara än så länge) och tracking. Fysik via ODE (Open Dynamics Engine). En bekväm IDE (Integrated Development Environment) där koden kan skrivas och provköras. Den använder Scintilla för kodeditorn. Möjlighet att göra HUD (Heads Up Display), som är en slags meny i 3Dfönstret. Dock endast text i dem. Stöd för cluster och CAVE. Det finns fler funktioner och om dem går det att läsa på Vizards hemsida där det också finns en mer detaljerad lista på vilka format som stöds. En länk dit finns i länksamlingen. En fullt fungerande demoversion som fungerar i 90 dagar finns att hämta där om epostadress uppges. Kod som skrivs i demoversionen fungerar fullt ut i den riktiga. Figur 2: Vizard IDE. Det är här Pythonkoden skrivs. 3.3 Bra egenskaper För priset fås en miljö där utvecklaren kan skriva kod i Python. Dessutom är programvaran färdiganpassad för Virtual Reality-tillämpningar. Med programmet följer ett antal moduler för hårdvara för exempelvis haptik, HMD och tracking. Alternativet, om koden ska skrivas med C++, är att utvecklaren måste leta reda på dem själv och få dem att fungera med grafikens kärna (OpenSceneGraph). Det är inte bara att sätta ihop modulerna. Det krävs kod som sköter kommunikationen mellan modulerna. Att sätta upp en fungerande kompileringsmiljö med separata moduler som laddas ner från respektive projekts hemsida tar också en del tid. Med miljön följer även ett antal exempel, även om de är ganska få till antalet. Trots det är det enkelt att komma igång med programmet och dess API är på så pass hög nivå att behövs så mycket kod. 8

15 Programmet har stöd för en mängd olika format för 3D-modeller som exempelvis 3DS och obj för att nämna de vanligaste formaten. Stödet för alla formaten är inbyggt i OpenSceneGraph och är inte något som är unikt för Vizard. Även animationsformat finns med. Mer om vad som ingår går att läsa på OpenSceneGraphs och Vizards hemsidor, se i länklistan. Fysikmotorn ODE är visserligen av det lite enklare slaget. Det finns en mer avancerad som heter Bullet och som också är öppen kod, ZLib, men den här duger till det allra mesta av det som Vizard är tänkt att användas till. Den version av OpenSceneGraph som används i Vizard är gammal, version 1.2, medan den version som finns att hämta från OSGs hemsida är version nu i oktober Troliga orsaken till att de har blivit kvar med den gamla versionen är att det krävs stora förändringar i Vizards kod för att den nya ska fungera där. Version 2.x är nämligen inte bakåtkompatibel med 1.x. Dock planerar Worldviz en version där de gått över till OSG 2.x, men det dröjer innan de är färdiga med den, förmodligen tidigast under år Det kommer troligen inte att bli några skillnader i Python-API på grund av migreringen. Jag tror inte att versionen i detta sammanhang har så stor betydelse, men i C++ är OSG version 2.x mycket enklare att hantera än 1.x. Mycket av den funktionalitet som i version 1.x krävde externa bibliotek finns nu integrerad i de senaste versionerna. Exempelvis behövs inte längre Cal3D för att göra animationer. API-dokumentationen är något ordfattig. Däremot finns ett antal exempel som kan användas som en utgångspunkt och de är enkla att förstå. Annars är det enkelt att testa för att avgöra vilket beteende funktionerna har. Den stora fördelen med Vizard kan sammanfattas med ett enda ord: Enkelhet. 3.4 Svagheter Det allra tydligaste är att Vizard inte gör all den funktionalitet som finns i OpenSceneGraph tillgänglig från Python-miljön 5. Det är bara en mycket liten del av funktionaliteten som är tillgänglig och under projektets gång visade det sig vara en liten nackdel. Fast denna nackdel kan också vara en fördel. Det är nämligen så att om det hade varit många fler funktioner kanske det hade varit svårt att hitta den funktion som ska användas. En annan begränsning är prestandan. Normalt används C++ för att göra 3Dapplikationer, men här är det som sagt Python. Prestandaskillnaden mellan C++ och Python är stor [5]. Tillräckligt stor för att den ska vara tydligt märkbar. Python har bra prestanda jämfört med många andra scriptspråk och många känner till det språket. Ett annat språk som heter Lua kan ha ännu lite bättre prestanda, men det är inte lika många utvecklare som kan det språket, särskilt inte hos målgruppen för Vizard. Lua är annars ett vanligt scriptspråk inom spelutveckling. Ett tredje problem är att programmet kostar pengar och i och med att den kostar är koden till utvecklingsmiljön och bindningarna till modulerna inte tillgängliga, även om 5 Jag har jämfört Vizard-help med OpenSceneGraph API-dokumentation. Se referens [3] och [4]. 9

16 delarna som har använts är från öppna projekt. Det är tillåtet enligt LGPL och BSD 6. Med källkoden tillgänglig hade det varit möjligt att lägga till den funktionalitet som krävts för att kunna göra prototypen på smidigast möjliga sätt. Nu fick det bli lite fulkod här och där, vilket förmodligen drar ner prestandan något. Det har inte gjorts några tester som verifierar prestandaskillnaden, men jag utgår från det som normalt gäller om script jämfört med kompilerad kod. Det skall sägas att dessa nackdelar är ur en programmerares synvinkel. Målgruppen för programmet Vizard är inte de som är erfarna programmerare utan är tänkt att användas inom många olika områden där programmering inte hör till den normala verksamheten, framför allt akademiska kretsar exempelvis inom kemi, naturvetenskap, arkeologi, mekanik med flera. I sådana sammanhang är det inte alltid det finns tillgång till en programutvecklare. 3.5 Körmiljön Vizard är konstruerad för att köras i Windows XP. Utvecklarna på WorldViz skriver i sitt eget forum att Windows Vista fungerar oftast men det är några funktioner som inte är helt kompatibelt med det operativsystemet. Möjligen har det rättats vid tidpunkten då när detta examensarbete avslutats. Programmet fungerar även i Wine (Linux) som jag kör hemma, dock utan haptik. Hur det ska installeras beskrivs i bilaga 5. 4 Planeringen av prototypen Detta kapitel handlar om planeringsfasen där en prototyp skulle tas fram. Hela genomförandet kan här delas upp i planering (detta kapitel), implementation (kapitel 5) och diskussion (kapitel 6). 4.1 Examensarbetets mål Huvuduppgiften var att undersöka olika metoder för interaktion. En prototyp skulle tas fram som demonstrerar de olika metoderna för interaktion med maskindelar. Det är meningen att användaren ska plocka ihop en maskin, i detta fall en pump. För att kunna göra det finns olika metoder för att markera och flytta de olika delarna. Under monteringen av delarna ska även tid mätas från det användaren startar tills alla delarna är på plats. Den hårdvara som skulle användas var musen och ett haptiskt pekdon (Phantom Omni). I första hand var det musen som skulle används och i andra hand haptik. Till utvecklingen av prototypen lades tio veckor. 6 LGPL och BSD är licenser för mjukvara. Gemensamt för dessa är att det ges möjlighet att ta del av källkod, modifiera den och distribuera den vidare till tredje part. Villkoren är olika. BSD tillåter att inte lämna ut källkod för de ändringar som har gjorts medan LGPL inte gör det. 10

17 4.2 Avgränsningar Det som skulle göras var att undersöka vilka metoder som finns, implementera dem och utvärdera hur implementationen blev. Avgränsningarna kan därför summeras som nedan: Undersökning av vilka vanliga förflyttningsmetoder som finns och eventuellt hitta egna. Skriva kod för olika interaktionsmetoder i språket Python med Vizard IDE. Skriva Python-kod för användning av haptik. I första hand en enhet. Skriva kod för tidtagning så att tidsstudier kan göras. Utvärdera erfarenheter och kvalitet av den kod som skrivits och testats. Eventuellt testa två haptiska enheter (vänster och höger) om det kunde lånas in en extra Phantom Omni en kort tid för ändamålet. 4.3 Relaterat arbete Nedan finns kortfattade beskrivningar på några arbeten som är relaterade till de frågeställningar som har undersökts i denna rapport: Design of interactive transformation tools in a medical application (Wrange, 2007) är ett examensarbete som utförts på KTH och KI. Rapporten handlar om transformationsverktyg för att flytta objekt i en 3D-miljö. Där är användningen till för visualisering av molekylstrukturer inom medicin. De operationer som är möjliga att göra där är translation, skalning och rotation. Jämförelser med 3Dmodelleringsverktyg görs i rapporten. Virtual Reality and Engineering Education (Pantelidis, 1996) är en undersökning om hur Virtual Reality fungerar för användning för utbildning i mekanisk konstruktion. Det beskriver hur ett labb kan byggas för detta ändamål med låg kostnad. Den tar också upp fördelarna och nackdelarna i sammanhanget. Artikeln är dock ganska ålderstigen. Det som står där är inte nödvändigtvis tillämpbart idag i alla delarna. Virtual Reality: A design tool for enhanced consideration of usability validation elements (Marsot, 2007). Här går det att läsa om användning av haptik vid simulering av tillverkning, i detta fall vikning av plåt. Immersive training systems: Virtual reality and education and training (Psotka, 1995). Detta handlar om Virtual Reality inom utbildning i allmänhet, inte bara mekanisk konstruktion. Arbetet kan betraktas som föråldrat. Virtual reality applications in manufacturing process simulation (Mujber et al. 2004). Här görs jämförelser mellan olika VR-system för mekanisk konstruktion. A virtual reality-based experimentation environment for the verifcation of humanrelated factors in assembly processes (Chryssolouris et al. 2000). Denna artikel undersöker olika metoder att utföra montering av föremål i en Virtual Realitymiljö. Det som används är handtracking. 11

18 4.4 Hur prototypen bör se ut Det är tänkt att studenterna på ASU ska kunna använda programmet på både vanliga skärmar och speciella 3D-skärmar. Det kan inte förutsättas att en 3D-skärm alltid används. Det kan nämligen tänkas att studenterna skulle vilja köra det på sina egna datorer och då inte har möjlighet till stereoskopisk 3D. Det är samma sak med haptiken, saknas det måste det vara möjligt att flytta objekten med musen. I prototypen bör också finnas ett läge för att göra placeringen av maskindelarna på den position där de ska vara då monteringen startas. Det bör finnas eftersom det är svårt att mata in siffror utan att se var delarna hamnar. Ett avancerat GUI med menyer och dylikt har låg prioritet eftersom detta arbete ska fokusera på interaktionsmetoder. 5 Genomförande I detta kapitel beskrivs hur de olika interaktionsmetoderna med musen och haptik har implementerats. Varje delkapitel utom de tre sista består av en problemställningsdel och en implemenationsdel. 5.1 De olika metoderna som övervägdes I detta examensarbete övervägdes några olika metoder för förflyttning av objekt exklusive de som redan gjorts i ett annat examensarbete. Här listas metoderna och en diskussion om huruvida de var svåra eller enkla att implementera i Vizard. Metod 1: Direkt förflyttning med musen. Objektet flyttas genom att klicka med musen och dra denna till den nya positionen. Det fanns här olika alternativ. Musen har tre knappar och den i mitten brukar vara ett rullhjul. I ett tidigt skede bestämdes att mittenhjulet skulle reserveras till för att rotera och skala vyn. Då var det naturligt att låta den vänstra knappen flytta objektet i ett 2D-plan och den högra i den tredje dimensionen. Alternativen att välja mellan är om planet ska vara parallellt med skärmens (vyn) eller om den ska ligga med XZ-axlarna. Eftersom programmet är gjort så att vyn roteras runt Y-axeln ungefär som i 3D-programmet Maya, faller det naturligt att detta plan läggs ihop med XZ-axlarna och att den tredje dimensionen är längs med Y. Denna metod var enkel att implementera i programmet. Mer om hur det har gjorts finns i kapitel 5. Metod 2: Placering med musklick. Med denna metod klickar användaren först på det objekt som ska placeras och sen på den plats där den ska placeras. Denna metod var den enklaste av alla att implementera. Det finns kod i projektet som gör beräkningar på grund av att de funktionerna helt enkelt saknas i Vizard, men det är inte omfattande och här påverkas inte prestandan märkbart. Dessa beräkningar avgör om användaren har klickat på rätt plats för att placera objektet. Metod 3: Förflyttning med hjälp av en manipulator. I 3D-program, som Blender och Maya, finns en så kallad manipulator som ser ut som tre pilar i olika riktningar. Det 12

19 vanliga är att RGB överensstämmer med ordningen XYZ, det vill säga att exempelvis rött är längs X-axeln. Denna metod hade förmodligen varit den absolut bästa vid sidan av haptiken då den är lätt att förstå. Det finns ett problem: för att få den att fungera måste Z-bufferten manipuleras. Om ett objekt skulle vara större än manipulatorn skulle den befinna sig inuti objektet och därför inte synas, se figur 3 på hur det är tänkt att se ut. Därför behöver Z-bufferten nollställas innan manipulatorn ritas. I programmet Vizard finns ingen möjlighet att göra de nödvändiga operationerna på Z-bufferten under pågående ritning. Den här metoden kan därför inte implementeras med Vizard. Figur 3: Manipulator för (1) translation, (2) skalning och (3) rotation Metod 4: Flyttning med hjälp av ett haptiskt pekdon. Denna metod måste anses vara det absolut bästa av alla då den ger den mest naturliga flyttningsrörelsen, men på grund av att utrustningen är så dyr finns även de andra metoderna baserat på att använda musen med i prototypen. Till skillnad från musen, där olika skiftlägen är nödvändiga för att flytta i respektive axel, kan användaren med en Phantom Omni flytta objekten direkt i alla riktningar och dessutom rotera objekten. Det tar lite tid att vänja sig vid att hålla i pennan, men det går fort. Denna metod finns med i prototypen, även om vissa begränsningar finns. Mer om begränsningarna senare under beskrivningen av implementationen. 5.2 Rotation och skalning av vyn Funktion Den interaktionsrutin som finns inbyggd i Vizard och används som standard är inte tillräckligt bra för det ändamål som prototypen ska användas för. Standardfunktionen i Vizard är sådan att vyn roteras och flyttas beroende på den riktning musen dras från den punkt på skärmen där förflyttningen startas. Till exempel om användaren klickar på en punkt någonstans i vyn och drar musen uppåt flyttas kameran 7 framåt i en konstant hastighet. Förflyttningen är av den typ som förekommer i 3D-spel, användaren går framåt, bakåt och åt sidorna i ett rum. I denna prototyp ska användaren inte gå runt i rum. Här är det istället en maskin som visas och musen ska användas för att rotera den runt dess centrum. Därför har det gjorts så att rotationen kan styras exakt genom att muspositionen avgör vilken vinkel figuren visas från. Jag har valt att göra rotationerna så att figuren roteras på samma sätt som i Maya. Här är det mittenhjulet på musen som används för både rotation och skalning. Med denna metod roteras kameran runt Y-axeln om musen flyttas horisontellt och runt X-axeln om musen flyttas vertikalt. Det är också 7 Kamera är ett begrepp inom 3D och är den punkt som 3D-miljön visas från. Ett annat ord som kan förekomma är ögonpunkt (eng: eye point). 13

20 samma rotation som används i 3D-spel för att titta åt olika håll, men skillnaden från standardläget i Vizard är att det görs en rotation och inte en förflyttning. Dessutom befinner användaren sig här utanför origo. Det enklaste var att göra modifikationerna i modelview-matrisen. Först hämtas matrisen ut från Vizard genom att anropa viz.mainview.getmatrix(). Sen roteras matrisen på samma sätt som att operationen glrotate() anropas i OpenGL, fast här är det min egen kod i Python som gör det. Därefter läggs den ändrade matrisen tillbaka in i Vizards vy. Resultatet av operationen är att vyn har roterats Matrishanteringen Det är vanliga 4x4-matriser som används och de fungerar på exakt samma sätt som i OpenGL, som är ett högerhandssystem. För att kunna göra rotationerna smidigt med en X- och Y-position från musen behövs därför två olika matriser, en för rotation runt X och en för Y. Dessutom behövs en matris för skalningen, egentligen en translationsmatris. Alla vinklar är i grader eftersom rotationerna i OpenGL är i grader. Matriserna är egentligen enligt vänsterhandssystemet eftersom musen har origo i övre vänstra hörnet medan OpenGL har den i nedre vänstra hörnet. Det är ju som bekant så att -sin(y) = sin(-y). Rotation runt X och Y samt skala ger följande matriser: rx=[1 1] 0 cos x sin x 0 0 sin x cos x 0 ry=[ cos y 0 sin y 0 1] scale=[1 sin y 0 cos y För skalningen är värdena sx och sy alltid 0 eftersom ingen förflyttning i sidled eller uppåt/neråt görs. Alla förflyttningar görs i Z-led. Eftersom figuren är stor är skalfaktorn satt till 5.0. Matriserna multipliceras därefter ihop på följande sätt: mtx= ry rx scale Mtx är den matris som skickas tillbaka till modelview. Det är också viktigt att tänka på att matrisen följer layouten i OpenGL. Där ligger siffrorna i denna ordning: [ ] Och i Python skall siffrorna därför stå i denna ordning: mtx = [0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15] 0 0 sx sy sz ] Skalningen är egentligen inte en riktig skalning. Skulle det göras en äkta skalning uppstår det en del problem, främst med haptiken. Istället är den funktionen gjord så att 14

21 kameran flyttar sig närmare objektet om det ska bli större och bort från den om det ska bli mindre. Denna metod fungerar bäst ihop med de positioner som objekten har och med den haptiska avkänningen. Haptiken har en begränsning för avkännings-området och den är +/-50.0 i alla riktningar från origo. Är objektet utanför det området går det inte att ta på det. Därför bör äkta skalning undvikas. Det hade varit bäst om det inte hade funnits någon begränsning på avkänningsområdet. Undersökningar har gjorts för att avgöra om det finns något annat sätt att komma runt problemet, men det fanns ingen sådan lösning. Det mest troliga är att begränsningen finns i Vizard, men den kan också finnas i en drivrutin. Lösningen är acceptabel och eftersom objekten inte befinner sig i ett rum märks det inte att skalningen egentligen är en translation. 5.3 Markering av objekt Problemställning För att kunna markera ett objekt måste användaren få en feedback så att han vet att det valda objektet är markerat. Annars är det lätt att tro något är fel. För att visa att ett objekt är markerat finns olika sätt att göra det på. Ett sätt som en annan exjobbare i Tempus-projektet har gjort är att ha två olika versioner av varje objekt. En med ordinarie färg och en annan i avvikande färg, som är den markerade versionen. För att visa att det är markerat läggs det färgade objektet, som är något större, utanpå det ordinarie. I hans fall är objekten enkla sfärer som ska föreställa molekyler och då går det att göra på det sättet. I det här examensarbetet består objekten av maskindelar som inte nödvändigtvis är konvexa och då kan problem uppstå om något objekt läggs utanpå. Problemen visar sig genom att konkava delar inte hamnar på rätt position när föremålet är större. Om till exempel bokstaven E läggs ovanpå en mindre version av samma bokstav är det lätt att se att den översta vågräta linjen hamnar lite för högt och den nedre lite för lågt. Se figuren nedan. Figur 4: En större bokstav täcker inte den mindre eftersom den inte är konvex. Ett annat sätt, som är bättre, är att använda en shader som färglägger figurerna. Fördelen 15

22 med en shader är att det är lätt att påverka färgen och att endast en upplaga av figurer behövs. En shader är också enkel att byta ut eller underhålla utan att ändringar i pythonkoden behöver göras. Då uppstår frågan om vilken färg som det markerade objektet ska ritas med för att det ska synas så bra som möjligt. Det måste fungera oavsett vilken färg som objekten har. Samtidigt får det inte uppstå en situation där ett markerat objekt råkar få samma färg som ett annat Shader för omarkerat objekt Egentligen skulle det kunna räcka med att endast ha shader för markerat objekt, men det är inte snyggt med matta ytor på de omarkerade. Eftersom de är maskindelar bör de vara blanka. En shader behövs därför även för omarkerade objekt. Jag har övervägt mellan olika algoritmer, till exempel Phong och Cook-Torrance, som är avsedda för metalliska ytor. Med båda algoritmerna kan konstanter sättas och som påverkar blänkeffekten på objekten. Algoritmerna fungerar dock på helt olika sätt. Jag valde Phong som är enkel att implementera. Egentligen spelar det ingen roll vilken som används. Enkelheten kan dock ha en viss fördel om någon på ASU skulle vilja ändra på dess kod. Så här ser koden för Phong ut: Vertex-shader: varying vec3 normal; varying vec3 vertex; void main() { normal = gl_normalmatrix * gl_normal; vertex = (gl_modelviewmatrix * gl_vertex).xyz; } gl_texcoord[0] = gl_multitexcoord0; gl_frontcolor = gl_frontmaterial.diffuse; gl_position = ftransform(); Fragment-shader: varying vec3 normal; varying vec3 vertex; // gl_vertex kan ej läsas i fragment-shader! // Lånad från GLSL-laboration 8. vec3 phong(vec3 Normal, vec3 Ambient, vec3 Diffuse, vec3 Specular, float Shininess) { vec3 L = normalize(gl_lightsource[0].position.xyz - vertex); vec3 H = vec3(gl_lightsource[0].halfvector); vec3 LAmbient = vec3(gl_lightsource[0].ambient); vec3 LDiffuse = vec3(gl_lightsource[0].diffuse); vec3 LSpecular = vec3(gl_lightsource[0].specular); } return vec3(diffuse * LDiffuse * max(dot(normal, L), 0.0) + LAmbient * Ambient + Specular * LSpecular * pow(max(dot(normal, H), 0.0), Shininess)); 8 Den GLSL-labb som nämns här är den som ges i AGI-kursen på KTH CSC och bygger på Martin Fitgers examensarbete (Fitger, 2008). När koden skrevs som en labbuppgift utgick jag från information på Wikipedia, se länk [7]. Wikipedia brukar, men inte alltid, vara korrekt. 16

23 void main() { float pot = 34.0, ks = 0.7; vec3 N = normalize(normal); vec3 Specular = vec3(ks, ks, ks); } // Eventuell textur skickas till diffuse, dvs tex.xyz * // gl_frontmaterial.diffuse.xyz. gl_fragcolor = vec4(phong(n, gl_frontmaterial.ambient.xyz, gl_frontmaterial.diffuse.xyz, Specular, pot), 1.0); Som synes är det GLSL som koden är skriven i. Stöd för det språket finns inbyggt i OpenSceneGraph och kan därför användas direkt utan inläsning av extra moduler i Vizard. GLSL är också det enda shaderspråk som stöds. Shaderkoden placeras i egna filer utanför Python-källkoden och läses in med hjälp av en inbyggd funktion i Vizard. Det finns en avhandling som beskriver Phong-shading, se denna för detaljer bakom algoritmen (Phong, 1975). Jag har för enkelhetens skull valt att låta konstanterna pot och ks ha sina värden direkt i koden. Annars kan det vara lämpligt att göra en uniformvariabel, som sätter konstanten, från programmet som använder shadern. Det är lika enkelt att ändra i shaderns kod som att ändra i huvudprogrammet och programmet har ingen nytta av att kunna ändra på dessa konstanter eftersom de angivna värdena är de som bäst liknar metall. När användaren startar programmet är det förstås endast Phongshadingen som syns eftersom alla objekt är omarkerade. Figuren nedan visar skillnaden. Figur 5: Den vänstra är utan shader och den högra är med shader Shader för markerat objekt Som jag skrev tidigare måste ett markerat objekt vara tydligt avvikande från de övriga. Ett bra sätt att göra det på är att använda normalkodning. Det blir både snyggt och tydligt. Shaderkoden är mycket enkel och kort: Vertex-shader: varying vec3 normal; void main(void) { vec4 v = vec4(gl_vertex); gl_frontcolor = gl_color; 17

24 } normal = gl_normalmatrix * gl_normal; gl_position = gl_modelviewprojectionmatrix * v; Fragment-shader: varying vec3 normal; void main(void) { gl_fragcolor = gl_color * vec4(normalize(normal), 1.0); } Normalens värde i varje punkt på objektet används här för att sätta en färg. Denna shader används normalt till att hämta värden från en normal-map, men passar även till detta ändamål eftersom den ger ett tillräckligt avvikande utseende på det valda objektet att det syns tydligt. En beskrivning av algoritmen så som den brukar användas finns i boken Real-Time Rendering (Möller, 2002) på sid Ovanstående shaderkod kan inte användas för normal-mapping eftersom den här är ändrad för att vara anpassad just till denna prototyp och en del funktioner är därför utelämnade. När ett objekt har markerats så att shadern aktiveras, då ser det ut som i figur 6 på nästa sida. Figur 6: Ett objekt som är markerat. 5.4 Peka och placera Problemställning I denna interaktionsmetod, att peka och placera, är det tänkt att användaren ska klicka på ett objekt så att den markeras. Det går att klicka var som helst på objektet. Därefter ska användaren peka och klicka på den plats där objektet ska vara. Även här kan musklicket hamna var som helst inom ett område där objektet ska placeras. En metod är att beräkna avståndet mellan musklick på två olika punkter. Det är svårt att göra på det sättet eftersom användaren klickar på två ställen, det första klicket är på objektet och det andra på ett område vid destinationen. Därför kan avståndet mellan de två muspositionerna variera och kan inte användas för att avgöra om det är rätt plats att placera objektet på. Jag har i implementationen därför valt en annan lösning än ovanstående. 18

Solowheel. Namn: Jesper Edqvist. Klass: TE14A. Datum: 2015-03-09

Solowheel. Namn: Jesper Edqvist. Klass: TE14A. Datum: 2015-03-09 Solowheel Namn: Jesper Edqvist Klass: TE14A Datum: 2015-03-09 Abstract We got an assignment that we should do an essay about something we wanted to dig deeper into. In my case I dug deeper into what a

Läs mer

Självkörande bilar. Alvin Karlsson TE14A 9/3-2015

Självkörande bilar. Alvin Karlsson TE14A 9/3-2015 Självkörande bilar Alvin Karlsson TE14A 9/3-2015 Abstract This report is about driverless cars and if they would make the traffic safer in the future. Google is currently working on their driverless car

Läs mer

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Procedurell grottgenerator och eld i GLSL. Marcus Widegren Procedurell grottgenerator och eld i GLSL Marcus Widegren 14 januari 2012 Innehåll 2 Sammanfattning Jag har gjort en enkel procedurell grottgenerator i GLSL och C++. För belysning används en fackla, som

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Slutrapport Fästanordning för fordons specifik bilbarnstol i framsätet

Slutrapport Fästanordning för fordons specifik bilbarnstol i framsätet Rapporten är framtagen med ekonomiskt bidrag från Trafikverkets skyltfond. Ståndpunkter och slutsatser i rapporten reflekterar författaren och överensstämmer inte nödvändighet med Trafikverkets ståndpunkter

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

Läs mer

Vätebränsle. Namn: Rasmus Rynell. Klass: TE14A. Datum: 2015-03-09

Vätebränsle. Namn: Rasmus Rynell. Klass: TE14A. Datum: 2015-03-09 Vätebränsle Namn: Rasmus Rynell Klass: TE14A Datum: 2015-03-09 Abstract This report is about Hydrogen as the future fuel. I chose this topic because I think that it s really interesting to look in to the

Läs mer

Simulering av brand i Virtual Reality

Simulering av brand i Virtual Reality Simulering av brand i Virtual Reality Bakgrund Användningen av virtual reality (VR, virtuell verklighet) som ett forskningsverktyg inom brandteknik och utrymning har på senare tid visat sig vara mycket

Läs mer

Betatestning - Solsystem

Betatestning - Solsystem Betatestning - Solsystem Mikael Ågren, F03 Innehåll 1 Inledning 2 2 Frågorna 2 2.1 Är programmet konsekvent?................... 2 2.2 Behövs genvägar?......................... 2 2.3 Tillräcklig feedback?.......................

Läs mer

Lära känna skrivbordet

Lära känna skrivbordet Är det första gången du använder Windows 7? Den här versionen har mycket gemensamt med tidigare versioner av Windows, men du kan behöva hjälp med att få upp farten. Den här guiden innehåller praktisk information

Läs mer

Klassuppgift: Hinderrally

Klassuppgift: Hinderrally Klassuppgift: Hinderrally I detta dokument finns Instruktion till uppgiften Regler för konstruktionen Användarhandledning till Algodoo Uppgift Bygg ett simulerat fordon som ska klara ett antal hinder.

Läs mer

Beijer Electronics AB 2000, MA00336A, 2000-12

Beijer Electronics AB 2000, MA00336A, 2000-12 Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this

Läs mer

Lumbago - Förord. Välkommen till Journalprogrammet Lumbago.

Lumbago - Förord. Välkommen till Journalprogrammet Lumbago. Lumbago - Förord Välkommen till Journalprogrammet Lumbago. Vår förhoppning är att du ska få mer tid över för dina patienter och att du ska ha nytta av alla de effektiva funktioner som Lumbago erbjuder.

Läs mer

Forma komprimerat trä

Forma komprimerat trä Forma komprimerat trä - maskinell bearbetning av fria former Peter Conradsson MÖBELSNICKERI Carl Malmsten Centrum för Träteknik & Design REG NR: LiU-IEI-TEK-G 07/0025 SE Oktober 2007 Omslagsbild: Stol

Läs mer

Mönster. Ulf Cederling Växjö University Ulf.Cederling@msi.vxu.se http://www.msi.vxu.se/~ulfce. Slide 1

Mönster. Ulf Cederling Växjö University Ulf.Cederling@msi.vxu.se http://www.msi.vxu.se/~ulfce. Slide 1 Mönster Ulf Cederling Växjö University UlfCederling@msivxuse http://wwwmsivxuse/~ulfce Slide 1 Beskrivningsmall Beskrivningsmallen är inspirerad av den som användes på AG Communication Systems (AGCS) Linda

Läs mer

Grundläggande teori för användargränssnitt,del 2

Grundläggande teori för användargränssnitt,del 2 Grundläggande teori för användargränssnitt,del 2 Innehåll Översikt, navigering och orientering (ej i boken) Typer av användargränssnitt (Kap 6) Styrdon (ej i boken) Fitts lag (kort på sidan 527-528) Felhantering

Läs mer

Min syn på visuella verktyg i produktutvecklingsprocessen

Min syn på visuella verktyg i produktutvecklingsprocessen Mälardalens Högskola Min syn på visuella verktyg i produktutvecklingsprocessen KPP306 Produkt- och processutveckling Joakim Vasilevski 10/4/2012 Innehåll Sammanfattning... 2 Inledning... 3 Skisser... 3

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

Handbok Artikulate. Andreas Cord-Landwehr Ondrila Gupta Översättare: Stefan Asserhäll

Handbok Artikulate. Andreas Cord-Landwehr Ondrila Gupta Översättare: Stefan Asserhäll Andreas Cord-Landwehr Ondrila Gupta Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 1.1 Inlärningsmetodiken.................................... 5 1.2 De första stegen i Artikulate................................

Läs mer

DIGITALA PROJEKT Väderstation

DIGITALA PROJEKT Väderstation DIGITALA PROJEKT Väderstation Christian Lindquist, E03 Leonardo Bello, E03 Abstract Almost everybody has some kind of temperature measurement device in their home. The latest in this industry are more

Läs mer

Rhino3D. Schackbräde. Krav. Några detaljer som kan vara bra att känna till:

Rhino3D. Schackbräde. Krav. Några detaljer som kan vara bra att känna till: Laboration 2, PVT02 Modellering och Animering i Rhino 2D4138 Visualisering, datorgrafik och avancerad interaktion, (fovgrafik02), våren 2002 görs under andra kursveckan Labben går ut på att ni ska få en

Läs mer

Pulsmätare med varningsindikatorer

Pulsmätare med varningsindikatorer Pulsmätare med varningsindikatorer Elektro- och informationsteknik Projektrapport, EITF11 Digitala Projekt Charlie Hedhav Sofia Johansson Louise Olsson 2016-05-17 Abstract During the course Digitala Projekt

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Planeringsspelets mysterier, del 1

Planeringsspelets mysterier, del 1 Peter Lindberg Computer Programmer, Oops AB mailto:peter@oops.se http://oops.se/ 28 februari 2002 Planeringsspelets mysterier, del 1 Om jag ska spela ett sällskapsspel för första gången så vill jag att

Läs mer

Projektarbete 2: Interaktiv prototyp

Projektarbete 2: Interaktiv prototyp Projektarbete 2: Interaktiv prototyp Jonatan Hilmarch (Grupp 13) 880427-5595 hilmarch@skip.chalmers.se Kurs: Människa-Datorinteraktion TIG061 HT 2010 Projekt 1 - en tillbakablick Enligt projektets systemdefinition

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

1. How many hours per week have you on average spent on the course, including scheduled time?

1. How many hours per week have you on average spent on the course, including scheduled time? Design through practice and management LK0162, 30240.1516 15 Hp Pace of study = 100% Education cycle = Advanced Course leader = Petter Åkerblom Evaluation report Evaluation period: 2016-03-18-2016-03-31

Läs mer

LEGO Mindstorm-robot

LEGO Mindstorm-robot KUNGLIGA TEKNISKA HÖGSKOLAN LEGO Mindstorm-robot Programmering av LEGO Mindstorm-robot i språket NXC Kim Hammar 2/6-2013 Kimham@kth.se Introduktionskurs i Datateknik 1311 Sammanfattning En viktig del av

Läs mer

Grafisk visualisering av en spårbarhetslösning

Grafisk visualisering av en spårbarhetslösning Datavetenskap Opponenter Johan Kärnell och Linnea Hjalmarsson Respondenter Agni Rizk och Tobias Eriksson Grafisk visualisering av en spårbarhetslösning Oppositionsrapport, C-nivå Report 2011:06 1. Generell

Läs mer

Interaktion 2 STYRDON, PEKDON OCH ANNAN INTERAKTION ATT RÄKNA MED

Interaktion 2 STYRDON, PEKDON OCH ANNAN INTERAKTION ATT RÄKNA MED Interaktion 2 STYRDON, PEKDON OCH ANNAN INTERAKTION ATT RÄKNA MED Sammanfattning Styrdon Tangentbord och textinmatning Pekdon Fitts lag GOMS-KLM Styrdon Tangentbord Pekdon Tangentbord QWERTY-layout QWERTY-layout

Läs mer

Kom igång med din SMART Board. Det praktiska

Kom igång med din SMART Board. Det praktiska Kom igång med din SMART Board Det praktiska Nu när ni fått er nya SMART Board på plats och ni vill börja använda den finns det ett par steg som man bör göra först för att få allt att fungera. I denna guide

Läs mer

Space Invaders - Slutrapport

Space Invaders - Slutrapport Projekt inda14 Sida 1 av 6 Space Invaders - Slutrapport A. Projektplanen Programbeskrivning Vi tänker göra en version av det gamla arkadspelet Space Invaders i java. Spelet går ut på att spelaren styr

Läs mer

Teknikprogrammet, inriktning informations- och medieteknik

Teknikprogrammet, inriktning informations- och medieteknik Teknikprogrammet, inriktning informations- och medieteknik Varför välja oss? Kursplan Presentation av våra datatekniska kurser Eftersom företag mycket sällan anställer gymnasieelever (de vill att ni ska

Läs mer

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 6 2 Hur man spelar 7 3 Spelets regler, strategi och tips 8 3.1 Spelets regler........................................

Läs mer

Nallelek Lärarvägledning

Nallelek Lärarvägledning NALLELEK - LÄRA MERA PROGRAM AB Nallelek Lärarvägledning NALLELEK... 2 1.1 Programmet... 2 1.2 Övningar som stärker förmågan att iaktta bilder och se detaljer... 3 1.2.1 Pedagogiska tips... 3 1.3 Kategorisering

Läs mer

Bruksanvisning. Bestic software version 1.0-2.0. Äthjälpmedel. Internet: www.bestic.se

Bruksanvisning. Bestic software version 1.0-2.0. Äthjälpmedel. Internet: www.bestic.se Bruksanvisning Bestic software version 1.0-2.0 Äthjälpmedel Sida 1 (20) Innehållsförteckning 1. Introduktion 2. Säkerhet 3. Produktöversikt 4. Handhavande 5. Äta med Bestic 6. Skötselråd 7. Transport och

Läs mer

En handledning för studerande på Högskolan Kristianstad

En handledning för studerande på Högskolan Kristianstad Använda kurskonferenser i FirstClass En handledning för studerande på Åsa Kronkvist, augusti 2005 Innehåll Introduktion...3 Webbklient eller FirstClassklient?...3 Allt ligger online...3 Hitta rätt...4

Läs mer

Kontakt: Mikael Forsman mikael.forsman@arbetslivsinstitutet.se. Användarmanual för VIDAR 4.0

Kontakt: Mikael Forsman mikael.forsman@arbetslivsinstitutet.se. Användarmanual för VIDAR 4.0 Kontakt: Mikael Forsman mikael.forsman@arbetslivsinstitutet.se Användarmanual för VIDAR 4.0 Innehåll Inledning...3 Systemkrav...3 Installation...3 Att komma igång...4 Inställningar...5 Arbetsgång...5 Ange

Läs mer

Concept Selection Chaper 7

Concept Selection Chaper 7 Akademin för Innovation, Design och Teknik Concept Selection Chaper 7 KPP306 Produkt och processutveckling Grupp 2 Johannes Carlem Daniel Nordin Tommie Olsson 2012 02 28 Handledare: Rolf Lövgren Inledning

Läs mer

Programmering av stegmotorer ett miniprojekt i samarbete med Svensk Maskinprovning

Programmering av stegmotorer ett miniprojekt i samarbete med Svensk Maskinprovning Programmering av stegmotorer ett miniprojekt i samarbete med Svensk Maskinprovning Daniel Leonardsson dale0010@student.umu.se Kajsa Persson kape0038@student.umu.se I samarbete med Svensk Maskinprovning,

Läs mer

Peter Ottosson 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310

Peter Ottosson 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 KUNGLIGA TEKNISKA HÖGSKOLAN Robotlabb En introduktion till Datateknik 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 1 Innehållsförteckning 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte

Läs mer

Survey&Report steg för steg: Skapa rapport 2013-05-13

Survey&Report steg för steg: Skapa rapport 2013-05-13 1 Survey&Report steg för steg: Skapa rapport 2013-05-13 Ola Stjärnhagen 2 Skapa rapport 1. Klicka på Enkät > Hitta enkät. Listan som dyker upp visar endast de 50 senast skapade enkäterna. Klicka på Sök

Läs mer

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet Försättsblad till skriftlig tentamen vid Linköpings Universitet (fylls i av ansvarig) Datum för tentamen Sal Tid Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter i tentamen Antal sidor på

Läs mer

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering Shaders Renderingssystem Applikation Geometri Rastrering Martin Fitger d00-mfi@d.kth.se VT 2008, DH2323 / DH2640 / NA8740 Renderingssystem Renderingssystem Applikation Per-vertex operationer Geometri Rastrering

Läs mer

n-abler PRO JOYSTICK Handledning

n-abler PRO JOYSTICK Handledning Underhåll n-abler PRO har inga utbytbara eller reparerbara delar. Om reparation blir nödvändig var vänlig kontakta er leverantör. n-abler PRO JOYSTICK För ytterligare information eller frågor, kontakta

Läs mer

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Datavetenskap Opponenter: Daniel Jansson Mikael Jansson Respondenter: Mats Almgren Erik Hansen Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Oppositionsrapport,

Läs mer

Handbok Kig. Dominique Devriese Översättare: Stefan Asserhäll

Handbok Kig. Dominique Devriese Översättare: Stefan Asserhäll Dominique Devriese Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Grundläggande användning 6 2.1 Konstruera objekt...................................... 6 2.1.1 Konstruera punkter................................

Läs mer

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot KUNGLIGA TEKNISKA HÖGSKOLAN NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot Gabriel Vilén 30/8-2012 gvilen@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Vi har programmerat

Läs mer

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering Spelutveckling 3d-grafik och modellering Grunder för 3d-grafik Blender Animering Grunderna för 3d-grafik Positionering, transformationer Projektion, kameran Objekt i en 3d-värld Ljusmodeller för 3d-grafik

Läs mer

Inledning. Metod. Val av maskin. Vanliga funktioner som lätt blir fel

Inledning. Metod. Val av maskin. Vanliga funktioner som lätt blir fel Inledning Studenterna i Id-00 har fått i uppgift att analysera vars en apparat. Vår grupp har valt att analysera en mikrovågsugn, Whirlpool MT 257, som finns på en studentkorridor på Michael Hansens Kollegium

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

Får jag be om ordet!

Får jag be om ordet! Får jag be om ordet! Får jag be om ordet är ett datorprogram för läs- och skrivutveckling, utvecklat av logoped Bitte Rydeman. Det innehåller åtta olika delprogram, där man på olika sätt arbetar med ordbilder,

Läs mer

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt.

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt. Bruksanvisning Installera CubeBiz... 2 Välj språk... 2 När du vill köra testversionen i 15 dagar... 3 När du köper en CubeBiz-licens... 3 Registrera en giltig licensnyckel... 3 Starta ett nytt projekt...

Läs mer

ViTex snabbguide. 1. Inläsning till ViTex från scanner eller PDF Läs in text via scanner Läs in text från en JPEG-bild eller ett PDF-dokument

ViTex snabbguide. 1. Inläsning till ViTex från scanner eller PDF Läs in text via scanner Läs in text från en JPEG-bild eller ett PDF-dokument ViTex snabbguide 1. Inläsning till ViTex från scanner eller PDF Läs in text via scanner Läs in text från en JPEG-bild eller ett PDF-dokument 2. Uppläsning i ViTex Ikoner för uppläsning Läs upp enstaka

Läs mer

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? ICT LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? Daniel Lindfors 12/9/07 dlindf@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna laboration

Läs mer

Lär dig sökmöjligheterna i Disgen 8

Lär dig sökmöjligheterna i Disgen 8 Det har blivit dags att titta på sökmöjligheterna i Disgen. Det finns egentligen två olika sökfunktioner i Disgen, Välj person och Sök personer. Här behandlas dessa båda funktioner. Välj person och Sök

Läs mer

Kommentar till bilderna. Att spara hörsel för framtiden. Bara det värdefulla är vi beredda att skydda! Hörseln vad kan vi förstå?!

Kommentar till bilderna. Att spara hörsel för framtiden. Bara det värdefulla är vi beredda att skydda! Hörseln vad kan vi förstå?! Kommentar till bilderna Att spara hörsel för framtiden SIS-seminarium i Stockholm 2010-11-10 Anders Jönsson Dessa bilder är gjorda att tala till och innehåller inte en sammanfattning av föredraget. Dessutom

Läs mer

Svensk version. Inledning. Installation av maskinvara. Installation av Windows XP. LW057V2 Sweex trådlösa LAN PCI-kort 54 Mbps

Svensk version. Inledning. Installation av maskinvara. Installation av Windows XP. LW057V2 Sweex trådlösa LAN PCI-kort 54 Mbps LW057V2 Sweex trådlösa LAN PCI-kort 54 Mbps Inledning Utsätt inte det trådlösa LAN PCI-kortet 54 Mbps för extrema temperaturer. Placera inte enheten i direkt solljus eller nära värmekällor. Använd inte

Läs mer

Copyright 2008 Pausit AB medföljer programvaran pausit. Pausit version 1.2 Användarmanual

Copyright 2008 Pausit AB medföljer programvaran pausit. Pausit version 1.2 Användarmanual Copyright 2008 Pausit AB medföljer programvaran pausit Pausit version 1.2 Användarmanual Välkommen! Med en liten insats kan du nå en stor effekt! Dagens samhälle och arbetsliv kännetecknas av krav på ett

Läs mer

Människa-Datorinteraktion. HCI text

Människa-Datorinteraktion. HCI text 2002-04-17 09:13 Människa-Datorinteraktion DVC002 HCI text Anders Carlsson pt00aca@student.bth.se Per Salomonsson pt00psa@student.bth.se Grupp: D Innehållsförteckning 1. Inledning... 3 2. Design och produktutveckling...

Läs mer

Datorlaboration 0, Programmering i C++ (EDAF30)

Datorlaboration 0, Programmering i C++ (EDAF30) LUNDS TEKNISKA HÖGSKOLA Programmering i C++ Institutionen för datavetenskap HT 2015 Datorlaboration 0, Programmering i C++ (EDAF30) Under den inledande datorlaborationen får du träna på de grundläggande

Läs mer

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål? 1DV33 HT13 Antal : I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål? - ha fått grundläggande kunskaper om strukturerad programmering

Läs mer

Jag rek. starkt att alla uppgraderar sin TomTom till version 5 eller högre då massor av nya funktioner och en betydande prestandaskillnad finns.

Jag rek. starkt att alla uppgraderar sin TomTom till version 5 eller högre då massor av nya funktioner och en betydande prestandaskillnad finns. Installation av fartkameror i TomTom Installationstipset är skrivet för TomTom Navigator 3 eller version 5,TomTom Go Classic,ONE,300,500,700 (troligtvis även RIDER) eller TomTom Mobile samt en PC med Microsoft

Läs mer

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok. Ver Okt 2011/pls Windows7, GX-IEC Developer, USB-adapter I olika kurser i styrteknik på Högskolan Dalarna används ett styrsystem från Mitsubishi och programvaran GX-IEC Developer. Kurserna går på distans

Läs mer

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

Läs mer

Övningsuppgift 8. ArchiCAD 16. Eget Bibliotek. 2013 www.cadedu.se 070-394 55 99! Med kopieringsrätt för Peder Skrivares skola, Varberg

Övningsuppgift 8. ArchiCAD 16. Eget Bibliotek. 2013 www.cadedu.se 070-394 55 99! Med kopieringsrätt för Peder Skrivares skola, Varberg ArchiCAD 16 Övningsuppgift 8 Eget Bibliotek 2013 www.cadedu.se 070-394 55 99! Med kopieringsrätt för Peder Skrivares skola, Varberg Så här gör man egna biblioteksföremål I princip är det faktiskt så enkelt

Läs mer

LÖPBAND TM900 BRUKSANVISNING

LÖPBAND TM900 BRUKSANVISNING LÖPBAND TM900 BRUKSANVISNING 1 Översikt 2 Säkerhetsanvisningar När du använder elektrisk utrustning bör du alltid tänka på följande: Läs alla anvisningar innan du börjar använda löpbandet. FARA! Undvik

Läs mer

Vad utmärker ett bra gränssnitt?

Vad utmärker ett bra gränssnitt? Vad utmärker ett bra gränssnitt? Kommunikation med användarna Feedback och Pliancy Excise kontra Flow GUI = Graphical User Interface GUIn, eller grafiska gränssnitt hittar vi på alla sorters skärmar I

Läs mer

Felsökning av mjukvara

Felsökning av mjukvara KUNGLIGA TEKNISKA HÖGSKOLAN Felsökning av mjukvara Programmering av en NXT-robot Max Kufa [03/08-13] mkufa@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Syftet med laborationen var att

Läs mer

Handicom. Symbol for Windows. Blisseditor. Version 3.4

Handicom. Symbol for Windows. Blisseditor. Version 3.4 Handicom Symbol for Windows Version 3.4 Handicom, Nederländerna/Frölunda Data AB 2009 Innehåll Installation och licenser...2 1. Inledning...2 2. ns huvudfönster...2 2.1 Verktygsfältet...2 2.2 Matris...2

Läs mer

Att använda bildhanteringsprogram, del 2

Att använda bildhanteringsprogram, del 2 Att använda bildhanteringsprogram, del 2 Gå till Adobe Online (M) Markeringsram - (L) Lasso - (C) Beskärning - (J) Airbrush - (S) Klonstämpel - (E) Suddgummi - (R) Oskärpa - (A) Markering av bankomponenter

Läs mer

DEN KOMPLETTA PROGRAMVARAN FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR PROGRAMVARA FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR LÄTT ATT ANVÄNDA

DEN KOMPLETTA PROGRAMVARAN FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR PROGRAMVARA FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR LÄTT ATT ANVÄNDA PROGRAMVARA FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR LÄTT ATT ANVÄNDA MODULSYSTEM DEN KOMPLETTA PROGRAMVARAN FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR God avkastning på investeringen i form av minskade

Läs mer

Innehåll. Styrdon (ej i boken) Fitts lag (sidan ) Natural user interfaces. Kap 6.2.9, , Kap

Innehåll. Styrdon (ej i boken) Fitts lag (sidan ) Natural user interfaces. Kap 6.2.9, , Kap Interaktion 2 Innehåll Styrdon (ej i boken) Fitts lag (sidan 527-528) Natural user interfaces Kap 6.2.9, 6.2.11, 6.2.12 Kap 6.3-6.4 Styrdon Styrdon Tangentbord Pekdon Tangentbord QWERTY-layout QWERTY-layout

Läs mer

Kursplan. MT1051 3D CAD Grundläggande. 7,5 högskolepoäng, Grundnivå 1. 3D-CAD Basic Course

Kursplan. MT1051 3D CAD Grundläggande. 7,5 högskolepoäng, Grundnivå 1. 3D-CAD Basic Course Kursplan MT1051 3D CAD Grundläggande 7,5 högskolepoäng, Grundnivå 1 3D-CAD Basic Course 7.5 Higher Education Credits *), First Cycle Level 1 Mål Studenten ska efter avslutad kurs ha inhämtat grunderna

Läs mer

KURSKATALOG. qlikview.com

KURSKATALOG. qlikview.com KURSKATALOG qlikview.com Om katalogen I den här katalogen finns all information du behöver om QlikViews utbildningar. Katalogen är indelad i två delar: utbildningar med instruktör antingen i QlikTechs

Läs mer

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360 Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360 1 Att skapa en fotorealistisk bild kan sägas bestå av två delar: - Den artstiska delen. Att välja scen, ljussättning,

Läs mer

Macromedia. Flash 8 Grundkurs. www.databok.se

Macromedia. Flash 8 Grundkurs. www.databok.se Macromedia Flash 8 Grundkurs www.databok.se Innehållsförteckning 1 Börja arbeta med Flash 8...1 Användningsområden...1 Bekanta dig med arbetsytan...2 Scen och tidslinje...3 Lager...3 Bibliotek...4 Verktygsfältet

Läs mer

DK-serien. Gör en fotobok med myphotobook.se

DK-serien. Gör en fotobok med myphotobook.se DK-serien Gör en fotobok med myphotobook.se 1 Gör din egen fotobok Den här kursen är gjord för dig som vill vara lite kreativ med dina digitala bilder. Här lär du dig att göra en personlig fotobok där

Läs mer

Att skriva Hur utformar man en Social berättelse? Lathund för hur en Social berättelse kan skrivas

Att skriva Hur utformar man en Social berättelse? Lathund för hur en Social berättelse kan skrivas 52 56 57 57 59 59 61 61 63 64 64 65 67 67 76 77 77 79 80 83 86 87 89 91 93 95 Seriesamtalets andra möjligheter Sammanfattning Seriesamtal Sociala berättelser Vad är en Social berättelse? För vilka personer

Läs mer

Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH

Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH 2016 Anne Håkansson All rights reserved. Svårt Harmonisera -> Introduktion, delar: Fråga/

Läs mer

Skapa en pdf-fil med hög kvalitet, lämpad för tryckning Skapa pdf-filen i en PC med Windows Skapa pdf-filen i en Mac

Skapa en pdf-fil med hög kvalitet, lämpad för tryckning Skapa pdf-filen i en PC med Windows Skapa pdf-filen i en Mac Senast uppdaterad 2016-06-01 Biblioteket Skapa och redigera pdf-filer Vid elektronisk publicering av avhandlingar och studentarbeten (examensarbeten) ska du använda filformatet PDF (Portable Document Format).

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Elektronisk budbok för tidningsbud

Elektronisk budbok för tidningsbud Elektronisk budbok för tidningsbud Ett arbete av Johan Millert (millert@home.se) Innehållsförteckning för kursen Interaktionsdesign Sommaren 2004 Inledning...2 Bakgrund...2 Kravanalys...2 Användarintervjuer...2

Läs mer

Methods to increase work-related activities within the curricula. S Nyberg and Pr U Edlund KTH SoTL 2017

Methods to increase work-related activities within the curricula. S Nyberg and Pr U Edlund KTH SoTL 2017 Methods to increase work-related activities within the curricula S Nyberg and Pr U Edlund KTH SoTL 2017 Aim of the project Increase Work-related Learning Inspire theachers Motivate students Understanding

Läs mer

Displaysystem. Hans Brandtberg Saab Avitronics SAAB AVITRONICS 03-10-06

Displaysystem. Hans Brandtberg Saab Avitronics SAAB AVITRONICS 03-10-06 Displaysystem Hans Brandtberg Saab Avitronics Applikation Drivrutiner (OpenGL) Displaysystem Människa-maskin egenskaper -Kunna förstå och arbeta med information -Kunne se och uppfatta det som visas

Läs mer

LEGO MINDSTORMS Education EV3

LEGO MINDSTORMS Education EV3 LEGO MINDSTORMS Education EV3 Framtiden tillhör de kreativa πr ROBOTAR OCH IT KREATIVITET SAMARBETE PROBLEMLÖSNING EV3 en evolution av MINDSTORMS Education! LEGO MINDSTORMS Education har bevisat att det

Läs mer

Data visualization on Android

Data visualization on Android Datavetenskap Opponenter: Tobias Eriksson, Agni Rizk Respondent: Victor Ulhagen Data visualization on Android Oppositionsrapport, C/D-nivå 2010:xx 1 Sammanfattat omdöme av examensarbetet Rapporten är bra

Läs mer

- en expertanalys. av Anna Olvenmyr

- en expertanalys. av Anna Olvenmyr IT-universitetet i Göteborg MDI. Interaktionsdesign - en expertanalys av Anna Olvenmyr Grafiska Gränssnitt, 5 poäng 2003-10-27 Inledning och kategorisering...3 Utvärdering indelad i kategorier...4 Impression/

Läs mer

Elisabeth Bejefalk IT-Assistent Avesta kommun

Elisabeth Bejefalk IT-Assistent Avesta kommun Elisabeth Bejefalk IT-Assistent Avesta kommun Du ska nu få lära dig hur du enkelt kan göra ett bildspel i PowerPoint. Utifrån det du snart har lärt dig kan du sen göra mer avancerade bildspel genom att

Läs mer

Predator Digital 3D. Predator Digital 3D. Bruksanvisning. Version 1.0

Predator Digital 3D. Predator Digital 3D. Bruksanvisning. Version 1.0 Predator Digital 3D Bruksanvisning Version 1.0 Copyright Det är inte tillåtet att reproducera eller överlåta någon del av denna bruksanvisning i någon form eller på något sätt, elektroniskt eller mekaniskt,

Läs mer

Tentamen TEN1 HI1029 2014-05-22

Tentamen TEN1 HI1029 2014-05-22 Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Slutrapport för Pacman

Slutrapport för Pacman Slutrapport för Pacman Datum: 2011-05-30 Författare: cb222bj Christoffer Bengtsson 1 Abstrakt Jag har under våren arbetat med ett projekt i kursen Individuellt Mjukvaruutvecklingsprojekt. Målet med mitt

Läs mer

Real-time requirements for online games

Real-time requirements for online games Real-time requirements for online games En undersökning om protokoll, tekniker och metoder som datorspel använder för att kommunicera över Internet Victor Grape Milad Hemmati Linköpings universitet Linköping

Läs mer

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch Digitalt lärande och programmering i klassrummet Introduktionsworkshop - Bygg ett akvarium i Scratch Introduktion Scratch är en programmeringsomgivning utvecklad av forskare på Massachusetts Institute

Läs mer

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman 2011 Studsvik AB Tony Björkman PANORAMA-BILDTAGNING Filminspelning och visuell inspektion är två beprövade metoder för avsyning av bränslestavar. Ett nytt sätt att avsyna är att skapa panoramabilder vilket

Läs mer

RAPPORT: ATT UPPLEVA EN UTSTÄLLNING HELT I LJUD. FÖR UTSTÄLLNINGEN VÄRDEFULLT. BAKGRUND..s 2 METOD...s 2 RESULTAT...s 3 9 ANALYS AV WORKSHOP...

RAPPORT: ATT UPPLEVA EN UTSTÄLLNING HELT I LJUD. FÖR UTSTÄLLNINGEN VÄRDEFULLT. BAKGRUND..s 2 METOD...s 2 RESULTAT...s 3 9 ANALYS AV WORKSHOP... RAPPORT: ATT UPPLEVA EN UTSTÄLLNING HELT I LJUD. FÖR UTSTÄLLNINGEN VÄRDEFULLT BAKGRUND..s 2 METOD...s 2 RESULTAT.....s 3 9 ANALYS AV WORKSHOP...s 10 1 BAKGRUND Vi vill ta reda på hur en upplever en utställning

Läs mer

SLALOMINGÅNGAR hur svårt kan det vara?

SLALOMINGÅNGAR hur svårt kan det vara? SLALOMINGÅNGAR hur svårt kan det vara? Av Marie Hansson Ju mer man börjar tänka på vad en slalomingång innebär, desto mer komplicerat blir det! Det är inte lite vi begär att hundarna ska lära sig och hålla

Läs mer

IKOT Inlämning 8 Verifiera och utvärdera konceptet. Axel Jonson. Alexander Beckmann. Marcus Sundström. Johan Ehn CHALMERS TEKNISKA HÖGSKOLA

IKOT Inlämning 8 Verifiera och utvärdera konceptet. Axel Jonson. Alexander Beckmann. Marcus Sundström. Johan Ehn CHALMERS TEKNISKA HÖGSKOLA GRUPP C1: Nicholas Strömblad Axel Jonson Alexander Beckmann Marcus Sundström Johan Ehn HANDLEDARE: Daniel Corin Stig Maskinteknik Göteborg, Sverige 2011 CHALMERS TEKNISKA HÖGSKOLA 1 Inledning Produkten

Läs mer

2.1 Installation of driver using Internet Installation of driver from disk... 3

2.1 Installation of driver using Internet Installation of driver from disk... 3 &RQWHQW,QQHKnOO 0DQXDOÃ(QJOLVKÃ'HPRGULYHU )RUHZRUG Ã,QWURGXFWLRQ Ã,QVWDOOÃDQGÃXSGDWHÃGULYHU 2.1 Installation of driver using Internet... 3 2.2 Installation of driver from disk... 3 Ã&RQQHFWLQJÃWKHÃWHUPLQDOÃWRÃWKHÃ3/&ÃV\VWHP

Läs mer