• No results found

Programmera en NXT Robot

N/A
N/A
Protected

Academic year: 2022

Share "Programmera en NXT Robot"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

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.

(2)

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

(3)

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.

(4)

Rad Orginal Kod Modifierad Kod Kommentar

115 dance(); //dance(); Kommenterade bort Dance från main klassen som gjorde så att roboten inte

följde några andra kommandon.

69 lightIntensity = SensorRaw(IN_1);

lightIntensity = SensorRaw(IN_3);

Ändrade så att roboten läser in data från Input port nummer 3 och inte 1.

Sensorn är kopplad till 3.

87 OnFwd(OUT_A, SpeedSlow);

OnFwd(OUT_B, SpeedSlow);

Bytade motor från A till B. Detta ändrar robotens kontroll då den följer

den svarta linjen.

91 OnFwd(OUT_B, SpeedFast);

OnFwd(OUT_A, SpeedFast);

Bytade motor från B till A. Detta ändrar robotens kontroll då den följer

den svarta linjen.

34 string

groupMembers[]

= {

"Person"

};

string

groupMembers[] = {

"Peyman", "Svante"

};

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.

(5)

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.

(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

References

Related documents

Avfall Sverige, Energigas Sverige, Svensk Fjärrvärme och Svenskt Vatten representerar infrastruktur som är grundläggande för invånarnas dagliga liv, nämligen vatten-, värme-

De flesta av de data som behövs för att undersöka förekomsten av riskutformningar finns som öppna data där GIS-data enkelt går att ladda ned från till exempel NVDB

De pekar på Östergötland och menar att de lyckades korta köerna när man införde vårdval 2013, men att hörselvården blivit betydligt sämre!. Bland annat pekar man på att

Det här läget kan vara användbart om du redan har köpt SureFlap kattlucka men din katt har inte ett chip ännu, eller för att din katt ska få vänja sig vid den nya kattluckan

Då vår studie visat sig vara tidigt ute när det kommer till digitala medarbetare och att medvetenheten om dem inte riktigt finns skulle vi även i framtiden vilja göra en

Det gör Stallberg Lantbruk utanför Vara till en toppmodern gård.. Text &amp; foto:

Magen som alltid krånglade, som fick henne att ligga på soffan när de egentligen skulle åka till stranden, som gjorde att de blev försenade på morgonen för att hon behövde gå

Personalen från Kvälls- och helgmottagningen tycker att deras verksamhetschef inte har varit tillräckligt närvarande vid förändringen, då denne sitter på en annan