Lav en pick-and-place-robot
Design, byg og programmér et robotsystem, som kan samle en genstand op ét sted og anbringe den et andet sted.
Lektionsplan
Forbered dig
- Læs denne undervisningsvejledning igennem.
- Hvis du føler, der er behov for det, kan du planlægge en lektion ved hjælp af Kom godt i gang-materialet i EV3 Lab-softwaren eller EV3 Programmerings-appen. Det vil hjælpe eleverne med at blive fortrolige med LEGO® MINDSTORMS® Education EV3.
Inddrag eleverne (30 min.)
- Brug idéerne i afsnittet Start en samtale nedenfor til at inddrage eleverne i en samtale om emnerne i dette projekt.
- Forklar projektet.
- Opdel klassen i hold a to elever.
- Giv eleverne tid til at brainstorme.
Undersøg (30 min.)
- Få eleverne til at lave flere forskellige prototyper.
- Lad dem udforske både byggeri og programmering.
- Få hvert elevpar til at bygge og teste to løsninger.
- Give dem et stort ark millimeterpapir og farveblyanter eller tuscher.
Forklar (60 min.)
- Bed eleverne om at teste deres løsninger og vælge den bedste.
- Sørg for, at de kan lave deres egne testskemaer.
- Giv holdene tid nok til at færdiggøre deres projekter og indsamle materiale til at dokumentere deres arbejde.
Udbyg (60 min.)
- Giv eleverne tid til at udarbejde deres endelige rapporter.
- Lad eleverne fremlægge deres resultater, så de kan dele deres erfaringer.
Evaluer
- Giv feedback om hver elevs præstation.
- For at forenkle processen kan du bruge det medfølgende evalueringsskema.
Start en samtale
Pick-and-place-robotter er en type industrirobotter, der kan flytte genstande fra ét foruddefineret sted til et andet. Alt efter genstandenes form, vægt og skrøbelighed kan der bruges forskellige typer gribearme til at samle genstandene forsigtigt og præcist op og slippe dem igen.
Få eleverne til at deltage aktivt i en brainstorming.
Bed eleverne om at overveje disse spørgsmål:
- Hvad er en pick-and-place-robot, og hvor bruges den?
- Hvilken type motoriseret mekanisme kan bruges til at samle genstanden op?
- Hvordan kan robotten flytte genstanden?
- Hvordan kan robotten anbringe genstanden et andet sted forsigtigt og præcist?
Få eleverne til at dokumentere deres indledende idéer og forklare, hvorfor de valgte netop den løsning, de vil bruge til deres første prototype. Bed dem om at beskrive, hvordan de vil evaluere deres idéer i løbet af projektet. På den måde har de specifikke oplysninger til rådighed, som de kan bruge til at evaluere deres løsning og afgøre, hvorvidt den er effektiv.
Idéer til videre arbejde
Idéer til videre arbejde – faglig kommunikation
For at styrke elevernes færdigheder i faglig kommunikation kan de:
Mulighed 1
- Bruge deres skriftlige arbejde, tegninger og/eller fotos til at opsummere deres designproces og lave en endelig rapport.
- Lave en video, hvor de demonstrerer deres designproces, fra deres indledende idéer til det færdige projekt.
*Lave en præsentation om deres program. - Lave en præsentation, som forbinder deres projekt med virkelige anvendelser af lignende systemer og beskriver nye opfindelser, man kan lave på baggrund af deres produkt.
Mulighed 2
For at styrke elevernes færdigheder i faglig kommunikation kan de:
Undersøge forskellige maskiner, der fremstiller lægemidler og vacciner, og derefter skabe en fortælling relateret til det at arbejde i et automatiseret lægemiddellaboratorium, som beskriver en fordel og en svaghed ved automatiseret medicinfremstilling.
Ud fra et databeskyttelsesperspektiv diskutere de ophavsretlige problemstillinger, der kan være ved at opbevare medicin-"opskrifter" til potentielt flere milliarder dollar i et onlinesystem, idet følgende overvejes:
De potentielle konsekvenser af, at en virksomhed mister lægemiddeldata
Fordelene ved at opbevare følsomme oplysninger i onlinesystemer.
Idéer til videre arbejde – matematik
I denne lektion lavede eleverne en pick-and-place-robot. Som med mange andre automatiserede systemer er det vigtigt at vurdere og forbedre præstationen. Maskinlæring er en proces, som pick-and-place-robotter kan bruge til at måle deres egen præstation og foretage ændringer for at opretholde eller forbedre denne præstation.
For at styrke deres færdigheder i matematik og udforske maskinlæring kan eleverne:
- Definere udtrykkene nøjagtighed og præcision og anvende disse definitioner på deres robotprojekter.
- Identificere de variabler, der vedrører nøjagtighed og præcision i deres systemer (f.eks. kan deres robots hastighed påvirke dens nøjagtighed, præcision eller begge dele).
- Opstille miniforsøg for at teste, om deres valgte variabler påvirker nøjagtigheden, præcisionen eller begge dele.
Byggetips
Byggeidéer
Giv eleverne mulighed for at bygge nogle eksempler ud fra nedenstående links. Få dem til at undersøge, hvordan disse systemer fungerer, og brainstorme over, hvordan systemerne kan give inspiration til en løsning på opgaveformuleringen.
Testtips
Få eleverne til at designe deres egne testopstillinger og fremgangsmåder til at vælge den bedste løsning. Disse tips kan hjælpe eleverne med at opstille deres tests:
- Markér placeringen af maskinen på millimeterpapiret for at sikre, at du placerer den i samme position til hver testkørsel.
- Brug gitterlinjer til at identificere kvadrater på 1 x 1 cm som hjælp til at registrere resultaterne af hver testkørsel.
- Brug farveblyanter eller tuscher til at markere det forventede og faktiske sted, hvor robotten anbringer genstanden.
- Lav testskemaer til at registrere dine observationer.
- Vurder din robots præcision ved at sammenholde de forventede resultater med de faktiske resultater.
- Gentag testen mindst tre gange.
Løsningseksempel
Her er et løsningseksempel, der opfylder kriterierne i opgaveformuleringen:
Programmeringstips
EV3 MicroPython programeksempel
#!/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)
Mulige karrierer
Hvis eleverne kunne lide denne lektion, ville de måske være interesserede i at undersøge karrieremuligheder inden for:
- Informationsteknologi (computerprogrammering)
- Fremstilling og teknik (maskinteknologi)
Evalueringsmuligheder
Underviserens observationstjekliste
Lav en skala, der passer til dine behov, f.eks.:
- Delvist gennemført
- Gennemført
- Gennemført over forventning
Brug de følgende succeskriterier til at evaluere elevernes fremskridt:
- Eleverne kan evaluere konkurrerende designløsninger på baggrund af prioriterede kriterier og omhyggelige afvejninger.
- Eleverne kan selvstændigt udvikle en fungerende og kreativ løsning.
- Eleverne kan tydeligt kommunikere deres idéer.
Selvevaluering
Når eleverne har indsamlet data om deres løsningers ydeevne, skal de have tid til at reflektere over løsningerne. Hjælp dem ved at stille spørgsmål som:
- Opfylder din løsning kriterierne i opgaveformuleringen?
- Kan din robots bevægelse(r) gøres mere præcise?
- Hvordan har andre løst dette problem?
Bed eleverne om at brainstorme og dokumentere to måder, de kunne forbedre deres løsninger på.
Fælles feedback
Lad eleverne deltage i en evalueringsproces, hvor hver gruppe skal evaluere både deres eget og de andres projekter. Denne evalueringsproces kan hjælpe eleverne med at udvikle deres kompetencer i at give konstruktiv feedback samt forbedre deres analysefærdigheder og evner til at bruge objektive data til understøttelse af deres argumenter.
Hjælp til lærere
Eleverne skal:
-Bruge designprocessen til at løse virkelige problemer
LEGO® MINDSTORMS® Education EV3 basissæt
Stort ark millimeterpapir eller papir med gitterlinjer
Farveblyanter eller tuscher
Fysik/kemi efter 9. klasse
• Eleven kan beskrive sammenhænge mellem teknologisk udvikling og samfundsudvikling
• Eleven har viden om centrale teknologiske gennembrud
Teknologiforståelse efter 9. klasse
• Eleven kan generere, udvælge og kvalificere ideer, der imødekommer en problemstilling
• Eleven har viden om metoder og teknikker til divergent og konvergent tænkning, idegenerering og eksternalisering af ideer
• Eleven kan læse og forstå programmer skrevet i et tekstbaseret programmeringssprog samt anvende et sådant til systematisk modifikation og konstruktion af programmer ud fra en problemspecifikation
• Eleven har viden om metoder til at analysere og forudsige programmers opførsel samt teknikker til systematisk og trinvis udvikling af programmer
Informatik C – hhx, htx, stx
• Eleven kan løse et mindre problem ved at beskrive problemet, samt designe, realisere og afprøve et it-system gennem brugerorienterede teknikker
• Eleven kan identificere basale strukturer i programmeringssprog, modellere programmer og anvende programmering til udvikling af simple it-systemer
Elevmateriale
Elevark
Download, få vist eller del som en online HTML-side eller en PDF-fil, der kan udskrives.