Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Relevanta dokument
[Introduktionskurs i Datateknik]

Laboration - Programmering av LEGO Mindstorm robot

Programmering av LEGO NXT Robot

Programmera Lego Mindstormsrobotar

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Programmering av LEGO NXT Robot

Programmera en NXT Robot

Introduktion i programmering med språket NXC

Labbrapport - LEGO NXT Robot

Lego Mindstormprogrammering

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

Laboration i datateknik

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Programmering av en Lego robot

Simon Johansson Introduktionskurs Datateknik 1310

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken

Laborationsrapport av robotprogrammering

LEGO Mindstorm-robot

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

Felsökning av mjukvara

Programmeringslaboration med LEGOrobot

Robotar i NXc. En laboration med Mindstormrobotar. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

LEGO NXT Robotprogrammering

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

Simon Boström Introduktionskurs i Datateknik

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

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

[Introduktion till programmering ]

Laboration i datateknik

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Felsökande av en Lego Mindstorm robot

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

Praktisk programmering

Robotprogrammering felsökning & analys.

Labbrapport LEGO-robot linefollower

Programmering med NXC Lego Mindstorm

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Introduktion till programmering med hjälp av Lego Mindstorm

Programmera LEGO NXT

Laborationer i SME094 Informationsteknologi I för

Roboten. Sida 1 av 11

TDIU01 - Programmering i C++, grundkurs

Programmera i teknik - kreativa projekt med Arduino

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Legorobot. Lär dig programmera en legorobot. Teknikåttan Ola Ringdahl Lena Kallin Westin

EV3 Roboten. Sida 1 av 13

LPP Programmering. Syfte, övergripande mål Lära känna och kunna utföra enkla programmeringar i Scratch samt Lego Mindstorms.

Arduinokurs. Kurstillfälle 4

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

PROJEKT STAFFAN STALLEDRÄNG

Användarhandledning Version 1.2

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

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

Om NXTprogrammering. Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT?

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 INLEDNING... 4 ATT ANVÄNDA MOTORERNA... 9 LOOP (UPPREPANDE) FUNKTIONEN SKAPA EN EGEN KLOSS...

Lego Robot [ ] [ ] [ ]

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Programmeringspalett. Pr o gr a mvar a

Jonas Detterfelt Siv Söderlund Johan Högdahl Michael Josefsson Tomas Svensson. Föreläsningar Lektioner Laborationer Projekt

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

ENKEL Programmering 3

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Projektuppgift - Gymmet

TDIU01 (725G67) - Programmering i C++, grundkurs

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

JAVAUTVECKLING LEKTION 4

Exceptions (undantag) Murach s: kap 7

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Strukturerad problemlösning. Metoder och verktyg för datavetare Ht09

Bilen som inte kan krocka

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

TDIU01 - Programmering i C++, grundkurs

LEGO MINDSTORMS Education EV3

FIRST LEGO League. Stockholm

Tentamen, EDAA10 Programmering i Java

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Polymorfi. Objektorienterad och komponentbaserad programmering

TDDC76 - Programmering och Datastrukturer

LabVIEW uppgift 4. Erik Andersson och Johan Schött. 22 februari 2010

OOP Objekt-orienterad programmering

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TDDC76 - Programmering och Datastrukturer

Logik och kontrollstrukturer

Projektuppgift - Biblioteket

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Programmering, dans och loopar

Programmering. Analogt och med smårobotar. Nina Bergin

Hur fungerar en dator? Lektionen handlar om att förstå hur datorer styrs av program. Hur fungerar en dator? Lektionsförfattare: Boel Nygren

Transkript:

Labbrapport Introduktionskurs i datateknik (II1310) Stefan Dalarsson, 940728 6278 2012 08 30 sdal@kth.se Introduktionskurs i datateknik (II1310)

Sammanfattning I denna rapport redovisas resultaten av laborationen i Introduktionskursen i datateknik (II1310). I laborationsgruppen bestående av mig själv och en annan gruppmedlem, har vi programmerat om en liten lego robot, med inbyggd motor och ljussensorer. Vi har sökt igenom den tillhandahållna koden som styrde robotens funktioner och hittat vissa fel i den. Därefter har vi rättat identifierade fel och ordnat att roboten fungerar som den ska. ICT Skolan KTH Sida 2 av 9

Innehållsförteckning Sammanfattning... 2 1. Inledning... 4 1.1 Bakgrund... 4 1.2 Syfte och målsättning... 4 2. Genomförande... 4 3. Resultat... 5 4. Analys... 5 5. Diskussion... 5 Referenser... 5 Bilaga 1. Skärmdump på mitt dagboksinlägg på KTH Social... 6 Bilaga 2. Den rättade koden... 7 ICT Skolan KTH Sida 3 av 9

1. Inledning Denna rapport redovisar resultaten av laborationen i Introduktionskursen i datateknik (II1310). Laborationssuppgiften gick ut på att jag, tillsammans med en annan gruppmedlem, skulle programmera om en liten lego robot, med inbyggd motor och ljussensorer, enligt givna instruktioner. Planen var att vi skulle söka igenom koden som styrde robotens funktioner och hitta eventuella fel i den, samt rätta dem och se till att roboten fungerar som den ska. 1.1 Bakgrund Utbildningen på ICT skolan har som mål att förbereda studenterna till arbete med de olika informationstekniska utmaningar [1] som finns i samhället. Att styra olika maskiner och robotar med hjälp av datorer är en sådan utmaning. Därför bör en student på ICT skolan och en IT ingenjör kunna detta. 1.2 Syfte och målsättning Laborationen i sig hade för konkret syfte att vi skall lära oss om hur man läser och felsöker datorkod och gör kodrättningar samt funktionstestar den rättade koden. Syftet med denna rapport är att vi skall lära oss om hur man rapporterar resultat från olika laborationer och utredningar under främst utbildningen, men även i någon mån senare under yrkeslivet. 2. Genomförande Vi började med att ladda ner nödvändig programvara och instruktioner från kurshemsidan [2]. När detta var klart, öppnade vi upp kodlistan och tittade igenom den flera gånger tills vi förstod logiken i den. Sedan började vi ändra och ta bort kod som vi tyckte inte stämde. Jag och min gruppkompis hade inte en förutbestämd arbetsfördelning, utan vi fick byta uppgifter vid några tillfällen. En av oss skulle programera in den nya koden och en av oss skulle notera ändringar och provköra. Vid varje ändring i koden noterade vi vad vi hade ändrat på, i vilken kodrad och resultatet av provkörningen vid varje ändring. Efter flera försök, började vi förstå hur koden fungerade och vi kunde komma på hur vi skulle rätta felen i den. ICT Skolan KTH Sida 4 av 9

3. Resultat Resultat av kodförändringsarbetet redovisas i tabellen nedan. Tabellen innehåller radnummer från orginalkoden, beskrivning av kodändringar och motsvarande kommentarer. Radnummer Ny kod Kommentar 2 3 35 36 SpeedFast 60 SpeedSlow 30 Stefan, Daniel Ändrade hastigheten på motorerna. Lade till våra namn som skulle matas ut senare 98 102+115 (Tagit bort kod) Tagit bort kod onödig kod. 46 60 (8*i) Wait(SEC_10) 69 (In_3) Slåg på ljus sensorn 85 87 91 93 SpeedSlow SpeedFast SpeedSlow SpeedFast Fixade funktionen så att den loopar våra nam efter kraschen, samt kortade ner avstängnings tiden för roboten. Såg till att roboten inte svänger ifrån den svarta linjen. Såg till att roboten inte svänger ifrån den svarta linjen. 4. Analys Den koden vi fick att utgå ifrån var inte rätt programmerad, och vi har lyckats att identifiera, rätta och funktionstesta ett antal fel. Därigenom har vi lyckats att få roboten att fungera som den ska. Arbetet gick ganska bra och det var inget som verkade gå dåligt på något sätt. Vi stötte inte på några problem som vi inte kunde lösa när vi började förstå uppgiften bättre. Mina korta reflektioner över laborationen i finns i Bilaga 1. Den rättade koden finns i Bilaga 2. 5. Diskussion Laborationens syfte och mål var att vi skall lära oss om hur man läser och felsöker datorkod och gör kodrättningar samt funktionstestar den rättade koden. Uppgiften var att rätta den givna koden som innehöll ett antal fel. Vi upplevde inte några nämnvärda problem och har lärt oss en del om kodanalys, kodrättning och praktiska funktionstester. Då detta är min första kontakt med den här typen av programvaran och NXC, har jag inte några bestämda åsikter om dessa. Det verkade vara smidigt att arbeta med detta. Då målet med vår utbildning är att lära oss hur man arbetar med olika informationstekniska utmaningar, så är fallet med att styra legoroboten ett exempel på sådana utmaningar och det är bra för oss att kunna detta. Referenser 1. kth.se, Skolan för informations och kommunikationsteknik, "KTH Kista Studera i en av Stockholms mest dynamiska stadsdelar", http://www.kth.se/ict/om (2012) 2. kth.se, "Kurshemsidan II1310 Introduktionskurs i datateknik (H12)", https://bilda.kth.se/courseid/8498/content.do?id=19121762 (2012) ICT Skolan KTH Sida 5 av 9

Bilaga 1. Skärmdump på mitt dagboksinlägg på KTH Social ICT Skolan KTH Sida 6 av 9

Bilaga 2. Den rättade koden //Definierar hastigheterna som motorerna går i #define SpeedSlow 80 #define SpeedFast 100 //Gränsvärden för ljussensorn (ändra ej dessa) #define TopThreshold 630 #define BotThreshold 600 //Definierar raderna på robotens skärm #define LCD_LINE1 56 #define LCD_LINE2 48 #define LCD_LINE3 40 #define LCD_LINE4 32 #define LCD_LINE5 24 #define LCD_LINE6 16 #define LCD_LINE7 8 #define LCD_LINE8 0 int lightintensity; bool finished = false; //En liten trudelutt Tone done[] = TONE_C4, MS_50, TONE_E4, MS_50, TONE_G4, MS_50, TONE_C5, MS_50, TONE_E5, MS_50, TONE_G5, MS_50, TONE_C6, MS_200 ; //Fyll i namnen på gruppmedlemmarna i listan string groupmembers[] = "Stefan" "Daniel" ; //Skriv ut namnen på skärmen void printnamestoscreen(string names[]) TextOut(0, LCD_LINE1, "Stefan och Daniel"); int i; for(i = 0; i < ArrayLen(names); i++) /* Loopar igenom listan med namn */ TextOut(0, (LCD_LINE2 (8*i 16)), names[i]); ICT Skolan KTH Sida 7 av 9

//Läs av värden från tryckknapparna task readtouchsensors() while(true) if(sensor(in_1) Sensor(IN_4)) finished = true; PlayTones(done); /* Spela den lilla trudelutten */ printnamestoscreen(groupmembers); Wait(SEC_20); abort(); //Läs av värdet från ljussensorn void readlightsensor() lightintensity = SensorRaw(IN_1); //Följ linjen! task followline() while(true) if(finished == true) Off(OUT_AB); break; readlightsensor(); if(lightintensity < TopThreshold) OnFwd(OUT_A, SpeedSlow); else OnFwd(OUT_A, SpeedSlow); if(lightintensity > BotThreshold) OnFwd(OUT_B, SpeedFast); else OnFwd(OUT_B, SpeedFast); ICT Skolan KTH Sida 8 av 9

//Main aktiviteten (körs alltid först!) task main() Precedes(readTouchSensors, followline); SetSensorType(IN_1, IN_TYPE_SWITCH); SetSensorMode(IN_1, IN_MODE_BOOLEAN); SetSensorType(IN_3, IN_TYPE_LIGHT_ACTIVE); SetSensorMode(IN_3, IN_MODE_RAW); SetSensorType(IN_4, IN_TYPE_SWITCH); SetSensorMode(IN_4, IN_MODE_BOOLEAN); ICT Skolan KTH Sida 9 av 9