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

Relevanta dokument
Programmera Lego Mindstormsrobotar

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

LEGO NXT Robotprogrammering

Programmering av en Lego robot

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

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

Laboration i datateknik

Laboration - Programmering av LEGO Mindstorm robot

Simon Boström Introduktionskurs i Datateknik

Programmering av LEGO NXT Robot

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

PROGRAMMERING AV LEGO-ROBOT VIA NXC

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

Lego Mindstormprogrammering

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

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

Robotprogrammering felsökning & analys.

[Introduktion till programmering ]

Introduktion till programmering med hjälp av Lego Mindstorm

Laboration i datateknik

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

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

Programmera LEGO NXT

Labbrapport - LEGO NXT Robot

LEGO Mindstorm-robot

Programmering med NXC Lego Mindstorm

Felsökande av en Lego Mindstorm robot

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

Laborationsrapport av robotprogrammering

Programmeringslaboration med LEGOrobot

Simon Johansson Introduktionskurs Datateknik 1310

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

Introduktion i programmering med språket NXC

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

Felsökning av mjukvara

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Labbrapport LEGO-robot linefollower

Praktisk programmering

Programmera en NXT Robot

[Introduktionskurs i Datateknik]

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

Föreläsning 3. Programmering, C och programmeringsmiljö

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

Digitalt lärande och programmering i klassrummet

Programmering. Analogt och med smårobotar. Nina Bergin

EV3 Roboten. Sida 1 av 13

Aktivitetsbank. Matematikundervisning med digitala verktyg II, åk 1-3. Maria Johansson, Ulrica Dahlberg

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

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

Roboten. Sida 1 av 11

Lego Robot [ ] [ ] [ ]

Extramaterial till Matematik Y

Extramaterial till Matematik X

Vilken skillnad gör det var du placerar det? Prova båda.

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

Programmering, dans och loopar

Programmering. Den första datorn hette ENIAC.

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

En resa genom robotarnas värld!

Programmering och begrepp

Programmeringspalett. Pr o gr a mvar a

Scanner Detektor lärarhandledning Mojäng

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

Laborationer i SME094 Informationsteknologi I för

Den intelligenta dammsugaren

Lär känna Edison. Det här är Edison, den programmeringsbara roboten.

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

Manual Sportident Onlinekontroll via GPRS

Innehåll. 1 Inledning 3

Föreläsning 3. Programmering, C och programmeringsmiljö

Edison roboten som går at bygga ihop med LEGO

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

Blockly är en av apparna som används för att styra roboten Dash. Den är väldigt enkel i sin utformning och kan med fördel användas av yngre barn.

INTRODUKTIONSKURS Sport-Ident Degerfors OK

Användarmanual Emit Start Display ESD2

Programmering, dans och loopar

Den är en maskin, jag är en människa. Den ska göra som jag vill!! Nils

Övning: hitta buggarna

Programmering och begrepp

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Programmering. Scratch - grundövningar

Extramaterial till Matematik Y

ENKEL Programmering 3

Programmering robotprogrammering med mbot

Programmering F-3. -dansprogrammering. Del 1

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

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

Välkomna! Datalogiskt tänkande och programmering 15 augusti WiFI Nätverk: Conventumwifi Lösenord: conventum2018

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

Hur ser Blue-Bot ut i aktion?

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

Jag försöker hämta in video via Ulead programmet men får bara in bilden och inget ljud.

Sportidentutbildning

FÄLTMÄTINSTRUKTION TESTO 174H

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

MANUAL CHRONO COMAI Comai AB erbjuder kvalificerade anpassningsbara och Comai AB

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 ANVÄNDANDET AV SENSORER... 4

Programmering från början

Introduktion till programmering

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA Lego Linefollower Få en robot att följa linjen på golvet! Felix Ringberg 2012-08-09 felixri@kth.se Introduktionskurs i datateknik II1310 Sammanfattning I den här laborationen är uppgiften att kolla igenom den erhållna koden efter fel, och att genom parprogrammering försöka rätta till dessa. Den rättade koden ska laddas in i en lego-robot och är slutligen menad att följa en svart linje på golvet.

Innehållsförteckning Sammanfattning...1 1. Inledning...3 2. Genomförande...3 3. Resultat...4 4. Analys...5 5. Diskussion...5 Referenser...6 Bilagor...6

1. Inledning I den här laborationsrapporten beskrivs laborationen, varför laborationen ger en bra inblick i vad som en blivande ingenjör kan vänta sig i framtida studier och yrken, samt varför det är så pass mycket fokus på kommunikation mellan elever som studerar tillsammans. Blivande ingenjörer får även genom programanvändningen prova på kodandet och hur den närmsta tiden kommer att kunna se ut. 1.1 Bakgrund Som ingenjör är det väldigt viktigt med kommunikation och gott samarbete med sina kollegor, eftersom väldigt många av deras uppgifter och projekt har flera ingenjörer som de måste samsas med. Studenter på ICT-skolan arbetar på samma sätt, och därför måste de kunna samarbeta med sina gruppmedlemmar och klasskamrater när det behövs vid projektuppgifter. 1.2 Syfte och målsättning För att studenten i framtiden ska kunna lyckas med sina studier är det viktigt att denne ska kunna kommunicera med andra runt om kring sig. Detta är särskilt viktigt när arbeten delats upp i grupper där personer måste samarbeta. Syftet med denna laboration är främst att introducera nya studenter till programmering där de ingår i par och får programmera tillsammans. Två elever ska kunna sätta sig, turas om om att programmera och kommunicera för att gemensamt lättare lösa problemet och utföra laborationen. Bakgrundssyftet är att samtidigt få se hur programkod och hårdvara i form av en legorobot kan interagera, och på så vis lära känna och prova på hur framtida projekt kan komma att se ut. 2. Genomförande Laborationen genomförs i par med en dator per par. Programvaran Brickx laddas ned från kurshemsidan. När programmet är installerat kopplas legoroboten in i datorn med USB-kabel. När programmet startas kopplas datorn ihop med roboten och program kan laddas upp i den. Programmet linefollower.nxc som erhölls laborationsgruppen laddas då in i roboten och testkörs. Eftersom programmet har några inlagda buggar är det parets uppgift att söka igenom koden efter dessa och eliminera dem. De måste kommunicera och metoden fungerar som så att den ena programmerar och läser av koden i 20 minuter, sedan byts de av, jobbar i 20 minuter, byts av igen, och så vidare. Efter att paret tror de lyckats eliminera en bugg testar de roboten på banan, och fortsätter på samma sätt att eliminera bugg för bugg tills roboten gör det den är menad att göra enligt anvisningarna. Vid slutförd laboration ska roboten: 1. Skriva ut gruppmedlemmarnas namn på varsin rad på displayen

2. Kunna följa linjen 3. Spela upp en melodi när den träffar väggen 3. Resultat Radnummer Gammal kod Ny kod Kommentar 45 (8*i - 16) (8*i) Att 16 subtraheras bort gjorde att texten hamnade två rader för högt upp 2 SpeedSlow 80 SpeedSlow 30 Vi ansåg att ljussensorn kunde ha problem med att läsa av linjen om den sveptes för snabbt över den, så vi sänkte hastigheten 3 SpeedFast 100 SpeedFast 60 Se ovan 68 (IN_1) (IN_3) Vi kollade portarna till de olika sensorerna och såg att ljussensorn var inkopplad i port 3(IN_3) 35 person1 Felix, Sam Vi lade till våra namn i listan groupnames 86 SpeedSlow SpeedFast Utan denna ändring hade roboten fortsatt svänga åt ett håll även om den hade känt av linjen 92 SpeedFast SpeedSlow Se ovan 114 dance() //dance() Funktionen gjorde att resten av koden fick vänta i tre sekunder medan den gjorde sin dans - den fyllde alltså ingen funktion.

4. Analys Roboten hade en del buggar inbakade som var olika svåra att hitta, men i överlag gick det rätt snabbt. Det problem som tog längst tid att klara av var att hitta att robotens portar inte överensstämde med koden, då detta inte kan hittas i koden, utan måste kollas på själva roboten. Något som också tog lite tid var att förstå hur namnen skulle skrivas in, men vi lyckades till slut inse att texten hamnade ovanför skärmen när 16 subtraherades från 8*i. Kollar man igenom koden så ser man att main-aktiviteten ligger längst ned, och det inom den körs igenom allra först, och i den fanns bland annat funktionen dance(). Denna funktionen hade som uppgift att svänga åt ett håll och sedan kallades wait-kommandot, det vill säga att programmet pausade i tre sekunder innan resten kördes. Detta gjorde att vad man än gjorde, skulle programmet alltid börja med att köra till vänster, därför plockade vi helt bort det från körningen genom att sätta kommentar-tecken ('//') före den raden kod. 5. Diskussion För mig som är relativt van vid programmering och programspråk var det inte väldigt svårt att hitta felen eller förstå dem, men jag förstår att de som är nya till det hela kan stöta på problem eftersom det är en hel del tänkande bakom alla algoritmer, och det är inte alltid det lättaste att gå tillbaka och försöka läsa av hur kod är tänkt att fungera, och vad den är menad att göra. Med lite tid och kunskap går det däremot ganska lätt att inse lite djupare hur alla kugghjul i programmen samspelar, och man kan börja försöka sig på att göra sina egna modifikationer! Att programmera i par eller i grupp är nytt för många, bland annat för mig själv, men är en bra övning i samarbete. Det är intressant hur mycket lättare det kan bli att kolla igenom kod tillsammans efter fel, än om man hade gjort det ensam. Att turas om att programmera gör att inte endast en sitter och håller på datorn medan den andre hänger över axeln hela tiden, utan man får sin tid och kan i lugn och ro kolla igenom i sin egen takt när det har blivit ens tur. Så länge man håller ett bra samarbete kan nog programmering i grupper förenkla och skynda på saker oerhört mycket. Det är ett väldigt bra tillvägagångssätt som man verkligen kan ha nytta av i framtiden om man ska arbeta med programmering under studier eller i sitt yrke. Det är även intressant hur lätt en siffra eller bokstav fel kan ändra på utfallet av ett program så avsevärt som det kunde göra i den här laborationens fall. Det kan väldigt enkelt gå fel, och det är därför det är viktigt, när man håller på med programmering, att man har fokus och söker av koden efter fel så att buggarna minimeras. NXC var ett väldigt enkelt men effektivt programspråk som var lätt att läsa och förstå. Det gick med programmet BricxCC att ladda in koden i roboten både lätt och snabbt. Direkt när man laddat in

program så kunde den kopplas ur och användas direkt. Detta snabba system gör att testkörning och felsökning går väldigt smärtfritt, och är något jag definitivt skulle kunna rekommendera till nya programmerare i framtiden! Referenser https://bilda.kth.se/courseid/8498/content.do?id=19150198 Labb-PM Bilagor