Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Relevanta dokument
Programmera Lego Mindstormsrobotar

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

Laboration - Programmering av LEGO Mindstorm robot

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

LEGO Mindstorm-robot

Programmering av en Lego robot

Laboration i datateknik

Laborationsrapport av robotprogrammering

PROGRAMMERING AV LEGO-ROBOT VIA NXC

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Felsökande av en Lego Mindstorm robot

LEGO NXT Robotprogrammering

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

Lego Mindstormprogrammering

Programmering av LEGO NXT Robot

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

Labbrapport - LEGO NXT Robot

Introduktion i programmering med språket NXC

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

Laboration i datateknik

Introduktion till programmering med hjälp av Lego Mindstorm

Simon Boström Introduktionskurs i Datateknik

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

Programmering med NXC Lego Mindstorm

Programmeringslaboration med LEGOrobot

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

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

[Introduktion till programmering ]

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

Simon Johansson Introduktionskurs Datateknik 1310

Programmering av LEGO NXT Robot

[Introduktionskurs i Datateknik]

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

Programmera LEGO NXT

Labbrapport LEGO-robot linefollower

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

Felsökning av mjukvara

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Programmera en NXT Robot

Robotprogrammering felsökning & analys.

Praktisk programmering

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

Roboten. Sida 1 av 11

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Laborationer i SME094 Informationsteknologi I för

Programmeringspalett. Pr o gr a mvar a

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

EV3 Roboten. Sida 1 av 13

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

Planering Programmering grundkurs HI1024 HT 2014

Lego Robot [ ] [ ] [ ]

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

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

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Planering Programmering grundkurs HI1024 HT TIDAA

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Verifiering av MIFARE slinga på SITHS-kort

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Användarhandledning Version 1.2

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

LABORATION 1 Pingpong och Installation av Server 2008 R2

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Programmering. Den första datorn hette ENIAC.

Bruksanvisning M-ANY PreMium MP3 Art I kartongen: Fjärrkontroll, hörlurar, batterier, USB-kabel, Audiokabel, väska, halssnodd, CD-Rom.

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Digitala projekt - Radiostyrd bil

Extramaterial till Matematik X

PROGRAMMERING ÅK 9 INTRODUKTION

JavaScript Block Editor:

Objektorienterad Programmering (TDDC77)

Informationen i detta dokument bygger på att mobiltelefonen har Android version 8 eller senare.

Planering Programmering grundkurs HI1024 HT data

TandD trådlösa loggers med RTR-57U terminal.

Universe Engine Rapport

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

MANUAL ELBENSTÖD / WIZARD 6

Bruksanvisning Bläckfisken USB

Extramaterial till Matematik Y

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

Projektuppgift - Gymmet

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

Programmering, dans och loopar

Programmering, dans och loopar

Lab5 för prgmedcl04 Grafik

Digitalt lärande och programmering i klassrummet

KLARA BARCODE. Program- och maskinvara Nordic Port AB Mölndalsvägen 93 Tfn: Sida 1 (6) GÖTEBORG

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Installera USB-adapter

Programmering. Scratch - grundövningar

Digitalt lärande och programmering i klassrummet

Lathund för att hantera kongresshandlingar. Dator PC och Mac

Instruktion till. PigWin PocketPigs. Del 1 - Installation

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

Laboration: Whitebox- och blackboxtesting

Sirius II Installation och Bruksanvisning

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Transkript:

KTH ICT Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC Jonathan Kindfält 23/08-2012 E-post (kindfalt@kth.se) Introduktionskurs i datateknik II1310 Sammanfattning Denna rapport behandlar uppgiften att rättatill ett felskrivet program som ska köras på en LEGO Maindstorm robot så att den ska kunna följa en linje och vid kollition med ett objekt kunna; stanna, spelaupp en ljudmelodi samt att mata ut två namn på dess display. Detta skulle aggera som en introduktion till framtida programmering. Genomförandet kom att ske genom att först observera den oförändrade programmets inverkan på roboten. Sedan så kom programmets olika funktionella delar att identifieras och tänkbara fel i dessa kom därmed även att försökas rättastill. När förändringarna är genomförda så kom raboten att testas för att se om dess beteende var rätt. Resultatet av detta blev att igången för ljussensorn fick ändras i koden, hjulens hastighet för de olika värdena från ljusensorn ändrades, att den funktionsanrop bortkommenterades samt att namn för utmatning på display lades till för utmatning. Vi fann att detta var en rellativt enkel sak att göra och det önskade resulltatet uppnåddes ganska fort.

Innehållsförteckning Sammanfattning... 1 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte och målsättning... 3 2. Genomförande... 3 3. Resultat... 3 4. Analys... 3 5. Diskussion... 3 Referenser... 3 Bilagor... 3 ICT KTH Sida 2 av 8

1. Inledning Rapporten kommer att beröra programmering av en LEGO Maindstorm robot i syfte att bekanta sig med programmering i allmänhet. Språket som används är NXC (Not exactly C) p.g.a att det är något enklare än vanliga C, samtidigt som det lämpar sig bra till att programmera LEGO Maindstorm robotar eftersom att det har fördefinierade bibliotek för styrning av robotens olika funktioner. Detta kommer att ske genom att en fördefinierat program kommer att erhållas till roboten. Programmet kommer att får roboten att bete sig på ett bestämt sätt, ett sätt som inte är önskvärt. Genom att studera programkoden och dess påverkan på robotens funktion så ska programkoden sedan modifieras så att önskvärt beteende hos roboten uppträder. Det önskvärda funktionen av roboten är att den ska kunna följa en markerad linje men vid kollision med objekt kunna stanna, spela upp ett ljudstycke och mata ut namn på dess skärm. 1.1 Bakgrund Programmering är en vesäntlig del av utbildningen på ICT-skolan i Kista, så att kunna känna sig bekväm mad att programmera är mycket viktigt. Därför så är programmering i språket NXC en bra start för de som aldrig tidigare har programmerat och en god uppvärmning för de mer erfarenhet. NXC har egenskapen att vara mycket likt vanliga C samtidigt som att det lämpar sig bra för programmering av LEGO Maindstorm robotar. Detta i kombination ger en bra introduktion till programmeringens funktioner, egenskaper och effekter i form av att robotens beteende ändras med koden i programmet. 1.2 Syfte och målsättning Laborationen består av två delar, syftet som är en generellt och målet som är mer konkret. Det generella syftet är att man ska bekanta sig med programmering i allmänhet, dess uppbyggnad och principer etc. Målet är dock att programmera roboten till att följa en definierad linje och vid kollision med objekt kunna stanna, spela upp ett ljudstycke samt mata ut namn på dess skärm. Rapportens syfte är även att bekräfta att man har förstått hur robotarna fungerar, samt att lära sig att skriva en korrekt rapport. ICT KTH Sida 3 av 8

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. Inför laborationstillfället så studerades Lab-PM med bifogat material så att en uppfattning om laborationens innehåll erhölls. Tillhörande filer som programmeringsmiljö och den erhållna programkoden som skulle undersökas, laddades ner från kursaktivitet på Bilda. Koden studerades dock inte nämnvärt vid detta tillfälle. På laborationstillfället så erhölls en LEGO Maindstorm robot vars förprogrammerade funktion testades med den tidigare nedladdade programkoden som dock redan fanns i roboten. Därefter så installerades programvaran BricxCC, på personlig dator, som är den programmeringsmiljö som användes för NXC. Sedan så laddades ner drivrutiner till roboten så att den hunde anslutas till datorn (se referenser). Metoden som valdes för detta arbete var sådan att; 1. först studera den befintliga kodens inverkan på robotens beteende och jämföra den med det beteende som skulle åstadkommas, dvs få den att följa en linje, stanna vid kontakt med objekt i färdriktningen och mata ut laboranternas namn på skärmen. 2. identifiera koden och de delar av den som ger upphov till robotens beteende och ändra dem så att önskad funktion sker. 3. testa ändringarna i koden genom att skicka den modifierade koden till roboten och testköra den. 4. vid ej önskvärt resultat så repeteras ovanstående punkter i metoden. Vid genomförandet av arbetet så skedde programmeringen i par där den ena medlemen fick programmera i ca tjugo minuter medan den andra satt bredvid och kommenterade och gav synpunkter på koden och vad som skulle ändras. Efter dessa tjugo så skifftades platserna. Under arbetets gång så kom metoden, beskriven ovan, att användas som mall för arbetet som till stora delar gick ut på att ändra ett tänkbart fel och sedan testa om det det blev åtgärdat. ICT KTH Sida 4 av 8

3. Resultat I tabellen nedan så presenteras de ändringar i programmkoden som gjorts för att få roboten att fungera korrekt samt några kommentarer till vad som sker vid dessa förändringar. Radnummer Ny kod Kommentar 35 Jonathan Namn medlem 1 36 Douglas Namn medlem 2 39 //Vi lade till våra namn 46 LCD_LINE1 + Minus till plus, rad justering på display 69 SensorRaw(IN_3); Ändrar port för ljussensor från IN_1 till IN_3 87 SpeedSlow Minskar hjulets hastighet så att roboten svänger. 92 SpeedFast Ökar hjulets hastighet så att roboten svänger. 116 //dance(); Roboten får inte dansa. 4. Analys Laborationen gnomfördes ganska snabbt och med önskat resultat som följd. Detta var tack vare att båda laboranterna tidigare hade bekantat sig med programmering och kände väl till dess strukturer samt principer. De främsta felen i koden var att porten som angav ljussensorn var felangiven i koden så programmet kunde inte använda datan från den till en början och därmed kunde inte hjulens hastighet bero på värdena från ljussensorn, vilket var tanken för att kunna definjera när roboten skulle svänga från höger till vänster och därmed följa en linje. Dock så var även hastigheterna för hjulen i flera fall samma både för if och else sattserna för hjulstyrningen (som är beroende av värden från ljussensorn) vilket gjorde att inte roboten svängde när den skulle. Det är hjulens inbördes hastighetsskillnad som gör att den svänger. Ett annat fel var att ett anrop på funktionen dance låg inne före den igentliga koden direkt efter main som skulle exikveras, vilket resulterade till att roboten dansade. Detta löstes med en bortkommentering av funktionsanropet. Namnutmatningen på skärmen skysterades genom att ändra raden för vilken namnen skulle matas ut på samt att namn lades till utmatningskomandot. ICT KTH Sida 5 av 8

5. Diskussion Syftet med laborationen var att bekanta sig med programmering, hur det fungerar och lära sig vad principerna för det är. Det realiserades genom att en robot vars felaktiga program skulle rättastill så att robotens funktion skulle bli rätt. Laborationen gick bra att utföra utan några större svårigheter. Det var intresant att se hur koden var skriven för robotens funktion. Man såg tydligt att små simpla delenheter i koden tillsammans bildar en mer konplex helhet. Man lärde sig även att små fel kan innebära stora konsekvenser för hela programmet och därmed även robotens funktion samta tt de kan uttrycka sig på det mest konstiga sätt. Det nyttiga med denna laboration var att man fick en liten uppvärmning inom programmeringen vilket kommer att vara till nytta vid senare kurser. Att bekanta sig med ett nytt språk är lärorikt och eftersom att NXC kommer att användas för framtida projekt med dessa robotar, så var det även bra inför framtiden. NXC som språk är ganska lätt att förstå och använda, speciellt när man tidigare har programmerat i C++. Mycket är det samma men det finns en del skillnader, som t.ex standardbibliotek etc. Tillvägagångssättet under laborationen var mycket rakt på sak, se hur den beter sig, identifiera de delar av programmet som styr de olika fysiska funktionerna, se om något inte stämmer, ändra och sedan testa. Det hänger mycket på att man kan se hur värden från de olika parametrarna påverkar inte bara en utan flera funktioner, allt hänger samman på ett eller annat sätt. Det var även intesant att testa en ny form av programmering (parprogrammering), man får då se programmeringen från två oika perspektiv samt att få se och höra hur andra tänker och tycker programmeringen ska fortgå. Referenser Dessa är de informationskällor som ahr används i detta arbete. Labb-PM: https://bilda.kth.se/courseid/8498/content.do?id=19150198 Drivrutiner: https://bilda.kth.se/courseid/8498/content.do?id=19538759 ICT KTH Sida 6 av 8

Bilagor Nedan så kommer det några bilagor, bl.a bildrer. Bild på LEGO NXT robot: ICT KTH Sida 7 av 8

Bild på dagboksinlägg på KTH Social ICT KTH Sida 8 av 8