KUNGLIGA TEKNISKA HÖGSKOLAN Robotlabb En introduktion till Datateknik 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 1
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 2
1. Inledning Den här högskoleingenjörens utbildning som jag och mina klasskamprater ska börja läsa bygger mycket på kunskapen om programmering och programmering i sig och det är därför som det är så otroligt viktigt att man ger nya elever en bra och lättare start in på KTH. Speciellt när det finns ett antal elever som aldrig har programmerat förut. Det är också viktigt att man snabbt kommer in i skolans IT-system och lär sig att använda de olika hemsidor som man måste lära sig att utnyttja om man ska plugga på KTH. 1.1. Bakgrund Andledning till att labben var aktuell var för att den visar något som kommer att vara en vardag i senare studier eller till och med i det efterföljande arbetslivet. Därför är det något som man borde komma i kontakt med tidigt under studietiden för att man lättare ska känna sig bekvämt i arbetssättet. 1.2. Syfte och målsättning Syftet med uppgiften var att introducera programmering för oss nya elever på KTH. Syftet är också att introducera en ingenjörsarbetssätt samt ge träning och arbetsvana i de IT-system för utbildning som finns vid -skolan. Laborationsuppgiften ska ge träning i felsökning och testning och därmed ge en grund till effektivt programmeringsarbete i framtiden. Laborationen ska visa elever vad felskrivning i kod kan leda till. Laborationen syfte är även att träna oss i rapportskrivning då även det är en viktig del av ingenjörsarbetet och studierna på KTH. Vårt mål med uppgiften är att få ett färdigt program skrivet i NXC (Not exactly C) att fungera och därmed få en LEGO-robot att utföra sina uppgifter på önskat sätt. 2. Genomförande Labben började med att vi indelades i labb par för par programmeringen. Sedan så gick vi igenom hur labben skulle gå till och de olika viktigt momenten. Vi skulle få en färdigbyggd robot att följa en svart linje på marken och när den nådde väggen så skulle den spela upp en melodi och visa gruppmedlemmarnas namn på displayen. Roboten skulle laddas med en färdig felprogrammerad kod som vi skulle rätta till med hjälp av par programmering, med 20 minuters intervaller. I vår grupp så hade vi laddat ner programmet i förväg så vi laddade ner drivrutinerna åt roboten och laddade in felkoden in i roboten. Vi iakttog roboten för att ta reda på vad som det var som vi skulle fokusera på för att rätta till koden. Vi såg snabbt att roboten var lite för snabb för sig själv och att sensorn inte reagerade på ljusändringarna. De två punkterna hittade vi snabbt i koden och ändrade dem så att sensorn fungerade. När vi nu kollade igenom koden så vi också att den svängde fel. Det rättade vi också till genom att ändra hållet roboten svängde åt. Det sista som vi nu behövde lösa var att få våra namn på displayen. Vi skrev in våra namn och efter många testkörningar så listade vi ut hur det olika raderna på displayen fungerade och löste det matematiska problemet genom en ändring i koden. 3
3. Resultat Radnummer Ny kod Kommentar 2 50 Sänkte SpeedSlow. 3 80 Sänkte SpeedFast. 35 Peter, Omar Fyllde i våra namn. 45 (8*i) Ändrade for loopen så att namnen kom i rätt ordning på displayen. 68 SensorRaw(IN_3) Ändrade till rätt sensor position. 84 SpeedFast Så att den svängde åt rätt håll. 92 SpeedSlow Så att den svängde åt rätt håll. 4. Analys Det fanns 3 stora problem med koden. Det första var att sensorn inte fungerade som den skulle. Det såg vi när roboten inte reagerade när den var innanför eller utanför linjen. Det kunde inte vara de ljuskänslighetsvärden som var inprogrammerade eftersom de inte skulle ändras. Så vi letade i koden och efter allt som hade med ljussensorn att göra. Vi såg ganska fort att den var kodad till fel uttag och ändrad det lite snabbt. Roboten reagerade nu men var lite för snabb för sig själv, det var därför vi sänkte farten. Det andra problemet var att den inte svängde rätt. Men i koden var det tydligt. Det stod mer eller mindre om det är mörkt sväng vänster, annars sväng vänster. Vi ändrade så att den sicksackade över linjen då det var det smidigaste sättet att lösa problemet. När den var på linjen så åkte den av linjen och när den var utanför linjen åkte den på linjen. Vårt sista problem var med displayen. Det tog ganska lång tid innan vi fattade vad som var felet. Vi började med att prova oss fram, att ändra olika delar av koden. Vi hade tur och det funkade för de två namn som vi skrivit in men vi provade att öka listan med namn och problemet var fortfarande kvar, för vi visste ju inte vad vi gjorde. Men med lite logiskt tänkande och matematik så fattade vi tillslut hur de olika raderna representerades av olika nummer och löste den enkla ekvationen genom att ta bort -16 ifrån for loopen. 4
5. Diskussion Tycker att den här laborationen var väl genomtänkt och att den uppfyller hela syftet och målet med introduktionskursen. Den är välanpassad till alla som ska börja på -skolan då den har med alla de momenten som man kommer att stöta på under senare studier. Den var också lärorik och gav oss elever en bra inblick och introduktion på alla de IT-system som används här på skolan. Fokuseringen med labben var också bra, problemlösning. Då det är det som ingenjörsyrket handlar mycket om. Speciellt då det inte bara var att man skulle programera något, då det är några som inte har gjort det, utan att rätta till kod och lära sig av misstag istället. Labben har även gett mig en ganska bra grund på hur man programerar och hur det nya språket ser ut. Vet och känner att den här kunskapen kommer att vara användbar, även om den inte är så avancerad, i framtiden då NXC har många likheter med programmeringsspråket C. Jag kan inte ha så mycket åsikter om NXC då jag inte har använt mig av programmering förut, men jag tycker att programmet fungerade bra och var lätt att använda. I labben var det som tidigare nämnt 3 problem med roboten som skulle rättas till. Vi valde att rätta till dem i den ordning som vi hittade dem istället för att planera då vi tyckte att det skulle vara ett smidigare och snabbare sätt. Referensser Har använt mig av Labb-PM ifrån bilda och mallen för rapporter. Bilagor 5