MINDSTORMS EV3 Set

Ein fahrerloses Auto entwickeln

Ein autonomes Fahrzeug entwickeln, das beim Fahren benutzerdefinierten Befehlen folgt.

120+ Min.
Fortgeschrittene
Klassen 11–13
roaming-vehicles-gps

Unterrichtsplan

Vorbereiten
- Lesen Sie diese Unterrichtsmaterialien durch.
- Falls Sie es für nötig erachten, planen Sie eine Unterrichtsstunde ein, in der Sie zur Einführung die Erste-Schritte-Materialien in der EV3 Desktop-Software oder der EV3 Programmier-App bearbeiten. Dies wird Ihren Schülerinnen und Schülern dabei helfen, sich mit LEGO® MINDSTORMS® Education EV3 vertraut zu machen.

Einführen (30 Min.)
- Nutzen Sie die unten stehenden Diskussionsideen, um ein Gespräch über den Inhalt dieses Projekts anzuregen.
- Erklären Sie das Projekt.
- Teilen Sie die Klasse in Zweierteams auf.
- Geben Sie den Schülerinnen und Schülern Zeit, um Ideen zusammenzutragen.

Erkunden (30 Min.)
- Lassen Sie die Teams mehrere Prototypen entwickeln.
- Regen Sie sie dazu an, sowohl beim Bauen als auch beim Programmieren zu experimentieren.
- Lassen Sie die Teams zwei Lösungen bauen und testen.

Erklären (60 Min.)
- Lassen Sie die Teams ihre Lösungen ausprobieren und anschließend die beste auswählen.
- Achten Sie darauf, dass sie in der Lage sind, eigene Tabellen für die Tests zu erstellen.
- Lassen Sie den Teams etwas Zeit, um ihre Projekte abzuschließen und Materialien zum Dokumentieren ihrer Arbeit zusammenzustellen.

Vertiefen (60 Min.)
- Geben Sie den Teams Zeit, um ihren Abschlussbericht zu erstellen.
- Lassen Sie die Teams einzeln ihre Ergebnisse vorstellen.

Beurteilen
- Geben Sie allen Schülerinnen und Schülern einzeln Rückmeldung zu ihrer jeweiligen Leistung.
- Zur Unterstützung können Sie hierfür die Bewertungsraster nutzen.

Eine Diskussion anregen

Heutzutage kommen in Autos viele verschiedene Navigationssysteme zum Einsatz. Einige dieser Systeme übernehmen jetzt sogar die Verantwortung dafür, Insassen sicher an ihren Zielort zu bringen. Bevor autonome Fahrzeuge die beste Route zwischen zwei Punkten bestimmen können, müssen sie in der Lage sein, eine Reihe von Bewegungen auf Grundlage von Benutzerbefehlen auszuführen.

roaming-vehicles-gps

Regen Sie die Schülerinnen und Schüler dazu an, ihre Ideen auszutauschen.
Bitten Sie sie, über folgende Fragen nachzudenken:

  • Was sind autonome Fahrzeuge und wie funktionieren sie?
  • Woher wissen autonome Fahrzeuge, in welche Richtung sie fahren müssen?
  • Welche Bewegungen muss das Auto ausführen können, um in einer Stadt durch Straßen zu fahren, die nach Norden, Süden, Osten und Westen verlaufen?

Geben Sie den Schülerinnen und Schülern Zeit, diese Fragen zu beantworten:

Ermutigen Sie die Teams dazu, ihre ersten Ideen zu dokumentieren und zu begründen, warum sie diese oder jene Lösung für den ersten Prototyp ausgewählt haben. Fragen Sie, wie man die ausgewählten Ideen im weiteren Verlauf des Projekts beurteilen könnte. Wenn die Teams später ihre Arbeit überprüfen und überarbeiten, haben sie so bereits genaue Anhaltspunkte, die sie zum Beurteilen ihrer Lösung heranziehen können. Darauf aufbauend können sie entscheiden, ob die Lösung ihren Zweck erfüllt oder nicht.

Ein Pseudocode ist ein praktisches Hilfsmittel, mit dem die Schülerinnen und Schüler ihre Gedanken ordnen können, bevor sie mit dem Programmieren beginnen.

Bautipps

Lassen Sie die Teams zuerst ein Fahrzeug bauen. Sie können entweder eines der vorgeschlagenen LEGO® Education MINDSTORMS® EV3 Fahrgestell-Modelle oder ein eigenes Modell bauen. Achten Sie darauf, dass die Knöpfe oben auf dem EV3 Stein frei zugänglich sind. Über diese Knöpfe wird die Fahrtrichtung gesteuert.

ev3-robot-driving-base

Programmiertipps

Erklären Sie Ihren Schülerinnen und Schülern, dass sie ihren Roboter so programmieren werden, dass er sich entsprechend einer Reihe von gespeicherten Anweisungen bewegt, die durch Drücken der Tasten auf dem EV3 Stein aktiviert werden. Diese Parameter sollten verwendet werden:

  • Wenn die Nach-oben-Taste angestoßen wird, bewegt sich der Roboter 30 cm vorwärts.
  • Wenn die Nach-unten-Taste angestoßen wird, bewegt sich der Roboter 30 cm rückwärts.
  • Wenn die linke Taste angestoßen wird, dreht sich der Roboter um 90 Grad nach links.
  • Wenn die rechte Taste angestoßen wird, dreht sich der Roboter um 90 Grad nach rechts.

Roboter mit einer gespeicherten Aktion bewegen

coding-08-01

Erläuterung des Programms

  1. Programm ausführen.

  2. Einen Variablen-Block namens „Fahren“ erstellen.

  3. Warten, bis eine Taste auf dem Stein angestoßen wird.

  4. Klang „Klick 2“ abspielen.

  5. Numerischen Wert der gedrückten Taste in der Variablen „Fahren“ aufzeichnen.

  6. 2 Sekunden warten.

  7. Klang „G02“ abspielen.

  8. Die in der Variablen „Fahren“ gespeicherte Zahl auslesen und den Wert an einen Schalter senden.

  9. Numerischer Schalter:

    a. Wenn Fahren = 0 (Standardeinstellung), nichts tun.
    b. Wenn Fahren = 1, den Roboter eine Linkskurve fahren lassen.
    c. Wenn Fahren = 3, den Roboter eine Rechtskurve fahren lassen.
    d. Wenn Fahren = 4, den Roboter 2 Radumdrehungen vorwärts fahren lassen.
    e. Wenn Fahren = 5, den Roboter 2 Radumdrehungen rückwärts fahren lassen.

  10. Klang „Game over 2“ abspielen.

Roboter mit mehreren gespeicherten Aktionen bewegen

Der Array-Operationen-Block wird zum Speichern einer Datensequenz verwendet. Man kann ihn auch als Tabelle beschreiben, die aus einer einzelnen Reihe und mehreren Spalten besteht.

coding-08-02

Erläuterung der Lösung

  1. Programm ausführen.
  2. Einen Variablen-Block namens „Fahren“ erstellen. Option „Numerisches Arrayschreiben“ auswählen.
  3. Eine Schleife erstellen. Im Beispielprogramm wird die Schleife fünfmal ausgeführt.
  4. Warten, bis eine Taste auf dem Stein angestoßen wird.
  5. Klang „Klick“ abspielen.
  6. Variablen-Block „Fahren“ auslesen. Option „Numerisches Array auslesen“ auswählen.
  7. Array-Operationen-Block verwenden. „Schreiben bei Index – Numerisches Array“ auswählen.

a. Variablen-Block „Fahren“ über eine Datenleitung integrieren.
b. Schleifen-Index zu Beginn der Schleife über eine Datenleitung an die Indexposition des Array-Operationen-Blocks anschließen.
c. Wert des Blocks „Warten bis EV3 Taste“ über eine Datenleitung mit der Wertposition des Array-Operationen-Blocks verbinden.

  1. Ausgabe des Array-Operationen-Blocks in den Variablen-Block „Fahren“ schreiben.
  2. 2 Sekunden warten.
  3. Klang „Go“ abspielen.
  4. Eine zweite Schleife erstellen. Im Beispielprogramm wird die Schleife fünfmal ausgeführt (wie bei der ersten Schleife).
  5. Variablen-Block „Fahren“ auslesen. Option „Numerisches Array auslesen“ auswählen.
  6. Array-Operationen-Block verwenden. „Lesen bei Index – Numerisches Array“ auswählen.
  7. Numerischer Schalter:

a. Wenn Fahren = 0 (Standardeinstellung), nichts tun.
b. Wenn Fahren = 1, den Roboter eine Linkskurve fahren lassen.
c. Wenn Fahren = 3, den Roboter eine Rechtskurve fahren lassen.
d. Wenn Fahren = 4, den Roboter 2 Radumdrehungen vorwärts fahren lassen.
e. Wenn Fahren = 5, den Roboter 2 Radumdrehungen rückwärts fahren lassen.

15 Klang „Game over 2“ abspielen.

Beispielprogramme herunterladen 32 kB, erfordert die EV3 Desktop-Software

Register „1“ und „2“

Programmierlösung EV3 MicroPython

Roboter mit einer gespeicherten Aktion bewegen

#!/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)

Roboter mit mehreren gespeicherten Aktionen bewegen

#!/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)

Erweiterungen

Erweiterung: sprachliche Ausdrucksfähigkeit

Option 1
Textbasiertes Programmieren:

  • Lassen Sie die Schülerinnen und Schüler textbasierte Programmierlösungen erkunden, damit sie verschiedene Programmiersprachen miteinander vergleichen können.

Option 2
Für diese Aufgabe haben die Teams ein fahrerloses Auto entwickelt, das Befehle aus einem Array befolgen kann. Was wäre, wenn die fahrerlosen Autos der Zukunft so programmiert werden könnten, dass die Eingaben des menschlichen Fahrers übersteuert werden?
Um die sprachliche Ausdrucksfähigkeit zu fördern, können Sie die Schülerinnen und Schüler Folgendes tun lassen:

  • Schriftlich ein Argument dafür ausformulieren, dass fahrerlose Autos nicht in der Lage sein sollten, ihre Geschwindigkeit autonom zu steuern, wenn der Insasse einen anderen Befehl gibt
  • Spezifische Beweise anbringen, die die Validität des Arguments unterstützen (Beispiele für spezifische Situationen, in denen dies für den Insassen ein Nachteil wäre)
  • Das Gegenargument diskutieren, dass die autonome Geschwindigkeitsregelung eine wirkungsvolle Strategie darstellen könnte, um die Verkehrssicherheit bzw. die Sicherheit der Insassen zu verbessern

Erweiterung: Mathematik

Für diese Aufgabe haben die Teams eine Abfolge von Befehlen erstellt, die das fahrerlose Auto Schritt für Schritt befolgen sollte. Mit Sensoren und dem maschinellen Lernen können fahrerlose Autos Befehle befolgen und die Ausführung dieser Anweisungen basierend auf neuen Bedingungen anpassen.
Um mathematische Fähigkeiten zu fördern und Anwendungen des maschinellen Lernens im Bereich der fahrerlosen Autos zu erforschen, geben Sie den Teams ein „Budget“ für eine bestimmte Anzahl an Versuchen vor. Lassen Sie die Schülerinnen und Schüler dann Folgendes tun:

  • Ein Raster zeichnen, dass die Straßen einer Stadt darstellen soll (z. B. 5 Straßen von West nach Ost und 5 Straßen von Nord nach Süd) sowie einen Ausgangspunkt und ein Ziel festlegen
  • Vor dem Hintergrund, dass der Weg mit den wenigsten Kurven der beste ist, drei Kreuzungen zwischen dem Ausgangspunkt und dem Ziel analysieren
  • Die Wahrscheinlichkeit bestimmen, dass ihr Fahrzeug in eine zufällige Richtung startet und am Ziel ankommt, ohne das Budget zu überschreiten

Leistungsbewertung

Checkliste für Beobachtungen
Erstellen Sie eine geeignete Bewertungsskala, wie zum Beispiel:

  1. Erwartungen zum Teil erfüllt
  2. Erwartungen vollständig erfüllt
  3. Erwartungen übertroffen

Nutzen Sie die folgenden Kriterien, um den Lernfortschritt der Schülerinnen und Schüler zu beurteilen:

  • Sie können die wichtigsten Elemente eines Problems bestimmen.
  • Sie können selbstständig eine kreative Lösung finden und entwickeln.
  • Sie können ihre Ideen klar und deutlich kommunizieren.

Selbsteinschätzung
Wenn die Teams einige Leistungsdaten zusammengetragen haben, geben Sie ihnen Zeit, um über ihre Lösungen nachzudenken. Geben Sie Impulse durch Fragen wie:

  • Erfüllt die Lösung die Kriterien aus der Konstruktionsaufgabe?
  • Könnte man die Bewegung(en) des Roboters noch präziser gestalten?
  • Wie haben andere Teams die Aufgabe gelöst?

Bitten Sie die Teams, Ideen dazu zu sammeln, wie sie ihre Lösungen verbessern könnten. Anschließend sollen sie zwei Verbesserungsmöglichkeiten dokumentieren.

Gegenseitiges Feedback
Regen Sie eine Art „Peer-Review“ an, bei der jedes Team das eigene Projekt und die Projekte der anderen Teams beurteilen soll. Dieser Beurteilungsprozess hilft den Schülerinnen und Schülern dabei, ihre Fähigkeit zu konstruktiver Kritik zu entwickeln. Außerdem lernen sie dabei, auf Grundlage objektiver Daten zu argumentieren und zu urteilen.

In welchen Berufen sind diese Fähigkeiten gefragt?

Schülerinnen und Schüler, die sich für diese Aufgabe begeistern, könnten sich auch für folgende Berufszweige interessieren:

  • Wirtschaft und Finanzen (Unternehmen)
  • Fertigungstechnik und Maschinenbau (Planungsbüros)

Unterstützung für Lehrkräfte

Die Schülerinnen und Schüler werden
den Konstruktionsprozess nutzen, um ein Problem mit Alltagsbezug zu lösen.

Informatik

Standards für inhaltsbezogene Kompetenzen
• Angewandte Informatik
• Softwaretechnik
◦ Planung und Durchführung kooperativer Arbeitsabläufe
• Programmiersprachen, formale Sprachen, Sprachen und Automaten, Datenstrukturen
• Technische Informatik
◦ Einblick in die Prozessdatenverarbeitung: Signal, Daten, Datentransport, Messen, Steuern, Regeln
• Algorithmen
◦ Analyse, Entwurf und Implementierung einfacher Algorithmen
◦ Beherrschen der Implementierung ausgewählter Algorithmen in einer Programmierumgebung
• Informatik, Mensch und Gesellschaft
◦ Einsatz von Informatiksystemen
◦ Wirkungen und Grenzen der Automatisierung
• Vernetzung von Themenfeldern

Prozessbezogene Kompetenzen
• Argumentieren
• Modellieren
• Implementieren
• Darstellen und Interpretieren
• Kommunizieren und Kooperieren
• Projektorientierter Unterricht
◦ Kooperieren und Kommunizieren
◦ Kreatives Schaffen und Problemlösen

Technik

Standards für inhaltsbezogene Kompetenzen
• Technische Innovation
◦ Einfluss von Grundlagenforschung auf die Produkt- und Anwendungsentwicklung
• Automatisierungstechnik
◦ Digitale Sensoren und Aktoren
◦ Logik-Bausteine, Speicher und Zähler
◦ Speicherprogrammierbare Systeme
• Entwicklungsfelder neuer Technologien, Zukunftstechnologien
◦ Informations- und Kommunikationstechnologie

Mathematik und Physik

• Diverse Grundlagen aus dem Mathematikunterricht
• Alle aufgeführten prozessbezogenen Kompetenzen

Naturwissenschaft und Technik (Schulversuch Leistungsfach und Basisfach Baden-Württemberg)

Standards für inhaltsbezogene Kompetenzen
• Denk- und Arbeitsweisen in NwT
◦ Systeme und Prozesse
◦ Technische und wissenschaftliche Handlungskompetenzen
◦ Technikfolgenabschätzung
• Technische Mechanik und Produktentwicklung
◦ Produktentwicklung
• Elektro- und Informationstechnik
◦ Messen, Steuern, Regeln
◦ Datenkommunikation

Prozessbezogene Kompetenzen
• Erkenntnisgewinnung und Forschen
• Entwicklung und Konstruktion
• Kommunikation und Organisation
• Bedeutung und Bewertung

IMPLIZIT: Ethik

Standards für inhaltsbezogene Kompetenzen
• Verantwortung und angewandte Ethik
◦ Verantwortungsethik
• Werte und Normen des Handelns
◦ Nützlichkeit und Pflicht als ethische Prinzipien
◦ Verantwortung in ethischen Anwendungskontexten
• Fragen nach der Freiheit
◦ Sich zum Spannungsfeld von Freiheit und Verantwortung positionieren
• Fragen nach dem guten Handeln
◦ Kennen des Zusammenhangs von Verantwortung und moralischer Rechtfertigung
◦ Beurteilen der ethischen Diskurse in der pluralen Gesellschaft

Prozessbezogene Kompetenzen
• Wahrnehmen und sich hineinversetzen
• Analysieren und interpretieren
• Argumentieren und reflektieren
• Beurteilen und (sich) entscheiden

Deutsch

Standards für inhaltsbezogene Kompetenzen
• Texte und andere Medien

Materialien für Schülerinnen und Schüler

Schülerarbeitsblatt

Als HTML-Webseite oder PDF-Datei zum Ausdrucken herunterladen, anzeigen oder weiterleiten.

Teilen mit:

Google ClassroomGoogle Classroom