Κωδικοποίηση με τον αισθητήρα AI Vision Sensor στο VEXcode EXP Python

Βεβαιωθείτε ότι έχετε διαμορφώσει Χρωματικές Υπογραφές και Χρωματικούς Κωδικούς με τον Αισθητήρα Όρασης AI, ώστε να μπορούν να χρησιμοποιηθούν με τα μπλοκ σας. Για να μάθετε περισσότερα σχετικά με τον τρόπο διαμόρφωσής τους, μπορείτε να διαβάσετε τα παρακάτω άρθρα:

Ο αισθητήρας όρασης AI μπορεί επίσης να ανιχνεύσει ταξινομήσεις AI και ετικέτες AprilTags. Για να μάθετε πώς να ενεργοποιήσετε αυτές τις λειτουργίες ανίχνευσης, μεταβείτε εδώ:

Για να μάθετε περισσότερες λεπτομέρειες σχετικά με αυτές τις μεμονωμένες εντολές και τον τρόπο χρήσης τους στο VEXcode, μεταβείτε στον ιστότοπο API.


Λήψη οπτικών δεδομένων με τον αισθητήρα όρασης AI

Κάθε εντολή του αισθητήρα AI Vision Sensor θα ξεκινά με το όνομα του διαμορφωμένου αισθητήρα AI Vision Sensor. Για όλα τα παραδείγματα σε αυτό το άρθρο, το όνομα του αισθητήρα AI Vision Sensor που χρησιμοποιείται θα είναι ai_vision_1.

λήψη_στιγμιότυπου

Η μέθοδος take_snapshot λαμβάνει μια εικόνα αυτού που βλέπει ο αισθητήρας AI Vision Sensor και αντλεί δεδομένα από αυτό το στιγμιότυπο που μπορούν στη συνέχεια να χρησιμοποιηθούν σε ένα έργο. Όταν λαμβάνεται ένα στιγμιότυπο, πρέπει να καθορίσετε τον τύπο του αντικειμένου για το οποίο ο αισθητήρας AI Vision Sensor θα πρέπει να συλλέγει δεδομένα:

  • AΥπογραφή Χρώματος ήΚωδικός Χρώματος
    • Αυτές οι Οπτικές Υπογραφές ξεκινούν με το όνομα του Αισθητήρα Όρασης AI, διπλή υπογράμμιση και, στη συνέχεια, το όνομα της Οπτικής Υπογραφής, για παράδειγμα: ai_vision_1__Blue.
  • Ταξινομήσεις Τεχνητής Νοημοσύνης - AiVision.ALL_AIOBJS
  • ΑπρίλιοςΕτικέτες- AiVision.ALL_TAGS

Η λήψη ενός στιγμιότυπου θα δημιουργήσει μια πλειάδα όλων των ανιχνευμένων αντικειμένων που καθορίσατε. Για παράδειγμα, αν θέλατε να ανιχνεύσετε μια "Μπλε" Χρωματική Υπογραφήκαι ο Αισθητήρας Όρασης AI ανίχνευσε 3 διαφορετικά μπλε αντικείμενα, τα δεδομένα και από τα τρία θα τοποθετούνταν στην πλειάδα.

Σε αυτό το παράδειγμα, η μεταβλητή vision_objects αποθηκεύει μια πλειάδα που περιέχει τις ανιχνευμένες χρωματικές υπογραφές "Μωβ" από τον αισθητήρα όρασης AI με όνομα ai_vision_1. Εμφανίζει τον αριθμό των αντικειμένων που ανιχνεύονται και καταγράφει ένα νέο στιγμιότυπο κάθε 0,5 δευτερόλεπτα.

while True: 
    # Λήψη στιγμιότυπου όλων των υπογραφών Purple Color και αποθήκευσή του στο vision_objects.
    vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
    
    # Ελέγξτε για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
    αν vision_objects[0].exists == True
    
        brain.screen.clear_screen()
        brain.screen.set_cursor(1, 1)
    
        brain.screen.print("Αριθμός αντικειμένων:", len(vision_objects))
    αναμονή(0.5, ΔΕΥΤΕΡΟΛΕΠΤΑ)

Ιδιότητες αντικειμένου

Κάθε αντικείμενο από ένα στιγμιότυπο έχει διαφορετικές ιδιότητες που μπορούν να χρησιμοποιηθούν για την αναφορά πληροφοριών σχετικά με αυτό το αντικείμενο. Τα διαθέσιμα ακίνητα είναι τα εξής:

  • ταυτότητα
  • centerX και centerY
  • originX και originY
  • πλάτος
  • ύψος
  • γωνία
  • σκορ
  • υπάρχει

Για να αποκτήσετε πρόσβαση στην ιδιότητα ενός αντικειμένου, χρησιμοποιήστε το όνομα της μεταβλητής που αποθηκεύει την πλειάδα, ακολουθούμενο από τον δείκτη του αντικειμένου.

Ο δείκτης αντικειμένου υποδεικνύει ποιας συγκεκριμένης ιδιότητας αντικειμένου θέλετε να ανακτήσετε. Αφού τραβήξει ένα στιγμιότυπο, ο αισθητήρας AI Vision Sensor ταξινομεί αυτόματα τα αντικείμενα κατά μέγεθος. Στο μεγαλύτερο αντικείμενο αντιστοιχεί ο δείκτης 0, ενώ στο μικρότερο αντικείμενο αντιστοιχεί ο δείκτης υψηλότερος.

Για παράδειγμα, η κλήση του πλάτους του αντικειμένου του μεγαλύτερου μέσα στη μεταβλητή vision_objects θα ήταν: vision_objects[0].width.

ταυτότητα

Η ιδιότητα id είναι διαθέσιμη μόνο για τις ετικέτες και του Απριλίου ταξινομήσεις AI.

Τρία AprilTags παρακολουθούνται από το AI Vision Utility. Κάθε ετικέτα αναγνωρίζεται, εντοπίζεται και σκιαγραφείται, υποδεικνύοντας την παρακολούθησή της από το σύστημα. Τα αναγνωριστικά AprilTag σε αυτό το παράδειγμα είναι 0, 3 και 9.

Για μια ιδιότηταAprilTag, η ιδιότητα id αντιπροσωπεύει τον αριθμό αναγνώρισηςAprilTag(s) που εντοπίστηκε

Ο προσδιορισμός συγκεκριμένων ετικετών επιτρέπει την επιλεκτική πλοήγηση. Μπορείτε να προγραμματίσετε το ρομπότ σας να κινείται προς συγκεκριμένες ετικέτες αγνοώντας άλλες, χρησιμοποιώντας τες ουσιαστικά ως πινακίδες για αυτοματοποιημένη πλοήγηση.

Τέσσερα αντικείμενα παρακολουθούνται από το βοηθητικό πρόγραμμα AI Vision, δύο BuckyBalls και δύο Rings. Κάθε αντικείμενο αναγνωρίζεται, εντοπίζεται και σκιαγραφείται, υποδεικνύοντας την παρακολούθησή του από το σύστημα. Το βοηθητικό πρόγραμμα σημειώνει το αναγνωριστικό του αντικειμένου. Σε αυτό το παράδειγμα, υπάρχει μια κόκκινη μπάλα, μια μπλε μπάλα, ένας πράσινος δακτύλιος και ένας κόκκινος δακτύλιος.

ΓιαΤαξινομήσεις AI, η ιδιότητα id αντιπροσωπεύει τον συγκεκριμένο τύπο Ταξινόμησης AI που ανιχνεύθηκε.

Ο προσδιορισμός συγκεκριμένων Ταξινομήσεων Τεχνητής Νοημοσύνηςεπιτρέπει στο ρομπότ να εστιάζει μόνο σε συγκεκριμένα αντικείμενα, όπως το να θέλει να πλοηγηθεί μόνο προς μια κόκκινη Μπάκιμπολ και όχι προς μια μπλε.

Μεταβείτε σε αυτά τα άρθρα για περισσότερες πληροφορίες σχετικά με τις Ταξινομήσεις AI των ετικετών και του April και τον τρόπο ενεργοποίησης της ανίχνευσής τους στο βοηθητικό πρόγραμμα AI Vision.

κέντρο X και κέντρο Y

Αυτές είναι οι κεντρικές συντεταγμένες του ανιχνευμένου αντικειμένου σε pixel.

Εμφανίζεται ένας αισθητήρας όρασης με τεχνητή νοημοσύνη που παρακολουθεί ένα Blue Buckyball. Το Buckyball έχει ένα ορθογώνιο παρακολούθησης γύρω του και η παραπάνω ετικέτα δείχνει ότι έχει θέση X 176 και θέση Y 117. Το κέντρο του ορθογωνίου παρακολούθησης επισημαίνεται για να καταδειχθεί ότι η θέση μετριέται από το κέντρο.

Οι συντεταγμένες CenterX και CenterY βοηθούν στην πλοήγηση και την τοποθέτηση. Ο αισθητήρας όρασης AI έχει ανάλυση 320 x 240 pixel.

Εμφανίζεται ο αισθητήρας όρασης AI να παρακολουθεί δύο μπλε κύβους. Οι Κύβοι έχουν ορθογώνια παρακολούθησης γύρω τους, και το ένα είναι πολύ πιο κοντά στην κάμερα. Το πιο κοντινό έχει θέση Y 184, και το πιο μακρύ έχει θέση Y 70.

Μπορείτε να δείτε ότι ένα αντικείμενο πιο κοντά στον αισθητήρα όρασης AI θα έχει χαμηλότερη συντεταγμένη CenterY από ένα αντικείμενο που βρίσκεται πιο μακριά.

Σε αυτό το παράδειγμα, επειδή το κέντρο της προβολής του αισθητήρα AI Vision Sensor είναι (160, 120), το ρομπότ θα στρίψει δεξιά μέχρι η συντεταγμένη centerX ενός ανιχνευμένου αντικειμένου να είναι μεγαλύτερη από 150 pixel, αλλά μικρότερη από 170 pixel.

while True:
    # Λήψη στιγμιότυπου όλων των υπογραφών μπλε χρώματος και αποθήκευσή του στο vision_objects.
    vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

    # Ελέγξτε για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
    if vision_objects[0].exists == True

        # Ελέγξτε αν το αντικείμενο δεν βρίσκεται στο κέντρο της προβολής του αισθητήρα AI Vision Sensor.
        αν vision_objects[0].centerX > 150 και 170 > vision_objects[0].centerX:

            # Συνεχίστε να στρίβετε δεξιά μέχρι το αντικείμενο να βρεθεί στο κέντρο της προβολής.
            drivetrain.turn(RIGHT)
        αλλιώς:
            drivetrain.stop()
    wait(5, MSEC)

προέλευση και προέλευση

OriginX και OriginY είναι η συντεταγμένη στην επάνω αριστερή γωνία του ανιχνευμένου αντικειμένου σε pixel.

Εμφανίζεται ένας αισθητήρας όρασης με τεχνητή νοημοσύνη που παρακολουθεί ένα Blue Buckyball. Το Buckyball έχει ένα ορθογώνιο παρακολούθησης γύρω του και η παραπάνω ετικέτα δείχνει ότι έχει θέση X 176 και θέση Y 117. Η επάνω αριστερή γωνία του ορθογωνίου παρακολούθησης επισημαίνεται για να καταδειχθεί ότι η αρχική θέση μετριέται από την επάνω αριστερή γωνία του.

Οι συντεταγμένες OriginX και OriginY βοηθούν στην πλοήγηση και τον εντοπισμό θέσης. Συνδυάζοντας αυτήν τη συντεταγμένη με το πλάτος και το ύψος του αντικειμένου, μπορείτε να προσδιορίσετε το μέγεθος του πλαισίου οριοθέτησης του αντικειμένου. Αυτό μπορεί να βοηθήσει στην παρακολούθηση κινούμενων αντικειμένων ή στην πλοήγηση μεταξύ αντικειμένων.

πλάτος και ύψος

Αυτό είναι το πλάτος ή το ύψος του ανιχνευμένου αντικειμένου σε pixel.

Εμφανίζεται ένας αισθητήρας όρασης με τεχνητή νοημοσύνη που παρακολουθεί ένα Blue Buckyball. Το Buckyball έχει ένα ορθογώνιο παρακολούθησης γύρω του και η παραπάνω ετικέτα δείχνει ότι έχει πλάτος 80 pixel και ύψος 78 pixel. Τα κόκκινα βέλη επισημαίνουν το ορθογώνιο παρακολούθησης για να δείξουν το πλάτος και το ύψος του.

Οι μετρήσεις πλάτους και ύψους βοηθούν στην αναγνώριση διαφορετικών αντικειμένων. Για παράδειγμα, ένα Buckyball θα έχει μεγαλύτερο ύψος από ένα Ring.

Εμφανίζεται ο αισθητήρας όρασης AI να παρακολουθεί δύο μπλε κύβους. Οι Κύβοι έχουν ορθογώνια παρακολούθησης γύρω τους, και το ένα είναι πολύ πιο κοντά στην κάμερα. Το πιο κοντινό έχει πλάτος 144 και ύψος 113, και το πιο μακρύ έχει πλάτος 73 και ύψος 84.

Το πλάτος και το ύψος υποδεικνύουν επίσης την απόσταση ενός αντικειμένου από τον αισθητήρα AI Vision Sensor. Μικρότερες μετρήσεις συνήθως σημαίνουν ότι το αντικείμενο βρίσκεται πιο μακριά, ενώ μεγαλύτερες μετρήσεις υποδηλώνουν ότι βρίσκεται πιο κοντά.

Σε αυτό το παράδειγμα, το πλάτος του αντικειμένου χρησιμοποιείται για πλοήγηση. Το ρομπότ θα πλησιάσει το αντικείμενο μέχρι το πλάτος να φτάσει σε ένα συγκεκριμένο μέγεθος πριν σταματήσει.

while True:
    # Λήψη στιγμιότυπου όλων των υπογραφών μπλε χρώματος και αποθήκευσή του στο vision_objects.
    vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

    # Ελέγξτε για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
    if vision_objects[0].exists == True

        # Ελέγξτε αν το μεγαλύτερο αντικείμενο βρίσκεται κοντά στον αισθητήρα όρασης AI μετρώντας το πλάτος του.
        if vision_objects[0].width < 250:

            # Πλησιάστε το αντικείμενο πιο κοντά μέχρι να ξεπεράσει τα 250 pixel.
            drivetrain.drive(FORWARD)
        αλλιώς:
            drivetrain.stop()

    αναμονή(5, MSEC)

γωνία

Κινούμενη εικόνα ενός κόκκινου τετραγώνου και ενός πράσινου τετραγώνου που περιστρέφονται μαζί για να δείξουν τις 360 μοίρες μιας τιμής γωνίας.

Η ιδιότητα angle είναι διαθέσιμη μόνο γιαχρωματικούς κωδικούς και

Αυτό αντιπροσωπεύει εάν ο ανιχνευμένος Κωδικός Χρώματοςή Ετικέτα AprilTag έχει διαφορετικό προσανατολισμό.

Ο αισθητήρας όρασης AI εμφανίζεται και παρακολουθεί έναν χρωματικό κώδικα που είναι πράσινος και στη συνέχεια μπλε. Η ροή βίντεο δείχνει έναν Πράσινο Κύβο στοιβαγμένο πάνω σε έναν Μπλε Κύβο. Η τιμή γωνίας του Χρωματικού Κώδικα επισημαίνεται και είναι 87 μοίρες, γεγονός που υποδεικνύει ότι ο Χρωματικός Κώδικας είναι προσανατολισμένος κατακόρυφα.

Μπορείτε να δείτε αν το ρομπότ έχει διαφορετικό προσανατολισμό σε σχέση με τον Χρωματικό Κώδικα ήAprilTag και να λάβετε αποφάσεις πλοήγησης σύμφωνα με αυτό.

Ο αισθητήρας όρασης AI εμφανίζεται και παρακολουθεί έναν χρωματικό κώδικα που είναι πράσινος και στη συνέχεια μπλε. Η ροή βίντεο δείχνει έναν Πράσινο Κύβο δίπλα σε έναν Μπλε Κύβο, αλλά βρίσκονται σε αδέξια γωνία σε σύγκριση με τον αισθητήρα. Η τιμή γωνίας του Κώδικα Χρώματος επισημαίνεται και είναι 0 μοίρες, γεγονός που υποδεικνύει ότι η γωνία του Κώδικα Χρώματος δεν μπορεί να διαβαστεί.

Για παράδειγμα, εάν ένας κωδικός χρώματος μεδεν ανιχνευθεί σε σωστή γωνία, τότε το αντικείμενο που αντιπροσωπεύει ενδέχεται να μην μπορεί να εντοπιστεί σωστά από το ρομπότ.

σκορ

Η ιδιότητα βαθμολογία χρησιμοποιείται κατά την ανίχνευσηΤαξινομήσεων AI με τον Αισθητήρα Όρασης AI.

Τέσσερα αντικείμενα παρακολουθούνται από το βοηθητικό πρόγραμμα AI Vision, δύο BuckyBalls και δύο Rings. Κάθε αντικείμενο αναγνωρίζεται, εντοπίζεται και σκιαγραφείται, υποδεικνύοντας την παρακολούθησή του από το σύστημα. Το βοηθητικό πρόγραμμα παραθέτει επίσης τη βαθμολογία ταξινόμησης AI κάθε αντικειμένου, σε αυτό το παράδειγμα κάθε βαθμολογία έχει 99%.

Η βαθμολογία εμπιστοσύνης υποδεικνύει πόσο σίγουρος είναι ο αισθητήρας AI Vision Sensor για την ανίχνευσή του. Σε αυτήν την εικόνα, είναι 99% σίγουρο ότι θα αναγνωρίσει τις ταξινομήσεις τεχνητής νοημοσύνης αυτών των τεσσάρων αντικειμένων. Μπορείτε να χρησιμοποιήσετε αυτήν τη βαθμολογία για να διασφαλίσετε ότι το ρομπότ σας εστιάζει μόνο σε ανιχνεύσεις υψηλής αξιοπιστίας.

υπάρχει

Η ιδιότητα υπάρχει χρησιμοποιείται για την ανίχνευση εάν έχει εντοπιστεί μια καθορισμένη Οπτική Υπογραφή στο τελευταίο στιγμιότυπο που λήφθηκε.

Αυτό σας επιτρέπει να ελέγξετε αν εντοπίστηκαν αντικείμενα που εντοπίστηκαν στο προηγούμενο στιγμιότυπο. Αυτή η ιδιότητα θα επιστρέψει True όταν υπάρχει ένα αντικείμενο και False όταν το αντικείμενο δεν υπάρχει.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: