Μετάβαση στο κύριο περιεχόμενο

Μάθημα 3: Χρήση αισθητήρων και ηλεκτρομαγνήτη για την τοποθέτηση ενός δίσκου στον στόχο

Προσθήκη του αισθητήρα απόστασης στο έργο

Στο Μάθημα 2, το Ρομπότ Εικονικής Πραγματικότητας οδήγησε με την όπισθεν πίσω στο σημείο εκκίνησης για να αφήσει τον δίσκο. Αυτό απαιτούσε από τον χρήστη να υπολογίσει την ακριβή απόσταση που έπρεπε να διανύσει το ρομπότ εικονικής πραγματικότητας. Αυτό μπορεί να μην είναι πάντα εφικτό. Αντίθετα, το ρομπότ VR μπορεί να χρησιμοποιήσει τις αναφερόμενες τιμές αισθητήρων για να σηκώνει και να ρίχνει δίσκους με σταθερή ακρίβεια. 

Σε αυτό το μάθημα, ο αισθητήρας απόστασης θα χρησιμοποιηθεί για να προσδιορίσει πού πρέπει να σταματήσει να κινείται το ρομπότ εικονικής πραγματικότητας (VR) όταν επιστρέφει στον στόχο. Αυτός ο αισθητήρας αναφέρει την απόσταση από το μπροστινό μέρος του ρομπότ εικονικής πραγματικότητας έως το πλησιέστερο αντικείμενο χρησιμοποιώντας την εντολήget_distance. Για να χρησιμοποιήσετε τον αισθητήρα απόστασης για να οδηγήσετε το ρομπότ εικονικής πραγματικότητας πίσω στον στόχο, πρέπει να συμβούν τα εξής: 

  • Το ρομπότ εικονικής πραγματικότητας (VR) θα πρέπει να περιστραφεί κατά 180 μοίρες, ώστε ο αισθητήρας απόστασης να είναι στραμμένος προς τον στόχο. Η εντολή turn_to_heading μπορεί να χρησιμοποιηθεί για να διασφαλιστεί ότι το ρομπότ εικονικής πραγματικότητας (VR) στρέφεται προς τη σωστή κατεύθυνση.
  • Το ρομπότ εικονικής πραγματικότητας θα χρησιμοποιήσει τον αισθητήρα απόστασης με τον πίσω τοίχο της παιδικής χαράς για να προσδιορίσει πού θα ρίξει τον δίσκο. 
  • Το ρομπότ εικονικής πραγματικότητας θα οδηγήσει προς τον στόχο. 
Μια προοπτική όψη του ρομπότ εικονικής πραγματικότητας (VR) στην παιδική χαρά Disk Mover, στη θέση του πρώτου μπλε δίσκου, με τον δίσκο προσαρτημένο στον ηλεκτρομαγνήτη. Το μπλε τέρμα βρίσκεται πίσω από το ρομπότ.

Για την ενημέρωσή σας

Η εντολή turn_to_heading στρέφει το ρομπότ εικονικής πραγματικότητας σε μια συγκεκριμένη κατεύθυνση χρησιμοποιώντας τον γυροσκοπικό αισθητήρα. Η κατεύθυνση που θα στρίψει το ρομπότ εικονικής πραγματικότητας (αριστερά ή δεξιά) καθορίζεται με βάση την τρέχουσα κατεύθυνση του γυροσκοπικού αισθητήρα. Μεταβείτε στην επικεφαλίδα Η εντολή VEXcode VR Python διαβάζει την τελεία του συστήματος μετάδοσης κίνησης, μετατρέψτε την υπογράμμιση σε επικεφαλίδα υπογράμμισης, με 90 και μοίρες σε παρένθεση.

Η εντολή turn_to_headingχρησιμοποιείται για να κατευθύνει το ρομπότ εικονικής πραγματικότητας (VR) σε μια συγκεκριμένη κατεύθυνση ανεξάρτητα από τη θέση του ρομπότ εικονικής πραγματικότητας. Καθώς σηκώνετε ή ρίχνετε έναν δίσκο, το ρομπότ εικονικής πραγματικότητας (VR) μπορεί να βγει εκτός πορείας. Η χρήση της εντολής turn_to_heading διασφαλίζει ότι το ρομπότ εικονικής πραγματικότητας θα στραφεί στην απόλυτη θέση και όχι σε μια θέση σε σχέση με την προηγούμενη κατεύθυνση.

Μια κάτοψη του ρομπότ εικονικής πραγματικότητας στο κέντρο ενός κύκλου που απεικονίζει τις κατευθύνσεις του ρομπότ. Στη θέση 12 η ώρα, ευθυγραμμισμένη με το μπροστινό μέρος του ρομπότ, είναι 0 μοίρες. Η κατεύθυνση εκτελείται δεξιόστροφα γύρω από τον κύκλο, με 90 μοίρες στη θέση 3 η ώρα, 180 μοίρες στη θέση 6 η ώρα και 270 μοίρες στη θέση 9 η ώρα.

Συνεχίστε την κατασκευή του έργου 

  • Συνεχίστε να εργάζεστε στο έργοUnit8Lesson3.
  • Προσθέστε μια εντολή turn_to_heading μετά το τρίτο σχόλιο. Ορίστε την παράμετρο σε 180 μοίρες, έτσι ώστε το έργο να μοιάζει τώρα με αυτό: 

    def main():
        #1. Οδήγηση στον πρώτο δίσκο
        ενώ δεν είναι down_eye.near_object():
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
    
        # 2. Σηκώστε τον πρώτο δίσκο
        μαγνήτη. Ενεργοποιήστε (ΕΝΙΣΧΥΣΗ)
    
        # 3. Οδήγηση προς τον στόχο
        drivetrain.turn_to_heading(180, ΜΟΙΡΕΣ)
    
        # 4. Ρίξτε τον δίσκο στο τέρμα
  • Τώρα που το ρομπότ εικονικής πραγματικότητας (VR) είναι προσανατολισμένο προς τον στόχο, θα πρέπει να οδηγήσει πίσω στον στόχο. Προσθέστε έναν βρόχοwhile κάτω από την εντολή turn_to_heading , έτσι ώστε το τρίτο τμήμα του έργου να μοιάζει με αυτό: 

    	# 3. Οδήγηση προς τον στόχο
        drivetrain.turn_to_heading(180, ΜΟΙΡΕΣ)
        ενώ συνθήκη:
            wait(5, MSEC)
  • Για να επιστρέψει στον στόχο, το ρομπότ εικονικής πραγματικότητας θα χρησιμοποιήσει δεδομένα από τον αισθητήρα απόστασης για να προσδιορίσει πότε το ρομπότ εικονικής πραγματικότητας βρίσκεται εντός του στόχου. Όπως συζητήθηκε στο προηγούμενο μάθημα, κάθε τετράγωνο πλέγματος στην παιδική χαρά με κίνηση δίσκου έχει διαστάσεις 200 χιλιοστά (mm) επί 200 χιλιοστά (mm).Μια κοντινή όψη της κάτω αριστερής γωνίας της παιδικής χαράς, που δείχνει ότι κάθε τετράγωνο του πλέγματος 10 επί 10 στο δάπεδο της παιδικής χαράς έχει διαστάσεις 200 mm επί 200 mm.
  • Χρησιμοποιώντας αυτές τις μετρήσεις, το κέντρο του τέρματος μπορεί να προσδιοριστεί σε απόσταση περίπου 200 χιλιοστών (mm) από τον τοίχο της Παιδικής Χαράς.

    Μια κοντινή όψη της κάτω αριστερής γωνίας της παιδικής χαράς Disk Mover. Το ρομπότ εικονικής πραγματικότητας (VR) έχει έναν μπλε δίσκο προσαρτημένο στον ηλεκτρομαγνήτη και είναι στραμμένο προς τον μπλε στόχο. Μια μέτρηση από τον πίσω τοίχο της παιδικής χαράς μέχρι το κέντρο του μπλε τέρματος έχει την ένδειξη 200 χιλιοστά.
  • Το ρομπότ εικονικής πραγματικότητας (VR) θα πρέπει να κινείται με ταχύτητα ενώ ο αισθητήρας απόστασης (Distance Sensorαναφέρει ότι το ρομπότ εικονικής πραγματικότητας (VR) βρίσκεται σε απόσταση μεγαλύτερη από 200 χιλιοστά (mm) από τον τοίχο της παιδικής χαράς. Ορίστε τη συνθήκη του βρόχου while στην εντολή get_distance με την παράμετρο milliometres (mm). Στη συνέχεια, προσθέστε τον τελεστή σύγκρισης σε τιμή μεγαλύτερη από (>) 200. Το τρίτο μέρος του έργου θα πρέπει τώρα να έχει την εξής μορφή: 

    	# 3. Οδήγηση προς τον στόχο
        drivetrain.turn_to_heading(180, ΜΟΙΡΕΣ)
        ενώ front_distance.get_distance(MM) > 200:
            αναμονή(5, MSEC)
  • Προσθέστε μια εντολή driveσε αυτόν τον βρόχο while , έτσι ώστε το τρίτο τμήμα του έργου να μοιάζει με αυτό. Αυτό θα δώσει εντολή στο ρομπότ εικονικής πραγματικότητας να κινηθεί προς τα εμπρός, ενώ ο αισθητήρας απόστασης αναφέρει απόσταση μεγαλύτερη από 200 χιλιοστά (mm).

    	# 3. Οδήγηση προς τον στόχο
        drivetrain.turn_to_heading(180, ΜΟΙΡΕΣ)
        ενώ front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            αναμονή(5, MSEC)
  • Μόλις το ρομπότ εικονικής πραγματικότητας φτάσει στον στόχο (200 mm από τον τοίχο), θα πρέπει να σταματήσει να κινείται. Προσθέστε μια εντολή stopεκτός του βρόχου while , έτσι ώστε το τρίτο τμήμα του έργου να μοιάζει με αυτό:

    	# 3. Οδήγηση προς τον στόχο
        drivetrain.turn_to_heading(180, ΜΟΙΡΕΣ)
        ενώ front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
  • Τώρα που το ρομπότ εικονικής πραγματικότητας έχει σταματήσει στον στόχο, μπορεί να ρίξει τον δίσκο. Προσθέστε μια εντολή energize κάτω από το τέταρτο σχόλιο και ορίστε την παράμετρο σε 'DROP'. Το τέταρτο μέρος του έργου θα πρέπει τώρα να έχει την εξής μορφή:

    	# 4. Ρίξτε τον δίσκο στον μαγνήτη στόχου
        Ενεργοποιήστε (DROP)
  • Το ρομπότ εικονικής πραγματικότητας (VR) θα πρέπει να κινείται με την όπισθεν για μικρή απόσταση για να αποφύγει την ανατροπή ή τη σύγκρουση με δίσκους. Η σύγκρουση με έναν δίσκο θα μπορούσε ενδεχομένως να βγάλει το ρομπότ εικονικής πραγματικότητας εκτός πορείας. Το ρομπότ εικονικής πραγματικότητας θα πρέπει στη συνέχεια να γυρίσει ώστε να είναι ξανά στραμμένο προς τους δίσκους. Προσθέστε τις ακόλουθες εντολές μετά την τελική εντολή energize όπως φαίνεται, για να δώσετε εντολή στο ρομπότ εικονικής πραγματικότητας να κινηθεί προς τα πίσω για 100 χιλιοστά (mm) και να επιστρέψει σε κατεύθυνση 0 μοιρών. Βεβαιωθείτε ότι οι εντολές έχουν σωστή εσοχή στο έργο σας.

    	# 4. Ρίξτε τον δίσκο στο τέρμα
        magnet.energize(DROP)
    
    	drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)
  • Ανοίξτε το Disk Mover Playground εάν δεν είναι ήδη ανοιχτό και εκτελέστε το έργο.
  • Το ρομπότ εικονικής πραγματικότητας (VR) κινείται προς τα εμπρός, σηκώνει τον πρώτο δίσκο και στη συνέχεια γυρίζει σε μια κατεύθυνση 180 μοιρών για να αντιμετωπίσει τον στόχο. Το ρομπότ εικονικής πραγματικότητας (VR) χρησιμοποιεί στη συνέχεια τις τιμές από τον αισθητήρα απόστασης για να καθορίσει πότε πρέπει να σταματήσει την οδήγηση και να ρίξει τον δίσκο.

    Μια πλάγια όψη του μπλε τέρματος της Παιδικής Χαράς Disk Mover, με τον πρώτο μπλε δίσκο να έχει πέσει μέσα στο τέρμα και το ρομπότ εικονικής πραγματικότητας (VR) να είναι γυρισμένο και τοποθετημένο μπροστά από το τέρμα, έτοιμο να παραλάβει τον επόμενο δίσκο.

Ροή έργου για την απόθεση του πρώτου δίσκου στον στόχο

Παρατηρήστε πώς λειτουργεί ο βρόχος while με τον Αισθητήρα Απόστασης σε αυτό το μέρος του έργου.

  • Το ρομπότ εικονικής πραγματικότητας θα κινηθεί προς τα εμπρός με ταχύτητα όσο ο αισθητήρας απόστασης βρίσκεται σεμεγαλύτερη απόχιλιοστά από τον τοίχο.
  • Όταν ο αισθητήρας απόστασης ανιχνεύσει ότι ο τοίχος της παιδικής χαράς απέχει λιγότερο από 200 χιλιοστά (mm), το έργο θα μετακινηθεί στην επόμενη εντολή εκτός του βρόχου whileκαι το ρομπότ εικονικής πραγματικότητας θα σταματήσει να κινείται.
  • Το έργο θα συνεχιστεί, για για να ρίξουμε τον δίσκο στο τέρμα.
  • Στη συνέχεια, το ρομπότ εικονικής πραγματικότητας θα κάνει όπισθεν και θα περιστραφεί 180 μοίρες για να είναι έτοιμο να αντιμετωπίσει τον επόμενο δίσκο.

Επιλέξτε το κουμπί Επόμενο για να συνεχίσετε με το υπόλοιπο μάθημα.