Laboration i datateknik



Relevanta dokument
Programmera Lego Mindstormsrobotar

Lego Mindstormprogrammering

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

[Introduktion till programmering ]

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

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

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

Laboration - Programmering av LEGO Mindstorm robot

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

Labbrapport - LEGO NXT Robot

Robotprogrammering felsökning & analys.

Programmering av LEGO NXT Robot

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

LEGO Mindstorm-robot

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

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

Simon Boström Introduktionskurs i Datateknik

Programmering av en Lego robot

LEGO NXT Robotprogrammering

Introduktion i programmering med språket NXC

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

Laboration i datateknik

Laborationsrapport av robotprogrammering

Programmering av LEGO NXT Robot

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Programmera LEGO NXT

Simon Johansson Introduktionskurs Datateknik 1310

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

Felsökning av mjukvara

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Introduktion till programmering med hjälp av Lego Mindstorm

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Felsökande av en Lego Mindstorm robot

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Programmeringslaboration med LEGOrobot

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

Labbrapport LEGO-robot linefollower

Programmera en NXT Robot

Programmering med NXC Lego Mindstorm

Praktisk programmering

[Introduktionskurs i Datateknik]

Laborationer i SME094 Informationsteknologi I för

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

Strukturerad problemlösning. Metoder och verktyg för datavetare Ht09

EV3 Roboten. Sida 1 av 13

Välkomna till kursen i grundläggande programmering DVGA08, ISGA04

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Användarhandledning Version 1.2

Grundkurs i programmering - intro

Roboten. Sida 1 av 11

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Legorobot. Lär dig programmera en legorobot. Teknikåttan Ola Ringdahl Lena Kallin Westin

Lego Robot [ ] [ ] [ ]

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Programmera i teknik - kreativa projekt med Arduino

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

Programmering. Den första datorn hette ENIAC.

Extramaterial till Matematik Y

PROGRAMMERING I SKOLAN Utbildning av kollegor på Carlssons skola CECILIA CHRISTIANSEN ULRIHCA MALMBERG

Kort introduktion till POV-Ray, del 1

KLARA BARCODE. Program- och maskinvara Nordic Port AB Mölndalsvägen 93 Tfn: Sida 1 (6) GÖTEBORG

Mjukvaruprojekt Onlinebooks

Programmeringsteknik I

Lektion 1: Möt Robo! Områden: Robotteknik, ingenjörsteknik mekanisk design

Programmering, dans och loopar

Robot Educator En introduktion

NetBeans 5.5. Avsikt. Projektfönster

Konstruera, styra, reglera och programmera en röd tråd F-9

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

NetBeans 7. Avsikt. Projektfönster

Digitala projekt - Radiostyrd bil

Editering, Kompilering och Exekvering av Javaprogram

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

LabVIEW uppgift 4. Erik Andersson och Johan Schött. 22 februari 2010

Datorteknik 2 (AVR 2)

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

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

En diskursanalytisk studie av programmering som innehåll i grundskolans teknikämne. Eva Björkholm och Susanne Engström, KTH

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Lathund - Konfiguration av PLC och dator

En resa genom robotarnas värld!

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Tekniska beräkningar. Vad är tekn beräkningar? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

INSTALLATIONSGUIDE PC

tentaplugg.nu av studenter för studenter

Digitalt lärande och programmering i klassrummet

Programmeringspalett. Pr o gr a mvar a

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Beräkningsvetenskap. Vad är beräkningsvetenskap? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

Dash & Dot. Förskola F-klass - 6

Objektorienterad programmering och Java

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 14

Digitalt lärande och programmering i klassrummet

Programmeringsteknik II

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Programmering av LEGO-robot Rickard Eriksson 2012-09-06 rieri@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna rapport är till följd av en laboration på introduktionskursen inom datateknik på KTH. I huvudsak var syftet med denna laboration var att introducera oss i programmering, felsökning samt hur det kan vara inom ingenjörsbranchen. Själva laborationen gick ut på att vi med hjälp av programmet BricxCC skulle programmera en legorobot med programmeringsspråket NXC. Det vi fick var en kod som hade avsiktliga små fel i sig som vi genom felsökning skulle lyckas ändra till den rätta koden. Med den rätta koden skulle roboten åka längs en svart linje tills den träffade väggen. När den hade gjort detta skulle den spela upp en några toner och visa namnen på oss i gruppen på en display.

Innehållsförteckning Sammanfattning... 1 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... 4 Referenser... 5 Bilagor... 5 ICT Kungliga Tekniska Högskolan Sida 2 av 5

1. Inledning I rapporten hittar ni en laboration som syftade mot en introduktion i programmering och felsökning samt att få en insyn i ingenjörsarbetet. 1.1 Bakgrund Anledningen till att en student på ICT-skolan skulle ha nytta av denna laboration är först och främst att man lär sig en ingenjörs tankegång. Under laborationen fick vi lära oss om hur man felsöker, hur man programmerar i par samt hur stor skillnad ett litet fel i en kod kan göra. En annan sak som var mycket bra med denna laboration var att vi fick lära oss hur man skulle använda ett API, vilket är mycket användbart vid inlärning av nya programmeringsspråk. Alla dessa kunskaper kommer vi att ha nytta av under både studietiden och arbetslivet. 1.2 Syfte och målsättning Syftet med denna laboration var att introducera programmering för de som ännu inte är vana genom att låta oss programmera nära hårdvaran. På detta sätt kunde man även lätt se hur små ändringar i koden kunde ha en stor påverkan på slutresultatet. För de som redan var vana vid programmering fick prova på att parprogrammera. Anledningen till att vi skriver denna rapport är för att vi egentligen ska visa att vi har förstått vad vi har gjort. Detta var också ett tillfälle att lära sig skriva rapporter eftersom det kommer att vara vanligt både på ICT-skolan och under ingenjörsarbetet. Den målsättning som jag hade inför laborationen var att jag skulle lyckas hitta den felaktiga koden och ersätta den med den rätta för att få roboten att följa ett svart streck, samt att visa namnen på oss i gruppen vid avslutad uppgift. 2. Genomförande Det vi började med var att läsa igenom Lab-PM:et för att veta exakt vad som skulle göras och lite tips på hur man skulle genomföra uppgiften. Från Lab-PM:et fick vi länken till den programvara som behövdes, nämligen BricxCC. Vi behövde också installera drivrutiner för att roboten skulle kunna kopplas till datorn. Det var lite problem med drivrutinerna men efter lite tid och ett antal ominstallationer fungerade det till slut. Till laborationen fick vi roboten samt en USB-kabel för att kunna koppla den till datorn. Den färdiga koden laddade vi ner från Bilda för att sedan överföra till roboten. Vi provade med den koden som fanns för att se hur den betedde sig. Efter att ha testkört började vi titta igenom koden för att se vad som var fel. Då ingen av oss i gruppen hade särskilt mycket erfarenhet av programmering var det ganska så svårt. Vårt första misstag var att vi började ändra hela delar av koden och sätta in vår egen. Detta resulterade i att programmet vart helt förstört och vi började om från början med små ändringar i taget. Efter en hel del testningar och genomgång av kod lyckades vi till slut få roboten att göra som det var tänkt. Eftersom vi var två som kollade igenom koden och ändrade fram och tillbaka så kom vi på många bra idéer och lösningar. ICT Kungliga Tekniska Högskolan Sida 3 av 5

3. Resultat Radnummer Ny kod Kommentar 35 Jonatan, Rickard Lade till gruppmedlemmarnas namn i arrayen names 45 (8*i) Tog bort -16 för att lägga namnen på olika rader 68 SensorRaw(IN_3) Bytte från port IN_1 till IN_3 för att hämta information från ljussensorn istället för trycksensorn 84 OnFwd(OUT_A, SpeedFast); Vi ändrade från SpeedSlow till SpeedFast för att hjulen skulle spinna i olika hastighet om ljuset från sensorn ändrade sig. Om båda skulle ha samma värde 92 OnFwd(OUT_A, SpeedSlow); skulle roboten bara åka rakt fram. Vi ändrade från SpeedFast till SpeedSlow för att hjulen skulle spinna i olika hastighet om ljuset från sensorn ändrade sig. Om båda skulle ha samma värde skulle roboten bara åka rakt fram. 114 //dance; Kommenterade bort metoden dance från mainmetoden eftersom den metoden är helt onödig Genom att bara göra dessa små ändringar kunde roboten utföra uppgiften felfritt. 4. Analys Största anledningen till att det tog ganska så lång tid för oss var att vi var så ovana vid programmering samt att vi egentligen missuppfattade uppgiften till en början och ändrade koden fullständigt. Det som gick lättast var att kommentera bort metoden dance eftersom namnet egentligen avslöjade att den inte riktigt passade in i sammanhanget. En annan sak som var rätt så simpel var att få namnen på skärmen vid avslutad uppgift eftersom det var kod som vi hade sett tidigare från t.ex. JAVA. Anledningen till att roboten ens reagerade på ljus var SensorRaw(IN_3) då den tog in informationen om ljusförändringar. Sedan var det if-satserna som utefter värdena från sensorn gjorde att roboten ändrade hastighet på motorerna för att hålla sig kvar på linjen. Utskriften på robotens skärm berodde av det i metoden printnamestoscreen som i sin tur hämtade namnen från arrayen groupmembers. Det var sedan for-satsen som med hjälp av (8*i) gjorde att namnen skrevs ut på var sin rad. 5. Diskussion Syftet med laborationen var först och främst för att introducera programmering i form av parprogrammering samt att få en försmak på hur det ingenjörsmässiga arbetet kan gå till. Genom att presentera ett realistiskt problem fick vi lära oss enkel felsökning samt hur man programmerar i par, vilket är vanligt i ingenjörsarbete. Är det något som jag har lärt mig så är det vikten av noggrannhet när det gäller programmering samt felsökning, det allra minsta felet förstör hela koden i många fall. Dessutom märkte man att kommentarer i programkoden hjälpte mycket under felsökningen då det var lättare att se vad som gjorde vilket. Eftersom programvaran var så användarvänlig och överföring mellan dator och robot var så smidig underlättade det arbetet. Detta gjorde att en som inte kan så mycket om programmering kan göra en så kallad "trial and error", alltså att testa sig fram genom att göra små ändringar i koden åt gången. ICT Kungliga Tekniska Högskolan Sida 4 av 5

Referenser 1. Labb-PM, förklarar syfte och mål med laborationen samt vad som ingår i en ingenjörs arbete. Bilagor ICT Kungliga Tekniska Högskolan Sida 5 av 5