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

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

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

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


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

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

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

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

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

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

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

while (true) {
  // Λήψη στιγμιότυπου όλων των αντικειμένων μπλε χρώματος.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Ελέγξτε για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
  αν (AIVision.objectCount > 0) {

    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print(AIVision1.objectCount);
  }
  αναμονή(5, msec);
}

αντικείμενα

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

Τα διαθέσιμα ακίνητα είναι τα εξής:

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

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

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

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

ταυτότητα

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

Τρεις τετράγωνοι δείκτες αναγνώρισης με τις ετικέτες ID 0, 9 και 3, ο καθένας με αντίστοιχες συντεταγμένες και μετρήσεις μεγέθους που εμφανίζονται με λευκό κείμενο. Το ID 0 βρίσκεται στα αριστερά, το ID 9 βρίσκεται στα δεξιά και το ID 3 βρίσκεται στο κάτω μέρος του κέντρου. Κάθε μαρκαδόρος έχει ένα μοναδικό ασπρόμαυρο μοτίβο μέσα σε ένα τετράγωνο.

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

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

Δύο μπάλες και δύο δακτύλιοι αναγνωρίζονται στην εικόνα, με ετικέτες που υποδεικνύουν τη θέση, το μέγεθος και τη βαθμολογία τους. Η κόκκινη μπάλα είναι αριστερά, η μπλε μπάλα είναι δεξιά, ο πράσινος δακτύλιος είναι κάτω αριστερά και ο κόκκινος δακτύλιος είναι κάτω δεξιά. Κάθε αντικείμενο σκιαγραφείται με ένα λευκό πλαίσιο και λεπτομέρειες όπως οι συντεταγμένες X, Y, το πλάτος, το ύψος και μια βαθμολογία 99% εμφανίζονται με λευκό κείμενο.

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

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

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

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

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

Ένα μπλε Buckyball παρακολουθείται από ένα σύστημα όρασης υπολογιστή. Το αντικείμενο περιβάλλεται από ένα λευκό τετράγωνο και μέσα στο περίγραμμα υπάρχει ένα μικρότερο κόκκινο τετράγωνο που περιβάλλει έναν κεντρικό λευκό σταυρό. Στην επάνω αριστερή γωνία της εικόνας, μια ετικέτα υποδεικνύει ότι το αντικείμενο είναι μπλε, με συντεταγμένες X:176, Y:117 και διαστάσεις W:80, H:78.

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

Δύο μπλε κυβικά αντικείμενα που παρακολουθούνται από ένα σύστημα όρασης. Το επάνω αντικείμενο φέρει ετικέτα με συντεταγμένες X:215, Y:70 και διαστάσεις W:73, H:84, με λευκό περίγραμμα και έναν λευκό σταυρό στο κέντρο. Το κάτω αντικείμενο φέρει την ένδειξη συντεταγμένες X:188, Y:184 και διαστάσεις W:144, H:113, επίσης σκιαγραφημένο με λευκό περίγραμμα και έναν λευκό σταυρό στο κέντρο.

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

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

while (true) {
  // Λήψη στιγμιότυπου όλων των αντικειμένων μπλε χρώματος.
  AIVision.takeSnapshot(AIVision__Blue);

  // Ελέγξτε για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
  αν (AIVision.objectCount > 0) {

    αν (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Σύστημα μετάδοσης κίνησης.στροφή(δεξιά);
    } αλλιώς {
      Σύστημα μετάδοσης κίνησης.στάση();
    }
  }
  αναμονή(5, msec);
}

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

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

Ένα μπλε Buckyball παρακολουθείται από ένα σύστημα όρασης. Ένα λευκό περίγραμμα περιβάλλει το αντικείμενο, με έναν κεντρικό λευκό σταυρό μέσα στο περίγραμμα. Η ετικέτα επάνω αριστερά υποδεικνύει το χρώμα του αντικειμένου ως μπλε, μαζί με τις συντεταγμένες X:176, Y:117 και τις διαστάσεις W:80, H:78. Ένα μικρό κόκκινο τετράγωνο επισημαίνει την επάνω αριστερή γωνία του αντικειμένου.

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

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

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

Η εικόνα δείχνει μια μπλε Buckyball με ένα λευκό τετράγωνο περίγραμμα που την ακολουθεί. Στην επάνω αριστερή γωνία υπάρχει μια ετικέτα που υποδεικνύει ότι είναι ένα μπλε αντικείμενο, με συντεταγμένες X:176, Y:117 και διαστάσεις W:80, H:78. Τα κόκκινα βέλη επισημαίνουν το πλάτος και το ύψος του αντικειμένου.

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

Δύο μπλε κυβικά αντικείμενα παρακολουθούνται από ένα σύστημα οπτικής αναγνώρισης. Ο άνω κύβος έχει λευκό περίγραμμα με μια ετικέτα που υποδεικνύει τη θέση του ως X:215, Y:70 και διαστάσεις Π:73, Υ:84. Ο κάτω κύβος έχει παρόμοιο λευκό περίγραμμα με την ετικέτα να εμφανίζει X:188, Y:184 και διαστάσεις W:144, H:113. Κάθε κύβος έχει έναν κεντρικό λευκό σταυρό, που πιθανώς υποδεικνύει το σημείο εστίασης για την παρακολούθηση. Οι ετικέτες επισημαίνουν τις μετρήσεις και τα δεδομένα παρακολούθησης για κάθε αντικείμενο.

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

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

while (true) {
  // Λήψη στιγμιότυπου όλων των μπλε αντικειμένων.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Ελέγξτε για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
  αν (AIVision.objectCount > 0) {

    αν (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(forward);
    } αλλιώς {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

γωνία

Ένα περιστρεφόμενο gif που δείχνει κόκκινα και πράσινα μπλοκ. Όταν τα μπλοκ είναι τοποθετημένα σε τέλεια οριζόντια θέση από κόκκινο σε πράσινο, εμφανίζονται ως 0 μοίρες. Αν το κόκκινο μπλοκ βρίσκεται κάθετα πάνω από το πράσινο μπλοκ, τότε βρίσκεται σε γωνία 90 μοιρών. Αν τα μπλοκ είναι οριζόντια από πράσινο έως κόκκινο, είναι 180 μοίρες. Αν το πράσινο μπλοκ βρίσκεται κάθετα πάνω από το κόκκινο μπλοκ, τότε η γωνία είναι 270 μοίρες.

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

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

Μια στοίβα από δύο κύβους, έναν πράσινο πάνω και έναν μπλε κάτω, που παρακολουθούνται από ένα σύστημα όρασης. Ένα λευκό περίγραμμα περιβάλλει και τους δύο κύβους, με έναν λευκό σταυρό στο κέντρο του πράσινου κύβου. Η ετικέτα στο κάτω μέρος της εικόνας εμφανίζει την ένδειξη Green_Blue A:87°, η οποία υποδεικνύει τα ανιχνευμένα χρώματα και μια μέτρηση γωνίας. Κάτω από αυτό, οι συντεταγμένες παρατάσσονται ως X:117, Y:186, με διαστάσεις W:137, H:172, που αντιπροσωπεύουν τη θέση και το μέγεθος των στοιβαγμένων κύβων στο πλαίσιο.

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

Δύο κύβοι, ένας πράσινος και ένας μπλε, τοποθετημένοι δίπλα-δίπλα και παρακολουθούμενοι από ένα σύστημα όρασης. Ένα λευκό περίγραμμα περιβάλλει και τους δύο κύβους με έναν λευκό σταυρό στο κέντρο. Η ετικέτα επάνω αριστερά υποδεικνύει Green_Blue A:0°, η οποία αναφέρεται στα ανιχνευμένα χρώματα και σε μια μέτρηση γωνίας. Παρακάτω, οι συντεταγμένες εμφανίζονται ως X:150, Y:102, με διαστάσεις W:179, H:109, που αντιπροσωπεύουν τη θέση και το μέγεθος των κύβων μέσα στο πλαίσιο.

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

σκορ

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

Η εικόνα δείχνει τέσσερα αντικείμενα που παρακολουθούνται από ένα σύστημα όρασης: δύο μπάλες και δύο δακτύλιοι. Η κόκκινη μπάλα φέρει συντεταγμένες X:122, Y:84, W:67, H:66 και βαθμολογία 99%. Η μπλε μπάλα έχει X:228, Y:86, W:70, H:68, με βαθμολογία 99%. Ο πράσινος δακτύλιος έχει συντεταγμένες X:109, Y:186, W:98, H:92 και βαθμολογία 99%. Ο κόκκινος δακτύλιος φέρει τις ετικέτες X:259, Y:187, W:89, H:91, με βαθμολογία 99%. Κάθε αντικείμενο έχει λευκό περίγραμμα, υποδεικνύοντας την ακρίβεια παρακολούθησης.

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

υπάρχει

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

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


objectCount

Η μέθοδος objectCount επιστρέφει την ποσότητα των ανιχνευμένων αντικειμένων στο τελευταίο στιγμιότυπο.

Η διεπαφή του AI Vision Utility με δύο μπλε κύβους που εντοπίστηκαν στην αριστερή πλευρά, ο καθένας με τις συντεταγμένες και τις διαστάσεις του X και Y. Το σύστημα είναι συνδεδεμένο και τα AprilTags είναι ενεργοποιημένα, ενώ η ταξινόμηση AI είναι απενεργοποιημένη. Στα δεξιά, εμφανίζονται οι ρυθμίσεις χρώματος Μπλε με ρυθμιζόμενα εύρη απόχρωσης και κορεσμού, που έχουν οριστεί σε 22 και 0,34, αντίστοιχα. Υπάρχει η επιλογή προσθήκης ή ορισμού χρώματος και παγώματος βίντεο. Το υλικολογισμικό είναι ενημερωμένο, με την έκδοση 1.0.0.b16 και ένα κουμπί κλεισίματος είναι διαθέσιμο στο κάτω μέρος.

Σε αυτό το παράδειγμα, έχουν ανιχνευθεί δύο αντικείμενα με την Υπογραφή Χρώματος "Μπλε". Και τα δύο θα τοποθετηθούν στον πίνακα όταν χρησιμοποιηθεί η μέθοδος takeSnapshot.

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

while (true) {
  // Λήψη στιγμιότυπου όλων των μπλε αντικειμένων.
  AIVision.takeSnapshot(AIVision__Blue);

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);

  // Έλεγχος για να βεβαιωθείτε ότι εντοπίστηκε κάποιο αντικείμενο στο στιγμιότυπο πριν από την εξαγωγή δεδομένων.
  αν (AIVision.objectCount > 0) {
    Brain.Screen.print(AIVision1.objectCount);
  }
  αναμονή(5, msec);
}

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

Last Updated: