Visar inlägg med etikett LEGO Mindstorms. Visa alla inlägg
Visar inlägg med etikett LEGO Mindstorms. Visa alla inlägg

torsdag 17 december 2015

LEGO Mindstorms nr. 20; Träffa röd boll

Uppgiften var att få roboten att köra fram till en boll och stanna. Den skulle sedan läsa av ifall det var en blå eller röd boll, och slå iväg den röda bollen med sin snurr-arm. 
Tanken var att ha en slags ställning som känns av av robotens avståndsmätare (”ultraljudsmodul”) och gör att robotens ljusmodul stannar precis framför bollen. Ljusmodulen känner av hur mycket ljus något avger eller reflekterar. Den röda bollen reflekterar mer ljus än den blåa, och det är så roboten kunde veta vilken boll det var. Vid den röda bollen slog roboten iväg den och vid den blåa gav roboten av ett erfor-ljud och backade igen.

Detta var nog min favorituppgift, eftersom jag tyckte det var kul att göra och se hur bra resultatet blev. Vi hade dock lite problem i början. Den snurrande armen som skulle slå iväg armen var borta halva av tiden, och vid en tidpunkt hittade vi den (vår robot-arm) i en annan grupps låda. Ett annat problem vi hade var att bygga ställningen som skulle stanna roboten och också hålla bollen. Det fattades flera bitar som krävdes till ställningen, så istället för att slösa tid på att låna bitar av andra, behöva bygga ställningen, och sedan råka ge tillbaka delar till fel person, valde vi att helt enkelt hålla handen framför roboten. Det fungerade lika bra, om man utgår ifrån att man höll handen på samma plats. Men den tiden det tog för oss att köra om tills det funkade, var fortfarande snabbare än vad de flesta grupperna behövde för att bygga själva ställningen. Vi fick det att funka, men på en extralektion som alla fick byggde vi en slags ställning ändå. Ställningen skulle egentligen också hålla bollen på plats, men vi valde istället att ha en liten gummiring (eng. O-ring) som bollen satt i. Här ser ni hur det fungerade:

tisdag 8 december 2015

LEGO Mindstorms: Köra 2 meter

Utmaningen ”köra 2 meter” gick förstås ut på att få roboten att köra exakt två meter, fram till en legogubbe utan att röra vid denna, och sedan stanna. Från början visste vi (jag och Adrian) att det mest exakta och precisa sättet var att använda oss av grader, istället för av sekunder eller rotationer. Sekunder är alldeles för stora enheter i det här fallet, och vid rotationer kändes det fortfarande för stort. En rotation är 360 grader, så istället för att använda oss av en massa decimaler med rotationer, valde vi grader, då en hel enhet ändrar på mycket mindre, och därför kan användas mer precist.

Vi mätte ut 2 meter på golvet, och med golvkaklets längd på 20 cm, behövde roboten alltså köra 10 kakelplattor långt. Vi började med en vild gissning på 5000 grader, vilket visade sig inte var så värst långt ifrån de optimala 4193 graderna. I början lät vi roboten köra ganska snabbt, vilket gav upphov till det klassiska effekten där man sitter i en bil, och bilen stannar, att man rullar bakåt pyttelite. Det var samma sak här, den enda skillnaden var att i det här fallet körde roboten fram till en legogubbe utan att nudda, och sedan tillbaka. Vi sänkte hastigheten på roboten för att minska den beskrivna effekten. Detta gjorde att roboten kunde stanna närmare, men det krävde också att vi ändrade cirka fem grader på programmet.

Vår robot utrustade vi med en lång tvärstång framtill, eftersom det då inte skulle spela någon roll ifall roboten kom av kurs och inte körde helt rakt.

På våra egna försök gick det alltid jättebra, och på det bästa försöket var roboten mindre än en millimeter från gubben (se video). Dock gick det inte så bra på själva redovisningen, när alla skulle visa varandra. Jonas hade börjat banan i mitten av en kakelplatta, vilket gjorde det svårare att sätta den exakt rätt, när man hade vant sig vid att sätta roboten i kanten av en kakelplatta. Legogubben gjorde iallafall en praktfull bakåtvolt.


Jag är nöjd med min instats, och jag tycker att vi löste problem som kom på vägen mycket bra, det var bara lite synd att vi inte vann med våra 0,5 millimeter…