Laborationer i SME094 Informationsteknologi I för basår Programmering av LEGO Mindstorms med ROBOLAB Johan Carlson Luleå tekniska universitet Inst. för Systemteknik EISLAB Email: johanc@ltu.se 25 mars 2007
Introduktion I alla uppgifter rekommenderas att ni använder Robolab - Inventor level 4, om inte annat anges i uppgiften. Problem 1: Kör en sträcka Bygg en legorobot med två motorer och banddrift som kör framåt i tre sekunder, vänder och kör tillbaka i tre sekunder. Problem 2: Kör en sträcka fram och tillbaka Använd samma robot som i Problem 1. Kör roboten en känd tid och mät hur långt den färdas. Upprepa för några olika inställningar på motorstyrkan. Beräkna ett uttryck för robotens hastighet som funktion av motorstyrkan. där M är motorstyrkan. v = k M [m/s], Visa programschema, tabeller med uppmätta värden samt det beräknade uttrycket för robotens hasighet. Problem 3: Hitta linjen Komplettera din robot med en ljussensor riktad ner mot marken framför roboten. Tejpa upp två parallella svarta linjer med c:a 2 meters mellanrum. Placera roboten med sensorn strax framför en av linjerna riktad mot den andra linjen. Programmera roboten så att den kör från startpositionen tills dess att den hittar den andra linjen. Roboten ska då vända och köra tillbaka till ursprungsläget. När den når startlinjen ska den stanna. Lägg gärna till en funktion så att roboten ger ifrån sig ett ljud då den hittar linjerna. 1
Ingen redovisning behövs, men kunskapen från denna uppgift behövs i kommande uppgifter. Problem 4: Flykten från rektangeln För denna uppgift behövs ett rektangulärt område markerat med svart tejp på ett ljusare underlag. Rektangeln (c:a 1 1, 5 m) ska ha en öppning längs ena sidan. Bygg en robot med en ljussensor som kan känna av den svarta linjen. Programmera roboten så att den letar sig ut genom öppningen i rektangeln oavsett var den placeras vid start. Problem 5: Fjärrstyrning Använd roboten från Problem 1, kompletterad med två trycksensorer (ingen ljussensor behövs för denna uppgift). Bygg en liten handkontroll där två tryckknappar kopplas till roboten via kablar. Roboten ska starta och köra rakt fram. Med hjälp av ena knappen ska den svänga vänster och med den andra ska den svänga höger. Sväng lämpligen genom att byta riktning på den ena motorn. På så sätt bör roboten kunna backa genom att man håller in båda knapparna samtidigt. Problem 6: Fjärrstyrning och parkering Komplettera roboten från Problem 4 med en ljussensor. Modifiera programmet från Problem 4 så att det kan avsutas genom att köra roboten till en svart (eller vit) ruta på underlaget. Med andra ord ska du kunna köra omkring roboten och sedan stoppa programmet genom att köra till en svart ruta. Visa upp en fungerande robot samt förklara programschemat för läraren. 2
Problem 7: Håll dig på banan Bygg en robot med en ljussensor och en trycksensor (riktad framåt). Roboten ska med hjälp av ljussensorn hålla sig inom ett cirkulärt område. Trycksensorn ska användas för att detektera om roboten kör in i något hinder. Bygg först en robot som håller sig innanför banan. Lägg till funktionalitet med hjälp av trycksensorn så att roboten känner av hinder. Om ett hinder påträffas ska roboten stanna och spela ett ljud. Problem 8: Linjeföljaren I den här uppgiften ska ny bygga en robot som kan följa en svart linje markerad på ett ljust underlag. Till detta behöver ni två ljussensorer. Bygg en robot som följer linjen, då roboten får starta placerad på linjen. Modifiera programmet så att roboten kan leta reda på linjen (t.ez. genom att köra in en större och större cirkel tills dess att linjen påträffas. Roboten ska sedan följa linjen Komplettera med en trycksensor som känner av hinder på banan (längs linjen). När ett hinder påträffas ska roboten köra runt och sedan fortsätta längs linjen. Hindret får inte kunffas av banan. Visa upp fungerande robot och förklara programmets funktion för läraren. Problem 9: Följ ljuset! Till denna uppgift behöver ni den specialbyggda ljussensorn samt en vanlig ljussensor och en trycksensor. Bygg en robot som först letar reda på en ljuskälla och sedan kör fram till den. När trycksensorn på roboten träffar ljuskällan ska ett ljud spelas upp varefter programmet avbryts. Komplettera programmet så att roboten samtidig håller sig innanför ett angivet område. 3
Ingen redovisning behövs, men funktionaliteten behövs i slutuppgiften. Problem 10: SUMO-brottning Det här är kursens sista uppgift! Här ska gruppernas robotar utmana varandra i en kamp på liv och död. Roboten Bygg en robot med en ljussensor (blå) och en riktningssensor (svart ljussensor med två fotoresistorer) samt en trycksensor. Roboten ska även ha en väl synlig lampa (specialbyggd för separat batteri) placerad på taket. Lampan ska vara synlig från alla vinklar. Utmaningen Tips Roboten ska kunna söka upp en annan ljusskälla och köra mot denna. När roboten kolliderar med den andra roboten (ljuskällan) ska trycksensorn aktiveras (vad ni sedan använder detta till är upp till er). Roboten får aldrig köra av banan (använd den blå ljussensorn till detta). Roboten ska alltså leta upp motståndarens robot och knuffa denne av banan. Roboten ska vara HELT SJÄLVGÅENDE. När robotens program startats får ingen extern styrning (via knappar eller fingrar) användas. Vi kommer att lägga till en viktbegränsning på robotarna inför sluttävlingen, så tänk på att inte bygga på onödigt mycket. Se till att roboten har bra fäste mot underlaget, lämpligt vald tyngdpunkt samt god manövreringsförmåga. en sker i tre steg: Robotens funktion testas genom att knuffa en stillastående ljuskälla av banan. De olika gruppernas robotar utmanar varandra i en tävling. Programmets funktion redovisas muntligt och skriftligt i samband med kursens slut. Här ska ni redogöra för era strategier, implementation etc. Ni behöver inte avslöja detta för de andra före tävlingen. 4