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



Relevanta dokument
LEGO Mindstorm-robot

LEGO NXT Robotprogrammering

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

Felsökning av mjukvara

Laboration - Programmering av LEGO Mindstorm robot

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

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

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

Programmera en NXT Robot

Programmering av LEGO NXT Robot

Laboration i datateknik

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

Labbrapport - LEGO NXT Robot

Lego Mindstormprogrammering

Programmera Lego Mindstormsrobotar

Laboration i datateknik

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

Laborationsrapport av robotprogrammering

Praktisk programmering

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

Programmering av LEGO NXT Robot

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

PROGRAMMERING AV LEGO-ROBOT VIA NXC

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

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

Introduktion i programmering med språket NXC

Programmera LEGO NXT

[Introduktion till programmering ]

Simon Johansson Introduktionskurs Datateknik 1310

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Robotprogrammering felsökning & analys.

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

Programmering av en Lego robot

[Introduktionskurs i Datateknik]

Programmeringslaboration med LEGOrobot

Felsökande av en Lego Mindstorm robot

Labbrapport LEGO-robot linefollower

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Simon Boström Introduktionskurs i Datateknik

Introduktion till programmering med hjälp av Lego Mindstorm

Programmering med NXC Lego Mindstorm

Enkel rak plastplog. Fäst med eltejp som ovan eller på annat sätt. Såga till plogen eller skär ut den med mattkniv

Om NXTprogrammering. Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT?

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?

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.

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

Working with parents. Models for activities in science centres and museums

Forskningrapport LAVINER. Varför vi valde den här naturkatastrofen. Laviner

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

Roboten. Sida 1 av 11

Grunderna i stegkodsprogrammering

Utvärdering 2015 deltagare Voice Camp

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

Att använda pekare i. C-kod

dom hem och hämtade en stor badbalja och stoppade mig i den. - vad ska vi kalla den? undrade ett barn. - Då sa ett anat barn kanske Padis. - Ja!

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.

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Lathund för att arbeta med pdf

Evaluation Summary - CD5570 DoA, distans VT 2004 Dan Levin

Östbergsskolans loggbok!

Nordline. Monteringsanvisning Garageport. Lertagsgatan Hallsberg

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Slutrapport för JMDB.COM. Johan Wibjer

Olika lärostilar... Länder... (Vi har tyvärr bara fått med tre länder då vi inte har haft så många som forskat varje gång)

Programmering av Thangram portregister System XIP (VA/08)

Utskrift av inspelat samtal hos Arbetsförmedlingen

DT123G Nätverksanalys. Laboration II. Presentation av data. Lennart Franked Nayeb Maleki. 28 september 2015

Post Mortem för Get The Treasure!

04 Kapitel 4.indd

Innehållsförteckning

Digitalt lärande och programmering i klassrummet

GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

Studiehandledning. MTA102, Cad inom Robotiken, 7,5 hp

Installationsguide. För att installera mjukvara och hårdvara, följ nedanstående anvisningar.

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

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

Gunnesboskolan, miljövänlig? Energi och Miljö tema VT-10

FIRST LEGO League. Stockholm

============================================================================

Shakedown inför rallycross EM och SM.

OneDrive/SharePoint. Innehåll

The Pirate Bay-rättegången, dag 6 Fritt nedtecknat

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

Kursrapport Datorlingvistisk grammatik (första skiss)

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Föreläsning 4: Poster

Slutrapport för Pacman

EV3 Roboten. Sida 1 av 13

Programmering av stegmotorer ett miniprojekt i samarbete med Svensk Maskinprovning

Alumnstudie Genomförd av Linda Widetoft

LEGO MINDSTORMS Education EV3

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!

Förnybar energi. Komma igång med LEGO Energimätare

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


Upsättning av Shoutcast-sändning

400 enkäter delades ut på plats till Seniordagens besökare. 132 besökare (33%) valde att medverka och svara på enkäten.

Åtkomst och användarhandledning

Bakgrundsbygge i Cellplast:

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

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot Gabriel Vilén 30/8-2012 gvilen@kth.se Introduktionskurs i datateknik II1310

Sammanfattning Vi har programmerat och felsökt en LEGO-robot i denna laboration. Roboten skulle följa en svart linje, spela upp några toner när den krockat med väggen, samt visa gruppmedlemmarnas namn på dess display. Vi använde oss utav NXC och gick tillväga genom att felsöka och metodiskt testa de olika delarna i koden som vi tilldelats. Det visade sig vara ganska krångligt, och vi stötte på en rad problem på vägen. Det löste sig dock tillslut vi lyckades få roboten att agera som vi ville. Innehållsförteckning 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte och målsättning... 3 2. Genomförande... 3-4 3. Resultat... 5 4. Analys... 6 5. Diskussion... 6 Referenser... 6 Bilagor... 7

1. Inledning Vi fick i uppdrag att genomföra en laboration där vår LEGO-robot skulle följa ett svart sträck på golvet. För att få roboten att följa sträcket behövde vi dock först ändra koden i NXC som vi fått, så att roboten utförde det den skulle. Detta gjorde vi genom att koppla roboten till våra datorer, läsa av dess kod, samt felsöka och rätta till den. 1.1 Bakgrund Det är viktigt att som student och ingenjör att kunna programmera, det är något som ligger till grund inom nästan all IT-verskamhet. Vi fick i den här laborationen för första gången, för många av oss, testa på och komma i kontant med programmering något som visade sig vara knepigt men roligt. 1.2 Syfte och målsättning Syftet med labborationen var att ge oss studenter en första inblick i programmering, och tillämpa det vi lärt oss på föreläsningarna i praktiken. Målet var att felsöka koden i NXC som vi fått, rätta till den, samt applicera den på vår robot - för att förhoppningsvis få roboten att agera som vi ville. Personligen, då jag aldrig har programmerat tidigare, hade jag som mål att klara av labborationen och samtidigt försöka få ett bättre grepp om alla de olika utrycken som används inom programmering, funktioner, loopar, variablar osv. 2. Genomförande Material som användes: LEGO-robot Windows dator BricxCC och API (programvara) Kommentarsblad för kodändringarna Vi började med att dela in oss i par om två, varje par hade en dator. Sedan fick vi en snabb genomgång om vad vi skulle göra: roboten skulle åka längst med den svarta linjen på marken, när den stannat och slagit i väggen skulle den spela upp några toner, samtidigt som den visade gruppmedlemmarnas namn på dess display. Vi hade redan förberätt med att ladda ner och installera programmet, BricxCC samt API:t, och var redo att börja direkt! Det första vi gjorde var att koppla in lego-roboten till datorn via usb. Det visade sig dock att programmet och datorn inte kännde av att roboten var inkopplad till datorn. Det visade sig att vi behövde uppdaterade programvaran, och när vi gjorde det fungerade allt som det skulle.

Nu när roboten var ihopkopplad till datorn testade vi först att ladda över den kod som vi fått till roboten, för att se hur den skulle uppföra sig. Som vi förutspått så uppträdde den inte alls som vi ville, den snörrade runt i en cirkelaktig rörelse, och följde inte alls den svarta linjen. Vi började med att felsöka i koden. När vi efter ett tag gjort oss bekanta med de olika utrycken såg vi bla. att porten som var kopplad till sensorerna (1) inte var länkad till koden, utan en annan port (3) var länkad istället. Därför reagerade robotens sensorer inte på den svarta linjen. Vi resonerade att robotens hjul som åkte utanför den svarta linjen borde svänga inåt mot linjen, och vi ändrade om i koden så den skulle uppföra sig på detta sätt. Men även fast vi ändrat porten till den rätta, och ändrat i koden, så reagerade roboten inte alls på sensorerna, hur mycket vi än ändrade i koden. Det visade sig såsmåningom att robotens sensorer var trasiga, och vi hade gjort rätt från början, vilket var lite surt då vi kanske hållt på med problemet i uppåt en timma. Vi kollade på de andra sektionerna och såg att det fanns en del som hete Dance, som inte uppfyllde några viktiga funktioner, den ändrade bara hjulhastigheten de första sekunderna. Därför kommentarade vi bort den sektionen. Namndelen, då vårt namn skulle skrivas på robotens display, hade vi lite problem med. Då varken jag eller min labbpartner programmerat tidigare var det ganska knepigt att förstå hur vi skulle få namnen att skrivas ut. Allt vi lyckades skriva ut var Gruppmedlemmar:. Det visade sig att vi skulle använda oss utav en forloop, där vi behövde ta bort en konstant för att den skulle stämma. Labben tog ca 2 timmar att genomföra.

3. Resultat Radnummer Orginalkod Ny kod Kommentar 1 #define SpeedSlow 80 #define SpeedSlow 30 Vi ville enklare se när roboten körde långsamt/snabbt 2 #define SpeedFast 100 #define SpeedFast 80 -//- 35 "person1" Erik och Gabriel Våra namn som skulle synas på displayn 45 (8*i-16) (8*i) Namnen syns bara när i<0 68 lightintensity = SensorRaw(IN_3); 82 if(lightintensity < TopThreshold) 86 OnFwd(OUT_A, SpeedSlow); 88 if(lightintensity > BotThreshold) 90 OnFwd(OUT_B, SpeedFast); lightintensity = SensorRaw(IN_1); if(lightintensity > TopThreshold) OnFwd(OUT_A, SpeedFast); if(lightintensity < BotThreshold) OnFwd(OUT_B, SpeedSlow); Sensormotorn var inte ikopplad med koden, den satt i 1 inte i 3. Light. bör vara mindre än värdet på Top. för att reagera på sensorn (se nästa rad ändring) Säger åt A motorn att svänga mot mörkret (svarta linjen) Light. bör vara mindre än värdet på Top. för att reagera på sensorn (se nästa rad ändring) B motorn kommer nu svänga mot mörkret (svarta linjen) 97 void dance() /* void dance()*/ Kommentera bort Dance, eftersom den var onödig

4. Analys Att vi ändrat farten på roboten spelade inte direkt någon roll, här ville vi bara se en större skillnad när roboten körde på SpeedFast samt SpeedSlow (rad 1&2). Namnloopen som genererade våra namn på skärmen bytte vi helt enkelt ut person1 til våra namn (rad 35), det var dock knepigare att förstå att värdet på i behövde vara över 0 för at loopen skulle fungera, då våra namn hade värderna 1 samt 2. Därför tog vi bort -16 (rad 45). Efter lite disskussion om hurvida vi kunde få sensorerna att reagera på ljuse och mörkrer, och applicera resultatet på motorerna, kom vi fram till att ändra tecknena för ljuskänsligheten (rad 68, 83, 84, 88, 90) Slutligen kommentarade vi bort Dance, då vi inte såg någon nytta med den. 5. Diskussion Det var knepigt att lista ut vad alla saker fungerade och gjorde. Namnloopen som generarade namnen på displayen förstod vi först inte hur den fungerade, men efter att vi förstått hur våra namn var variablar, och värdet på i behövde va över 0 förstod vi at -16 behövde försvinna. Dessutom hade vi problem med sensorerna, men det fixade sig efter att vi bytt robot. Att för en total nybörjare inom programmering börja med denna labb var lite svårt. Men som tur var hade jag ju en labbkamrat, och vi båda kunde diskutera och komma fram till lösningar och ideér på problem. Vi turades om att koda och disskuterade sinsemellan, något som fungerade bra. Syftet och målet var ju att ge oss en inblick i programmering, vilket jag absolut fick. Jag lärde mig mer om hur de olika delarna av programkodning fungerar, och hur viktigt det är att dubbelkolla allting. Och framförallt att inte missa ett semikolon, då är man körd. Jag lärde mig också att även om allt ser rätt ut på skärmen så kanske det i verkligheten inte fungerar, detta upptäckte vi när vi förtvivlat försökte få robotens sensorer att reagera på ljus. Allt såg rätt ut, men roboten var i själva verket trasig. Sånt är svårt att fixa med bara programmering. Referenser Programming LEGO NXT Robots using NXC.pdf (PDF FIL) Labb-PM från bilda: https://bilda.kth.se/courseid/8498/content.do?id=19150198

Bilagor