KUNGLIGA TEKNISKA HÖGSKOLAN LEGO NXT Robotprogrammering Laboration med parprogrammering Filip Forsby 2012-08-27 forsby@kth.se II1310 Introduktionskurs i datateknik Sammanfattning Denna rapport beskriver en laboration med LEGO NXT-robotar som skulle programmeras i par där uppgiften var att få roboten att följa en markerad linje tills den stöter i ett föremål.
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... 4 Referenser... 4 Bilagor... 5 ICT Kungliga Tekniska högskolan Sida 2 av 5
1. Inledning Detta är en rapport på en laboration där en LEGO NXT-Robot skulle programmeras för att följa en svart linje på vitt underlag. Laborationen gjordes som introduktion till studierna på ICT-skolan för att ge övning i rapportskrivning och ingenjörsarbete. 1.1 Bakgrund Som student på ICT-skolan är denna laboration en bra introduktion, då vi börjar med ett lekfullt sätt att programmera och styra IT, vilket mer eller mindre är det vi kommer att göra resten av vår utbildning och antagligen sedan i arbetslivet också. 1.2 Syfte och målsättning Syftet med laborationen är att introducera programmering, i detta fall i form av parprogrammering, och arbetsgången vid ingenjörsarbete samt att ge träning i de utbildningssystem som finns på ICTskolan. Laborationen har även som syfte att ge träning i felsökning vilket bidrar till ett noggrannhetstänk. Att skriva en rapport har även det ett syfte; att på ett bredare plan introducera ingenjörsarbete samt att ge träning och färdighet i rapportskrivning. Målet med laborationen är att programmera en LEGO NXT-Robot och få den att utföra uppgifter med program skrivna i språket NXC i programmet BricxCC. Mina egna syften och mål var även att ordentligt genomföra min första uppgift i högskolan och samtidigt ha en rolig och intressant laboration. 2. Genomförande Innan laborationstillfället förbereddes laborationen. Programvara för att programmera roboten laddades ner från kurshemsidan tillsammans med koden vi skulle granska och en guide i pdf-format om grunderna till NXC. Programvaran installerades och guiden lästes igenom för att man skulle ha en uppfattning om hur programmet och språket fungerade. Vid laborationstillfället bildades par och programvaran startades på en windows-dator med koden som skulle granskas. En testkörning gjordes på ursprungskoden för att få en överblick på vad som behövdes göras. När det observerats vad som behövde ändras gjordes detta och ytterligare testkörning gjordes till dess att roboten klarade uppgiften. ICT Kungliga Tekniska högskolan Sida 3 av 5
3. Resultat Radnummer Ny Kod Kommentar 68 IN_3 Ljussensorn var kopplad till IN_3. 82 > Den ska svänga på högre än TopTreshold 88 < Det ska svänga på lägre än BotTreshold 2 20 Det gick alldeles för snabbt, roboten spårade ur 3 40 Se ovan. 84 SpeedFast För att den ska svänga på högre än TopTreshold krävs att ena motorn går snabbt och den andra långsamt. 92 SpeedSlow Samma sak här, fast då svänga åt andra hållet. 35 Oskar, Filip För att föra in våra namn i listan. 45 LCD_LINE2 + (8*i-16) För att den ska hoppa en rad ner istället för upp för varje nytt namn. 59 SEC_5 För att vi tyckte 20 sekunder var onödigt länge. 4. Analys Laborationen gick bra. Båda hade tidigare erfarenhet av programmering så det gick snabbt att sätta sig in i programmet. Dock började vi redigera kod innan vi riktigt hade tänkt efter vad den gjorde och fick därför göra om lite. När vi efter en stund förstått vad allt gjorde gick det snabbt att rätta till felen eftersom de inte var svåra. 5. Diskussion Problemen uppkom när vi var för ivriga. Man ska därför ha ordentlig förståelse för vad koden innebär innan man sätter sig och ändrar. Jag fick även större inblick i att programmera fysiska objekt, i form av legorobot i detta fal, vilket jag aldrig hade gjort tidigare. Detta kan hjälpa mig i framtiden då jag antagligen kommer fortsätta med detta och göra det många gånger till. Programvaran och NXC var lätt att sätta sig in i, speciellt med den korta guiden jag läste först. De funktioner som finns i NXC var lätta att förstå och bra att utgå ifrån. Tillvägagångssättet vi hade var bra, vi lösta uppgifterna allt eftersom med en sak i taget och testade efter varje ändring vi gjorde. Detta gjorde att vi inte gjorde några fel och det var lätt att se vad som behövdes göras. Referenser Programming LEGO NXT Robots using NXC.pdf Guide i NXC. - https://bilda.kth.se/node.do?id=19150204 Labb-PM -https://bilda.kth.se/courseid/8498/content.do?id=19150198 ICT Kungliga Tekniska högskolan Sida 4 av 5
Bilagor ICT Kungliga Tekniska högskolan Sida 5 av 5