MINDSTORMS EV3 Grundset

Gör en transportrobot

Designa, bygg och programmera ett robotsystem som kan plocka upp ett föremål och lägga det på en annan plats.

120+ min.
Medelnivå
Årskurs 7-Gymnasiet
3_Make_a_Pick_and_Place_Robot

Lektionsplanering

Förberedelser

  • Läs igenom det här lärarmaterialet.
  • Om du tror att det behövs planerar du en lektion med hjälp av kom igång-materialet i EV3 Lab Software eller EV3-programmeringsappen. På så vis får eleverna bekanta sig med LEGO® MINDSTORMS® Education EV3.

Engagera (30 minuter)

  • Använd idéerna i avsnittet Starta en diskussion nedan för att få eleverna att diskutera projektet.
  • Förklara projektet.
  • Dela in klassen i par.
  • Ge eleverna tid för att komma på idéer.

Utforska (30 minuter)

  • Låt eleverna skapa flera prototyper.
  • Uppmuntra dem att utforska både byggande och programmering.
  • Låt varje par bygga och testa två lösningar.
  • Ge dem ett stort ark millimeterpapper och färgade pennor.

Förklara (60 minuter)

  • Be eleverna att testa sina lösningar och välja ut den bästa av dem.
  • Se till att de kan skapa sina egna testtabeller.
  • Ge paren tid att avsluta sina projekt och samla in material för att dokumentera sitt arbete.

Utveckla (60 minuter)

  • Ge eleverna tid att skapa slutrapporter.
  • Skapa en möjlighet att dela där varje grupp får presentera sina resultat.

Utvärdera

  • Ge återkoppling kring varje elevs prestation.
  • Du kan använda utvärderingsmatrisen som ingår för att förenkla processen.

Starta en diskussion

Transportrobotar är ett slags industrirobotar som kan flytta föremål till och från fördefinierade platser. Olika griparmar kan användas beroende på föremålens form, vikt och skörhet för att säkert och exakt hämta och lämna föremål.

Engage-Pick-and-Place-Robot-Cover

Uppmuntra eleverna att aktivt komma på idéer.

Be eleverna att fundera kring följande frågor:

  • Vad är en transportrobot och var används de?
  • Vilken typ av motoriserad mekanism kan användas för att plocka upp föremålet?
  • Hur kan roboten flytta föremålet?
  • Hur kan roboten, med en kontrollerad och exakt rörelse, placera föremålet på en annan plats?

Uppmuntra eleverna att dokumentera sina första idéer och förklara varför de valde den lösning de kommer att använda till sin första prototyp. Be dem att beskriva hur de kommer att utvärdera sina idéer under projektet. Det ger dem specifik information att använda när de i gransknings- och revideringsskedet utvärderar sin lösning och fastställer om den fungerar eller inte.

Utvidgning

Fördjupning i språkfärdighet

För att integrera utveckling i språkfärdigheter kan du låta eleverna:

Alternativ 1

  • Använda text, skisser och/eller foton för att sammanfatta designprocessen och skapa en slutrapport.
  • Skapa en film som skildrar designprocessen – från de allra första idéerna till det färdiga projektet.
  • Skapa en presentation om sina program.
  • Skapa en presentation som kopplar deras projekt till verkliga applikationer av liknande system och beskriva nya innovationer som skulle kunna göras utifrån deras modell.

Alternativ 2
För att integrera utveckling i språkfärdigheter kan du låta eleverna:

  • Ta reda på information om olika maskiner som bereder mediciner och vacciner, och sedan skapa en berättelse om att arbeta i ett automatiserat medicintillverkningslaboratorium – se till att berättelsen inkluderar en fördel och en nackdel med automatiserad medicintillverkning

  • Använda ett dataskyddsperspektiv för att diskutera upphovsrättsaspekter av att i onlinesystem lagra medicinformler som kan vara värda miljontals dollar. Se till att följande beaktas:

  • Potentiella konsekvenser av att företaget förlorar medicindata

  • Fördelarna med att lagra känslig information i onlinesystem

Fördjupning i matematik

I den här lektionen skapade eleverna en robot som plockar upp och placerar föremål. Som i många automatiserade system, är det avgörande att utvärdera och förbättra systemets prestanda. En robot som plockar och placerar föremål kan använda maskininlärning för att mäta sina egna prestationer och göra modifieringar för att bibehålla eller förbättra prestationsnivån.

För att integrera utveckling inom matematik och utforska maskininlärning, kan du låta eleverna:

  • Definiera termerna noggrannhet och precision, och använda definitionerna i sina robotprojekt
  • Identifiera variabler för noggrannhet och precision i systemen (till exempel att robotens hastighet kan påverka noggrannheten och/eller precisionen)
  • Utföra miniexperiment för att testa om de valda variablerna påverkar noggrannheten och/eller precisionen

Byggtips

Byggidéer
Ge eleverna möjlighet att bygga några exempel från länkarna nedan. Uppmuntra dem att utforska hur dessa system fungerar och att använda dem som inspiration för att komma på idéer till en lösning på konstruktionsbeskrivningen.

Testningstips
Uppmuntra eleverna att designa en egen testmetod för att välja den bästa lösningen. Följande tips kan hjälpa eleverna att utforma sina tester:

  • Markera maskinens position på millimeterpappret för att se till att den placeras på exakt samma ställe under varje testomgång.
  • Använd rutnätet för att identifiera 1x1 cm stora rutor som underlättar avläsningen vid varje testkörning.
  • Använd färgade pennor för att markera den förväntade och faktiska platsen där roboten placerar föremålet.
  • Skapa testtabeller för att dokumentera iakttagelser.
  • Utvärdera robotens precision genom att jämföra förväntade resultat med faktiska resultat.
  • Upprepa testet minst tre gånger.

Exempellösning
Här är ett exempel på en lösning som uppfyller kriterierna i konstruktionsbeskrivningen:

pick-and-place-solution-bi-cover
Pick-and-Place-Solution-Cover

Kodningstips

EV3 MicroPython exempelprogram

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor, ColorSensor
from pybricks.parameters import (Port, Stop, Direction, Button,
                                 ImageFile, SoundFile)
from pybricks.tools import wait

# Configure the gripper motor with default settings.
gripper_motor = Motor(Port.A)

# Configure the elbow motor.  It has an 8-tooth and a 40-tooth gear
# connected to it.  Set the motor direction to counterclockwise, so
# that positive speed values make the arm move upward.
elbow_motor = Motor(Port.B, Direction.COUNTERCLOCKWISE, [8, 40])

# Configure the motor that rotates the base.  It has a 12-tooth and a
# 36-tooth gear connected to it.  Set the motor direction to
# counterclockwise, so that positive speed values make the arm move
# away from the Touch Sensor.
base_motor = Motor(Port.C, Direction.COUNTERCLOCKWISE, [12, 36])

# Limit the elbow and base accelerations.  This results in very smooth
# motion, like that of an industrial robot.
elbow_motor.set_run_settings(60, 120)
base_motor.set_run_settings(60, 120)

# Set up the Touch Sensor.  It is used to detect when the base has
# moved to its starting position.
touch_sensor = TouchSensor(Port.S1)

# Set up the Color Sensor.  It is used in Reflected Light Intensity
# Mode to detect the white beam when the elbow is in its starting
# position.
color_sensor = ColorSensor(Port.S3)

# Initialize the elbow.  This is done by first moving down for 1 second
# and then slowly moving up until the Color Sensor detects the white
# beam.  Then the motor stops, holds its position, and resets the angle
# to "0."  This means that when it rotates backward to "0" later on, it
# returns to this starting position.
elbow_motor.run_time(-30, 1000)
elbow_motor.run(15)
while color_sensor.reflection() < 30:
    wait(10)
elbow_motor.stop(Stop.HOLD)
elbow_motor.reset_angle(0)

# Initialize the base.  This is done by first running the base motor
# counterclockwise until the Touch Sensor is pressed.  Then the motor
# stops, holds its position, and resets the angle to "0."  This means
# that when it rotates backward to "0" later on, it returns to this
# starting position.
base_motor.run(-60)
while not touch_sensor.pressed():
    wait(10)
base_motor.stop(Stop.HOLD)
base_motor.reset_angle(0)

# Initialize the gripper.  This is done by running the motor forward
# until it stalls.  This means that it cannot move any further.  From
# this closed gripper position, the motor rotates backward by 90
# degrees, so the gripper opens up.  This is the starting position.
gripper_motor.run_until_stalled(200, Stop.COAST, 50)
gripper_motor.reset_angle(0)
gripper_motor.run_target(200, -90)

def robot_pick(position):
    # This function rotates the base to the pick up position.  There,
    # it lowers the arm, closes the gripper, and raises the arm to pick
    # up the wheel stack.
    base_motor.run_target(60, position, Stop.HOLD)
    elbow_motor.run_target(60, -45)
    gripper_motor.run_until_stalled(200, Stop.HOLD, 50)
    elbow_motor.run_target(60, 0, Stop.HOLD)

def robot_release(position):
    # This function rotates the base to the drop-off position.  There,
    # it lowers the arm, opens the gripper to release the wheel stack,
    # and raises the arm again.
    base_motor.run_target(60, position, Stop.HOLD)
    elbow_motor.run_target(60, -45)
    gripper_motor.run_target(200, -90)
    elbow_motor.run_target(60, 0, Stop.HOLD)

# Define the 3 destinations for picking up and dropping off the wheel
# stacks.
LEFT = 200
CENTER = 100
RIGHT = 0

# Rotate the base to the center.
base_motor.run_target(60, CENTER, Stop.HOLD)

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, the robot waits until the Up or Down Button is pressed.
# Second, the robot waits until the Center Button is pressed.
# Finally, the robot picks up the wheel stack and drops it off in the
# center.
#
# Then the process starts over, so the robot can pick up another wheel
# stack.
while True:

    # Display a question mark to indicate that the robot should await
    # instructions.
    brick.display.image(ImageFile.QUESTION_MARK)

    # Wait until the Up or Down Button is pressed.
    while True:
        # First, wait until any button is pressed.
        while not any(brick.buttons()):
            wait(10)
        # Then store which button was pressed.
        button = brick.buttons()[0]
        # If the Up or Down Button was pressed, break out of the loop.
        if button in (Button.UP, Button.DOWN):
            break

    # Play a sound and display an arrow to show where the arm will move.
    brick.sound.file(SoundFile.AIR_RELEASE)
    if button == Button.UP:
        brick.display.image(ImageFile.FORWARD)
    elif button == Button.DOWN:
        brick.display.image(ImageFile.BACKWARD)

    # Wait until the Center Button is pressed, then display a check
    # mark to indicate that the instruction has been accepted.
    while not Button.CENTER in brick.buttons():
        wait(10)
    brick.display.image(ImageFile.ACCEPT)

    # Pick up the wheel stack. Depending on which button was pressed,
    # move left or right.
    if button == Button.UP:
        robot_pick(RIGHT)
    elif button == Button.DOWN:
        robot_pick(LEFT)

    # Drop off the wheel stack in the center.
    robot_release(CENTER)

Yrkeslänkar

Elever som uppskattar den här lektionen kan vara intresserade av att utforska följande yrkesval:

  • Informationsteknik (programmerare)
  • Tillverkning och konstruktion (maskintekniker)

Möjligheter till utvärdering

Checklista för lärarobservationer
Skapa en skala som passar dina behov, t.ex.:

  1. Delvis genomfört
  2. Helt genomfört
  3. Genomfört över förväntan

Använd följande kriterier för att utvärdera elevernas prestationer:

  • Eleverna kan utvärdera konkurrerande designlösningar utifrån prioriterade kriterier och med avseende på kompromisser.
  • Eleverna kan självständigt utveckla en fungerande och kreativ lösning.
  • Eleverna kan på ett tydligt sätt kommunicera sina idéer.

Självutvärdering
Ge eleverna tid att reflektera kring sina lösningar när de har samlat in data från sina resultat. Hjälp dem genom att ställa frågor som:

  • Uppfyller lösningen kriterierna i konstruktionsbeskrivningen?
  • Kan robotens rörelse(r) göras mer exakt?
  • Hur har andra löst uppgiften?

Be eleverna att komma på idéer och dokumentera två sätt att förbättra sina lösningar.

Gemensam återkoppling
Uppmuntra eleverna att granska varandras arbeten och låt varje grupp ansvara för att utvärdera sitt eget och andras projekt. Det utvecklar deras förmåga att ge konstruktiv feedback, att analysera och att använda objektiva data som stöd för sina argument.

Stöd för lärare

Eleverna kommer att:

  • Använda designprocessen för att lösa ett verklighetsbaserat problem

LEGO® MINDSTORMS® Education EV3 Startset

Stort ark millimeterpapper eller papper med rutnät
Färgade pennor

Läroplan för gymnasieskolan (Gy11)

Kap 1 Skolans värdegrund och uppgifter - Gymnasieskolans uppdrag.
”Skolan ska stimulera elevernas kreativitet, nyfikenhet och självförtroende samt vilja att pröva och omsätta idéer i handling och att lösa problem. Alla elever ska få utveckla sin förmåga att ta initiativ och ansvar och att arbeta både självständigt och tillsammans med andra. Skolan ska bidra till att alla elever utvecklar kunskaper och förhållningssätt som främjar entreprenörskap, företagande och innovationstänkande vilka ökar elevernas möjligheter till framtida sysselsättning, genom företagande eller anställning.”

Kap 2.1 Kunskaper
”Det är även skolans ansvar att varje elev som har slutfört ett nationellt program eller annan nationellt fastställd utbildning…

  • kan använda sina kunskaper som redskap för att formulera, analysera och pröva antaganden och lösa problem, lösa praktiska problem och arbetsuppgifter,
  • kan använda såväl digitala som andra verktyg och medier för kunskapssökande, informationsbearbetning, problemlösning, skapande, kommunikation och lärande.”

Kurser - Centralt innehåll

Nedan finns ett urval på kurser där delar av det centrala innehållet överensstämmer med lektionens innehåll. EV3 erbjuder möjligheten till en kursöverskridande samverkan.

  • Konstruktion 1, 100 p (Kurskod: KOTKOS01)
  • Matematik 1C, 100p (Kurskod: MATMAT01c)
  • Programmering 1, 100 p (Kurskod: PRRPRR01)
  • Svenska 1, 100 p (Kurskod: SVESVE01.Motsvarande finns även i SVASVA01).
  • Teknik 1, 150 p (Kurskod: TEKTEK01)
  • Tillämpad programmering, 100 p (Kurskod: TIATIL00S)

Elevmaterial

Ladda ner, visa eller dela elevbladet, antingen som en HTML-sida eller som en utskrivbar PDF.

LEGO, the LEGO logo, the Minifigure, DUPLO, the SPIKE logo, MINDSTORMS and the MINDSTORMS logo are trademarks and/or copyrights of the LEGO Group. ©2020 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.