Programmera Lego Mindstormsrobotar

Relevanta dokument
Laboration - Programmering av LEGO Mindstorm robot

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

Programmering av LEGO NXT Robot

Laboration i datateknik

Programmering av en Lego robot

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

Lego Mindstormprogrammering

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

Introduktion i programmering med språket NXC

LEGO Mindstorm-robot

Labbrapport - LEGO NXT Robot

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

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Laborationsrapport av robotprogrammering

Simon Boström Introduktionskurs i Datateknik

Laboration i datateknik

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Felsökande av en Lego Mindstorm robot

Programmering av LEGO NXT Robot

LEGO NXT Robotprogrammering

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

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

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

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

Felsökning av mjukvara

PROGRAMMERING AV LEGO-ROBOT VIA NXC

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

Programmering med NXC Lego Mindstorm

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

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

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

[Introduktionskurs i Datateknik]

[Introduktion till programmering ]

Simon Johansson Introduktionskurs Datateknik 1310

Robotprogrammering felsökning & analys.

Programmeringslaboration med LEGOrobot

Programmera en NXT Robot

Programmera LEGO NXT

Introduktion till programmering med hjälp av Lego Mindstorm

Praktisk programmering

Labbrapport LEGO-robot linefollower

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

Laborationer i SME094 Informationsteknologi I för

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

Tidigare elever berättar Teknikprogrammet

Roboten. Sida 1 av 11

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

Konstruera, styra, reglera och programmera en röd tråd F-9

Programmering. Den första datorn hette ENIAC.

Programmering, dans och loopar

Lego Robot [ ] [ ] [ ]

Digitalt lärande och programmering i klassrummet

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

Föreläsning 2. Operativsystem och programmering

Programmera i teknik - kreativa projekt med Arduino

Programmering. Analogt och med smårobotar. Nina Bergin

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

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Grundkurs i programmering - intro

EV3 Roboten. Sida 1 av 13

MeOS på KM Handledning 1.0

Programmering av. PADDY mini

ENKEL Programmering 3

Slutrapport. Super Mario klon. Tomas Wallin tw222bv WP

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Slutrapport Get it going contracts

Slutrapport Thunderbug

Programmering från början

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

Programmering F-3. -dansprogrammering. Del 1

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

Manual Sportident Onlinekontroll via GPRS

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

Extramaterial till Matematik X

Objektorienterad programmering och Java

Programmering. ur ett ämnesövergripande perspektiv

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

LABORATION 1 Pingpong och Installation av Server 2008 R2

TandD trådlösa loggers med RTR-57U terminal.

============================================================================

Programmeringsappar. Av Alex

Miljö och hållbar utveckling MHU

Välkomna till DIT012 IPGO

Programmeringsteknik I

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Varför behöver vi förstå programmering? Se video

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

Programmering, dans och loopar

GRUNDKURS I C-PROGRAMMERING

ÖVERFÖRING TILL UTFODRINGSUTRUSTNING. De Laval

Programmera och ladda ny mjukvara till DT-serien. Information och nerladdning av SatEdit V3 från: Ladda hem.

Projektrapport. Till Projektet Bluetoothstyrd bil

Andromeda. Användning och Installation

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

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

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Handbok för installation av programvara

Uppdatering till Windows 8.1 steg för steg-guide

Föreläsning 1: Intro till kursen och programmering

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN Programmera Lego Mindstormsrobotar En introduktion till programmering Oskar Rosén 28/08-12 oros@kth.se Introduktion i datateknik (II1310) Sammanfattning Denna laboration gav en inblick i programmering då en Lego Mindstorm robot programmerades med hjälp av språket NXC (Not exactly C) i programmet BricxCC. Med en egen dator och information från föreläsningar samt material från kurshemsidan skulle vi med hjälp av parprogrammering lyckas lösa uppgiften att få roboten att utföra de specifika uppgifter som erhölls. Då laborationen var en introduktion till programmering var uppgiften väldigt enkel för en som programmerat sedan tidigare och gav därmed inte så mycket för mig. Vi lyckades genomföra denna laboration och jag presenterar i denna rapport resultaten av en lyckad och genomförd laboration.

Innehållsförteckning 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte och målsättning... 3 2. Genomförande... 4 3. Resultat... 5 4. Analys... 5 5. Diskussion... 6 Referenser... 6 Bilagor... 7 KTH ICT- instutionen Kungliga Tekniska Högskolan Sida 2 av 7

1. Inledning Laborationen gick ut på att introduceras till programmering genom att modifiera redan skriven kod så att roboten utför dess specifika uppgifter som vi skulle programmera den att göra. Genom att använda sig av metoden parprogrammering utvecklas också förståelse för programmering då man har någon att diskutera programmeringen med. Laborationen introducerar också även studenter till att med ett ingenjörsmetodiskt sätt lära oss dokumentera och analysera. Vi använde oss av egna datorer som medtogs till laborationen och installerade BricxCC, samt laddade ner drivrutiner till roboten från Lego Mindstorms hemsida. Vi tog del av redan skriven kod, som dock utförde andra uppgifter än de som var givna. Så laborationen gick ut på att ändra koden och om vid behov skriva egen kod för att få roboten att fungera korrekt. 1.1 Bakgrund Kunskaper om och förståelse för programmering är essentiellt för en student på KTH ICT- skolan. En student måste också förstå och analysera givna funktioner och påståenden, men även besitta kunskapen att skriva egen kod och program. Dessa fundamentala kunskaper måste varje teknolog och ingenjör ha med sig i sitt bagage för att klara av ett framtida yrke där programmering nästan alltid finns med på ett eller annat sätt. 1.2 Syfte och målsättning Målet med uppgiften var Målet med uppgiften är att få ett färdigt program skrivet i NXC (Not exactly C) att fungera och därmed få en LEGO- robot att utföra sina uppgifter på önskat sätt. 1 Syftet var att bli introducerad till programmering med hjälp av parprogrammering, då vissa aldrig tidigare har programmerat medan andra har programmerat massor sedan tidigare. Då kan parprogrammering vara till stor nytta då en mindre erfaren programmerare kan lära sig av en mer erfaren genom att kolla på och sedan få hjälp. Genom att felsöka i koden lär man sig att förstå vad det är som faktiskt gör att roboten beter sig på ett visst sätt. Syftet med laborationsrapporten är att lära sig skriva vetenskapliga rapporter och att använda sig av ett ingenjörsmetodiskt sätt. En utomstående person ska därmed kunna upprepa och återskapa laborationen och dess tillvägagångsätt samt resultat efter att ha läst rapporten. 1 https://bilda.kth.se/courseid/8498/content.do?id=19150198 KTH ICT- instutionen Kungliga Tekniska Högskolan Sida 3 av 7

2. Genomförande Först gick (jag) igenom innan laborationen allt material som fanns tillgängligt för oss på Daisy så att jag skulle vara förberedd till labben. Jag hade även innan laborationen på min dator installerat BricxCC, IDE för NXC (Not exactly C, språket vi programmerar robotarna i). Väl på laborationen installerades drivrutiner från Lego Mindstorms hemsida så att roboten kunde ansluta till datorn med hjälp av en usb- kabel. Vi började med att testa roboten för att se vad det var som den gjorde fel. Därefter gick jag och min labbpartner igenom koden och letade efter vad som var fel. När vi trodde att vi hade hittat det som var felet ändrade vi koden och testade roboten igen. Detta upprepades tills att roboten utförde korrekt de uppgifter som skulle göras. Uppgiften var: Uppgiften består av att installera mjukvara på en PC för kodskrivning och flashning av en LEGO Mindstorms- robot, att testa att köra det program som tillhandahålls vid övningen och sedan att felsöka och modifiera detta program så att roboten på önskat sätt utför de uppgifter som beskrivs vid övningstillfället. 2 Dessa uppgifter beskrivs nedan: Följa den svarta linjen (svart tejp som lotsad bana på ett bord). När den körde in i lådan (slutet av linjen) skulle den stanna När den stannat skulle den skriva ut gruppmedlemmarnas namn på skärmen Därefter spela en liten trudelutt Sedan tillslut skulle den dansa lite efter att den spelat upp trudelutten. Vägen var nästan formad som ett u och i slutet av vägen var en låda som roboten skulle åka in i och därmed stanna. Parprogrammeringen gick till så att vi båda två turades om att skriva/ändra kod och den person som inte skrev kod satt bredvid och hjälpte till med idéer och förslag på hur problemet skulle lösas, det vill säga att det var inte bara den som skrev kod som gjorde något utan vi arbetade aktivt tillsammans hela tiden. 2 https://bilda.kth.se/courseid/8498/content.do?id=19150198 KTH ICT- instutionen Kungliga Tekniska Högskolan Sida 4 av 7

3. Resultat Radnummer Ny kod Kommentar 2 #define SpeedSlow 20 Ändrade hastigheten när roboten kör långsamt. Tidigare var hastigheten 80. 3 #define SpeedFast 40 Ändrade hastigheten när roboten kör fort. Tidigare var hastigheten 100 35 string groupmembers[] = { "Oskar", "Filip"}; 45 TextOut(0, (LCD_LINE2 + (8*i- 16)), names[i]); Våra namn i listan groupmembers Plustecken istället för minus, annars skrivs det på föregående rad. Nu skrivs namnen upp på ny rader. 59 Wait(SEC_3); Vänta 3 sek istället för 20 (var bara jobbigt med 20 sek och vänta) 68 lightintensity = SensorRaw(IN_3); Rätt port för ljussensor, var tidigare (IN_1), vilket var fel port. 87 OnFwd(OUT_A, SpeedFast); Sakta på linjen, köra fort tillbaka mot linjen 94 OnFwd(OUT_A, SpeedSlow); Sakta på linjen, köra fort tillbaka mot linjen 114 //dance() Kommenterade bort funktionen dance då den inte ska kallas på förrän i slutet. Innan var det roboten gjorde allra först innan den började leta efter den svarta linjen. 4. Analys Vi klarade av laborationen ganska fort (ca 30 min) då vi båda hade programmerat sedan tidigare. Till en början var funktionen dance() kallad på så det första den gjorde när den sattes igång var att börja dansa. Det var fel port som var angiven för ljussensorn så därför fungerade inte den till en början. Vi valde att köra roboten sakta istället för fort då ljussensorn annars inte hängde med, vilket resulterade i att roboten körde rakt fram istället. dance() så att roboten dansar printnamestoscreen() skriver ut på robotens display arrayen groupmembers[]där våra namn var insatta. readtouchsensors() känner av om den kör in i något, spelar då upp trudelutten och och kallar på på tidigare nämnda funktionen dance(). KTH ICT- instutionen Kungliga Tekniska Högskolan Sida 5 av 7

5. Diskussion Några av problemen vi stötte på var att ljussensorn inte fungerade, men detta löstes genom att ange korrekt port för ljussensorn. Ett till problem var att bilens hastighet var alldeles för hög vilket resulterade i att ljussensorn inte hann med och bilen fortsatte rakt fram istället, detta löstes genom att bara sänka hastigheten. Då jag programmerat sedan tidigare kan jag inte påstå att jag direkt har lärt mig något av denna laboration. Men för en person som endast programmerat väldigt lite eller inte alls så skulle nog denna laboration vara givande. Dock var laborationen väldigt rolig då vi efter att ha genomfört laborationen fortsatte att utveckla koden så att roboten dansade annorlunda och spelade upp annan musik samtidigt som den dansade. Dock tycker jag att tillvägagångsättet (parprogrammering) var väldigt bra att använda sig av då man har någon att diskutera med, och alla får prova på de olika rollerna. Jag tyckte att BricxCC fungerade bra att använda för att skriva kod i. Det gick bra att ansluta roboten när man väl hade installerat drivrutinerna som strulade lite då de inte installerades automatiskt. Referenser Här refererar du till de källor du använt dig av när du skrivit rapporten, t.ex. Labb- PM eller internetlänkar. https://bilda.kth.se/node.do?id=19464167- II1310 Föreläsning 2 https://bilda.kth.se/node.do?id=19464168- II1310 Föreläsning 3 https://bilda.kth.se/courseid/8498/content.do?id=19150198 - Labb PM http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html- NXC API KTH ICT- instutionen Kungliga Tekniska Högskolan Sida 6 av 7

Bilagor Skärmdump från KTH Social KTH ICT- instutionen Kungliga Tekniska Högskolan Sida 7 av 7