Institutionen för IT och medier Sid 1 av 13 Magnus Eriksson 2008-10-15 E-post [email protected]

Laborationsinstruktioner MINDSTORMS NXT

Namn deltagare 1: ______

Namn deltagare 2: ______

Godkännandedatum:______Signatur: ______

MITTUNIVERSITETET Sid 2 av 13 Laborationsinstruktioner NXT 2008-10-15

Innehåll 1. Inledning ...... 2 2. Inventering, uppackning...... 3 3. Batteriladdning...... 4 4. Programstart...... 4 5. USB-anslutning...... 4 6. Kontroll av firmware...... 4 7. Bygg en legorobot...... 5 8. Gör program enligt steg-för-steg-instruktioner...... 5 9. Bluetooth-anslutning av PC till NXT ...... 6 10. Sensorer och signaler: Bygg ett mätinstrument ...... 7 11. Programflödesstyrning: Villkor, slingor och väntan...... 8 12. Felsökning med hjälp av ljud och display...... 8 13. Multitrådning ...... 8 14. TÄVLINGSUPPGIFT ...... 9 15. Variabler ...... 9 16. My block...... 9 17. Bluetooth-kommunikation mellan två robotar...... 10 18. Filer för att överför data mellan PC och NXT ...... 10 19. Kontrollera att du har förstått alla block och funktioner...... 10 20. Frivillig uppgift: Testa någon tredjepartssensor eller annat tillbehör, eller studera möjligheten att bygga en egen sensor ...... 10 21. Frivillig uppgift: Testa eller läs om någon annan programvara...... 11 22. Förberedelse inför fördjupningsprojektet ...... 12 23. Synpunkter ...... 13

1. Inledning

Under denna uppgift ska du få bekanta dig med Lego Mindstroms NXT software. Detta är en bantad version av programmet Labview, som är ett vanligt förekommande verktyg inom näringslivet för insamling, presentation och analys av mätdata från mätinstrument och givare, för automatiserade mätsekvenser, för styrteknik, för processimulering, mm. Labview har ett grafiskt programmeringsspråk som kallas G. Den version av språket som används i NXT software kallas därför NXT-G.

Målet med denna uppgift är: • Att du ska lära dig använda samtliga programblock och funktioner i NXT-G, och förstå de grundläggande principerna för programmering. • Att du i slutet av laborationsövningen ska kunna ge ett preliminärt förslag till fördjupningsprojekt baserat på NXT, som du därefter ska kunna genomföra självständigt. • Att du ska bli inspirerad till vidare studier inom datateknik, elektronik och andra ingenjörsämnen!

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 3 av 13 Laborationsinstruktioner NXT 2008-10-15 Som förberedelse rekommenderar vi att du tittar och lyssnar igenom följande introduktionsföreläsning: www.ortop.org/NXT_Tutorial/html/essentials.html

Uppgifterna utföres lämpligen i grupper om två personer.

Redovisning av denna laboration sker muntligen för handledaren genom demonstration av några av robotarna, samt genom uppvisande av anteckningar. Spara alla program under olika filnamn så att du kan redovisa dem. Skriv eventuellt ut programmets flödesschema. Var beredd att förklara hur alla block och program fungerar.

Laborationsuppgifterna ger relativt fria tyglar. Det viktiga är att du under laborationsuppgifternas gång kontrollerar att du har lärt dig använda samtliga programblock genom att markera i följande lista vilka block du har testat och förstått. Ange gärna filnamnet på det program där du testade blocket:

Händelseblock: Move Record/play Motor Sound Display

Programflödesstyrningsblock (flow control): Wait Loop Switch Stop

Sensorblock: Touch Sound Light Ultrasonic NXT buttons Rotation sensor Timer

Beräkningsblock: Logic Mathematic Compare Range Random Variable

Advanced: Text Number to text Keep alive File access Calibrate Reset motor

Håll ett högt tempo, och försök att inte fastna på detaljer. Den handledda laborationstiden är 8 timmar. Andra fyratimmarspasset sätter vi igång med tävlingsuppgiften (uppgift 13).

Läs igenom allt – även de frivilliga uppgifterna.

2. Inventering, uppackning Förse dig med en NXT-låda, och gör en översiktlig kontroll av att det viktigaste finns med enligt innehållsförteckningen på bilden i locket. Detta innefattar en NXT-enhet med laddningsbart batteri, en transformator, en bok med byggritningar, en Bluetooth/USB-dongle, en USB-kabel, tre motorer, fyra olika sensorer, m.m.

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 4 av 13 Laborationsinstruktioner NXT 2008-10-15

Samma kontroll bör göras i samband med att du avslutar laborationstillfället och städar ihop. Glöm då inte Bluetooth-donglen och USB-kabeln i datorn, och transformatorn i eluttaget.

Om du har fått en oöppnad legolåda: Packa upp och sortera innehållet i lämpliga fack. Montera det laddningsbara batteriet under NXT-enheten. Eventuellt får du hämta transformatorn och Bluetooth-dongeln från en separat låda.

3. Batteriladdning Slå på NXT-enheten med den oranga knappen.

Om batterisymbolen längst upp till höger i displayen visar ett halvladdat eller blinkande batteri, koppla in transformatorn till NXT-enheten för att ladda batteriet. Batteriet bör laddas en stund vid varje labbtillfälle.

4. Programstart Logga in på PC:n och starta programmet LEGO® MINDSTORMS® NXT. (Välj Startmenyn -> Programs -> LEGO MINDOSTORMS Edu NXT -> LEGO MINDSTORMS Edu NXT .

När programmet har startat, gå in på Help -> Content and index. Bläddra runt så att du hittar om du behöver hjälp.

Skapa ett nytt NXT-G-program, t.ex. genom att gå in på File -> New.

När man skapar ett nytt program är det en god vana att omedelbart spara ned det på sitt hemkonto (på H:\ eller i My documents) under ett lämpligt namn genom att välja File -> Save As. Om du sparar lokalt på hårddisken (C:\) kan du inte komma åt det från någon annan dator, och det finns risk att programmet raderas till nästa laborationstillfälle i samband med en ominstallation av systemet.

Orientera dig i programmets menyer och paletter.

5. USB-anslutning Anslut NXT-enheten med den medföljande USB-kabeln till PC:n. Klicka på symbolen ”NXT Window”. Om NXT-enheten är påslagen bör den synas i listan över tillgängliga enheter. Klicka på knappen Connect.

6. Kontroll av firmware Firmware betyder fast programvara som sällan ändras. I fallet NXT är det den programvara som ligger i enhetens flash-minne, och som innefattar dess bootprogram, dvs uppstartsprogram, och operativsystem.

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 5 av 13 Laborationsinstruktioner NXT 2008-10-15

Kontrollera versionsnumret för den Firmware som ligger nedladdad i NXT-enheten. Versionsnumret visas till höger i anslutningsfönstret.

Stäng anslutningsfönstret.

Gå in på menyn Tools -> Update firmware. I fönstret ”Available firmware files:” visas vilken firmwareversion som finns tillgänglig på PC:ns hårddisk. Om den är nyare, klicka på Download. Eventuellt kan man även kontrollera om det finns en nyare version tillgänglig på nätet, genom att välja knappen Check till höger om texten ”Online updates”. När en eventuell nedladdning är slutförd, stäng fönstret genom att trycka på Close. Kontrollera återigen vilken version som ligger nedladdad genom att gå in på anslutningsfönstret.

Tryck på NXT-enhetens knappar, och orientera dig i dess menysystem.

7. Bygg en legorobot Bygg en robot kring NXT-enheten som åtminstone drivs av två hjul med var sin motor, och gärna någon sensor.

Ett alternativ är att använda någon av byggritningarna i den bok som ligger i lådan

Ett annat alternativ är att gå in på bygginstruktionerna till höger i Robot Educator ”Common palett” eller Complete palett”. Välj en konstruktion och klicka på ”building guide”. (Flera av bygginstruktionerna saknas i denna Educational version. Fler betydligt roligare konstruktioner finns i den version som säljs i leksaksaffärer.)

Ett tredje alternativ är söka efter ritningar på nätet, t.ex. genom att gå in på http://mindstorms.lego.com/ -> Building instructions.

Ett fjärde är att använda programmet , som finns kostnadsfritt på nätet. Det visar animerade 3D-byggbeskrivningar för legoprojekt, bl.a. för ett antal NXT-robotar, och möjliggör även att man skapar egna animerade beskrivningar.

Ett femte är att själv vara kreativ…

Vilket alternativ valde du? ______

______

8. Gör program enligt steg-för-steg-instruktioner Testa att göra ett eller flera program enligt de steg-för-steg-instruktioner som finns i paletten till höger, t.ex. exemplet ”03 Drive Forward”. Gå in på roboten, välj ”Programming guide”.

Spara programmet på hårddisken. Ange filnamn: ______

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 6 av 13 Laborationsinstruktioner NXT 2008-10-15 Ladda ned och kör programmet genom att klicka på knappen ”Download and run”.

Glöm inte att anteckna vilka block du har testat och förstått i listan på sidan 3. Testa och försök förstå samtliga möjliga inställningar för de block som ingår i programmet. Tag för vana att läsa den hjälptext som visas i nedre högra hörnet när man markerar ett block.

Studera ytterligare några av exemplen. Du får själv avgöra om du lär dig bäst genom att testa att skapa programmen, eller genom att studera dem och sedan göra egna experiment enligt nedanstående anvisningar. Det viktiga är förståelsen! Var beredd på att förklara hur programmen fungerar.

Notera nedan vilka exempel du har testat, och vilka du enbart har läst och förstått. Ange filnamn i de fall du har skapat programmet.

01. Play sound 21. Speed control 02. Use Display 22. React to distance 03. Drive Forward 23. React to light 04. Reverse 24. Rotation sensor 05. Accelerate 25. Reset rotation sensor 06. Curve Turn 26. Reaction time 07. Point Turn 27. NXT buttons 08. Drive in square 28. Sound control 2 09. My block 1 29. Bump counter 10. Parking Bay 30. Send message 11. Action replay 31. Range control 12. Detect sound 32. Random duration 13. Sound control 33. Save a file 14. Detect distance 34. Calibrate sensor 15. Distance control 35. Display text 16. Detect dark line 36. Acceleration control 17. Follow a line - Linjeföljare 37. My block 2 18. Detect touch 38. Motor bumper 19. Sensor bumber 39. Multiple download 20. Hit red ball

9. Bluetooth-anslutning av PC till NXT Bluetooth är en teknik för trådlös korthållskommunikation, som användas istället för USB för kommunikation mellan PC och NXT.

Kontrollera att NXT-enheten har ett unikt namn, så att det går att urskilja den från andra enheter i samma klassrum. Namnet visas till höger i anslutningsfönstret på PC:n, samt överst i enhetens display. Om enheten bara heter NXT, skriv in ett annat lämpligt namn och klicka på knappen till höger om namnfältet. Om enheten är märkt med en numrerad dymoetikett är detta ett lämpligt namn.

Tag nu bort USB-kabeln mellan roboten och PC:n.

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 7 av 13 Laborationsinstruktioner NXT 2008-10-15 Anslut en Bluetooth-dongle till PC:n. Gå in på PC:ns kontrollpanel, välj Bluetooth, och kontrollera att ”Aktivera upptäckning” är valt.

Slå på Bluetooth via NXT-enhetens manöverpanel, och ställ in så att Bluetooth är ”Visible”.

Klicka på symbolen ”NXT Window” i NXT-programmet på PC:n. Eventuellt får du trycka på knappen ”Scan”. Du bör nu få upp din robot i listan över tillgängliga enheter, med texten ”Bluetooth” i kolumnen ”Connection Type”. Klicka på ”Connect”.

Ladda ned ett program via Bluetooth.

Frivillig uppgift: Mät hur långt avstånd Bluetooth fungerar på.______

10. Sensorer och signaler: Bygg ett mätinstrument I denna uppgift ska du bygga mätinstrument som visar ett mätvärde på displayen. Du ska sensorer för att mäta upp avstånd (ultraljudssensor), ljudstyrka, ljusstyrka och beröring (strömbrytare). Testa även att använda en motor som lägesgivare eller för att uppmäta rotationshastighet.

Kalibrera sensorerna till den ljus- och ljudnivå som finns i klassrummet innan du använder dem första gången, genom att gå in på menyn Tools -> Calibrate Sensors.

Testa att använda signalledningar. Dubbelklicka i underkant på block, t.ex. sensorblock, så att en kopplingslist med anslutningspunkter fälls ut. Dra ledningar mellan anslutningspunkter.

Kontrollera anslutningspunktens datatyp genom att hålla musen över den. Datatypen kan vara heltal, logisk eller textsträng. Man kan inte koppla ihop anslutningspunkter med olika datatyp.

Skriv ett program som uppmäter värden med sensorer (avstånd, ljusstyrka eller ljudstyrka) och spelar upp olika tonhöjd eller tonstyrka beroende på värdet, och/eller styr en motors hastighet beroende på värde.

Använd ett omvandlingsblock som gör om sensorblockets mätvärden från talformat till textsträng. Presentera sedan textsträngen på displayen.

Du kan stoppa in programmet i ett loopblock (en slinga) så att mätningen utförs om och om igen, i all evighet så länge inte programmet avslutas.

Ange filnamn och ge en kort beskrivning av de program du skapar: ______

______

______

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 8 av 13 Laborationsinstruktioner NXT 2008-10-15 11. Programflödesstyrning: Villkor, slingor och väntan Skapa program där en sensor styr programflödet, dvs påverarkar switchblock (villkorsblock), loopblock (slingor), och wait-block (väntan).

Gör t.ex. en robot som först kör åt ett håll, men vänder efter att ha kommit för nära ett hinder, hört ett ljud (tillrop eller handklapp) eller kommit till en svart linje (t.ex. eltejp) på golvet. Prova gärna flera alternativ att göra samma program.

Tänk på att om man ställer in motorblocket så att motorn fortsätter i all evighet forsätter programmet omedelbart efter att motorn startats med att utföra efterföljande block.

Vilken metod ger enklast program? ”Vänta på sensor”-block, villkorsblock i slinga, eller slinga som upprepas tills sensor har ett visst värde? ______

Testa att använda switch-block med fler än två alternativ genom att ta bort bocken i ruten ”Flat view”, och lägga till fler villkor.

Filnamn och ev kort beskrivning för de program du skapar: ______

______

12. Felsökning med hjälp av ljud och display Tag för vana att alltid lägga in ljudsignaler eller ikoner på LCD-displayen som visar vilket tillstånd roboten är i. På så sätt blir det mycket enklare att felsöka program. Det bör framgå vilket val programmet har gjort i villkorsblock, om roboten har tagit sig förbi ett väntablock eller fortfarande väntar, om roboten är inne i en slinga eller har slutfört slingan, o.s.v.

Skapa ett program som visar tillstånd med ljud eller display. Ange filnamn:

______

13. Multitrådning Testa att göra ett multitrådat program, dvs ett program som förgrenas i flera parallella processer, som samtidigt t.ex. spelar ljud och styr motorer.

Observera att ett program som bara har en tråd ibland kan sätta igång flera saker som utförs samtidigt. Om man ställer in motorblocket så att motorn fortsätter i all evighet forsätter programmet omedelbart efter att motorn startats med att utföra efterföljande block. På samma sätt kan man välja att programmet omedelbart går vidare efter att ett ljud startats, istället för att invänta att ljudet är färdigspelat.

Ange filnamn: ______

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 9 av 13 Laborationsinstruktioner NXT 2008-10-15 Det är normalt inte lämpligt att i flera olika trådar samtidigt styra displayen eller samma motor, eller att använda samma sensor. Vad händer då? Testa.

______

14. TÄVLINGSUPPGIFT Kom överens med en annan grupp om att tävla om en liten uppgift. Använd en eller flera sensorer t.ex. för att följa en bana i form av en eltejp, för att hålla roboten inom ett avgränsat område och inte kollidera med ett visst objekt, för att köra runt ett objekt och vända, för att förflytta en boll mellan två punkter, etc. Roboten kan fjärrstyras med ljud (tillrop eller handklapp), eller vara autonom (självgående).

Ange filnamn: ______

Gör mätningar t.ex. av hur lång tid det tar för roboten att utföra en viss uppgift, hur mycket roboten avviker från önskad bana, hur känslig roboten är för störningar, etc. Försök förbättra dina resultat. Skriv ned några observationer och slutsatser vad gäller vilka åtgärder som tycks förbättra snabbhet, precision eller tillförlitlighet.

______

______

15. Variabler Använd en variabel för att spara värden i minnet, och för att överföra ett värde från en tråd till en annan. T.ex. kan man placera sensorer i en särskild tråd, och låta dem bestämma värdet av en heltalsvariabel. Variabeln kan fungera som tillståndsvariabel, som styr villkorssatser (switchblock) i övriga trådar. Motorer för framdrift kan placeras i en tråd, en tredje “verktygsmotor” i en tråd, displayoperationer och ljud i en tråd.

Filnamn och kort programbeskrivning: ______

16. My block Gruppera flera block till ett block, som hamnar under ”My block”. Använd detta block vid fler tillfällen. Syftet med detta är dels att göra välstrukturerade program, där detaljer grupperas samman, dels att kunna använda samma programkod i flera olika program eller på flera olika sätt.

Lägg in förklarande text, så att andra användare kan förstå och använda ditt block, eller som minnesstöd om du själv i framtiden vill använda blocket.

Ett eget block motsvarar det som i andra programmeringsspråk kallas funktion, metod eller subrutin.

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 10 av 13 Laborationsinstruktioner NXT 2008-10-15 Filnamn och kort beskrivning av blocket, och det program som använder blocket: __

______

17. Bluetooth-kommunikation mellan två robotar Anslut en NXT till en annan genom att gå in på enhetens manöverpanel, välja Search och Connect.

Försök överföra ett värde från en enhet till en annan, t.ex. ett mätvärde eller en fjärrstyrning.

Testa t.ex. att använda följande programblock för bluetooth-komunikation: Send message Receive message Wait (for sensor -> bluetooth) Loop block Switch block

Filnamn och kort programbeskrivning: ______

18. Filer för att överför data mellan PC och NXT Spara en sekvens av mätdata till en fil, och överför till PC:n. Öppna filen, t.ex. med programmet Excel.

Filnamn och kort programbeskrivning: ______

19. Kontrollera att du har förstått alla block och funktioner Kontrollera att du har testat och förstått samtliga block. Alla block ska vara ”förbockade” i tabellen på sidan 3.

Filnamn för och beskrivning av de program du skapar: ______

______

20. Studera någon tredjepartssensor eller annat tillbehör, eller studera möjligheten att bygga en egen sensor Obligatorisk endast för civilingenjör elektroniksystem. I laborationslokalen finns flera sensorer och tillbehör, som inte ingår som standard i Mindstorms NXT. Några är köpta, några har vi byggt själva. Fler finns att beställa via nätet, eller så finns det byggritningar. Beskriv något av dessa tillbehör. Läs gärna tillverkarens anvisningar genom att söka på Google. Tanka eventuellt ned särskilt NXT-G-block för tillbehöret. Glöm inte att kalibrera sensorer. Gör mätningar av dess egenskaper. Återlämna tillbehöret där du tog det.

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 11 av 13 Laborationsinstruktioner NXT 2008-10-15

Exempel på tillbehör: Elektronisk kompass, IR-sökare (för att söka en robotfotboll med inbyggda IR-lysdioder), Accelerations/lutningssensor, Gyro (rotationssensor), IR/lasersensor för avståndsmätning med hög precision, värmesensor, lufttryckssensor, fuktsensor, pianotangentbord, analog-till-digital-omvandlare, motormultiplexer, mm.

Det finns även sensorer till den gamla Mindstorms RCX-modellen. En konverter ingår i NXT Educational version. Särskilda asterisk-markerade programblock är utvecklade för dessa sensorer och motorer, och ingår i NXT Educational version.

Man kan bygga egna sensorer. Det finns exempelritningar på nätet. Var och en av NXT:s fyra sensorportar innehåller ett stift för analoga mätvärden som i sin tur är anslutet till en intern analog-till-digitalomvandlare (A/D-omvandlare). Detta på samma som i gamla RCX-modellen, men med annorlunda mekanisk kontakt. Dessutom innehåller NXT:ns sensorportar den digitala I2C-mätbussen. Det finns särskilda I2C-kretsar som möjliggör att man kan ansluta egen digital elektronik, t.ex. strömbrytare och mer högpresterande A/D- och D/A-omvandlare.

Man kan utnyttja Lego , Tekniklego, mm. Tekniklego innefattar pneumatik.

Vilket tillbehör studerade du? Beskriv det kort. Var hittar du informationen? ______

______

______

______

______

Gjorde du några egna tester av tillbehöret? ______

Observationer och mätningar av tillbehörets egenskaper: ______

______

21. Studera någon annan programvara Obligatorisk endast för civilingenjör datateknik. Det finns flera alternativa programmeringspråk, utvecklingsmiljöer och andra resurser på nätet. Läs om och beskriv kort något annat programhjälpmedel eller utvecklingsverktyg som kan användas till NXT. Sök t.ex. på nätet med Google, eller bläddra i böcker som står i bokhyllan. Om du har tid, testa gärna något av programmen. Vissa av programmen är installerade i labbsalen, andra kan du be labbhandledaren (som har administratörsrättigheter i systemet) om hjälp med att installera.

Exempel: - Skapa egna ljud i NXT:s ljudfilformat .rso med programmet Wav2Rso. - Fler NXT-G-block, t.ex. Fixed-Point Operations NXT-G block som möjligör icke-heltalsberäkningar. Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 12 av 13 Laborationsinstruktioner NXT 2008-10-15 - Program för Bluetoothstyrning av NXT från Sony Ericsson/Symbian-mobiltelefoner, via NXT:ns inbyggda protokoll. - National Instruments kompletta Labview-version med NXT-tillbehör möjliggör att man kan utveckla egna NXT-G-block, men även skapa program som körs på PC:n, t.ex. för att analysera och presentera mätdata från NXT:n i form av diagram. - Java med LEJOS. - Not quite C - Robolab 2.9 med NXT-tillbehör – den grafiskt programmerade utvecklingsmiljö som följde med den gamla Mindstorms RCX:en. - Microsoft robotics lab.

Vilket verktyg valde du att studera? Beskriv det kort. Var hittade du informationen? Gjorde du någon egen test?______

______

______

______

______

22. Förberedelse inför fördjupningsprojektet – och preliminärval Titta igenom några av de lego-relaterade böcker som finns i labbet och/eller några webbplatser för att se om du hittar uppslag till projektidé och var hjälp finns att få till olika.

Exempel på webbplatser där du kan hitta inspiration till nya idéer:

• www.youtube.com . Sök på Mindstorms NXT.

• Rekommenderad svensk sajt: http://web.mac.com/storkamp/Mindstorms/iRobot.html Användar-ID: mindstorms Lösenord: LEGONXT Gå t.ex. in under ”Länkar” för att få tekniska detaljer om tillbehör.

• En rad olika NXT-communities på nätet, t.ex. nxtacy.org .

Ge ett kort refererat av något intressant projekt som du har hittat:

______

______

______

______

Mittuniversitetet – Magnus Eriksson MITTUNIVERSITETET Sid 13 av 13 Laborationsinstruktioner NXT 2008-10-15

Gör redan nu ett preliminärt val av projekt. Skriv gärna ned en kravspecifikation för ett preliminärt förslag på fördjupningsprojekt, och ange vilka verktyg, detektorer, programspråk, mm, du troligen kommer att använda.

______

______

______

______

______

23. Synpunkter Synpunkter på labbkompendiet är välkomna, vad gäller vad som var onödigt tidskonsumerande, vad som var svårt, etc.

______

______

Mittuniversitetet – Magnus Eriksson