Programmera en NXT Robot



Relevanta dokument
Praktisk programmering

LEGO Mindstorm-robot

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

Programmera LEGO NXT

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

Felsökning av mjukvara

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

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Laboration - Programmering av LEGO Mindstorm robot

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

Programmera Lego Mindstormsrobotar

LEGO NXT Robotprogrammering

Laboration i datateknik

Lego Mindstormprogrammering

[Introduktionskurs i Datateknik]

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

Programmering av LEGO NXT Robot

Labbrapport - LEGO NXT Robot

Laborationsrapport av robotprogrammering

Laboration i datateknik

Simon Johansson Introduktionskurs Datateknik 1310

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

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Introduktion i programmering med språket NXC

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

Programmering av en Lego robot

Programmering av LEGO NXT Robot

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

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

Syftet med en personlig handlingsplan

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

Felsökande av en Lego Mindstorm robot

[Introduktion till programmering ]

Individuellt Mjukvaruutvecklingsprojekt

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Programmeringslaboration med LEGOrobot

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

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Programmering med NXC Lego Mindstorm

Robotprogrammering felsökning & analys.

SOLCELLSBELYSNING. En praktisk guide. Råd & Tips SOLENERGI LADDA MED. Praktiska SÅ TAR DU BÄST HAND OM DIN SOLCELLSPRODUKT

Vi skall skriva uppsats

Du ska nu skapa ett litet program som skriver ut Hello World.

Simon Boström Introduktionskurs i Datateknik

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Enkätresultat för elever i åk 9 i Borås Kristna Skola i Borås hösten Antal elever: 20 Antal svarande: 19 Svarsfrekvens: 95% Klasser: Klass 9

Hävarmen. Peter Kock

FIRST LEGO League. Göteborg 2012

Lathund, procent med bråk, åk 8

Utveckla arbetsmiljö och verksamhet genom samverkan

Dina inloggningsuppgifter är samma som du använder för att logga in på skolans datorer.

ELEV- HANDLEDNING (Ansökan via webben)

Q1 Hur många undervisningstillfällen har du haft under september månad?

Program Handledning Förutsättningar: Träningar Teori

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Lathund för överföring av rapporter och ljudfiler

Lathund till Annonsportalen

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

Kulturmöten. Det var vi som gjorde det.

Administration Excelimport

Gruppenkät. Lycka till! Kommun: Stadsdel: (Gäller endast Göteborg)

Jo, Den Talande Boken har så många möjligheter inbyggda, att den kan användas från förskoleklassen och ända upp på högstadiet.

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

Skriva B gammalt nationellt prov

FINLAND I EUROPA 2008

Tränarguide del 1. Mattelek.

ÖSS jolles Seglarsaga

Fullför installation av ELIQ

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

DIGITALA KONSUMENTER MED NYA MÖJLIGHETER. Hej medlem,

Föreläsning 5: Rekursion

Att komma igång. Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program

Enkätresultat för elever i år 2 i Nösnäsgymnasiet 2 i Stenungsund våren 2014

First Lego League. filurerna 2009

Enkätresultat för elever i år 2 i Mega Musik gymnasium hösten Antal elever: 47 Antal svarande: 46 Svarsfrekvens: 98% Klasser: MM13

Labbrapport LEGO-robot linefollower

TIMREDOVISNINGSSYSTEM

Enkätresultat för elever i år 2 i Praktiska Skövde i Praktiska Sverige AB hösten 2014

Utvärdering APL frågor till praktikant HT15

Ett arbete som inte blev riktigt som Ann tänkt sig!

Text och bilder gjorda av Rickard Johansson, TE14A Realgymnasiet.

Infobric Ease Snabbguide

När jag har arbetat klart med det här området ska jag:

Sammanfatta era aktiviteter och effekten av dem i rutorna under punkt 1 på arbetsbladet.

Texturbild. Lagerpaletten du kommer arbeta med ser du till höger. 1. Kopiera bakgrunden till ett nytt lager och gör den svartvit.

Tillämpad UNIX. Laborations-PM Christian von Schultz, Programpaket och processhantering

Enkätresultat för vårdnadshavare till elever i Centralskolan Söder 4-9 i Grästorp hösten Antal svar: 50

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

FOLKUNIVERSITETET 1 (11) Bildmanér för Webb3. Vår referens: Fredrik Suter Version 1. Stockholm

Koncept Katalog 2009

Bokjuryn på Haganässkolan, Älmhult

Sektionen för Beteendemedicinsk smärtbehandling

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Sveriges Trafikskolors Riksförbund Film om körkort för nysvenskar Speakertext - Svensk

Från min. klass INGER BJÖRNELOO

Manual för BPSD registret. Version 6 /

Varför är det så viktigt hur vi bedömer?! Christian Lundahl!

Morgonsamling till lågstadier

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN Programmera en NXT Robot Med hjälp utav NXC Peyman Torabi 2012-09-03 E-post: peymant@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Uppgiften var att analysera samt korrigera den felaktiga koden som kommer med en liten Lego NXT robot. Målet är att få roboten att följa ett svart streck med hjälp av sin sensor.

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... 4 5. Diskussion... 5 Referenser... 6 Bilagor... 6 Institution KTH Sida 2 av 6

1. Inledning Målet var att få en liten NXT robot att följa en svart linje med hjälp ut av en sensor som satt på den. För att kunna få roboten att fungera använde vi oss av NXC som programmeringsspråk samt BricxCC som kompilerings program. Vi ska då kunna korrigera /lägga till, samt testa den nya koden på roboten och då lära oss om processen av att utveckla enkla program. 1.1 Bakgrund Att kunna skriva, analysera, samt korrigera kod är något som är något som alla ingenjörer borde kunna och denna uppgift låter oss prova på just detta. 1.2 Syfte och målsättning Att komma igång med att programmera lite grundläggande kod i NXC samt lära sig hur man ändrar och lägger till sin egen kod till befintlig kod. 2. Genomförande Vi laddade ned de nödvändiga programmen och drivrutinerna för att få allt att fungera. Vi testade sedan snabbt genom att kompilera koden och skicka det till roboten för att se att allt var i sin ordning. Efter detta så påbörjade vi arbetet. Vi spenderade en stor del tid med att gå igenom koden steg för steg och följa den för att få en bild av hur allt fungerar och vad allt gör. För att få en klar bild över hur allt är uppbyggt av den som skrev koden till att börja med. Det visade sig att vi inte behövde ändra så mycket kod som vi först trott men det började med att jag programmerade om en del samtidigt som min kompis kollade på och gav sin egen åsikt om det hela. Vi båda testade en del olika saker innan vi kom fram till den lösning som vi ansåg att vara bäst. Vi testkörde programmet gång på gång för att försäkra oss om att det inte är en tillfällighet att koden fungerar och att inga buggar finns närvarande som vi annars skulle missat. En detaljerade överblick av hur vi fixade koden kommer i resultatet nedan. 3. Resultat Vilka resultat gav laborationen? Redovisa med en tabell som innehåller radnummer från orginalkoden, ändringar av koden/ny kod och kommentarer. Institution KTH Sida 3 av 6

Rad Orginal Kod Modifierad Kod Kommentar 115 dance(); //dance(); Kommenterade bort Dance från main klassen som gjorde så att roboten inte 69 lightintensity = SensorRaw(IN_1); 87 OnFwd(OUT_A, SpeedSlow); 91 OnFwd(OUT_B, SpeedFast); 34 string groupmembers[] = "Person" ; lightintensity = SensorRaw(IN_3); OnFwd(OUT_B, SpeedSlow); OnFwd(OUT_A, SpeedFast); string groupmembers[] = "Peyman", "Svante" ; följde några andra kommandon. Ändrade så att roboten läser in data från Input port nummer 3 och inte 1. Sensorn är kopplad till 3. Bytade motor från A till B. Detta ändrar robotens kontroll då den följer den svarta linjen. Bytade motor från B till A. Detta ändrar robotens kontroll då den följer den svarta linjen. La till våra namn i arrayen som håller namn 4. Analys Vi hittade en väldigt snabb lösning till problemet. Genom att snabbt ändra vilka motorer som aktiveras när så lyckades vi få fram ett bra resultat. Tydligen var vår metod inte den eftersökta metoden som man skulle använt sig av men det fungerade minst lika bra. Institution KTH Sida 4 av 6

while(true) if(finished == true) Off(OUT_AB); break; readlightsensor(); if(lightintensity < TopThreshold) OnFwd(OUT_A, SpeedSlow); else OnFwd(OUT_B, SpeedSlow); readlightsensor(); if(lightintensity > BotThreshold) OnFwd(OUT_A, SpeedFast); else OnFwd(OUT_B, SpeedFast); I början så aktiverades samma motor, motor A i första if satsen, om ljusets intensitet är under TopThreshold, även om det var sant eller falskt. Vi ändrade så att Motor A aktiveras om det är sant men annars aktiveras motor B om det är flaskt. Vilket får roboten att svänga åt andra hållet, i hopp om att hitta strecket. Om ljusets intensitet är däremot större än bottom threshold så kommer A att gasa på men annars tar B över igen i hopp om att finna linjen igen. Resultatet är att roboten går i princip i sicksack och håller sig då på linjen utan problem och korrigerar sig automatiskt då lightintensity går upp. (alltså ser sensorn då det ljusa golvet och inte den mörka tejpen) Sensorn var ju givetvis också kritisk för att roboten skulle fungera så det var nödvändigt att kontrollera att roboten får in datan från sensorn som var kopplad till Input 3, i koden togs data in från Input 1 från början, vilket var en motor och inte sensorn. Institution KTH Sida 5 av 6

5. Diskussion I detta fall så lärde jag mig att inte överanalysera koden och försöka tänka enkelt, för då hittar man även en enkel lösning på problemet. Vi hade endast några små problem med koden och löste dessa relativt snabbt. Jag fick en bra överblick över hur labbar kommer att vara längre in i min utbildning, samt komma igång med att skriva rapporter igen. NXC och lego NXT var ett roligt sett att prova på något praktiskt utan att ha en bakgrund inom programmering. (Jag har en grundläggande bakgrund i Java dock) Vi hade gott om tid och det som kanske saknades var en längre och mer utmanande bana för robotarna att följa, men annars var det väldigt bra. Jag trodde att vi skulle få programmera mer och inte bara ändra ett fåtal stycken av koden, men som sagt, så löste vi problemet på ett enklare sätt än det som förväntades. (Tydligen I alla fall) Referenser Vi använde oss av det material som gavs på bilda: https://bilda.kth.se/courseid/8498/content.do?id=19121762 Samt lego NXC API: http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html Bilagor Institution KTH Sida 6 av 6