KTH KISTA PROGRAMMERING AV LEGO-ROBOT VIA NXC FELSÖKNING AV KOD I BricxCC Fredrik Radholm 28082014 Radholm@kth.se Introduktionskurs i datateknik II1310
Sammanfattning Jag och några andra skulle uträtta en laboration. Detta var en parlaboration som handlade om att felsöka en kod i NXC (BricxCC), föra över koden till en robot som sedan skulle följa en svart kurvig linje på marken. Viss gammal kod skulle då ersättas eller rättas till för att få roboten att göra det den skulle. Syftet var att få en uppfattning om vad som skall komma i framtiden i utbildningen, men även inom potentiellt yrke. Dessutom skulle vi få en smak av hur man fungerar som person inom en grupp. Med bara en aning om hur man kodar, lyckades vi som grupp utföra labben med uppnådda mål. Mycket tack vare logiken som ingår i programmering, men som kanske inte alltid klaffar i vissa situationer, vilket ibland drog ut lite på tiden. När vi utförde ändringar, dokumenterade vi det på ett papper vid sidan om. Som resultat ändrade eller raderade vi cirka 9 lines, med en robot som gjorde det den skulle! Innehållsförteckning 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... 5 Referenser... 5 Bilagor... 5 KTH Kista Sida 2 av 5
1. Inledning Det som skulle göras var att felsöka en fil linefollower.nxc. Man skulle bekräfta dessa fel via att överföra programmet till en LEGO-robot och testa sig fram. Uppgiften handlade om att lära sig om hur man som framtida ingenjör går till väga när problem uppstår. Dessutom om hur man även arbetar och kommunicerar i grupp. 1.1 Bakgrund Laborationen var som en simulering av ett reellt problem som kan uppstå på en arbetsplats för en ingenjör. Man skulle försöka uppfatta olika problem som kan uppstå, och hur man går till väga för att lösa dem. 1.2 Syfte och målsättning Syftet med programmeringen var att man skulle få en introduktion om hur vissa labbar kan komma att se ut, och att man oftast jobbar i grupp. Man skulle även få en uppfattning av de potentiella program man kommer tänkas jobba med i framtiden. Som mål skulle man innan slutet av laborationen få roboten att följa en svart linje på marken från början till slut. Dessa var såklart de mål jag satte för mig själv och oss som grupp. 2. Genomförande Det första som gjordes var att titta igenom labb-pm:t. Den hade övergripande information om vad som omfattade laborationen vi skulle genomföra. Denna fick vi även större kunskap om via en genomgång i laborationstillfällets början. Vi skaffade vårt kursmaterial i Bilda, som innefattade nerladdning av vissa program. BricxCC var det program som skulle användas för själva kodningen, som har en grund i NXC (Not exactly C). Drivrutiner behövdes installeras för parkoppling med roboten. Kommentatorsbladet användes för att skriva ner vår dokumentation (vilka ändringar i koden vi gjorde). Till sist, laddade vi ner linefollower.nxc som var själva kommando-filen för roboten, där koden som vi skulle granska var integrerad. Koden öppnades sedan i BricxCC där man kunde börja felsöka. Roboten tittade man på för att undersöka de olika komponenternas namn, exempelvis att A visade sig vara motorn för en av de två hjulen. Efter varje ändring i koden, laddade man in den i roboten, la roboten på den tejpade svarta linjen och startade programmet. I gruppen turades vi om efter varje test, att byta programmerare. Vi dokumenterade vilka ändringar och vart de skedde på ett papper vid sidan om. Efter rad av testande, blev vi tillslut klara med laborationen, med uppnådda mål. KTH Kista Sida 3 av 5
3. Resultat Laborationen resulterade till att man slutligen fick roboten att följa den angivna linjen, och i slutet visa gruppmedlemmarnas namn. Att lösa problemen, gjorde man via flera testanden, identifikation av problemet och sedan försöka felsöka vad som orsakar problemet. Exemeplvis i början, så snurrade roboten runt, vilket vi kunde gissa oss fram till att det var radnummer 115 som orsakade dansen. Detta var vårt kommentatorsblad som innehöll alla ändringar som genomfördes och vilka konsekvenser de fick: Radnummer Ny kod Kommentar 34 string 115 36 87 93 "Linus Mexelin", "Fredrik Radholm", "Kristian Boban" Out_A till Out_B Out_B till Out_A 69 SensorRaw (IN_1) 83 Lightintensity < Topthreshold 1 2 SpeedSlow 13 SpeedFast 30 Bytte int till string, resten av koden var menad att visa namn, inte definiera nummer Raderade hela raden, roboten ska inte dance(); La till våra gruppmedlemmars namn som visas på robotens display else kan inte vara exakt samma som ursprunglig kod, detta får roboten att växla hastighet mellan höger och vänster hjul Var tidigare...(in_3), ändrades för att ljussensorn var i input 1 Vi vill inte att roboten ska överstiga den angivna gränsen, vilket låser funtionen Roboten ska hinna läsa av den svarta linjen 4. Analys Labben gick kanske inte riktigt som förväntat, då man inte riktigt kunde förvänta sig något heller. Därför kunde man inte förutsätta om hur det skulle gå. Vi bad lite om hjälp när det var något vi fastnade på eller inte förstod. Resultaten visade detta, då vi analyserade koderna samt försökte förstå vad de gör och varför. Det som var bra var såklart när vi kunde lösa uppgifter själva, och det mindre bra var kanske när vi inte kunde lösa dem alls. KTH Kista Sida 4 av 5
5. Diskussion Laborationen gick hyfsat fort. Vi som grupp hade kanske inte riktigt programmerat en robot förut, inte heller bekantat oss med NXC. Vi hade dock lite allmän kunskap om hur man kan gå till väga. Ett exempel är hur vi använde oss av logiken. Dance-kommandot visste vi från början att vi kunde skippa eftersom att roboten självklart inte skulle dansa, utan utföra en annan sorts uppgift. Detta var något jag tyckte funka bra. Något som kanske var mindre bra var att vi då inte kanske hade tidigare eller djupare kunskaper om just NXC, som bidrog till att vi kanske fick klura lite extra på vissa problem. Som sagt skulle denna laboration simulera ett problem för en ingenjör. Labben bidrog till vad jag kan förvänta mig i framtiden och förhoppningsvis i mitt yrke. Detta var en del av syftet med uppgiften. Referenser Det som användes inför och efter laborationen var labb-pm:t, men även pdf-filen som smått förklarade hur man använde NXC. Bilagor KTH Kista Sida 5 av 5