Skip to main content

Lezione 1: Che cos'è un algoritmo?

In questa lezione, imparerai cos'è un algoritmo e come l'utilizzo di algoritmi in VEXcode VR Python ti consente di creare progetti con comportamenti più diversi. I progetti algoritmici istruiscono il robot VR a rispondere al suo ambiente, che sarà necessario per risolvere la Dynamic Castle Crasher Challenge.

Risultati di apprendimento

  • Identifica che gli algoritmi sono costituiti da sequenza, selezione e iterazione (loop).
  • Identificare che gli algoritmi sono sequenze precise di istruzioni, implementate utilizzando linguaggi di programmazione, per i processi che devono essere eseguiti da un robot VR.

Algoritmi

Gli algoritmi sono sequenze precise di istruzioni, implementate utilizzando linguaggi di programmazione, come VEXcode VR Python, per i processi che devono essere eseguiti da un robot VR.

Gli elementi di base di un algoritmo sono sequenza, selezione e iterazione.

  • Sequenza - l'ordine in cui comportamenti e comandi sono combinati in un progetto al fine di produrre un risultato desiderato.     
  • Selezione - l'uso di dichiarazioni condizionali in un progetto. Dichiarazioni condizionali, come se o se altro influisce sul flusso di progetto di un progetto.
  • Iterazione : gli algoritmi utilizzano spesso la ripetizione per eseguire passaggi un certo numero di volte o fino a quando non viene soddisfatta una determinata condizione. Questo è anche noto come "looping". L'iterazione può modificare il flusso del progetto ripetendo un comportamento un numero specificato di volte o fino a quando non viene soddisfatta una condizione.  

Questo progetto esemplificativo della sfida dell'Unità 8 è un esempio di algoritmo. Include una combinazione di loop, dati del sensore e comandi messi insieme in una sequenza per risolvere la Disk Mover Challenge.

def main():
	per valore in range(3):
		
		per valore in range(3):
			# 1. Drive to disk using Down Eye Sensor
			while not down_eye.near_object():
				drivetrain.drive(FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 2. Prendi il magnete del
			disco.			Energizza (BOOST)
			
			# 3. Guidare verso l'obiettivo utilizzando il sensore
			di distanza 			drivetrain.turn_to_heading (180, GRADI)
			mentre front_distance.get_distance (MM) > 200
				: 				drivetrain.drive (FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 4. Drop disk in goal
			magnet.energize(DROP)
			drivetrain.drive_for(REVERSE, 100, MM)
			
			# 5. Ruotare verso il disco successivo driveetrain.turn_to_heading
			(0, GRADI)
			wait(5, MSEC)
			
		# 6. Girare e guidare verso il prossimo obiettivo
		drivetrain.turn_to_heading(90, GRADI)
		drivetrain.drive_for(AVANTI, 800, MM)
		
		# 7. Passare ai dischi
		drivetrain.turn_to_heading(0, GRADI)
		
	wait(5, MSEC)

Sequenza

Il modo in cui i comandi sono sequenziati e combinati determina i comportamenti del robot VR. In questo esempio, ogni insieme di comportamenti necessari per spostare un disco viene eseguito tre volte, quindi il robot VR passa al successivo insieme di dischi e ripete i comportamenti, fino a quando tutti i dischi non vengono restituiti agli obiettivi. Un diagramma di flusso che mostra la sequenza di raccolta del disco del robot. A sinistra, il codice visualizza il loop principale che si ripete tre volte. Le frecce cicliche rosse sulla destra indicano cicli continui che vengono eseguiti fino a quando non vengono soddisfatte le condizioni del sensore (come trovare o afferrare un disco), mentre le frecce verdi mostrano le transizioni tra la raccolta del disco, lo spostamento verso l'obiettivo, il rilascio e il riposizionamento per il ciclo successivo.

Selezione

Questo progetto include anche la selezione che determina le parti del progetto che vengono eseguite in base alle condizioni del sensore. Innanzitutto, il sensore Down Eye viene utilizzato per determinare quando il robot VR è vicino a un disco, in modo che il disco possa essere prelevato. Quindi, il sensore di distanza viene utilizzato per determinare quando il robot VR è oltre l'obiettivo, in modo che il disco possa essere lasciato cadere.  Il frammento di codice dall'Unità 8 include due condizioni evidenziate mentre che controllano il movimento del robot in base alle letture del sensore. La prima condizione evidenziata, mentre non è down_eye.near_object(), indica al robot di avanzare fino a quando il sensore Down Eye non rileva un oggetto vicino, consentendogli di avvicinarsi a un disco prima di fermarsi. La seconda condizione evidenziata, mentre front_distance.get_distance (MM) > 200, indica al robot di avanzare fino a quando non si trova entro 200 millimetri dall'obiettivo, utilizzando il sensore di distanza anteriore per la misurazione della prossimità. Queste condizioni while creano loop che fanno fermare il robot solo quando viene soddisfatta ogni specifica condizione del sensore.

Nel primo ciclo while , la selezione dei comandi da eseguire si basa sui valori del sensore segnalati dal sensore Down Eye.

  • Mentre non viene rilevato alcun oggetto, il robot VR avanzerà.
  • Mentre viene rilevato un oggetto, il robot VR si fermerà.

Nel secondo ciclo while , la selezione del comando da eseguire si basa sui valori del sensore segnalati dal sensore di distanza.

  • Mentre la distanza riportata è superiore a 200 millimetri (mm), il robot VR avanzerà.
  • Mentre la distanza riportata è inferiore a 50 millimetri (mm), il robot VR smetterà di guidare e passerà alla parte successiva del progetto per alimentare l'elettromagnete.

Iterazione

Il progetto utilizza l'iterazione, o "loop", per ripetere le azioni e controllare ripetutamente i valori dei sensori riportati. Questo progetto contiene loop nidificati: un loop in modo che il robot VR possa raccogliere tutti e tre i dischi di un colore; e un secondo loop per ripetere quel processo per raccogliere tutti i dischi nel parco giochi. Il codice utilizza due cicli annidati per controllare il processo di raccolta del disco del robot. Il loop esterno, etichettato Loop per raccogliere dischi di ogni colore, scorre attraverso ogni colore del disco. Al suo interno, il loop interno, etichettato Loop per raccogliere 3 dischi di un colore, si ripete tre volte per raccogliere e posizionare tre dischi del colore corrente. Questa configurazione garantisce che il robot raccolga tre dischi di ciascun colore prima di passare al colore successivo, con ogni iterazione del ciclo incentrata sulla raccolta e il posizionamento sistematici.

Questo algoritmo è progettato per raccogliere e restituire tre dischi, tre volte, per completare la Disk Mover Challenge. La stessa logica applicata per raccogliere e spostare i dischi ripetutamente utilizzando sequenza, selezione e iterazione può essere applicata anche ad altre sfide, come la Dynamic Castle Crasher Challenge.

Domande

Seleziona un link qui sotto per accedere al quiz della lezione.

Google Doc / .docx / .pdf