Skip to main content

Lezione 2: Guida verso il numero "5"

In questa lezione, il robot VR guiderà verso il numero "5" e tornerà al numero "1" nel parco giochi della mappa della griglia dei numeri!

Immagine dall'alto verso il basso del parco giochi della mappa della griglia numerica. Il robot VR può essere visto nell'angolo in basso a sinistra sul numero 1. Un callout può essere visto al centro della riga inferiore sul numero 5.

Si noti che il robot VR viaggerà lungo l'asse X con valori X crescenti per passare al numero "5" nel parco giochi della mappa della griglia numerica.

Parco giochi con mappa a griglia numerica con l'asse x sovrapposto al centro del parco giochi. Il centro di ogni quadrato è contrassegnato con il valore dell'asse X, a partire da -900 sul lato sinistro e aumentando di 200 ogni quadrato a 900 sul lato destro. Un robot VR può essere visto sul numero 1 nell'angolo in basso a sinistra con una freccia che punta al numero 5.

Il robot VR guiderà fino alla posizione del numero "5" nel parco giochi della mappa della griglia numerica. Tuttavia, prima che il robot VR possa raggiungere quel numero, al robot VR deve essere detto dove si trova quel numero. A partire dal centro del parco giochi, le coordinate del numero "5" sono (-100, -900).

Angolo in basso a sinistra del campo da gioco della mappa della griglia numerica con gli assi x e y sovrapposti. Viene mostrata una freccia da meno 100 sull'asse x al numero 5 e meno 900 sull'asse y al numero 5. Il robot VR è ancora sul numero 1 con le coordinate negative 900, negative 900 sotto il robot.

  • Per iniziare, il robot VR deve essere rivolto verso il numero "5". Trascina o digita un comando turn_for.
# Add project code in "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)
  • Trascinare un ciclo while sotto il comando turn_for . Il tuo progetto dovrebbe essere simile a questo:
# Add project code in "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while condition:
        wait(5, MSEC)
  • Proprio come l'unità sensore di distanza, questo progetto utilizzerà la condizione della posizione del sensore di posizione con un operatore di confronto per navigare nel parco giochi della mappa della griglia dei numeri. Imposta la condizione per il ciclo while sul comando posizione sull'asse X a un valore inferiore a -100 in millimetri (mm). Il tuo progetto dovrebbe essere simile a questo:
# Add project code in "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        wait(5, MSEC)
  • Trascinare o digitare il comando non in attesa drive all'interno del ciclo while. Il tuo progetto dovrebbe essere simile a questo:
# Add project code in "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
  • Si noti che l'operatore minore di viene utilizzato al posto dell'operatore maggiore di perché il robot VR sta guidando a destra dal lato sinistro del parco giochi. Il robot VR parte da un valore X di -900 millimetri (mm). Man mano che il robot VR avanza, i valori X aumentano e quindi il robot continuerà ad avanzare mentre il valore X è inferiore a -100.

Angolo in basso a sinistra del campo da gioco della mappa della griglia numerica con gli assi x e y sovrapposti. Viene mostrata una freccia da meno 100 sull'asse x al numero 5 e meno 900 sull'asse y al numero 5. Il robot VR è ancora sul numero 1 con le coordinate negative 900, negative 900 sotto il robot.

Per tua informazione

Dovrai scegliere quale operatore di confronto utilizzare nel tuo progetto, a seconda della direzione in cui desideri che il Robot VR viaggi lungo l'asse X o Y. Quando il robot VR si sta muovendo verso un valore maggiore, l'operatore minore di (<) verrà utilizzato con un ciclo while ; quando il robot VR si sta muovendo verso un valore minore, l'operatore maggiore di (>) verrà utilizzato con un ciclo while .

Questo si allinea con i movimenti a sinistra e a destra quando si guarda il parco giochi. Se il robot VR si muove da sinistra a destra o dal basso verso l'alto (valori maggiori), l'operatore minore di viene utilizzato per guidare mentre la posizione è inferiore al valore target. 

Due viste dall'alto verso il basso del parco giochi della mappa della griglia dei numeri. Nel primo, il robot VR viene mostrato sul numero 51 con una freccia che indica che il robot si sposterà a destra verso il numero 60. Il testo sopra recita "guida mentre la posizione è inferiore a". Nel secondo, il robot VR viene mostrato sul numero 6 con una freccia che indica che il robot si sposterà fino al numero 96. Il testo sopra recita "guida mentre la posizione è inferiore a".

Se il robot VR si muove da destra a sinistra o dall'alto verso il basso (valori più piccoli), l'operatore maggiore di viene utilizzato per guidare mentre la posizione è maggiore del valore target.

Due viste dall'alto verso il basso del parco giochi della mappa della griglia dei numeri. Nel primo, il robot VR viene mostrato sul numero 60 con una freccia che indica che il robot si sposterà a sinistra verso il numero 51. Il testo sopra recita "guida mentre la posizione è maggiore di". Nel secondo, il robot VR viene mostrato sul numero 96 con una freccia che indica che il robot si sposterà verso il basso fino al numero 6. Il testo sopra recita "guida mentre la posizione è maggiore di".

Utilizzando gli operatori di confronto, il Robot VR viaggerà mentre il valore riportato dal Sensore di Posizione è maggiore di (>) o minore di (<) il valore di soglia. In questo esempio, il robot VR passerà a 500 millimetri (mm) positivi sull'asse X. Il robot VR guiderà mentre la posizione sull'asse X è compresa tra 0 e 499 positivo. Quando il sensore di posizione segnala che la posizione è 501 o superiore, il robot VR smetterà di guidare. 

# Add project code in "main"
def main():
    monitor_sensor(location.position)
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < 500:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

Si noti che il valore riportato dal sensore di posizione non è esattamente di 500 millimetri (mm). Come il sensore di distanza, gli operatori di confronto vengono utilizzati a causa del tempo necessario al robot VR per scorrere i valori del progetto e del report.

  • Trascina o digita un comando stop all'esterno del ciclo while. Il tuo progetto dovrebbe essere simile a questo:
# Add project code in "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
  • Aprire la finestra del parco giochi  se non è già aperta. Assicurarsi che il Number Grid Map Playground si apra ed eseguire il progetto.
  • Guarda il robot VR guidare al numero "5" nel parco giochi della mappa della griglia dei numeri.

Immagine dall'alto verso il basso del parco giochi della mappa della griglia numerica. Il Robot VR è visibile in basso sul numero 5.

  • In questo progetto, il robot VR si sposta sul numero "5" nel parco giochi della mappa della griglia dei numeri. Il ciclo while viene utilizzato in modo che il robot VR continui ad avanzare mentre il valore X è meno del valore X della coordinata su cui si trova il numero indicato.
  • Quando il valore X è maggiore di -100, il progetto passa al comando successivo all'esterno del ciclo, che è un comando stop. Poiché il valore X del numero "5" è -100, il robot VR smetterà di guidare una volta che il valore X è maggiore di -100.

Flusso del progetto python appena eseguito. Una freccia indica che il robot si sposta sul ciclo while una volta completata la svolta a destra di 90 gradi. Una freccia ciclica è accanto al ciclo while con il testo che dice 'x value less than negative 100 returns True, VR Robot drives forward.' Sotto c'è una freccia rossa con il testo che dice 'x valore maggiore di -100, restituisce False. VR Robot smette di guidare.'

Per tua informazione

Si noti che il valore riportato dal sensore di posizione potrebbe non essere esattamente -100 millimetri (mm). Come il sensore di distanza, gli operatori di confronto vengono utilizzati a causa del tempo necessario al robot VR per scorrere i valori del progetto e del report.

Il cruscotto nella finestra Parco giochi è stato ingrandito per mostrare che il valore x riportato del sensore di posizione è negativo di 90 millimetri.

In VEXcode VR Python, è possibile utilizzare un operatore di confronto maggiore o uguale a (>=) o minore o uguale a (<=) nel progetto per avere maggiore precisione nei movimenti.

# Add project code in "main"
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) <= -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

A seconda della velocità del robot VR e della rapidità con cui il progetto esegue l'iterazione nel ciclo, potresti notare che il robot VR è in grado di fermarsi più vicino al valore soglia quando viene aggiunto all'operatore il valore uguale a (<= o >=).

Selezionare il pulsante Avanti per continuare con il resto della lezione.