Labbrapport: Styrning av robot med NXC
Transcription
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