MINDSTORMS EV3 grunnsett

Lage en selvkjørende bil

Design et selvkjørende kjøretøy som følger brukerdefinerte kjørekommandoer.

120+ min.
Middels
6.trinn til videregående
roaming-vehicles-gps

Leksjonsplan

Forberede

  • Les gjennom dette lærermaterialet.
  • Du kan planlegge en leksjon ved bruk av Kom i gang-materialet i EV3 Lab-programvaren eller Programmering-appen, ved behov. Dette gjør at elevene blir kjent med LEGO MINDSTORMS Education EV3.

Engasjere (30 min.)

  • Bruk ideene i Starte en diskusjon-delen nedenfor til å engasjere elevene i en diskusjon knyttet til dette prosjektet.
  • Forklar prosjektet.
  • Del klassen i grupper på to elever.
  • La elevene få nok tid til å en idédugnad.

Utforske (30 min.)

  • Be elevene om å opprette flere prototyper.
  • Oppfordre dem til å utforske både bygging og programmering.
  • Be hver gruppe om å bygge og teste to løsninger.

Forklare (60 min.)

  • Be elevene om å teste løsningene sine og velge den beste.
  • Sørg for at de kan lage sine egne testtabeller.
  • La gruppene få litt tid til å avslutte prosjektet og til å samle inn informasjon for å dokumentere arbeidet.

Utdype (60 min.)

  • Gi elevene litt tid til å lage sine endelige rapporter.
  • Start en delingsøkt der hver gruppe presenterer sine resultater.

Evaluere

  • Gi tilbakemelding på elevenes arbeid.
  • Du kan bruke de vedlagte vurderingsrubrikkene for å forenkle prosessen.

Starte en diskusjon

I dag er det mange navigasjonssystemer som brukes i biler. Noen av disse systemene påtar seg nå sjåførenes ansvar om å kjøre passasjerer trygt til sine destinasjoner. Før de finner den beste ruten mellom punkt A og B, må selvkjørende biler være i stand til å utføre en rekke bevegelser basert på inndata fra brukeren.

roaming-vehicles-gps

Oppfordre til en aktiv idédugnadsprosess.
Be elevene om å tenke gjennom disse spørsmålene:

  • Hva er selvkjørende biler og hvordan fungerer de?
  • Hvor får selvkjørende biler retningsinformasjonen?
  • Hvilke bevegelser må bilen utføre for å kjøre gjennom en rekke bygater på et rutenett delt opp i nord, sør, øst og vest?

Gi elevene litt tid til å besvare disse spørsmålene:

Oppfordre elevene til å dokumentere sine første ideer og forklare hvorfor de valgte løsningen de vil bruke for sin første prototype. Be dem beskrive hvordan de vil evaluere ideene sine gjennom hele prosjektet. På denne måten, når elevene ser gjennom og endrer, har de spesifikk informasjon som de kan bruke til å evaluere løsningen, og avgjøre om den var effektiv eller ikke.

Pseudokode er et flott verktøy for å hjelpe elevene å organisere sin tenkning før de begynner å programmere.

Byggetips

Start ved å bygge kjøretøyet. Elevene kan bruke hvilken som helst av de foreslåtte LEGO® MINDSTORMS® EV3 Kjørebasemodellene eller utforme sine egne. Sørg for at det er enkel tilgang til knappene oppå EV3-klossen. De brukes til å kontrollere retningen i denne aktiviteten.

ev3-robot-driving-base

Programmeringstips

Forklar for elevene at de nå skal programmere roboten til å bevege seg i henhold til et innspilt sett med instruksjoner som er gitt gjennom knappene på EV3-klossen. Bruk disse parametrene:

  • Opp-knappen trykket, roboten beveger seg fremover i 30 cm
  • Ned-knappen trykket, roboten beveger seg bakover i 30 cm
  • Venstre-knappen trykket, roboten dreier 90 grader til venstre
  • Høyre-knappen trykket, roboten dreier 90 grader til høyre

Spill inn én handling for å få roboten til å bevege seg

coding-08-01

Forklaring av programmet

  1. Start programmet.
  2. Opprett en Variabel-blokk med navn «Kjør».
  3. Vent til at en kloss-knapp trykkes.
  4. Spill av lyden «Click 2».
  5. Registrer den numeriske verdien til knappen som blir trykket, i variabelen «Kjør».
  6. Vent i 2 sekunder.
  7. Spill av lyden «G02».
  8. Les av nummeret som er lagret i variabelen «Kjør» og send verdien til en bryter.
  9. Numerisk bryter:

    a. Hvis Kjør = 0 (standard sak), gjør ingenting.
    b. Hvis Kjør = 1, snu roboten til venstre.
    c. Hvis Kjør = 3, snu roboten til høyre.
    d. Hvis Kjør = 4, flytt roboten fremover i 2 hjulrotasjoner.
    e. Hvis Kjør = 5, flytt roboten rett tilbake i 2 hjulrotasjoner.

  10. Spill av lyden «Game Over 2».

Registrer flere handlinger for å få roboten til å bevege seg

Utvalgsoperasjoner-blokken brukes til å lagre en datasekvens. Den blir ofte beskrevet som en tabell bestående av en enkeltrad med flere kolonner.

coding-08-02

Forklaring av løsningen

  1. Start programmet.
  2. Opprett en Variabel-blokk med navn «Kjør». Velg alternativet «Skriv numerisk utvalg».
  3. Opprett en løkke. Eksempelkoden er angitt til å kjøre fem ganger.
  4. Vent til at en kloss-knapp trykkes.
  5. Spill av lyden «Click».
  6. Les Variabel-blokken «Kjør». Velg alternativet «Les numerisk utvalg».
  7. Bruk Utvalgsoperasjoner-blokken. Velg «Skriv ved indeks – Numerisk verdi».

a. Koble til Variabel-blokken «Kjør».
b. Koble løkkeindeksen fra fronten av løkken til indeksplasseringen på Utvalgsoperasjoner-blokken.
c. Koble verdien fra blokken Vent på EV3-knappen til løkkeplasseringen på Utvalgsoperasjoner-blokken.

  1. Skriv utdataene for Utvalgsoperasjoner-blokken i Variabel-blokken «Kjør».
  2. Vent i 2 sekunder.
  3. Spill av lyden «Gå»
  4. Opprett en ny løkke. Eksempelkoden er angitt til å kjøre fem ganger, samme antall ganger som den første løkken.
  5. Les Variabel-blokken «Kjør». Velg alternativet «Les numerisk utvalg».
  6. Bruk Utvalgsoperasjoner-blokken. Velg valgmuligheten «Les ved indeks – Numerisk verdi.
  7. Numerisk bryter:

a. Hvis Kjør = 0 (standard sak), gjør ingenting.
b. Hvis Kjør = 1, snu roboten til venstre.
c. Hvis Kjør = 3, snu roboten til høyre.
d. Hvis Kjør = 4, flytt roboten fremover i 2 hjulrotasjoner.
e. Hvis Kjør = 5, flytt roboten rett tilbake i 2 hjulrotasjoner.

  1. Spill av lyden «Game Over 2».
Last ned prøveprogrammer 32 kB, krever EV3 Lab-programvaren

Fanene «1» og «2»

EV3 MicroPython Programløsninger

Spill inn én handling for å få roboten til å bevege seg

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Wait until one of the command buttons is pressed.
while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
    wait(10)

# Store the pressed button as the drive command.
drive_command = brick.buttons()[0]
brick.sound.file(SoundFile.CLICK)

# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)

# Now drive the robot using the drive command.  Depending on which
# button was pressed, drive in a different way.

# The robot turns 90 degrees to the left.
if drive_command == Button.LEFT:
    robot.drive_time(100, -90, 1000) 

# The robot turns 90 degrees to the right.
elif drive_command == Button.RIGHT:
    robot.drive_time(100, 90, 1000)

# The robot drives straight forward 30 cm.
elif drive_command == Button.UP:
    robot.drive_time(100, 0, 3000) 

# The robot drives straight backward 30 cm.
elif drive_command == Button.DOWN:
    robot.drive_time(-100, 0, 3000)

# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)

Registrer flere handlinger for å få roboten til å bevege seg

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Pressing a button stores the command in a list.  The list is empty to
# start.  It will grow as commands are added to it.
drive_command_list = []

# This loop records the commands in the list.  It repeats until 5
# buttons have been pressed.  This is done by repeating the loop while
# the list contains less than 5 commands. 
while len(drive_command_list) < 5:
    # Wait until one of the command buttons is pressed.
    while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
        wait(10)

    # Add the pressed button to the command list.
    drive_command_list.append(brick.buttons()[0])
    brick.sound.file(SoundFile.CLICK)

    # To avoid registering the same command again, wait until the Brick
    # Button is released before continuing.
    while any(brick.buttons()):
        wait(10)

# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)

# Now drive the robot using the list of stored commands.  This is done
# by going over each command in the list in a loop.
for drive_command in drive_command_list:
    # The robot turns 90 degrees to the left.
    if drive_command == Button.LEFT:
        robot.drive_time(100, -90, 1000) 

    # The robot turns 90 degrees to the right.
    elif drive_command == Button.RIGHT:
        robot.drive_time(100, 90, 1000)

    # The robot drives straight forward 30 cm.
    elif drive_command == Button.UP:
        robot.drive_time(100, 0, 3000) 

    # The robot drives straight backward 30 cm.
    elif drive_command == Button.DOWN:
        robot.drive_time(-100, 0, 3000)

# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)

Flere ideer

Flere ideer til norskundervisningen

Alternativ 1
Bruke tekstbasert programmering:

  • Be elevene om å utforske tekstbaserte programmeringsløsninger slik at de kan sammenligne ulike programmeringsspråk.

Alternativ 2
I denne leksjonen laget elevene en førerløs bil som opererte i henhold til instruksjonene som ble gitt til den i en matrise. Hva om fremtidens førerløse biler kan programmeres til å overstyre innspill fra sine menneskelige sjåfører?
Legge til rette for utvikling av språklige ferdigheter, og be elevene om å:

  • Skrive et argument som understøtter påstanden om at førerløse biler ikke bør kunne kontrollere hastigheten autonomt til tross for innspill fra passasjer
  • Inkludere spesifikke bevis for å understøtte troverdighet til denne påstanden, med henvisning til situasjonseksempler der dette kan være ufordelaktighet for passasjeren
  • Ta for seg påstanden om at autonom hastighetskontroll av førerløse biler kan være en effektiv strategi for å øke sjåfør- eller trafikksikkerheten

Flere ideer til matematikk

I denne leksjonen laget elevene en sving-etter-sving-sekvens av instruksjoner for en førerløs bil. Ved hjelp av sensorer og maskinlæring kan førerløse biler følge instruksjonene og endre utførelsen av disse instruksjonene basert på nye forhold.
Hvis du vil innlemme matematisk kompetanseutvikling og utforske maskinlæringsprogrammer for førerløse biler, gir du elevene et «budsjett» med et visst antall svinger. Deretter ber du dem om å:

  • Lage et rutenett som representerer bygater (f.eks. fem gater som går fra øst til vest og fem gater som går fra nord til sør)
  • Velge et utgangspunkt og destinasjon · Analysere tre skjæringspunkter mellom startpunktet og destinasjonen, med tanke på at banen med færrest svinger representerer den beste banen
  • Fastslå sannsynligheten for at kjøretøyet deres vil komme til destinasjonen «under budsjett» i en tilfeldig retning

Vurderingsmuligheter

Observasjonssjekkliste for lærer
Lag en skala som stemmer overens med behovene dine, for eksempel:

  1. Delvis fullført
  2. Fullstendig fullført
  3. Overgikk forventningene

Bruk følgende kriterier til å evaluere elevenes arbeid:

  • Elevene kan identifisere hovedelementet til et problem.
  • Elevene styrer selv utviklingen av en fungerende og kreativ løsning.
  • Elevene kan kommunisere ideene sine tydelig.

Egenvurdering
Når elevene har samlet inn ytelsesdata, kan du gi dem tid til å reflektere over løsningene sine. Hjelp dem ved å stille spørsmål som:

  • Oppfyller løsningen kriteriene til designoversikten?
  • Kan robotens bevegelse(r) bli enda mer nøyaktige?
  • Har andre løst problemet på andre måter?

Be elevene om å gjennomføre en idédugnad og dokumentere to måter de kan forbedre løsningene sine på.

Tilbakemelding fra andre
Oppmuntre til parvurdering blant elevene slik at hver gruppe er ansvarlige for å evaluere sitt eget og andres prosjekt. Denne par-vurderingen kan bidra til å utvikle elevenes ferdigheter i å gi konstruktive tilbakemeldinger, så vel som å forbedre analyseferdighetene og bruken av objektive data for å støtte et argument.

Lenker til karrieremuligheter

Elevene som likte denne leksjonen, kan også være interessert i å utforske disse karrieremulighetene:

  • Forretningsvirksomhet og finans (entreprenørskap)
  • Produksjon og maskinteknikk (forprosjektering)

Lærerstøtte

Elevene kommer til å:
Bruke designprosessen til å løse problemer i den virkelig verden

Naturfag etter 10.trinn

  • utvikle produkter ut fra kravspesifikasjoner og vurdere produktenes funksjonalitet, brukervennlighet og livsløp i forhold til bærekraftig
    utvikling
  • gjøre rede for begrepene fart og akselerasjon, måle størrelsene med enkle hjelpemidler og gi eksempler på hvordan kraft er knyttet til akselerasjon
  • gjøre greie for hvordan trafikksikkerhetsutstyr hindrer og minsker skader ved uhell og ulykker

Valgfag programmering

  • omgjøre problemer til konkrete delproblemer, vurdere hvilke delproblemer som lar seg løse digitalt, og utforme løsninger for disse
  • utvikle og feilsøke programmer som løser definerte problemer, inkludert realfaglige problemstillinger og kontrollering eller simulering av fysiske objekter

Elevmateriale

Elevark

Download to view and share the student worksheet.

Last ned, vis eller del elevarket, enten som en HTML-side eller som en utskriftbar 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.