KTH KISTA Programmering av LEGO NXT Robot Labborations uppgift : Linefollower Christoffer Killander 2012-08-30 ckil@kth.se Datateknik II1310 Sammanfattning Skriv en kort sammanfattning av rapporten här. Generellt har man sammanfattningen på en egen sida, men eftersom den här rapporten är så kort så görs ett undantag.
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... 4 4. Analys... 4 5. Diskussion... 4 Referenser och Källor... 5 Bilagor... 5 CINTE KTH KISTA Sida 2 av 5
1. Inledning Laborationens uppgift var att programera en legorobot att följa en svart kurvad linje. Laborationen skulle också ge ett bra tillfälle att öva på parprogramering och rapportskrivning. 1.1 Bakgrund Legoroboten som vi fick var utrustade med programerbara motorer, ljussensor mot underlaget och en trycksensor framåt. Styrning kan uppnås genom att låta roboten avläsa ljussensorn och låta denna information användas av motorstyrningen. Trycksensorn används för att avläsa när man har kommit fram, som var en låda. Både programmering och rapportskrivning kommer att vara en stor del av vårat liv som studenter på ICT-skolan vilket vi kommer att öva på i denna laboration. 1.2 Syfte och målsättning Syftet med uppgiften var att på ett roligt och enkelt sätt introducera parprogrammering. Uppgiften ger även träning i felsökning och testning och är därför en bra grund till att effektivt kunna arbeta med programmering i framtiden. Målet med uppgiften var att få ett färdigt program skrivet i NXC att fungera och med den koden få en Legorobot att utföra uppgiften. 2. Genomförande Laborationen började med att vi laddade ner linefollower.nxc koden och BrixCC. Sedan så kollade vi igenom koden för att kolla om vi såg några stora fel. Vi hittade inga större fel med koden så vi testade att starta roboten. Vi märkte tre saker: 1. Roboten dansade innan den började leta efter en linje 2. Robotens ljussensor verkade inte reagera 3. Roboten verka dra lite åt höger Vi sökte igenom koden och ändrade så att roboten inte dansade vid början, vi fixade ljussensorn och sänkte robotens hastighet för att säkerställa att ljussensorn reagerade. Vi testade roboten igen och rättade till de fel vi hittade, denna process fortsatte tills roboten fungerade som den skulle. När roboten var godkänd så skrev vi var sitt inlägg på KTHs dagbok. CINTE KTH KISTA Sida 3 av 5
3. Resultat Följande ändringar utfördes i våran kod. Radnummer Gammal Kod Ny kod Kommentar 35 "person1" "Oskar Söderbärg", "Christoffer Killander" 45 TextOut(0, (LCD_LINE2 - (8*i-16)), names[i]); 68 lightintensity = SensorRaw(IN_3); 2,3 #define SpeedSlow 80 #define SpeedFast 100 84-86 OnFwd(OUT_A, SpeedSlow); OnFwd(OUT_A, SpeedSlow); 90-92 OnFwd(OUT_B, SpeedFast); OnFwd(OUT_B, SpeedFast); TextOut(0, (LCD_LINE2 - (8*i+16)), names[i]); lightintensity = SensorRaw(IN_1); #define SpeedSlow 40 #define SpeedFast 80 OnFwd(OUT_A, SpeedFast); OnFwd(OUT_A, SpeedFast); OnFwd(OUT_B, SpeedSlow); OnFwd(OUT_B, SpeedFast); roboten skriver ut våra namn koden skriver ut medlemmarna längre ner på skärmen roboten letar efter ljus sensorn på rätt port Sänkte hastigheten på roboten Så att roboten följer linjen Så att roboten följer linjen 114 dance(); // dance(); Komenterade bort dance funktionen 4. Analys Laborationen slutade väl, roboten gjorde sin uppgift utan problem. Bra: Rolig lab för att introducera programmering och legoroboten visar tydligt vad som går fel. Detta är mycket bättre än när man bara programmerar vanligt för att man ser så tydligt vad som händer. Detta ger en bra förståelse varför felsökning och test är så viktigt, även om det inte alltid är så kul. 5. Diskussion Syftet med laborationen var: parprogrammering, felsökning av kod och att skriva en labrapport. Det största problemet för mig med uppgiften var rad 68. Det tog en lång tid innan jag insåg att ljussensorn var kopplad till fel port. Bortsett från det så gick det bra. Jag har lärt mig från laborationen hur man felsöker kod och hur man skriver en labraport och jag tror att dessa kunskaper kommer att vara viktiga både under med tid som student och i mitt framtida yrke. Eftersom att vi inte har skrivit koden till roboten från grunden, vi har bara felsökt en befintlig kod, så är det svårt att ha en åsikt om hur NXC är jämfört till andra programeringsspråk. Språket verkar dock likna C väldigt mycket och det är bra. CINTE KTH KISTA Sida 4 av 5
Referenser och Källor Källor: KTH.se bilda.kth.se daisy.ict.kth.se Bricx Command Center Programming LEGO NXT Robots using NXC (PDF) bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html Bilagor KTH Social Dagbok: CINTE KTH KISTA Sida 5 av 5