KUNGLIGA TEKNISKA HÖGSKOLAN Programmera LEGO NXT Felsökning av NXC för LEGO NXT Sam Nydahl [07092012] snydahl@kth.se Introduktionskurs i Datateknik II1303
Sammanfattning Vi hade till uppgift att felsöka en NXC kod till LEGO-roboten för att få den att följa en svart linje med hjälp av ljussensor med hjälp av programmet BricxCC. Syftet var att öva parprogrammering och att få en första inblick i C-kodning för de som aldrig tidigare gjort det. Vi hade fyra timmar till godo under labbtillfället men vi hade tillgång till mjukvaran, kod-filen och en nybörjarguide för NXC. Vi inledde med att testa roboten, för att sedan granska koden och se vad som behövde kommenteras bort, för att slutligen få roboten att följa linjen och skriva ut våra namn vid kontakt med väggen. ICT KUNGLIGA TEKNISKA HÖGSKOLAN Sida 2 av 6
Innehållsförteckning 1. Inledning... 1.1 Bakgrund... 1.2 Syfte och målsättning... 2. Genomförande... 3. Resultat... 5. Analys... 5 5. Diskussion... 6 Referenser Mall rapport.docx bilda.kth.se... 6 Bilagor... 6 ICT KUNGLIGA TEKNISKA HÖGSKOLAN Sida 3 av 6
1. Inledning Vi hade till uppgift att felsöka en LEGO-robot som var programmerad i NXC så att den till slut skulle kunna följa en svart linje på golvet med hjälp av ljussensorn. Uppgiften skulle genomföras i par för att minska risken att göra fel och ge möjligheten att ta lära från varandra. 1.1 Bakgrund Programmering utgör en stor del av vad man kommer behöva under studierna på ICT-skolan och i arbetslivet. Kunskaperna kommer att tillämpas redan i nästkommande kurs, II1300, då man ska programmera roboten från början till slut för att sedan tävla mot varandra. Även förmågan att samarbeta med andra studenter eller kollegor, i det här fallet i form av parprogrammering, är viktig för fortsatt framgång. 1.2 Syfte och målsättning Syftet med laborationen var att få en inblick i hur man kan programmera och testa ett vanligt arbetssätt under liknande projekt. Jag ville få en introduktion till att programmera LEGO-Robotarna, så jag har en förståelse för hur man ska ta sig till väga när det ska göras i II1300. Kravet för roboten var att den med hjälp av ljussensorn skulle följe en svart linje på golvet och med hjälp av trycksensorn skulle den känna av vid kontakt med väggen och skriva ut våra namn på LCD-skärmen. 2. Genomförande Labtillfället började med en introduktion av Lab-PM, dvs. vilka krav det fanns på roboten när koden var felsökt och fungerade. Vi använde Felix Ringbergs dator där programvaran, BricxCC, redan var nedladdad från Bilda, likaså kodfilen. Det ända vi behövde installera var drivrutinerna. Vi använde oss, som hänvisat, av tekniken parprogrammering där man sitter en bestämd tid vid datorn och programmerar medan den andra sitter bredvid och granskar vad som görs, sedan byter man av. Detta leder till färre felskrivningar och ofta bättre resultat. Vi började labben med att testköra roboten för att se hur den betedde sig med den redan inlagda koden. Sedan började vi granska koden utan att förhastat kommentera bort kod. När vi hittade felaktig kod tog vi bort den och testade med roboten för att se om vi fick önskad förändring. Detta gjorde vi tills att roboten gjorde som planerat. ICT KUNGLIGA TEKNISKA HÖGSKOLAN Sida av 6
3. Resultat Radnummer Ny Kod Kommentar 35 Felix, Sam Våra namn i stringen groupmembers. 5 (8*i) Tog bort -16 för att namnen skulle hamna på robotens LCD-skärm. 11 //dance(); Kommenterade bort den irrelevanta dance funktionen, då den förde bort roboten från linjen. 68 (IN_3) Ljussensorn sitter i IN_3 och inte IN_1. 86 SpeedFast Så att roboten inte bara svänger åt ett håll. 97 SpeedSlow Så att roboten inte bara svänger åt ett håll.. Analys Vi hittade snabbt alla fel utom ljussensorns input, vilket var det första vi borde kollat, att allt satt som det skulle. [groupmember] var stringen som lagrade namnen för att sedan skrivas ut av printnamestoscreen där den skrevs ut på de redan fördefinierade raderna på robotens LCD-skärm. Dance-funktionen var den funktion som först exekverades, vilket fick roboten att under tre sekunder dansa så den fick kommenteras bort för att programmet skulle följa kraven. SpeedFast och SpeedSlow, var tvungna att inverteras för att roboten inte skulle svänga runt i cirklar, utan svänga fram och tillbaka med små marginaler. ICT KUNGLIGA TEKNISKA HÖGSKOLAN Sida 5 av 6
5. Diskussion Det var första gången jag programmerat parvis, vilket jag var innan labben inte trodde skulle fungera så bra i bra i början. Något jag tar tillbaka i efterhand, processen fungerade utomordentligt. Det var både produktivt och lärorikt att parprogrammera, definitivt något jag kommer använda mig av och dra nytta från. Programvaran BricxCC fungerade smärtfritt både att installera och använda. Att läsa NXC koden var till en början något komplicerat men man kom snabbt in i det, kan bero på att jag skrivit i C förut och även läst guiden som tillhandahölls i bilda. Referenser Mall rapport.docx bilda.kth.se Labb PM kth.se/social Programming LEGO NXT Robots using NXC.pdf bilda.kth.se Bilagor ICT KUNGLIGA TEKNISKA HÖGSKOLAN Sida 6 av 6