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



Relevanta dokument
Laboration i datateknik

Programmering av LEGO NXT Robot

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

Laboration i datateknik

Labbrapport - LEGO NXT Robot

Programmera Lego Mindstormsrobotar

LEGO Mindstorm-robot

Lego Mindstormprogrammering

Laboration - Programmering av LEGO Mindstorm robot

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

Introduktion i programmering med språket NXC

Felsökning av mjukvara

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

Laborationsrapport av robotprogrammering

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

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

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

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

Simon Boström Introduktionskurs i Datateknik

Robotprogrammering felsökning & analys.

[Introduktion till programmering ]

Simon Johansson Introduktionskurs Datateknik 1310

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

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

Programmering med NXC Lego Mindstorm

Felsökande av en Lego Mindstorm robot

PROGRAMMERING AV LEGO-ROBOT VIA NXC

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Programmering av LEGO NXT Robot

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

Programmering av en Lego robot

LEGO NXT Robotprogrammering

Introduktion till programmering med hjälp av Lego Mindstorm

Labbrapport LEGO-robot linefollower

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Praktisk programmering

Programmera en NXT Robot

Programmeringslaboration med LEGOrobot

[Introduktionskurs i Datateknik]

Programmera LEGO NXT

Roboten. Sida 1 av 11

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

Laborationer i SME094 Informationsteknologi I för

EV3 Roboten. Sida 1 av 13

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

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

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

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

Kursvärdering 1DV433 Strukturerad programmering med C++ LP Lärare: Tommy Löfqvist 17 svar

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Lego Robot [ ] [ ] [ ]

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

Tentamen IE1204 Digital design

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

Programmering. ur ett ämnesövergripande perspektiv

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

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

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

Användarhandledning Version 1.2

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Digitalt lärande och programmering i klassrummet

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

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Programmeringsmjukvara TwidoSuite Ett enklare sätt att programmera

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

Säker programmering - Java

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

DD

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

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

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

Vis it. jquery jquery används lite överallt i appen på olika sätt. Det främsta användningsområdet är vid selektering och manipulering av HTML element.

PROJEKTLEDNING inom produktutveckling. Individuell inlämningsuppgift KPP039 Produktutvekling 3 Boris Mrden

Programmering, dans och loopar

GRUNDKURS I C-PROGRAMMERING

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

Programmering, dans och loopar

Tidigare elever berättar Teknikprogrammet

Naturvetenskaps- och tekniksatsningen. Arbetsområdet Varuhuset

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Digitalt lärande och programmering i klassrummet

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

Programmering. Analogt och med smårobotar. Nina Bergin

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

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

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

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?

Torun Berlind Elin Önstorp Sandra Gustavsson Klas Nordberg. Föreläsningar Lektioner Laborationer Projekt

Programmering i skolan.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Hoppa till... Exportera till Excel

LEGO MINDSTORMS Education EV3

Logik och kontrollstrukturer

Programmeringsteknik I

1. Flervalsfråga Andel

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN Laboration II1310 Programmera Lego Mindstorm robot i NXC Johnny Vu 120904 Jvu@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Vi har genomfört en laboration för kursen II1310 på KTH, Kista. Laborationen gick ut på att med hjälp av tilldelade verktyg såsom redigeringsprogram för programmeringsspråket NXC att felsöka samt modifiera programkod som sedan skulle laddas upp till en legorobot och ändra dess beteende efter givna villkor. Roboten skulle med hjälp av en ljussensor följa en sträcka på golvet som markerades i svart tejp som ledde till en vägg, robotens touchsensorer skulle sedan känna av att den tagit kontakt med väggen och i sin tur skriva ut gruppmedlemmarnas namn på skärmen. Syftet med laborationen var främst att få testa på att programmera samt ge oss en överblick om hur kommande uppgiften eventuellt kan se ut, genom att felsöka i par gav det oss möjligheten att ge varandra feedback samt nya studietekniker och arbetssätt presenterades. Analys av koden ledde till att vi uppmärksammade uppenbara problem, med hjälp utav logiskt tänkande samt med användning utav API (Application Programming Interface) kunde vi justera dessa fel. Nästa steg var att ladda upp koden till roboten för att sedan observera dess beteende med vår modifierade kod och kunde dra slutsatser för att ytterligare förbättra samt korrigera koden. Vi identifierade bl.a. att instruktionen för namn utskrivningen på robotens display behövde ändras samt anropet på variabeln för ljussensorn var fel. Med en stor del logiskt tänkande samt tålamod fick oss få mjukvara samspela med hårdvara som också var syftet med denna laboration.

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... 4 5. Diskussion... 5 Referenser... 5 Bilagor... 6 ICT KTH Sida 2 av 6

1. Inledning Denna rapport beskriver en laboration med syfte att felsöka samt åtgärda eventuella upptäcka fel i programkod för att introducera programmering samt nya arbetssätt samt tankesätt. 1.1 Bakgrund En student med inriktning informationsteknik som inriktning bör vänja sig vid liknade uppgifter då vi står framför en stor del kurser inom den digitala världen där logiskt tänkande är kritiskt. Genom att få en introduktionskurs inom datateknik får studenten en överblick på vad programmering kan innebära men också vilka sorters arbetsuppgifter och projekt vi kan bli tilldelade. 1.2 Syfte och målsättning Tanken bakom laborationen var främst att presentera programmering till de som tidigare inte haft någon erfarenhet inom området. Studenter med tidigare programmerings kunskaper har oftast inte programmerat med hårdvarunära språk som NXC och fick chansen att testa det. Par programmering introducerades och nya studietekniker inövades. Laborationen syftar på att ge studenten en överblick på framtida programmeringsprojekt som kan tänkas komma, genom att utföra en övning i felsökning samt själv testa på att programmera. Denna övning visar att stora delar logiskt tänkande samt tålamod krävs och ger insikt på hur minimala fel i programkoden kan få kolossala konsekvenser. Målet med labben var att få mjukvara samt hårdvara att samspela, att korrigera programkoden så att roboten manövrering över den angivna vägen korrekt samt uppfylla alla moment såsom att presentera gruppmedlemmarnas namn på displayen i rätt ordning och på rätt rad på displayen enligt givna instruktioner. 2. Genomförande Vi hade blivit instruerade att läsa ett Laborations-PM innan laborationen påbörjades, detta för att få en idé om vad som skulle genomföras samt vad som skulle kunna förväntas. När laborationen väl började blev partner min och jag tilldelade en Mind storm robot samt en USB-kabel. Vi laddade ner de verktygen som skulle tänkas behövas för att exekvera de uppgifter vid blivit tilldelade. Program såsom drivrutiner till USB samt redigeringsprogrammet BrixCC. Sist men inte minst laddades den korrupta programkoden ned och analyseringen påbörjades. Vi upptänkte snabbt många fel i koden som vi genast justerade och kodrader vi var suspekta mot vände vi oss till API för att se hur funktioner eventuellt kodrader ska skrivas på korrekt sätt, vi fixade namnutskrivningsfunktionen med hjälp av API:ns instruktioner. Rader av koder som inte passade in i sammanhanger och uppsatt mål kommenterades bort. Mellan justeringarna flashades roboten ett ex antal gånger för att sedan dra ytterligare slutsatser samt se om tidigare justeringar uppfyllt de förväntningar vi haft. Efter en långtids tragglande med samma problem och när vi var säkra på att ljussensorn som skulle avläsa ett spår samt följa detta spår inte alls läste av något vände vi oss till hårdvaran för att sedan inse att en lite observations miss hade misslett oss, hårdvaran hade ej inspekterats och visade sig att ljussensorn ICT KTH Sida 3 av 6

inte samspelade med vår kod. Efter att ha rättat vårt miss följde roboten linjen. Resultatet presenterades för labbansvarig och dagboksinlägg skrevs. 3. Resultat Radnummer Ny kod Kommentar 34-36 String groupmembers[]: ={ Daniel, Johnny }; 45 TextOut (0, (LCD_LINE2) (8*i)), names [i]); 68 lightintensity = SensorRaw(IN_3) Skrev in namnet på gruppemedlemarna Ändrade den matematiska processen i forloopen så att namnen skrev ut på rätt rad. Tog bort -16 ur loopen. Ändrade så att det var ljussensorn och inte trycksensor som stryde valet av väg. 86 OuFwd(Out_A, Speedfast); Ändrade hastigheten så att den accelererar ifall vi är är på spåret för att hitta tillbaka 91 OnFwd(Out_B, SpeedSlow); Ändrade så att motorerna sakta ner när vi hittade spåret för noggrannare avläsning och korrekt navigering 115 //dance(): Kommenterade bort funktionen då den ej behövdes 4. Analys Vårt huvudsakliga problem var att få roboten att avläsa spåret korrekt, när vi noga granskat vår kod i förhoppning av att hitta ett misstag och inte upptäckte några fel kom vi på att vi ej kollat hur hårdvaran var kopplad vilken motor/sensor hade vilket nummer. Med logik och tidigare kunskaper i programmering hade vi klurat ut hur koden skulle se ut och hur robotens rörelsemönster skulle formas. Det svåra var i att få roboten att ta det till praktiken och hårdvaran men efter en observation upptäckte vi att ett enkelt fel skapade våra problem, på rad 68 var SensorRaw variabeln inställd på trycksensorn därav läste roboten inte av med ljussensorn därför skapade stor förvirring, detta bevisar på att små fel kan leda till stora konsekvenser. Utskrivingen på skärmen styrdes utav en if funktion, ifall trycksensorn var intryckt skulle motorerna stanna samt texten skrivas ut. Forloopen styrde robotensrörelse tillsammans med en if/while funktion. ICT KTH Sida 4 av 6

5. Diskussion Laborationens syfte var i stora drag att introducera studenter till ett ingenjörsmässigt arbetssätt. Syftet uppfylldes då laborationen gick ut på att genom simpel felsökning och hårdvaru nära programmering i par kunde studenten få en överblick på hur liknande projekt kan tänkas se ut. NXC, som är ett hårdvarunära språk och genom att få testa på det har jag lärt mig vikten av hur koden men också hårdvaran måste vara konfigurerade på rätt sätt för att skapa ett samspel som resulterar i de resultat man strävar efter. Struktur och planering är också viktiga egenskaper som jag fått optimera samt även fått uppleva att parprogrammera och ta del av dess fördelar. Egenskaper som arbetsmarknaden nästan tar förgivet och man definitivt kommer ha användning till. Laborationens miljö samt verktygen gav oss möjlighet att testa roboten snabbt, denna metod otroligt effektiv då kunde testa sig fram till vad som eventuellt kunde vara fel. Istället för att sitta och gräva allt för mycket i koden som vi gjorde kunde vi istället insett att vår robot med vår kod inte ens läste av med ljussensorn. Flashningen av roboten gick på ett ögonblick så metoden med att testa var mycket smidigare just i detta fall, i andra sammanhang där miljön och eventuellt tillgångar såsom tid ej tillåter detta arbetssätt kan andra alternativ vara mer optimala. Referenser 1.Laborations pre memoria som förklarar laborationens olika steg samt presenterar syftet bakom laborationen. 2. NXC API:n http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html ICT KTH Sida 5 av 6

Bilagor En skärmdump på KTH dagboksinlägget. ICT KTH Sida 6 av 6