LEGO Mindstorm-robot



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

LEGO NXT Robotprogrammering

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

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?

Laboration - Programmering av LEGO Mindstorm robot

Felsökning av mjukvara

Programmera Lego Mindstormsrobotar

Programmera en NXT Robot

Programmering av LEGO NXT Robot

Labbrapport - LEGO NXT Robot

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

Lego Mindstormprogrammering

Laboration i datateknik

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

[Introduktion till programmering ]

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

Praktisk programmering

Programmera LEGO NXT

Robotprogrammering felsökning & analys.

Programmering av LEGO NXT Robot

Introduktion i programmering med språket NXC

Simon Johansson Introduktionskurs Datateknik 1310

[Introduktionskurs i Datateknik]

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

Laboration i datateknik

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

Laborationsrapport av robotprogrammering

Programmering med NXC Lego Mindstorm

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

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

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

Programmeringslaboration med LEGOrobot

Simon Boström Introduktionskurs i Datateknik

Programmering av en Lego robot

Labbrapport LEGO-robot linefollower

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Felsökande av en Lego Mindstorm robot

Introduktion till programmering med hjälp av Lego Mindstorm

Datorsystem Laboration 2: Minnesmappade bussar

Forskningrapport LAVINER. Varför vi valde den här naturkatastrofen. Laviner

DAGBOK HB ADVENTURE TEAM. Vårat lag: Jinci, Ida, Jennifer, Felicia Lagledare: Hans

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD

Fördjupningskurs i byggproduktion, ht 2009.

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?

Utvärdering av föräldrakurs hösten 2013

Olika lärostilar... Länder... (Vi har tyvärr bara fått med tre länder då vi inte har haft så många som forskat varje gång)

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

Post Mortem för Get The Treasure!

Tentamen IE1204 Digital design

Evaluation Summary - CD5570 DoA, distans VT 2004 Dan Levin

Slutrapport för Pacman

Att använda pekare i. C-kod

KULTURSKOLAN VT Glädje & gemenskap. Kunskap & kreativitet. Upplevelse & livslångt lärande. BARN- OCH UTBILDNINGSFÖRVALTNINGEN

1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på min tur att prata. 4. Säg det jag vill säga. 1.

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Våga Visa kultur- och musikskolor

Kursutvärdering Ämne: SO Lärare: Esa Seppälä/Cecilia Enoksson Läsåret Klass: SPR2

Digitalt lärande och programmering i klassrummet

Föreläsning 4: Poster

WEBB12: Animering och multimedia för webben 7,5 hp H13 (31WAN1)

En annan mycket roligare del i arbetet var att jag ofta fick följa med min handledare ut på

SI-deltagarnas syn på SI-möten - Resultat på utvärderingsenkät

Grunderna i stegkodsprogrammering

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

UTVÄRDERING AV KOMPETENSHÖJNING I UTTALSPROJEKTET

Föreläsning 1 & 2 INTRODUKTION

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

Styra värme och kyla Postad av Mats Persson - 16 okt :10

FIRST LEGO League. Stockholm

Utvärdering 2015 deltagare Voice Camp

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

Alumnstudie Genomförd av Linda Widetoft

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 14

Nallelek Lärarvägledning

kunna driva organisationen, de övriga som arbetar inom Canine Therapy Corps gör detta som volontärer.

Utvecklar sin förmåga att bygga, skapa och konstruera med hjälp av olika tekniker, material och redskap - Naturvetenskap och teknik, Förskola

Valet 2010 på facebook!

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

B. Välsignelse inför skolstarten

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

Kursrapport Datorlingvistisk grammatik (första skiss)

SLALOMINGÅNGAR hur svårt kan det vara?

Installationsanvisning för kursens programvara på egen dator

Just nu pågår flera satsningar för att förbättra svenska elevers måluppfyllelse

Kursutvärderingsformulär

Berättarstunden. Termin 1: Tidsresan. - levande berättelser från Bibeln. Söndagsskolmaterial

Föreläsning 6: Introduktion av listor

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

1. Hur många timmar per vecka har du i genomsnitt lagt ner på kursen (inklusive schemalagd tid)?

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Slutrapport för JMDB.COM. Johan Wibjer

Jonatan Nilsson Industriell Ekonomi, inriktning Energiteknik University of Illinois våren 2014 Urbana Champaign, Illinois, USA Mail:

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

SÄKERHETSVISAREN 1. LEDNING OCH PRIORITERINGAR

6-stegsguide för hur du tänker positivt och förblir positiv.

Kortfattad sammanfattning av studenternas synpunkter och förslag

Transkript:

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 att vara ingenjör är att kunna arbeta med projekt och i grupp, som student på ICT skolan krävs det även datatekniska kunskaper. Laborationen är en introduktion till ingenjörstänk, parprogrammering och språket NXC, Uppgiften är att felsöka och modifiera en färdig kod för att få roboten att följa instruktionerna, som just i detta fall var: Följa den svarta tejpen tills den går emot något, då ska roboten stanna, spela upp en melodi samt skriva ut gruppmedlemmarnas namn på skärmen. Vi fick fram en lösning för att få roboten att gör som vi ville. Eftersom att vi i labbgruppen endast programmerat enstaka gånger tidigare så använde vi oss av metoden testköra robot, analysera, modifiera kod. Denna metod var väldigt givande då man kunde se effekten av kodändringar i praktiken. Laborationen var väldigt intressant och gav mig och min labbpartner ett smakprov på vad som komma skall i våra utbildningar. Innehållsförteckning 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte och målsättning... 3 2. Genomförande... 3 3. Resultat... 4 4. Analys... 5 5. Diskussion... 6 Referenser... 6 Bilagor... 7 Datateknik Kungliga Tekniska Högskolan Sida 2 av 7

1. Inledning Uppgiften var att programmera en LEGO Mindstorm-robot. Färdig kod var given och uppgiften var att felsöka och modifiera koden för att få roboten att göra det som var bestämt, dvs. följa en den svarta tejpen tills den går emot något och då stanna och spela upp en melodi samt skriva ut gruppmedlemmarnas namn på skärmen. Laborationen är en introduktion till programmering samt ingenjörs-tänkande. 1.1 Bakgrund Laborationen utfördes i par, detta för att vi skulle få testa på par-programmering men också för att kunna ta hjälp av varandra. Både jag och min labb-partner var väldigt nyintroducerade till programmering, därför hjälpte det att kunna diskutera de problem vi stötte på med varandra och sedan genom logiska metoder lösa uppgiften. Att få pröva på att programmera i NXC samt att samarbeta i parprogrammering är en erfarenhet vi kommer att ha stor nytta av i fortsättningen av vår utbildning. 1.2 Syfte och målsättning Syftet med uppgiften är att på ett roligt och relativt enkelt sätt introducera programmering i form av parprogrammering. Syftet är också att introducera arbetsgången vid ingenjörsarbete samt ge träning och arbetsvana i de IT-system för utbildning som finns vid ICT-skolan. Uppgiften syftar även till att ge träning i felsökning och testning och därmed ge en grund till effektivt parprogrammeringsarbete i framtiden. Förhoppningen är även att studenterna ska få en förståelse för hur små enkla fel i koden kan ge oväntade resultat vid körning, och på så sätt bidra till en nogrannhetstänk. För mig personligen var målet att få ett bättre grepp om programmering och lära mig ett nytt språk NXC (Not exactly C). 2. Genomförande Hur genomfördes laborationen och med vilka metoder? Beskriv olika praktiska moment så som genomgång av Lab-PM, nedladdning och installation av programvara, kodgranskning, hur parprogrammeringen gick till, lösandet av uppgiften, testkörning osv. Innan laborationstillfället läste vi labb-pm och fick förbereda oss med att ladda ner och installera de program som skulle användas (drivrutin till Lego NXT för Windows och Bricx command center), läsa Datateknik Kungliga Tekniska Högskolan Sida 3 av 7

en nybörjar guide för programmering med språket NXC ( Programming Lego NXT Robots using NXC ) samt studera NXC programmer s guide (API). Vid labbtillfället fick vi en färdig kod som vi kopierade över till Bricx. Vi visste redan innan vi test körde roboten att koden skulle behöva modifieras, därför satte vi oss direkt för att granska koden och kunde tidigt upptäcka tydliga fel som ändrades till, dock hjälpte det till vår förvåning inte speciellt mycket när vi test körde roboten som inte alls gjorde som vi ville. Resterande del av laborationen gick ut på den enkla metoden att: 1 - Ändra i den färdiga koden, 2- Test köra roboten, 3 - Analysera hur roboten reagerar på den nya koden, och tillbaks till 1: ändra i den färdiga koden Denna metod gav oss väldigt lyckade och snabba resultat. Eftersom att vi parprogrammerade så var det en som programmerade och en som kollade på för att sedan byta, detta skedde flera gånger under laborationen tills uppgiften var löst. 3. Resultat Kommentarsblad för laborationsuppgift i II1310 Introduktionskurs i datateknik Radnummer Ny kod 94 Onfwd(Out_A, SpeedFast) Kommentar Vi ville att A-hjulet skulle hålla en konstant hastighet och låta B-hjulet styra roboten rätt på tejpen. 96 76 46 115 If (lightintensity >= botthreshold) Sensorraw(IN_3); +(8*i-16)); //dance(); Detta blev en nyckelförändring för att få roboten att göra som den ska även när den når botthreshold, vi satte vi dit ett = tecken för att få roboten att gör som vi ville. Ändrade koden så att den stämde överens med hur ljussensorerna var kopplade på roboten Ändrade tecknet till + tecken framför parentesen för att det skulle stämma. Senare kom vi på att vi även kunde ha tagit bort (-16) och haft kvar -tecknet Kommenterade bort dance från main aktiviteten, roboten ska inte dansa. 35 Kim La till våra namn i String groupmembers för att de skulle skrivas ut när roboten stannar Datateknik Kungliga Tekniska Högskolan Sida 4 av 7

36 Felix La till våra namn i String groupmembers för att de skulle skrivas ut när roboten stannar 2 #Define speedslow 20 Ändade koden för att göra roboten långsammare och lättare att jobba med 3 #Define speedfast 40 Ändade koden för att göra roboten långsammare och lättare att jobba med 34 String groupmembers Vi såg direkt när vi försökte compile att det fanns ett error här, ändrade int till string. 66 Printnamestoscreen (name) Ändrade namn 90 If(lightintensity <= topthreshold) Detta blev en nyckelförändring för att få roboten att göra som den ska även när den når topthreshold, vi satte vi dit ett = tecken för att få roboten att gör som vi ville. Resultatet blev att roboten följde den svarta tejpen (som just i detta fall var formad som en halvmåne) tills den stötte emot något, då stannade roboten, spelade upp en melodi och skrev ut Gruppmedlemmar Kim Felix 4. Analys De största problemet som vi stötte på under laborationen var att vi missat att kommentera bort dance(); i main aktiviteten. Eftersom dance fanns med i main aktiviteten så var roboten kodad till att dansa det första den gjorde när man körde koden, detta försvårade modifieringen av koden avsevärt eftersom att hur mycket vi än rättade till och ändrade i koden så fick vi samma praktiska resultat av roboten. Men när vi väl hittat och kommenterat bort dancefunktionen så kunde vi genast se resultat av våra ändringar i koden. Datateknik Kungliga Tekniska Högskolan Sida 5 av 7

Att få roboten att skriva ut rätt saker på skärmen gick väldigt enkelt då vi bara ändrade en int funktion till en string funktion och sedan var det bara att föra in den text vi önskade skulle skrivas på robotskärmen. Att få roboten att följa den svarta tejpen med hjälp av ljus-sensorer var lite utmanande och krävdes ett antal testkörningar innan vi hittade rätt, att sänka speedfast och SpeedLow till väldig låg hastighet hjälpte en hel del p.g.a. att om hjulen på roboten körde för snabbt så var det lätt att den körde ut från tejpen trots att sensorerna skulle motverka detta. För att få sensorerna att funka som vi ville krävdes att ändra funktionen Sensorraw(IN_1); till Sensorraw(IN_3); eftersom att det var i port 3 som sensorerna var inkopplade, när väl koden stämde överens med hur sensorerna var inkopplade så var det lätt att se vad som behövde ändras med hjälp av att testköra roboten ett antal gånger. Slutligen kunde vi med logiskt tänkande koda om roboten till att reagera som vi ville på sensorerna, vi ändrade t.ex. If(lightintensity < topthreshold) och If (lightintensity > botthreshold) till if(lightintensity <= topthreshold och och If (lightintensity >= botthreshold), samt att hjulen skulle ändra från speedfast/speedslow till speedfast/speedslow om roboten var på väg utanför tejpen. 5. Diskussion Laborationen var väldigt intressant och givande för mig och min labbpartner som nybörjar programmerare, men trots detta lyckades vi lösa uppgiften och få det önskade resultatet väldigt snabbt. Laborationen gav oss båda ett smakprov på vad som komma skall i våra utbildningar till dataingenjörer, vi lärde oss grundläggande kunskaper inom programmering och språket NXC som vi med all säkerhet kommer ha nytta av i framtida kurser och kanske även jobb. I.om. Att vi inte fick speciellt mycket instruktioner på hur vi skulle handskas med problemen så ledde det till att vi fick diskutera mycket i labbgruppen. Den metod vi använde för att lösa uppgiften var att testköra roboten och sedan analysera vad roboten gör för fel och var vi behöver ändra i koden. Att ha möjligheten till att just testköra roboten många gånger var väldigt nyttigt och nödvändigt för oss som var väldigt oerfarna med språket NXC. Jag lärde mig mycket av laborationen och fick ett väldigt positivt intryck av språket NXC samt programmering i allmänhet, jag ser framemot att jobba mer med NXC och tampas med nya utmaningar. Referenser Labb-PM https://bilda.kth.se/courseid/10164/content.do?id=21060042 Datateknik Kungliga Tekniska Högskolan Sida 6 av 7

Bilagor Datateknik Kungliga Tekniska Högskolan Sida 7 av 7