Introduktion till programmering med hjälp av Lego Mindstorm

Relevanta dokument
Labbrapport - LEGO NXT Robot

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Laboration i datateknik

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

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

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

Simon Boström Introduktionskurs i Datateknik

Programmera Lego Mindstormsrobotar

Labbrapport LEGO-robot linefollower

Laborationsrapport av robotprogrammering

Felsökande av en Lego Mindstorm robot

Programmering av LEGO NXT Robot

Programmering av en Lego robot

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

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

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

Laboration i datateknik

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

Robotprogrammering felsökning & analys.

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

[Introduktion till programmering ]

Programmering med NXC Lego Mindstorm

Introduktion i programmering med språket NXC

LEGO NXT Robotprogrammering

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

Lego Mindstormprogrammering

Simon Johansson Introduktionskurs Datateknik 1310

Laboration - Programmering av LEGO Mindstorm robot

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

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

Programmeringslaboration med LEGOrobot

LEGO Mindstorm-robot

Programmering av LEGO NXT Robot

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

Programmera LEGO NXT

Felsökning av mjukvara

Praktisk programmering

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Programmera en NXT Robot

[Introduktionskurs i Datateknik]

Objektorienterad programmering och Java

Digitalt lärande och programmering i klassrummet

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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

En diskursanalytisk studie av programmering som innehåll i grundskolans teknikämne. Eva Björkholm och Susanne Engström, KTH

GRUNDKURS I C-PROGRAMMERING

Goda råd från studenterna som gjorde kandidatprojektet 2018

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Robot Educator En introduktion

Har du läst kursen på Campus eller distans Campus 8 53% Distans 7 47%

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

Laborationer i SME094 Informationsteknologi I för

Extramaterial till Matematik X

Editering, Kompilering och Exekvering av Javaprogram

LABORATION 1 Pingpong och Installation av Server 2008 R2

Föreläsning 2. Operativsystem och programmering

Bakgrundsinformation Kursens namn: Biomedicinsk laboratorievetenskap: Introduktion

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Utvärdering SMD180 LP1 2006

WEBBDIST12: Animering och multimedia för webben, distans 7,5 hp H13 (31RAN1)

Programmeringsteknik I

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

HUR SKRIVER MAN EN LABORATIONSRAPPORT OCH VARFÖR?

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

Labrapport över Rumbokningssytemet Grupp:1

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

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

Introduktion till Programmering. Dåtid, nutid och framtid

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Roboten. Sida 1 av 11

Mjukvaruprojekt Onlinebooks

Programmering F-3. -dansprogrammering. Del 1

Föreläsning 1: Introduktion till kursen

Programmering. Den första datorn hette ENIAC.

Lego Robot [ ] [ ] [ ]

Kursutvärdering FySA01 Ht 2014

Programmering från början

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

FK Elektromagnetism och vågor

PROGRAMMERING I SKOLAN Utbildning av kollegor på Carlssons skola CECILIA CHRISTIANSEN ULRIHCA MALMBERG

RAM FÖR LEKTIONSPLAN RESULTAT OCH BEDÖMNING LÄRARENS FÖRBEREDELSER. ÖVERBLICK: Lektionsplan 3

GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

Robotarm och algebra

TDDD63-Perspektiv på datateknik/datavetenskap

Summary. Vad tyckte du om kursen? Hur mycket arbete har du lagt ner på kursen. 19 svar på kursutvärderingarna av ca 31 som tenterade kursen.

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

Introduktion till programmering. Programspråk och paradigmer

Datorteknik 2 (AVR 2)

1/21/13 Redigera formulär [ Kursvärdering för kursen 1DV450 - Webbramverk - VT12 ] Google Dokument

Hur tycker du kursen har varit? Tycker du att kursens upplägg har underlättat för dig att uppnå lärandemålen?

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin

RESULTAT - MÅLUPPFYLLELSE

Tidigare elever berättar Teknikprogrammet

Objektorienterad Programmering (TDDC77)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 1 Programmeringsteknik och C DD1316. Kurswebbsidan. Mål

HF LEQ. Antal svar: 23

Transkript:

Kungliga Tekniska Högskolan Introduktion till programmering med hjälp av Lego Mindstorm Laborationsrapport gällande programmering inom NXC Simon Jansson 31 08 2014 simonjan@kth.se Introduktionskurs i datateknik II1310

Sammanfattning Programmering är en konst som alla datastudenter måste lära sig, och som vissa hade erfarenhet av redan innan de anlände till KTH. Under introduktionskursen i datateknik under mottagningsveckorna så fick studenterna chansen att laborera med hjälp av en Legorobot som kunde styras med hjälp av enkla program. Laborationen bestod till största del av felsökning av ett stycke kod skrivet i språket NXC, samt skrivandet av en labbrapport därefter. Robotens mål var att följa en linje som fanns utritad på laborationssalens golv, men för att kunna göra detta så behövde programmet som drev roboten förbättras, bland annat genom att ta bort onödiga funktioner. Laborationen introducerade även konceptet parprogrammering, för att studenterna skulle få ett hum om hur det är att programmera som ett lag, vilket är den teknik som tillämpas på de flesta IT företag. Mer om detta roliga laborationstillfälle finns beskrivet i rapporten som följer denna sammafattning, och därför bör läsaren nu rikta ögonen ditåt. Innehållsförteckning 1. Inledning..2 1.1 Bakgrund......2 1.2 Syfte och målsättning...2 2. Genomförande....2 3. Resultat....3 4. Analys..4 5. Diskussion...4 Referenser...4 Bilagor.5 KTH Kungliga Tekniska Högskolan Sida 1 av 5

1. Inledning För att förbereda de nya studenterna inför fortsatta studier inom dataområdet, däribland programmering, utfördes en laboration som bestod i att felsöka ett stycke kod skrivet i språket NXC vars syfte var att driva en Legorobot längs en mörk linje på laborationssalens golv. Målet med detta var att upplysa studenterna om grunderna vad gäller programmering, däribland felsökning av kod, samt att ge studenterna en chans att öva på skrivning av laborationsrapport inför sina framtida studier. 1.1 Bakgrund En laboration av denna typ, innehållande bland annat felsökning av programkod, fungerar både som en nyttig introduktion till programmering och dess olika områden, såsom kodning, felsökning, omskrivning och test av sagda kod, samt som en påminnelse för de studenter som tidigare programmerat, men har glömt en del av de kunskaper som krävs inför datastudier på hög nivå. 1.2 Syfte och målsättning Syftet med laborationen var att introducera programmering, då främst konceptet parprogrammering, och grundbegreppen som följer med detta, såsom felsökning, kompilering och funktionsanrop, för de studenter som inte ännu var bekanta med dessa, samt att påminna de studenter som programmerat tidigare om information som de kan ha glömt eller ännu inte lärt sig. Syftet med denna rapport är att träna de nya studenterna i rapportskrivning, vilket de kommer ha stor nytta av under sina framtida studier. 2. Genomförande Genomgång av laborations PM skedde till viss del under den sista föreläsningen innan labben, samt på egen hand via kursens bilda sida. Nedladdning av material och programvara till laborationen, däribland drivrutiner till Legoroboten samt ett antal pdf filer, som till exempel rapportmall och kommentatorsblad, gjordes och via bilda. Den nödvändiga programvaran installerades därefter på egen hand av de laborerande. Under själva laborationen delades eleverna in i par för att öva sig på parprogrammering. Detta koncept gick ut på att den ena eleven synar koden och gör de ändringar som denne tycker verkar korrekta, medan den andra eleven observerar och kommenterar dessa beslut. Detta pågår i ungefär 20 minuter, vartefter eleverna byter plats och fortsätter. Uppgiften under laborationen bestod av att felsöka programmet linefollower, som hade i syfte att driva Legoroboten som delades ut under laborationen längs en svart linje på golvet i laborationssalen, samt att skriva ut gruppmedlemmarnas namn på sin display när den nått linjens slut, i detta fall en vägg. Under felsökningen av koden så upptäcktes ett antal fel, däribland anrop av endast en av robotens motorer, ett felaktigt anropande av ljussensorn samt en komplett onödig funktion, dance, samt anrop av denna. Alla ändringar som gjordes för att eliminera KTH Kungliga Tekniska Högskolan Sida 2 av 5

dessa felkällor och få koden redovisas under sektion 3. Resultat. Efter varje ändring av koden så testkördes roboten för att undersöka om den nu uppnåt full funktionalitet, Denna procedur upprepades ända tills roboten följde linjen och därmed kunde deklareras funktionsduglig. 3. Resultat Efter att laborationen genomförts och koden felsökts återställdes roboten till sitt fullt funktionsdugliga läge och lyckades med hjälp av sina diverse sensorer och skrev därefter ut namnen på gruppens två medlemmar på sin display. Alla ändringar som gjorts i koden redovisas i tabellen nedanför texten. KTH Kungliga Tekniska Högskolan Sida 3 av 5

4. Analys Konceptet att programmera i par visade sig vara till stor hjälp under laborationens gång, då den observerande gruppmedlemmens ögon hjälpte den agerande medlemmen att hitta alla fel i koden, både de simpla och de mer komplicerande, samt att det vid alla tillfällen fanns två personer till hands inför robotens testkörningar. Robotens irrationella beteende visade sig bero på ett antal faktorer, bland annat anropandet av funktionen dance som fick roboten att börja snurra runt och därmed lämna linjen, och att fel anslutningport deklarerats i anropet av ljussensorn, vilket gjorde att roboten var inkapabel att följa linjen. Alla dessa fel finns redovisade i tabellen på föregående sida. Det enda som kan tyckas ha varit av sämre kvalité under denna laboration var det faktum att grupperna delades in relativt slumpartat, vilket resulterade i att vissa grupper bara bestod av studenter med tidigare erfarenhet av programmering, medan andra endast innehöll studenter som famlade i blindo. En bättre urvalsprocess vad gäller bildandet av grupperna kan komma att bli nödvändig. 5. Diskussion Under laborationen så stötte gruppen inte på några stora problem, förutom det faktum att båda gruppmedlemmarna var lite ringrostiga vad gällde felsökning av kod och programmering överlag. På grund av såg gruppen på uppgiften ur en mer systematisk vinkel, vilket ledde till att metoden dom användes för att lösa problemet var att testköra roboten efter varje förändring av koden för att utifrån dess beteende ta reda på vad som skulle eftersökas i koden som källa till sagda beteende. Laborationen var även ett roligt sätt att introducera parprogrammering på, då detta koncept används på de flesta företag som sysslar med arbete av den typen, vilket gruppen antagligen kommer att få stor användning av i framtiden. Då gruppmedlemmarna, bland annat jag själv, tidigare programmerat främst i Java så visade sig NXC vara relativt familjärt, med ändå okänt nog för att vara något av en utmaning. Kompilatorn som användes för att skriva programmet framstår dock som bristfällig jämfört med kompilatorer som används inom andra språk, såsom Eclipse inom Java. Referenser Labb PM: kursmaterialsdelen av kursens sida på bilda.kth.se KTH Kungliga Tekniska Högskolan Sida 4 av 5

Bilagor KTH Kungliga Tekniska Högskolan Sida 5 av 5