Προγραμματισμός

Εργασία με το Azure Kinect Developer Kit

Η Microsoft ανακοίνωσε τις μονάδες κάμερας Azure Kinect παράλληλα με το HoloLens 2 στις αρχές του 2019. Και οι δύο συσκευές χρησιμοποιούν την ίδια μονάδα κάμερας μικτής πραγματικότητας, χρησιμοποιώντας έναν αισθητήρα βάθους χρόνου πτήσης για τη χαρτογράφηση αντικειμένων γύρω από την κάμερα. Όμως, όπου το HoloLens είναι μια φορητή συσκευή μικτής πραγματικότητας, οι μονάδες Azure Kinect προορίζονται να παρέχουν σε εφαρμογές μηχανικής μάθησης που φιλοξενούνται από Azure συνδεδεμένους αισθητήρες που μπορούν να τοποθετηθούν οπουδήποτε σε ένα χώρο εργασίας.

Το Azure Kinect είναι άμεσος απόγονος των μονάδων Kinect δεύτερης γενιάς που παρέχονται με το Xbox One, αλλά αντί να παρέχει πραγματικές εισόδους για παιχνίδια, στοχεύει σε εταιρικούς χρήστες και εφαρμογές. Σκοπεύτηκε να συνεργαστεί με τις υπηρεσίες γνωστικών υπηρεσιών της Azure, το πρώτο κιτ προγραμματιστή Azure Kinect ξεκίνησε την αποστολή στα τέλη του 2019 στις Ηνωμένες Πολιτείες, προσθέτοντας αρκετές άλλες χώρες στις αρχές του 2020.

Άνοιγμα του κουτιού

Το κιτ προγραμματιστή Azure Kinect $ 399 είναι μια μικρή λευκή μονάδα με δύο φακούς κάμερας, έναν για κάμερα RGB ευρείας γωνίας και μία για τον αισθητήρα βάθους Kinect και μια σειρά μικροφώνων. Διαθέτει αισθητήρα προσανατολισμού, επιτρέποντάς σας να χρησιμοποιήσετε την κάμερα για να δημιουργήσετε σύνθετες τρισδιάστατες εικόνες περιβάλλοντος, έτοιμες για χρήση σε μικτή πραγματικότητα. Μπορείτε να συνδέσετε πολλές συσκευές μαζί για γρήγορες τρισδιάστατες σαρώσεις ή για να παρέχετε κάλυψη ολόκληρου του δωματίου, χρησιμοποιώντας τον αισθητήρα προσανατολισμού για να κατανοήσετε τη θέση της συσκευής.

Μαζί με τη μονάδα κάμερας, λαμβάνετε τροφοδοτικό, ένα κλειδί Allen για να αφαιρέσετε το κάλυμμα των θυρών αλυσίδας και ένα καλώδιο USB για σύνδεση σε έναν υπολογιστή ανάπτυξης. Θα συνιστούσα να πάρετε ένα τρίποδο επιτραπέζιου υπολογιστή ή άλλο τύπο βάσης, καθώς η πλαστική βάση είναι αρκετά μικρή και δεν λειτουργεί με τα περισσότερα γραφεία ή οθόνες. Δεν υπάρχει λογισμικό στο πλαίσιο, μόνο ένας σύνδεσμος για διαδικτυακή τεκμηρίωση όπου μπορείτε να κατεβάσετε το SDK της συσκευής.

Πριν ξεκινήσετε, πρέπει να ενημερώσετε το υλικολογισμικό της συσκευής. Αυτό αποστέλλεται με το SDK και περιλαμβάνει ένα εργαλείο εγκατάστασης γραμμής εντολών. Όταν εκτελείτε το πρόγραμμα ενημέρωσης, ελέγχει πρώτα την τρέχουσα κατάσταση υλικολογισμικού πριν εγκαταστήσει το υλικολογισμικό της κάμερας και της συσκευής και μετά επανεκκινήσει Μετά την επανεκκίνηση της κάμερας, χρησιμοποιήστε το ίδιο εργαλείο για να βεβαιωθείτε ότι η ενημέρωση έχει εγκατασταθεί με επιτυχία. Εάν υπάρχει πρόβλημα με μια εγκατάσταση, μπορείτε να χρησιμοποιήσετε την επαναφορά υλικού της κάμερας (κρυμμένη κάτω από τη βάση τρίποδα) για να επαναφέρετε την αρχική εργοστασιακή εικόνα.

Αίσθηση του κόσμου

Με το SDK εγκατεστημένο έχετε πρόσβαση στους αισθητήρες της συσκευής από τον κωδικό σας. Υπάρχουν τρία SDK: ένα για πρόσβαση χαμηλού επιπέδου σε όλους τους αισθητήρες της κάμερας, ένα για να χρησιμοποιήσετε τις γνωστές δυνατότητες παρακολούθησης αμαξώματος Kinect και ένα για να συνδέσετε τη σειρά μικροφώνων της κάμερας με τις υπηρεσίες ομιλίας του Azure. Μια προεγκατεστημένη εφαρμογή Kinect Viewer εμφανίζει τις διαθέσιμες προβολές κάμερας και μεταδίδει δεδομένα από τους αισθητήρες της συσκευής. Έχετε πρόσβαση στην ευρυγώνια κάμερα RGB, σε μια προβολή κάμερας βάθους και στην εικόνα από την υπέρυθρη κάμερα του αισθητήρα βάθους. Τα SDK είναι διαθέσιμα τόσο για Windows όσο και για Linux, ειδικά για την έκδοση Ubuntu 18.04 LTS της Canonical και μπορούν να ληφθούν απευθείας από τη Microsoft ή από το GitHub.

Είναι καλή ιδέα να αφιερώσετε λίγο χρόνο παίζοντας με το Kinect Viewer. Σας επιτρέπει να δείτε πώς λειτουργούν οι διαφορετικές λειτουργίες κάμερας βάθους, βοηθώντας σας να επιλέξετε ένα στενό ή ευρύ οπτικό πεδίο. Μπορείτε να δείτε δεδομένα από τους αισθητήρες θέσης, τόσο το επιταχυνσιόμετρο όσο και το γυροσκόπιο, καθώς και από τη συστοιχία μικροφώνων. Με το Azure Kinect Developer Kit συνδεδεμένο σε έναν υπολογιστή ανάπτυξης και λειτουργεί, μπορείτε να ξεκινήσετε να γράφετε κώδικα για αυτό. Μια εφαρμογή καταγραφής γραμμής εντολών μπορεί να χρησιμοποιηθεί για τη λήψη δεδομένων για αναπαραγωγή στην προβολή, αποθηκεύοντας πληροφορίες βάθους σε ένα αρχείο μορφής MKV (Matroska Video).

Δημιουργία της πρώτης σας εφαρμογής ανίχνευσης βάθους

Η Microsoft παρέχει δείγμα κώδικα για τη δημιουργία μιας απλής εφαρμογής C για εργασία με το κιτ ανάπτυξης Azure Kinect. Απαιτείται μόνο μία βιβλιοθήκη και παρέχει τα αντικείμενα και τις μεθόδους που απαιτούνται για τη συνεργασία με την κάμερα. Οποιαδήποτε εφαρμογή πρέπει πρώτα να ελέγξει πόσες κάμερες είναι συνδεδεμένες στον κεντρικό υπολογιστή προτού διαμορφώσετε τις ροές δεδομένων της συσκευής σας. Οι συσκευές αναγνωρίζονται από τον σειριακό αριθμό τους, οπότε μπορείτε να το χρησιμοποιήσετε για να αντιμετωπίσετε μια συγκεκριμένη κάμερα όταν εργάζεστε με πολλές συνδεδεμένες στον ίδιο υπολογιστή ή αλυσοδεμένες μαζί.

Το Azure Kinect Developer Kit παρέχει μόνο δεδομένα ροής, επομένως οι εφαρμογές πρέπει να διαμορφώσουν τον ρυθμό δεδομένων σε καρέ ανά δευτερόλεπτο, μαζί με τις μορφές και τις αναλύσεις χρώματος εικόνας. Μόλις δημιουργήσετε ένα αντικείμενο διαμόρφωσης, μπορείτε να ανοίξετε μια σύνδεση χρησιμοποιώντας το αντικείμενο διαμόρφωσης, έτοιμο για ροή δεδομένων. Όταν ολοκληρώσετε την ανάγνωση μιας ροής δεδομένων, σταματήστε και κλείστε τη συσκευή.

Οι εικόνες καταγράφονται σε ένα αντικείμενο σύλληψης, με μια εικόνα βάθους, μια εικόνα υπερύθρων και μια έγχρωμη εικόνα για κάθε μεμονωμένη εικόνα, που λαμβάνονται από τη ροή της συσκευής. Μόλις καταγράψετε, μπορείτε να εξαγάγετε τις μεμονωμένες εικόνες έτοιμες για χρήση στην εφαρμογή σας. Τα αντικείμενα εικόνας μπορούν να παραδοθούν στα API μηχανικής όρασης Azure, έτοιμα για αναγνώριση αντικειμένων ή ανίχνευση ανωμαλιών. Ένα παράδειγμα που έχει χρησιμοποιήσει η Microsoft στις επιδείξεις της είναι μια εφαρμογή που χρησιμοποιεί καταγεγραμμένο βίντεο για να ανιχνεύσει πότε ένας εργαζόμενος σε εργοστάσιο πλησιάζει πολύ σε λειτουργικά μηχανήματα. Ένας άλλος εντοπίζει κάποιον που καπνίζει κοντά σε αντλία αερίου.

Μια παρόμοια διαδικασία σάς δίνει δεδομένα από τους αισθητήρες θέσης και κίνησης. Καθώς τα δεδομένα κίνησης καταγράφονται με υψηλότερο ρυθμό από τα δεδομένα εικόνας, πρέπει να εφαρμόσετε κάποια μορφή συγχρονισμού στον κώδικά σας για να αποφύγετε την απώλεια δεδομένων. Τα δεδομένα ήχου καταγράφονται χρησιμοποιώντας τυπικά API των Windows, συμπεριλαμβανομένων εκείνων που χρησιμοποιούνται από τις υπηρεσίες ομιλίας του Azure.

Παρόλο που το υλικό Azure Kinect συλλαμβάνει πολλά δεδομένα, οι λειτουργίες SDK βοηθούν στη μετατροπή τους σε μια χρήσιμη μορφή. Για παράδειγμα, η προσθήκη δεδομένων βάθους σε μια εικόνα RGB για την παραγωγή εικόνων RGB-D που μετατρέπονται στην άποψη της κάμερας RGB (και αντίστροφα). Καθώς οι δύο αισθητήρες είναι εκτός λειτουργίας, αυτό απαιτεί παραμόρφωση ενός πλέγματος εικόνων για τη συγχώνευση των απόψεων των δύο καμερών, χρησιμοποιώντας την GPU του υπολογιστή σας. Ένας άλλος μετασχηματισμός δημιουργεί ένα σύννεφο σημείου, επιτρέποντάς σας να λαμβάνετε δεδομένα βάθους για κάθε εικονοστοιχείο στη λήψη σας. Μια χρήσιμη επιλογή στο SDK είναι η δυνατότητα λήψης ροών βίντεο και δεδομένων σε ένα αρχείο μορφής Matroska. Αυτή η προσέγγιση επιτρέπει σε συσκευές περιορισμένου εύρους ζώνης να δέχονται δεδομένα και να τα παραδίδουν, για παράδειγμα, σε συσκευές Azure Stack Edge με κοντέινερ Cognitive Services για επεξεργασία παρτίδας.

Σώμα που παρακολουθεί έναν ψηφιακό σκελετό

Το αρχικό υλικό Kinect παρουσίασε την παρακολούθηση του αμαξώματος, με ένα σκελετικό μοντέλο που θα μπορούσε να χρησιμοποιηθεί για την γρήγορη αξιολόγηση της στάσης και των χειρονομιών. Η ίδια προσέγγιση συνεχίζεται στο Azure Kinect Body Tracking SDK, το οποίο χρησιμοποιεί την τεχνολογία παράλληλης επεξεργασίας CUDA GPU της Nvidia για να λειτουργεί με δεδομένα τρισδιάστατης εικόνας από τον αισθητήρα βάθους της συσκευής σας. Μια ομαδική εφαρμογή δείγματος εμφανίζει ορισμένες από τις δυνατότητες του SDK, συμπεριλαμβανομένης της δυνατότητας παρακολούθησης περισσότερων από ένα ατόμων κάθε φορά.

Το Body Tracking SDK βασίζεται στο Azure Kinect SDK, χρησιμοποιώντας το για διαμόρφωση και σύνδεση σε μια συσκευή. Τα δεδομένα εικόνας που συλλαμβάνονται υποβάλλονται σε επεξεργασία από τον ιχνηλάτη, αποθηκεύοντας δεδομένα σε μια δομή δεδομένων πλαισίου σώματος. Περιλαμβάνει μια συλλογή σκελετικών δομών για αναγνωρισμένα σώματα, έναν χάρτη ευρετηρίου 2-D για την οπτικοποίηση των δεδομένων σας, μαζί με τις υποκείμενες εικόνες 2-D και 3-D που χρησιμοποιήθηκαν για την κατασκευή των δεδομένων παρακολούθησης. Κάθε πλαίσιο μπορεί να χρησιμοποιηθεί για την κατασκευή κινούμενων σχεδίων ή για την τροφοδοσία πληροφοριών σε εργαλεία μηχανικής εκμάθησης που μπορούν να βοηθήσουν στην επεξεργασία εντοπισμένων θέσεων σε σχέση με έναν χάρτη δωματίου ή σε ιδανικές θέσεις.

Οι γνωστικές υπηρεσίες της Azure είναι ένα ισχυρό εργαλείο για την επεξεργασία δεδομένων και η προσθήκη του Azure Kinect καθιστά δυνατή τη χρήση τους σε ένα ευρύ φάσμα βιομηχανικών και επιχειρηματικών σεναρίων. Με έμφαση στην 3-D αναγνώριση εικόνας στο χώρο εργασίας, η Microsoft προσπαθεί να δείξει πώς μπορεί να χρησιμοποιηθεί η αναγνώριση εικόνας για τη μείωση του κινδύνου και τη βελτίωση της ασφάλειας. Υπάρχει ακόμη και η δυνατότητα χρήσης μιας σειράς συσκευών ως γρήγορου ογκομετρικού συστήματος λήψης, το οποίο μπορεί να βοηθήσει στη δημιουργία και των δύο περιβάλλοντων μικτής πραγματικότητας και στην παροχή δεδομένων πηγής για CAD και άλλα εργαλεία σχεδίασης. Το αποτέλεσμα είναι μια ευέλικτη συσκευή που, με λίγο κωδικό, γίνεται μια πολύ ισχυρή συσκευή ανίχνευσης.