Programmering av en Lego robot

Relevanta dokument
Programmera Lego Mindstormsrobotar

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

Laboration - Programmering av LEGO Mindstorm robot

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

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Felsökande av en Lego Mindstorm robot

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

Laboration i datateknik

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

Introduktion i programmering med språket NXC

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

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Labbrapport - LEGO NXT Robot

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

Laboration i datateknik

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

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

LEGO NXT Robotprogrammering

Lego Mindstormprogrammering

Simon Boström Introduktionskurs i Datateknik

Laborationsrapport av robotprogrammering

[Introduktion till programmering ]

Programmeringslaboration med LEGOrobot

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Programmering av LEGO NXT Robot

Introduktion till programmering med hjälp av Lego Mindstorm

Felsökning av mjukvara

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

LEGO Mindstorm-robot

Robotprogrammering felsökning & analys.

Programmering av LEGO NXT Robot

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

Programmering med NXC Lego Mindstorm

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

Programmera LEGO NXT

Simon Johansson Introduktionskurs Datateknik 1310

Programmera en NXT Robot

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

[Introduktionskurs i Datateknik]

Labbrapport LEGO-robot linefollower

Praktisk programmering

Lego Robot [ ] [ ] [ ]

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

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

Roboten. Sida 1 av 11

Laborationer i SME094 Informationsteknologi I för

Den intelligenta dammsugaren

Användarhandledning Version 1.2

Planering Programmering grundkurs HI1024 HT TIDAA

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

Programmering F-3. -dansprogrammering. Del 1

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

Programmering. Analogt och med smårobotar. Nina Bergin

EV3 Roboten. Sida 1 av 13

Planering Programmering grundkurs HI1024 HT 2014

De inspirerar femmor med IT-kunskap

1. Vi satte ut ett körblock med standardinställningar 2. Ett till körblock sattes men varaktighet en ställdes istället på 3,55 rotationer (se bild)

ENKEL Programmering 3

PROGRAMMERING ÅK 9 INTRODUKTION

Programmering. Scratch - grundövningar

En resa genom robotarnas värld!

Programmering. Den första datorn hette ENIAC.

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

Planering Programmering grundkurs HI1024 HT data

Laboration: Whitebox- och blackboxtesting

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

Digitalt lärande och programmering i klassrummet

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

Digitalt lärande och programmering i klassrummet

JavaScript del 3 If, Operatorer och Confirm

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

EdBuild - EdRoboClaw

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

Lektion 1: Möt Robo! Områden: Robotteknik, ingenjörsteknik mekanisk design

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

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

Programmeringspalett. Pr o gr a mvar a

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

Manual för Autostart Speed Control

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

GRUNDKURS I C-PROGRAMMERING

DD

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

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Dagbok KFUM CHALLENGERS

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

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

Slutrapport Get it going contracts

Edison roboten som går at bygga ihop med LEGO

Program & programmering

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Programmering i C, 7,5 hp

JavaScript Block Editor:

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

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

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Kojo med Inga Ingenjör

Transkript:

KUNGLIGA TEKNISKA HÖSKOLAN Programmering av en Lego robot - En laboration i kodning i språket NXC Felix Thim 2012-09-06 fthim@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna rapport handlar om den laboration vi gjorde med Lego Mindstorm robotar. Vi programmerade en robot i språket NXC och fick den därefter att röra sig längs en svart linje, för att sedan röra vid en låda och då spela upp en trudelutt samt visa laboranternas namn på skärmen. Laborationen var rolig, men inte speciellt utmanande. Rapporten diskuterar och analyserar även hur labben gick och varför den fick det utfall den fick, samt hur programmet faktiskt fungerar.

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

1. Inledning Det här är en rapport på den laboration som vi genomförde i samband med Introduktionskursen i datateknik. Vi programmerade en Lego Mindstorm Robot i språket NXC. Allting finns att läsa i rapporten. Syftet med laborationen var att ge oss en introduktion i programmering och rapportskrivning. 1.1 Bakgrund Programmering är ett viktigt verktyg för ingenjörer som läser ämnen riktade mot IT, vilket samtliga studenter på ICT-skolan gör. Därför är det viktigt med en rolig, men lärorik introduktion för alla nyblivna ingenjörstudenter. 1.2 Syfte och målsättning Laborationens syfte är just att förse oss med en sådan rolig introduktion. Målet är att man ska få en grundläggande förståelse för hur programmering fungerar, och vad programmering kan få för direkta följder. I det här fallet såg vi direkt hur en rad kod fick roboten att röra på sig t.ex. Syftet med rapporten är att förbereda oss för den bistra verkligheten som ingenjör, där rapportskrivande inte något ovanligt. 2. Genomförande När vi kom till laborationen så var det första vi gjorde att sätta upp våra laptops. Vi fick reda på vad roboten skulle kunna göra, d.v.s. följa en svart linje, röra en låda, spela en trudelutt samt visa gruppmedlemmarnas namn på displayen. Sedan hämtade vi hem BricxCC till våra laptops samt installerade drivrutiner för vår Lego Mindstorm robot. Sedan hämtade vi hem den färdigskrivna koden från bilda. Koden kompilerade visserligen, men fick inte roboten att bete sig som vi ville när vi testade första gången utan att röra koden. Därefter försökte vi sätta oss in i koden, och varför den inte fungerade som tänkt. Vi turades om i 20 minuters intervall med att sitta vid datorn och koda, så att den andre fick stå bakom ryggen och få en helhetsöverblick. Vi upptäckte flertalet fel i koden som vi fick fixa till. Vissa var lite klurigare än andra. Vi lånade lite svart tejp för att kunna bygga vår egen testbana. Testkörningen bestod mest i att finjustera styrkan på motorerna, så att den skulle svänga i tid m.m. Det sista vi gjorde på labben var att ta bort den inbyggda trudelutten och ersätta den med vår egen, nämligen första delen av Imperial March. 3. Resultat Roboten blev mycket lyckad, den genomförde banan som var utsedd precis som planerat. Här följer en tabell på de förändringar som vi gjorde i koden. Radnummer Ny kod Kommentar 35 "Felix", "Daniel" Gruppmedlemmarnas namn 45 (8*i) Tog bort -16 så att namnen visades på displayen 114 Tog bort raden dance(); För att förhindra att roboten betedde sig galet 69 IN_1 ändrades till IN_3 Fel input gjorde att vi fick fel värden 84 SpeedSlow -> SpeedFast Om ljust: vänster 92 SpeedFast - > SpeedSlow Om mörkt: höger ICT-skolan Kungliga Tekniska Högskolan Sida 3 av 5

2 SpeedSlow 20 Sänkte minhastigheten 3 SpeedFast 60 Sänkte maxhastigheten 22 Raderade Done[] arrayen Behövdes ej längre 57-75 Lade till en egengjord trudelutt Imperial March 4. Analys Resultat blev alldeles lysande. Både jag och min medlaborant hade programmerat tidigare, vilket gjorde att vi snabbt kunde sätta oss in i koden och fixa problemen, därför gick det så bra. Funktionen followline() låg bakom att roboten rörde sig framåt och höll sig till linjen. Den forstätter att köra motorerna i en oändlig while-loop ända tills en if-sats bryter loopen genom att villkoret finished blir sant. readtouchsensors() såg till att sätta finished = true om rörelsesensorerna gav utslag, d.v.s. om den rör något (i det här fallet lådan). Den här funktionen spelade också upp trudelutten samt körde funktionen printnamestoscreen när if-sats villkoret uppfylldes. Funktionen printnamestoscreen bestod av en for-loop som gick igenom arrayen med våra namn och skrev ut dessa på skärmen. 5. Diskussion Syftet med laborationen uppnåddes med råga. Det var en kul laboration som fick en att testa på det roligaste med programmering. De problem som uppstod var att vissa hade problem med installationen av drivrutinerna till Lego Mindstorm roboten. Bortsett från det så var det inga problem. Det jag har lärt mig är inte någon mer programmering, däremot så har jag lärt mig parprogrammering, och hur effektivt det kan vara (det var något jag aldrig gjort förut). Som jag sa tidigare så blir det lättare för den som står bakom att se helheten vilket hjälper när man kör som "driver". Självklart har jag nytta av detta i både framtida studier och yrke, då jag nu vet att det finns som metod och hur mycket det kan underlätta. Annars så gillade jag både IDE:en (BricxCC) och språket NXC som vi använde. Det var bra grejer. Tillvägagångssättet som vi använde oss av under laborationen var bra. Vi såg först till att vi till fullo förstod vad all kod i programmet gjorde och vad den var menad att göra. Sedan när vi satt oss in till fullo så ändrade vi i koden. Referenser Labb-Pm. (22 augusti 2012). Hämtad 22 augusti 2012 från: https://bilda.kth.se/courseid/8498/content.do?id=19150198 ICT-skolan Kungliga Tekniska Högskolan Sida 4 av 5

Bilagor ICT-skolan Kungliga Tekniska Högskolan Sida 5 av 5