Labbrapport: Styrning av robot med NXC

KTH KISTA
Styrning av robot med
NXC
Övning i parprogrammering
Axel Myrberg
2015-08-28
amyrberg@kth.se
II0310 Introduktionskurs i datateknik
Styrning av robot med NXC
Axel Myrberg
2015-08-28
Sammanfattning
För att styra en LEGO NXT Robot kan man skriva program i språket NXC. Denna laboration går ut på
att ändra och felsöka ett befintligt program för att få en robot att agera på önskat sätt. Roboten är
utrustad med både sensorer och motorer för att utföra uppdraget.
För att lösa problemen behöver fel i koden identifieras och flera rader kod ändras.
Laborationen är en övning där nya elever får bekanta sig med programmering, lära sig vikten av bra
samarbete och att arbeta metodiskt.
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 .................................................................................................................................................. 3
5. Diskussion ............................................................................................................................................ 4
Referenser ............................................................................................................................................... 4
Bilagor...................................................................................................................................................... 5
ICT
Kungliga Tekniska Högskolan
Sida 2 av 7
Styrning av robot med NXC
Axel Myrberg
2015-08-28
1. Inledning
För att introducera elever till programmering genomförs denna laboration som går ut på att styra en
LEGO NXT Robot. Eleven får genom samarbete hitta fel i befintlig kod och få roboten att agera enligt
önskan.
1.1 Bakgrund
Som förstaårselev i ett tekniskt program är det inte självklart att har tidigare erfarenhet av
programmering. Denna laboration ger en introduktion till programmering på ett visuellt och enkelt
sätt samt ger eleven övning i samarbete och parprogrammering.
1.2 Syfte och målsättning
Målet är att få ett få ett fungerande program till en LEGO NXT Robot som utför önskade uppgifter.
Roboten ska kunna följa en linje på marken och vid en krock spela upp en melodi samt visa text på sin
display.
2. Genomförande
1. Drivrutiner till LEGO NXT för Windows installeras.
2. Bricx Command Center installeras.
3. Filen linefollower.nxc laddas ner och öppnas genom BricxCC.
4. Kopplingar till robotens sensorer och motorer kontrolleras.
5. Koden i programmet linefollower.nxc kontrolleras, kompileras och laddas ner till roboten.
6. Robotens beteende testas vid en streckad linje på marken. Observationer skrivs ner.
7. Koden ändras för att överensstämma med önskat beteende, de två deltagarna i gruppen turas om
att skriva kod. Deltagaren som inte skriver kod observerar och utvärderar de nya kodraderna.
8. Robotens beteende testas och eventuella fel noteras. Punkt 7 och 8 repeteras tills önskat resultat.
3. Resultat
Programmet kunde utföra önskade handlingar efter ett antal ändringar i koden. Se bifogad tabell för
detaljer.
4. Analys
För att roboten skulle kunna följa linjen behövde task followline modifieras.
Till en början bytte robotens ena motor fart när sensorn uppfattade linjen men när roboten åkte ut
från linjen skedde ingen förändring. Vi insåg att kan ske vid vissa värden av ljusintensitet och bytte
riktning på olikheterna mellan ljusintensiteten och tröskelvärdet. Sedan såg vi att funktionen under if
var identisk med den under else, alltså skedde ingen förändring oavsett om true eller false. Därför
bytte vi motor under else så att roboten i praktiken svängde när if-satsens värde växlade mellan true
och false.
ICT
Kungliga Tekniska Högskolan
Sida 3 av 7
Styrning av robot med NXC
Axel Myrberg
2015-08-28
En annan del av uppgiften var att få robotens display att visa namnet på gruppmedlemmarna vid en
krock. Till detta användes en trycksensor som satt på robotens framsida. Koden var från start korrekt
med undantag att textutmatningen skedde på en rad. Då detta inte fick plats korrigerades kodens
radbestämmelse TextOut(0, (LCD_LINE2 - (8*i-16)), names[i]);
Delen ”i-16” togs bort vilket medförde att första gruppmedlemmen skrevs ut på rad 2 och andra på
rad 3.
5. Diskussion
De viktigaste lärdomarna efter denna laboration är att vara väldigt noggrann när man programmerar
samt att samarbete underlättar mycket. När idéer kommer snabbt är det lätt att trassla in sig i ett
hörn om man samtidigt skriver koden.
Det underlättade mycket att diskutera troliga utfall innan man ändrade koden samt att ha en partner
som konstant kontrollerade koden som skrevs.
Inom arbetslivet är egenskapen att kunna samarbeta otroligt viktig och effektiviserar de flesta
uppdragen.
Programvaran var enkel att jobba i därför att den hade en inbyggd compiler samt att det gick snabbt
att ladda ner programmen man skrivit till roboten. På så sätt kunde man testa sin kod snabbt.
För att lösa problemen bytte vi av ofta och testade bådas teorier. Vi skissade också upp på papper
hur vi trodde att ändringar i koden skulle påverka robotens beteende innan vi testade.
Referenser
Texten ”Labb-PM” från kursmaterial på bilda.kth.se
(https://bilda.kth.se/courseId/12708/content.do?id=23767338)
ICT
Kungliga Tekniska Högskolan
Sida 4 av 7
Styrning av robot med NXC
Axel Myrberg
2015-08-28
Kungliga Tekniska Högskolan
Sida 5 av 7
Bilagor
ICT
Styrning av robot med NXC
ICT
Axel Myrberg
2015-08-28
Kungliga Tekniska Högskolan
Sida 6 av 7
Styrning av robot med NXC
ICT
Axel Myrberg
2015-08-28
Kungliga Tekniska Högskolan
Sida 7 av 7