Crea un'auto con guida senza conducente
Progetta un veicolo autonomo che segua i comandi di guida stabiliti dall'utente.
Piano della lezione
Preparazione
- Leggi il materiale per l'insegnante.
- Se lo ritieni necessario, pianifica una lezione utilizzando il materiale introduttivo presente nel software EV3 Lab o nell'app EV3 Programming per aiutare gli studenti a familiarizzare con LEGO® MINDSTORMS® Education EV3.
Coinvolgimento (30 min.)
- Utilizza le idee suggerite nella sezione Avvia una discussione riportata di seguito per coinvolgere gli studenti in una discussione incentrata sul progetto.
- Spiega il progetto.
- Dividi la tua classe in team composti da due studenti.
- Concedi agli studenti il tempo necessario per scambiarsi le idee.
Esplorazione (30 min.)
- Chiedi agli studenti di creare vari prototipi.
- Incoraggiali a esplorare sia la costruzione che la programmazione.
- Chiedi ad ogni coppia di studenti di costruire e testare due soluzioni.
Spiegazione (60 min.)
- Invita gli studenti a testare le proprie soluzioni e a scegliere la migliore.
- Accertati che siano in grado di creare le proprie tabelle di test.
- Concedi ad ogni team il tempo necessario per completare il proprio progetto e raccogliere risorse per documentare il lavoro svolto.
Elaborazione (60 min.)
- Concedi agli studenti il tempo necessario per elaborare i report finali.
- Avvia una sessione di condivisione in cui ogni team presenta i risultati ottenuti.
Valutazione
- Fornisci un riscontro su ciò che ogni studente ha realizzato.
- Per semplificare la procedura, puoi utilizzare le sezioni di valutazione fornite.
Avvia una discussione
Oggi, esistono numerosi sistemi di navigazione utilizzati nelle automobili. Alcuni di questi hanno lo scopo di sostituire il conducente e di portare i passeggeri a destinazione in tutta sicurezza. Prima di stabilire quale sia il percorso migliore tra i punti A e B, le auto a guida autonoma devono essere in grado di eseguire una serie di movimenti basati sull'input fornito dall'utente.
Incoraggia un processo di brainstorming attivo.
Chiedi agli studenti di riflettere su queste domande:
- Cosa sono le auto a guida autonoma e come funzionano?
- Da dove ricavano le indicazioni di movimento?
- Quali movimenti l'auto deve eseguire per spostarsi lungo una serie di strade urbane su una griglia nord, sud, est, ovest?
Concedi agli studenti il tempo necessario per rispondere a queste domande.
Incoraggia gli studenti a documentare le loro idee iniziali e a spiegare perché hanno scelto la soluzione che utilizzeranno per creare il loro primo prototipo. Invitali a descrivere la modalità di valutazione delle loro idee durante tutto il progetto. In questo modo, quando gli studenti eseguiranno la verifica e la revisione, disporranno di informazioni specifiche da utilizzare per valutare la soluzione e decidere se è stata o meno efficace.
Lo pseudocodice è un ottimo strumento per aiutare gli studenti a organizzare pensieri e idee prima di iniziare a programmare.
Suggerimenti per la costruzione
Inizia costruendo un veicolo. Gli studenti possono utilizzare uno dei modelli di struttura motrice LEGO® MINDSTORMS® EV3 suggeriti o progettarne uno proprio. Verifica che i pulsanti sulla parte superiore del mattoncino EV3 siano facilmente accessibili. In questa attività, dovranno infatti essere utilizzati per controllare la direzione del movimento.
Suggerimenti per la programmazione
Spiega agli studenti che dovranno programmare il proprio robot in modo che si sposti in base a una serie di istruzioni registrate e fornite utilizzando i pulsanti sul mattoncino EV3. Utilizza questi parametri:
- Pressione e rilascio del pulsante Su, il robot avanza di 30 cm
- Pressione e rilascio del pulsante Giù, il robot indietreggia di 30 cm
- Pressione e rilascio del pulsante Sinistra, il robot gira di 90 gradi a sinistra
- Pressione e rilascio del pulsante Destra, il robot gira di 90 gradi a destra
Registrazione di un'azione per il movimento del robot
Spiegazione del programma
Avvia il programma.
Crea un Blocco Variabili chiamato "Guida".
Attendi che un pulsante del mattoncino sia premuto e rilasciato.
Riproduci il suono "Clic 2".
Registra nella variabile "Guida" il valore numerico del pulsante premuto.
Attendi 2 secondi.
Riproduci il suono "G02".
Leggi il numero memorizzato nella variabile "Guida" e invia il valore a un selettore.
Selettore numerico:
a. Se Guida = 0 (caso predefinito), non fare nulla.
b. Se Guida = 1, dirigi la svolta del robot verso sinistra.
c. Se Guida = 3, dirigi la svolta del robot verso destra.
d. Se Guida = 4, fai avanzare il robot in linea retta per 2 rotazioni delle ruote.
e. Se Guida = 5, fai spostare il robot all'indietro in linea retta per 2 rotazioni delle ruote.Riproduci il suono "Fine del gioco 2".
Registrazione di più azioni per il movimento del robot
Il Blocco delle operazioni sui vettori viene utilizzato per archiviare una sequenza di dati ed è spesso descritto come una tabella costituita da una singola riga con più colonne.
Spiegazione della soluzione
- Avvia il programma.
- Crea un Blocco Variabili chiamato "Guida". Scegli l'opzione "Scrivivettore numerico".
- Crea un ciclo. Il codice di esempio è impostato su 5 esecuzioni.
- Attendi che un pulsante del mattoncino sia premuto e rilasciato.
- Riproduci il suono "Clic".
- Configura il Blocco Variabili "Guida". Scegli l'opzione "Leggivettore numerico".
- Utilizza il Blocco delle operazioni sui vettori. Scegli "Scrivi all'indice - Numerico".
a. Collega il Blocco Variabili "Guida".
b. Collega l'indice del ciclo dalla parte anteriore del ciclo alla posizione dell'indice sul Blocco delle operazioni sui vettori.
c. Collega il valore dall'Attesa del blocco del pulsante EV3 alla posizione del valore sul Blocco delle operazioni sui vettori.
- Collega l'uscita del Blocco delle operazioni sui vettori al Blocco Variabili "Guida".
- Attendi 2 secondi.
- Riproduci il suono "Go".
- Creare un secondo ciclo. Il codice di esempio è impostato su 5 esecuzioni, lo stesso numero di volte del primo ciclo.
- Configura il Blocco Variabili "Guida".
Scegli l'opzione "Leggi vettore numerico".
13. Utilizza il Blocco delle operazioni sui vettori. Scegli l'opzione "Leggi all'indice - Numerico".
14.Selettore numerico:
a. Se Guida = 0 (caso predefinito), non fare nulla.
b. Se Guida = 1, dirigi la svolta del robot verso sinistra.
c. Se Guida = 3, dirigi la svolta del robot verso destra.
d. Se Guida = 4, fai avanzare il robot in linea retta per 2 rotazioni delle ruote.
e. Se Guida = 5, fai spostare il robot all'indietro in linea retta per 2 rotazioni delle ruote.
- Riproduci il suono "Fine del gioco 2".
Schede "1" e "2"
Soluzioni del programma EV3 MicroPython
Registrazione di un'azione per il movimento del robot
#!/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)
Registrazione di più azioni per il movimento del robot
#!/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)
Estensioni
Miglioramento delle capacità linguistiche
Opzione 1
Utilizzo della programmazione basata su testo:
- Chiedi agli studenti di esplorare soluzioni di programmazione basate su testo, in modo da poter confrontare diversi linguaggi di programmazione.
Opzione 2
In questa lezione, gli studenti hanno creato un'auto senza conducente che funzionava secondo le istruzioni impartitele in un vettore. E se si potessero programmare le auto senza conducente del futuro in modo che sostituiscano gli input forniti dai conducenti umani?
Per promuovere lo sviluppo delle capacità linguistiche, invita gli studenti a:
- Scrivere un'argomentazione a sostegno dell'affermazione secondo la quale le auto senza conducente non dovrebbero essere in grado di controllare autonomamente la loro velocità nonostante l'input dei passeggeri
- Includere prove specifiche a sostegno della validità di questa affermazione, citando esempi di situazioni in cui ciò potrebbe lasciare il passeggero in una posizione di svantaggio
- Confutare la contro-affermazione secondo la quale il controllo autonomo della velocità da parte delle auto senza conducente potrebbe essere una strategia efficace per aumentare la sicurezza dei conducenti o del traffico
Miglioramento delle capacità matematiche
In questa lezione, gli studenti hanno creato una sequenza di istruzioni passo-passo per un'auto senza conducente. Utilizzando sensori e Machine Learning, le auto senza conducente possono seguire le istruzioni e modificarne l'esecuzione in base a nuove condizioni.
Per incorporare lo sviluppo di competenze matematiche ed esplorare le applicazioni di Machine Learning per le auto senza conducente, assegna ai tuoi studenti un "budget" di un certo numero di curve. Chiedi loro di:
- Creare una griglia che rappresenta le strade della città (ad esempio, cinque strade che vanno da est a ovest e cinque strade che vanno da nord a sud)
- Scegliere un punto di partenza e una destinazione. Tenendo presente che il percorso con il minor numero di curve è il migliore, analizzare tre intersezioni tra il punto di partenza e la destinazione
- Determinare la probabilità di arrivo a destinazione del veicolo "sotto budget" in una direzione casuale
Opportunità di valutazione
Checklist di osservazione per l’insegnante
Crea una scala adeguata alle tue esigenze, ad esempio:
- Obiettivo parzialmente raggiunto
- Obiettivo completamente raggiunto
- Obiettivo superato
Per valutare i progressi compiuti dagli studenti, utilizza i seguenti criteri:
- Gli studenti sono in grado di identificare gli elementi chiave di un problema.
- Gli studenti riescono a sviluppare autonomamente una soluzione funzionante e creativa.
- Gli studenti comunicano chiaramente le proprie idee.
Autovalutazione
Concedi agli studenti il tempo necessario per raccogliere alcuni dati su ciò che hanno realizzato e per riflettere sulle loro soluzioni. Per aiutarli, potresti porre domande quali:
- Questa soluzione soddisfa i criteri indicati nella descrizione del progetto?
- È possibile rendere più accurati i movimenti del robot?
- Quali sono le possibili risoluzioni del problema applicate da altri?
Chiedi agli studenti di impegnarsi in una sessione di brainstorming e di documentare due possibili miglioramenti delle loro soluzioni.
Riscontro dei compagni
Proponi una verifica tra pari, in modo che ciascun gruppo sia responsabile della valutazione dei propri progetti e di quelli degli altri. Questo processo di revisione può stimolare gli studenti a sviluppare e affinare le capacità di critica costruttiva e analisi e di utilizzo di dati obiettivi a supporto di un'argomentazione.
Link per l’orientamento professionale
Gli studenti che hanno apprezzato questa lezione potrebbero essere interessati ai seguenti percorsi di studio:
- Economia e finanza (imprenditoria)
- Produzione e ingegneria (valutazione dei progetti)
Supporto per l'insegnante
Gli studenti saranno in grado di:
Utilizzare il processo di progettazione per risolvere un problema inerente una situazione reale
Collegamenti con il programma curricolare per Licei scientifici, Licei scientifici delle scienze applicate, e Istituti tecnici
- utilizzare criticamente strumenti informatici e telematici per svolgere attività di studio e di approfondimento, per fare ricerca e per comunicare, in particolare in ambito scientifico e tecnologico;
- utilizzare gli strumenti e le metodologie dell’informatica nell’analisi dei dati, nella formalizzazione e modellizzazione dei processi complessi e nell’individuazione di procedimenti risolutivi;
- utilizzare le strutture logiche, i modelli e i metodi della ricerca scientifica, e gli apporti dello sviluppo tecnologico, per individuare e risolvere problemi di varia natura, anche in riferimento alla vita quotidiana;
- individuare le caratteristiche e l’apporto dei vari linguaggi (storico-naturali, simbolici, matematici, logici, formali, artificiali);
- comprendere il ruolo della tecnologia come mediazione fra scienza e vita quotidiana;
- approfondire la realizzazione e la conduzione dei sistemi di trasporto.
Materiale per studenti
Foglio di lavoro per lo studente
Download to view and share the student worksheet.