Felsökning av mjukvara



Relevanta dokument
NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

LEGO Mindstorm-robot

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Laboration - Programmering av LEGO Mindstorm robot

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

LEGO NXT Robotprogrammering

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

Programmera en NXT Robot

Programmera Lego Mindstormsrobotar

Programmering av LEGO NXT Robot

Lego Mindstormprogrammering

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Praktisk programmering

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

Laborationsrapport av robotprogrammering

Laboration i datateknik

Labbrapport - LEGO NXT Robot

Introduktion i programmering med språket NXC

Programmera LEGO NXT

Laboration i datateknik

Robotar i NXc. En laboration med Mindstormrobotar. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Programmering av en Lego robot

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

Robotprogrammering felsökning & analys.

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Felsökande av en Lego Mindstorm robot

Programmering av LEGO NXT Robot

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Programmering med NXC Lego Mindstorm

Labbrapport LEGO-robot linefollower

Simon Johansson Introduktionskurs Datateknik 1310

[Introduktionskurs i Datateknik]

Introduktion till programmering med hjälp av Lego Mindstorm

[Introduktion till programmering ]

Programmeringslaboration med LEGOrobot

Simon Boström Introduktionskurs i Datateknik

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

Editering, Kompilering och Exekvering av Javaprogram

Att använda pekare i. C-kod

Vad tycker du om sfi?

Några övningar att göra

Kom igång med din SMART Board. Det praktiska

Slutrapport för Pacman

Testa ditt SITHS-kort

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

Kursutvärdering Ämne: SO Lärare: Esa Seppälä/Cecilia Enoksson Läsåret Klass: SPR2

Övning 2: I cellerna B19 och F26 ska du beräkna den totala ytan för respektive hus. I cell C28 den totala ytan, för båda husen.

Instruktioner för dig som ska söka till Mattekollo 2016

Bättre Självförtroende NU!

Utvärdering 2015 deltagare Voice Camp

Tentaupplägg denna gång

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på min tur att prata. 4. Säg det jag vill säga. 1.

NATURVETENSKAP FÖR LIVET?

Herren behöver dem. Av: Johannes Djerf

Verktyg för Achievers

Valet 2010 på facebook!

Så får du bättre. självkänsla. Experter Frågor och svar Intervjuer Steg för steg-guider Praktiska tips SIDOR

AYYN. Några dagar tidigare

Drogad. AHHH! skrek Tim. Vad har hänt! skrek jag. Det är någon som har kört av vägen och krockat med ett träd! Men ring 112! Ge mig min mobil da!

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Östbergsskolans loggbok!

FAQ PDF-fakturor. Innehållsförteckning

HF0010. Introduktionskurs i datateknik 1,5 hp

FÖRETAGSAMHET LÖNAR SIG ALLTID

ITF. ITF Automationsdagar 2004, 1

Betatestning - Solsystem

Valet 2010 på facebook!

2. Hur tycker du att stämningen i sjuan i stort har förändrats under året glädje, trygghet, gemenskap och kommunikation?

Fördjupningskurs i byggproduktion, ht 2009.

Utvärdering av föräldrakurs hösten 2013

Skall jag stanna eller ska jag gå? D

Tentamen IE1204 Digital design

Alla får ligga. strategier i förförelsekonst för den moderna gentlemannen och kvinnan

Den förlorade sonen:

1. Hur många timmar per vecka har du i genomsnitt lagt ner på kursen (inklusive schemalagd tid)?

Björn Abelli Programmeringens grunder med exempel i C#

Föreläsning 3. Programmering, C och programmeringsmiljö

Fotbollsfinter Fotbollsmaskinen: väldigt Mått på maskinen:

DAGBOK HB ADVENTURE TEAM. Vårat lag: Jinci, Ida, Jennifer, Felicia Lagledare: Hans

KiVa Skola situationskartläggningen 2016 sidan 1/31. KiVa Skola situationskartläggningen 2016 sidan 2/31

Digital IUP med Skriftliga omdömen. Guide för Vh

Omtenta, Programmeringsteknisk översiktskurs, VT06

Föräldraträffar Viktigt för våra barn och ungdomar

Programmering för språkteknologer II, HT2014. Rum

Guide till påverkanstorg

IT-Café: SKYPE (videosamtal)

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

13. Vad tycker du om samarbete och enskilt arbete på kurserna när det gäller laborationer?

Idéskrift. Avtalsuppföljning för transportköpare inom miljö och trafiksäkerhet

Utskrift av inspelat samtal hos Arbetsförmedlingen

Tentaupplägg denna gång

Ändra, kopiera eller radera publikation (staff)

Tärna Folkhögskola IT-pedagogutbildningen Individuellt fördjupningsarbete Vt IT I FÖRSKOLAN. Författare:Tove Andersson

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN Felsökning av mjukvara Programmering av en NXT-robot Max Kufa [03/08-13] mkufa@kth.se Introduktionskurs i datateknik (II1310)

Sammanfattning Syftet med laborationen var att felsöka och korrigera felaktig mjukvara till en NXC robot. Till vår hjälp så hade vi programmet BricxCC och koden som vi skulle rätta till, samt fyra timmar att kontinuerligt testköra och ändra mjukvaran i roboten ett flertal gånger. Resultatet ska bli att roboten kan följa en svart linje. När eller om roboten krockar, så ska ett par trycksensorer märka detta, och roboten kommer att därefter skriva ut gruppmedlemmarnas namn på displayen, ett mål som vi relativt enkelt uppnådde även om problem med bl.a. programmeringsspråk och allmänt förstående av uppstod. Innehållsförteckning Sammanfattning...2 1. Inledning...3 1.1 Bakgrund...3 1.2 Syfte och målsättning...3 2. Genomförande...3 3. Resultat...4 4. Analys...5 5. Diskussion...5 Bilagor...7 Institution Kungliga Tekniska Högskolan Sida 2 av 7

1. Inledning I denna labboration så arbetar vi i NXC för att få en mindstormsrobot att fungera korrekt, och på de följande raderna så kan vi läsa mer om varför denna laboration utförts. (Utöver att några studenter ville ha ett bättre betyg) 1.1 Bakgrund I dag så är vi beroende av mjukvaran. Mjukvaran kontrollerar nästan allt, från de vardagliga mobilerna, trafiksignalerna och snabbkassorna på konsum, till raketer och kärnvapen. Man kan påstå att mjukvaran är en av dagens civilisationers grundstenar. Och det är bl.a. ingenjörernas jobb att se till att allt detta fungerar. 1.2 Syfte och målsättning Syftet är att programmera i par, samt ge ett smakprov av arbetssättet i framtiden för studenterna. Fast kanske viktigare, så ska studenterna lära sig hur mjukvara reagerar på fel i koden och hur man ska gå tillväga för att korrigera programmet. 2. Genomförande På grund av att varken jag eller min tänkta medlaborant lyckats få med sig en dator till labborationen, så var vi tvungna att gruppera om oss med andra laboranter som hade datorer. Min nya medlaborant och jag hade redan gått igenom Lab-PM:et privat, samt att datorn redan hade BricxCC installerat. Därmed så kunde vi hoppa över dessa två moment. Det absolut första som gjordes var att rensa roboten från tidigare programvara. Detta åstadkom vi genom att installera om drivrutinerna i roboten. Nästa steg var att få koden att kompileras. Vi var inte särskilt intresserade i vad koden gjorde om den ändå inte kunde laddas ner på roboten. De första felmeddelandena som dök upp pekade på att problemet låg på rad 34-37. Vi märkte snabbt att denna array var av typen int, när tydligen det som behövdes för att spara gruppmedlemmarnas namn var en array av typen string. Utöver det så krävdes det gruppmedlemmarnas namn i arrayen. Koden skvallrade om att namnen skulle visas upp på displayen när trycksensorerna trycktes in. Efter korrektion och kompilering så laddades programmet ner till roboten. Utöver att roboten for omkring överallt vid testkörningen, så fann vi en någorlunda lustig bugg som visade sig på displayen. Namnen skrev ut på varandra. D.v.s. att namnen Max och Tobias överlappade varandra, och det slutade med att den enda gruppmedlemmens namn blev Maxias. Eftersom jag programmerat robotar tidigare, så tog det inte lång tid att lista ut att roboten inte förstod att namnen skulle skrivas ut på två olika rader. Detta problem antog vi låg på rad 46 då TextOut måste onekligen vara det commando som skriver ut medelandet. Den originella koden hade en underlig ekvation som vi inte förstod varför den fanns. Det slutade med att vi skrev en egen kod: TextOut(0,LCD_LINE2, names[0]); Institution Kungliga Tekniska Högskolan Sida 3 av 7

TextOut(0,LCD_LINE3, names[1]); Då uppgiften inte specificerade någonting annat utöver att displayen skulle visa våra namn, så lät vi koden stå som den gjorde, även om den medför flera problem som vi kunde ignorera. Notera denna kod senare blev ändrad då vi fått hjälp av en lärare när det gällde den mystiska ekvationen. Se diskussionen och rad 46. Vi kommenterade bort allt som hade med dance(); att göra, då den snarare var ett virus än något som faktiskt hjälpte oss med uppgiften. Efter en testkörning så insåg vi att roboten inte reagerade alls på ljussensorn. Roboten läste av information från fel port på rad 76. Den sista och den besvärligaste ändringen vi gjorde var att fullständigt skriva om den funktion som sade åt roboten hur den skulle reagera på svart eller vitt underlag. Se diskussionen rad 91-100. 3. Resultat Det vi ämnade att göra var en robot som uppfyllde de mål som sattes upp för oss. Även om det inte blev en graciös lösning när vi gjorde arbetet själva, så nådde vi de uppsatta målen, vilket var tillräckligt för oss. Men för att göra vårt arbete så fullständigt som möjligt så tog vi hjälp av en lärare och fick fram en bättre optimerad robot. Under så kan finns en tabell som innehåller den slutgiltiga mjukvaran. 2-3 #Define SpeedSlow 35 #Define SpeedFast 70 34-37 String groupmember = { Tobias, Sänkte robotens hastighet Ändrade arraytypen från int till String Max }; 46 TextOut(0,LCD_LINE2-8xi, names[i]); Ändrade ekvationen som skrev ut namnen på olika rader på displayen. 76 lightintensity = SensorRaw(IN_3); Roboten försökte att läsa av information från port 1 tidigare. Dock så va port 1 kopplad till en trycksensor och inte till en ljussensor. 91-100 If(lightIntensity < TopThreshold) { OnFwd(Out_A, SpeedFast); OnFwd(Out_B, SpeedSlow); else{ OnFwd(Out_A, SpeedSlow); Skrev om den löjliga koden som gav mig och min partner huvudvärk. Istället för att kolla efter olika färger på golvet, så lät vi roboten se om golvet var vitt eller inte. OnFwd(Out_B, SpeedFast); 50-55, 126 /* -kod- */ Kommenterade allt som hade med funktionen dance() att göra så att dance() aldrig kördes. Institution Kungliga Tekniska Högskolan Sida 4 av 7

4. Analys Jag har tidigare erfarenheter av programmering och robotar, dock så har jag aldrig programmerat i NXC. Men som tur är så var NXC väldigt likt java, så att vi lyckades klura ut hur vi skulle koda. Dock så uppstod det problem, då NXC trots allt inte är java. T.ex. så fastnade vi vid korrektion av gruppmedlemmar[]; Vi samarbetade vi bra i gruppen även om vi fastnade ett flertal gånger. Det berodde på att jag inte programmerat på ett bra tag samt att min medlaborant aldrig har programmerat tidigare, så jag undervisade mer än arbetade med roboten. Det fanns ett flertal funktioner som styrde roboten. De mest anmärkningsvärda är antagligen den iffunktion som bestämmer var roboten ska åka. Det finns även en while-loop som skriver ut text på skärmen ifall roboten krockade i något. Fast den som jag tycker är mest intressant är ändå den funktion som sparar läser av och sparar data från ljussensorn, antagligen för att el är det som intresserar mig och inte mjukvaran. Värt att notera var att det fanns ett virus i koden som kallades dance(); Dess enda uppgift var att förstöra vårt arbete, och klassas därmed som virus enligt den här laboranten. 5. Diskussion Diskutera kortfattat laborationens syfte och mål. Vilka problem uppstod? Vad har du lärt dig? Kommer du ha nytta av detta i dina framtida studier eller i ditt framtida yrke? Vad har du för åsikter om programvaran och NXC? Diskutera också kort det tillvägagångssätt och de lösningsmetoder ni använde er av under laborationen. Ett löjeväckande problem var när vi rättade ett fel som inte var ett fel. Tydligen så gjorde denna ändring så att kompilatorn buggade, och vi var tvungna att kopiera all kodning som vi skrivit och öppna ett nytt dokument. Loopen på rad 47 orsakade en del problem p.g.a. hur NXC roboten använder sin display. Vi kom på en lösning på problemet (som kan återfinnas i genomförande ), men tyvärr så slog det oss att denna lösning inte fungerade om det fanns mer än två personer i gruppen. Vi fick senare hjälp och fick det förklarat för oss att vi dessutom skrev ut våra namn två gånger p.g.a. en while loop som skrev ut ett visst antal namn på skärmen. Displayen verkar använda sig av en int för att bestämma på vilken rad texten ska skrivas på, något vi i gruppen hade missat, något som dessutom förklarade den förvirrande ekvationen på rad 46. Men med hjälp av läraren, genom att återställa all gammal kod som hade med problemet att göra, och korrigera det på rätt sätt. Dessutom så var if funktionen som bestämde hur roboten skulle reagera mot olika underlag onödigt komplicerad. Vi försökte flera gånger att förstå hur den fungerade, inverterade statements och så vidare. Det slutade med att vi skrev vår egen kod. Institution Kungliga Tekniska Högskolan Sida 5 av 7

Jag betvivlar att NXC används i dagens företag, men det är en nyttig träning för nybörjare när det gäller att komma in i programmeringstänket. Dock så kommer jag att hålla mig borta från BricxCC med tanke på att den inte kan kompilera ordentligt. Institution Kungliga Tekniska Högskolan Sida 6 av 7

Bilagor Institution Kungliga Tekniska Högskolan Sida 7 av 7