Πίνακας περιεχομένων:

Σαρωτής λέιζερ Raspberry Pi: 9 βήματα (με εικόνες)
Σαρωτής λέιζερ Raspberry Pi: 9 βήματα (με εικόνες)

Βίντεο: Σαρωτής λέιζερ Raspberry Pi: 9 βήματα (με εικόνες)

Βίντεο: Σαρωτής λέιζερ Raspberry Pi: 9 βήματα (με εικόνες)
Βίντεο: DIY Laser Scanner with TfMini and Raspberry Pi | ROS Tutorial for beginners #7 2024, Ιούλιος
Anonim
Image
Image
Σαρωτής λέιζερ Raspberry Pi
Σαρωτής λέιζερ Raspberry Pi

Το Laser Scanner είναι μια ενσωματωμένη συσκευή συστήματος Raspberry Pi ικανή να ψηφιοποιήσει αντικείμενα σε αρχεία mesh.obj για αναπαραγωγή χρησιμοποιώντας τρισδιάστατη εκτύπωση. Η συσκευή το κάνει αυτό χρησιμοποιώντας ένα λέιζερ γραμμής και ένα ενσωματωμένο PiCam για να εκτελέσει την όραση του υπολογιστή. Το λέιζερ τοποθετείται 45 μοίρες μακριά από το λέιζερ και προβάλλει μια έντονη κόκκινη γραμμή σε μια κάθετη φέτα του αντικειμένου. Η κάμερα ανιχνεύει την απόσταση της φέτας από το κέντρο για να δώσει μια φέτα πλέγματος. Το αντικείμενο περιστρέφεται στον περιστρεφόμενο δίσκο και η διαδικασία επαναλαμβάνεται μέχρι να σαρωθεί ολόκληρο το αντικείμενο. Το αρχείο.obj που δημιουργείται τελικά αποστέλλεται μέσω ηλεκτρονικού ταχυδρομείου στον χρήστη, καθιστώντας το σύστημα πλήρως αυτόνομο και ενσωματωμένο.

Αυτό το Instructable θα σας δείξει πώς δημιουργήθηκε η συσκευή, μερικά αποτελέσματα και μελλοντικά βήματα.

Βήμα 1: Έμπνευση

Εμπνευση
Εμπνευση
Εμπνευση
Εμπνευση

Ως μανιώδης κατασκευαστής, ασχολούμαι με την τρισδιάστατη εκτύπωση και το σταθερό μοντέλο εδώ και αρκετά χρόνια. Έχω συνεργαστεί με πολλά διαφορετικά εργαλεία πρωτοτυπίας από δρομολογητές CNC έως κόφτες λέιζερ έως τρισδιάστατους εκτυπωτές. Μια συσκευή που ο τοπικός μου κατασκευαστής δεν έχει αγοράσει ακόμα ήταν ένας σαρωτής 3D - και μπορώ να σας πω γιατί.

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

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

Αφού έκανα κάποια έρευνα, είδα ότι πολλοί σαρωτές 3D χρησιμοποίησαν μια περιστρεφόμενη πλατφόρμα και στη συνέχεια μια ποικιλία διαφορετικών αισθητήρων για να μετρήσουν την απόσταση από το κέντρο για να δημιουργήσουν ένα περιστροφικό μοντέλο. Πολλές από αυτές χρησιμοποιούσαν διπλές κάμερες παρόμοιες με αυτές του Kinect. Τελικά έπεσα πάνω στο Yscanner που είναι ένας σαρωτής χαμηλής ανάλυσης που χρησιμοποιεί λέιζερ. Κοιτάζοντας την απλότητα και τη σκοπιμότητα, αυτή η τεχνική λέιζερ, στην οποία ένα λέιζερ μετατοπίζεται σε σχέση με μια κάμερα για τη μέτρηση της απόστασης από το κέντρο, έμοιαζε με μια καθαρή πορεία προς τα εμπρός.

Βήμα 2: Εργαλεία και ανταλλακτικά

Μέρη:

  • Raspberry Pi 35,00 $
  • Raspberry Pi Camera V2 30,00 $
  • LED, αντιστάσεις και καλώδια
  • Νήμα τρισδιάστατης εκτύπωσης
  • 12x12x0.125 φύλλα ξύλου
  • Υλικό M3
  • Stepper Motor - 14 $
  • Line Laser - 8 $
  • LN298 Stepper Motor Drivers - 2,65 $
  • Μεταλλικό κουμπί - $ 5

Εργαλεία:

  • Συγκολλητικό σίδερο
  • Κόφτης λέιζερ
  • Τρισδιάστατος εκτυπωτής
  • Κατσαβίδι
  • Πένσα

Βήμα 3: Σχεδιασμός υψηλού επιπέδου

Σχεδιασμός υψηλού επιπέδου
Σχεδιασμός υψηλού επιπέδου
Σχεδιασμός υψηλού επιπέδου
Σχεδιασμός υψηλού επιπέδου

Το κεντρικό συστατικό σε αυτό το σχέδιο είναι το λέιζερ γραμμής που προβάλλεται σε μια κάθετη φέτα των αντικειμένων. Αυτή η προβολή θα μπορούσε να καταγραφεί στην picamera, να διορθωθεί η προοπτική της και στη συνέχεια να φιλτραριστεί πριν από την επεξεργασία της εικόνας. Κατά την επεξεργασία εικόνας, η απόσταση μεταξύ κάθε τμήματος της γραμμής από το κέντρο του αντικειμένου θα μπορούσε να συλλεχθεί. Σε ακτινικές συντεταγμένες, αυτή η εικόνα θα αποδώσει και τα συστατικά r και z. Η τρίτη διάσταση, Θ, επιτυγχάνεται στη συνέχεια περιστρέφοντας το αντικείμενο σε μια νέα φέτα. Αυτή η έννοια φαίνεται στο πρώτο σχήμα.

Για να εκτελέσω τις παραπάνω περιγραφείσες ενέργειες, χρησιμοποίησα ένα Raspberry Pi ως κεντρική υπολογιστική μονάδα. Συνδέω ένα βηματικό μοτέρ και έναν οδηγό κινητήρα στο Pi, που τροφοδοτείται από εξωτερική τροφοδοσία 5V και ελέγχεται από τις ακίδες GPIO του Pi. Ένα γραμμικό λέιζερ τοποθετήθηκε στη γραμμή 3,3 V στο Pi και ένα PiCam προσαρτήθηκε στην είσοδο της κάμερας στο Pi. Τέλος, εγκαταστάθηκε ένα απλό τραβηγμένο κουμπί και ένα LED κατάστασης που υποδεικνύει στον χρήστη σε ποια κατάσταση βρίσκεται το σύστημα. Το πλήρες σύστημα συνοψίζεται σε ένα διάγραμμα μπλοκ συστήματος.

Από την αρχή, σχεδιάστηκε η τοποθέτηση των ηλεκτρονικών σε ένα κουτί κοπής με λέιζερ που κρατήθηκε μαζί με υποδοχές T και υλικό M3. Τα ηλεκτρονικά θα ήταν κρυμμένα από τα μάτια σε ένα κάτω διαμέρισμα και ένα καπάκι θα επέτρεπε την εύκολη πρόσβαση στην τοποθέτηση αντικειμένων στον περιστρεφόμενο δίσκο. Αυτό το καπάκι είναι απαραίτητο για να ελαχιστοποιηθεί η ποσότητα φωτός που διαρρέει στο σύστημα, καθώς αυτό το εξωτερικό φως μπορεί να παράγει θόρυβο στην τελική σάρωση.

Βήμα 4: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Όπως φαίνεται παραπάνω, πριν ξεκινήσω την κοπή με λέιζερ ή την τρισδιάστατη εκτύπωση, χρησιμοποίησα το Autodesk Fusion 360 για να φτιάξω ένα λεπτομερές τρισδιάστατο μοντέλο του σχεδιασμού μας. Ως επισκόπηση, η συσκευή είναι ένα απλό κουτί με καπάκι με μεντεσέδες κοπής λέιζερ. Υπάρχουν δύο κύρια στρώματα της συσκευής: το ηλεκτρονικό κρεβάτι και το κύριο κρεβάτι, με οπές για καλώδια που τρέχουν μεταξύ των δύο στρωμάτων.

Η πλειοψηφία του κουτιού μας κατασκευάστηκε με κόφτη λέιζερ, με σχέδια να παράγονται στο Fusion 360 και να κόβονται σε κόφτη λέιζερ Epilog Zing 40 W. Τα σχέδιά μας φαίνονται στα παραπάνω σχήματα. Από πάνω αριστερά κινούμενα δεξιά, τα κομμάτια είναι το κύριο κρεβάτι, το ηλεκτρονικό κρεβάτι, δύο κομμάτια για το καπάκι, το πίσω κομμάτι, το μπροστινό κομμάτι και τα δύο πλευρικά κομμάτια. Στο κύριο κρεβάτι, υπάρχουν τρεις κύριες διακοπές: μία για την τοποθέτηση του βηματικού κινητήρα, μία για τη δρομολόγηση καλωδίων από το λέιζερ και μία για τη δρομολόγηση του ευρέος καλωδίου του PiCam. Το κομμάτι του κρεβατιού έχει οπές στήριξης για τη στερέωση του Pi, του breadboard και του οδηγού κινητήρα και μεγαλύτερη διακοπή για πρόσβαση στο βηματικό μοτέρ. Τα κομμάτια του καπακιού κουμπώνουν απλά για να σχηματίσουν το τριγωνικό κομμάτι που φαίνεται παραπάνω και ο μεντεσές είναι μια απλή εξώθηση που είναι το πλάτος της διαμέτρου της οπής των πλαϊνών σανίδων. Το πίσω κομμάτι και ένα από τα πλευρικά κομμάτια έχουν υποδοχές στο πλάι, έτσι ώστε οι θύρες του Pi (HDMI, USB, Ethernet, Power) να είναι εύκολα προσβάσιμες. Το μπροστινό μέρος είναι ένα απλό κομμάτι στο οποίο τελικά έκανα τρύπες με ένα τρυπάνι χειρός για να τοποθετήσω το κουμπί και τη λυχνία LED. Όπως φαίνεται σε όλα τα κομμάτια, τα μέρη μας συγκρατούνται από υλικό M3 χρησιμοποιώντας T-Joints και υποδοχές. Αυτή είναι μια μέθοδος συγκράτησης ορθογώνιων και ασφαλών τεμαχίων κομμένων με λέιζερ. Τα πτερύγια των κομματιών ευθυγραμμίζονται με τις σχισμές με άλλα κομμάτια και η κοπή σε σχήμα t στις άκρες δίνει χώρο για να μπλοκάρει ένα παξιμάδι Μ3 χωρίς περιστροφή. Αυτό μας επιτρέπει να χρησιμοποιήσουμε στη συνέχεια μια βίδα Μ3 για να κλειδώσουμε τα κομμάτια μαζί με πολύ λίγο χώρο για να κουνιέται χωρίς το συγκρότημα να είναι πλήρως μόνιμο.

Επέλεξα να κάνω την πλειοψηφία των κομματιών μας με κόφτη λέιζερ λόγω της ταχύτητας και της ευκολίας του. Ωστόσο, έπρεπε ακόμα να εκτυπώσω 3D κομμάτια λόγω της τρισδιάστατης γεωμετρίας τους που θα ήταν πιο δύσκολο να δημιουργηθούν στον κόφτη. Το πρώτο κομμάτι ήταν το στήριγμα λέιζερ γραμμής. Αυτό το κομμάτι επρόκειτο να τοποθετηθεί στο κύριο κρεβάτι σε 45 μοίρες από την κάμερα και να έχει μια τρύπα έτσι ώστε το λέιζερ να μπορεί να έχει άνετη τριβή και να ταιριάζει σε αυτό. Έπρεπε επίσης να δημιουργήσω μια βάση κινητήρα επειδή ο άξονας του κινητήρα ήταν τόσο μακρύς. Η τριβή τοποθέτησης ταιριάζει στα κομμάτια κοπής με λέιζερ και χαμηλώνει το επίπεδο στο οποίο ήταν προσαρτημένο ο κινητήρας, έτσι ώστε η περιστρεφόμενη πλατφόρμα να ευθυγραμμίζεται με το κύριο κρεβάτι.

Βήμα 5: Ηλεκτρονικά

ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ

Το υλικό καλωδίωσης αυτού του έργου ήταν πολύ απλό καθώς ο σαρωτής 3D δεν απαιτούσε πάρα πολλά περιφερειακά. Ένας κινητήρας, κουμπί, LED, λέιζερ και κάμερα χρειάστηκε να συνδεθούν στο Pi. Όπως φαίνεται, φρόντισα να συνδέσω τις αντιστάσεις σε σειρά με κάθε πείρο που χρησιμοποιήσαμε για να προστατεύσουμε τους πείρους. Ένας ακροδέκτης GPIO ήταν αφιερωμένος στον έλεγχο της λυχνίας LED κατάστασης, η οποία θα ανάβει όταν η συσκευή είναι έτοιμη για χρήση και θα κάνει παλμούς με PWM όταν η συσκευή λειτουργούσε. Ένας άλλος πείρος GPIO συνδέθηκε με ένα αναδιπλούμενο κουμπί, καταχωρώντας Υ HIGHΗ όταν δεν πατήθηκε το κουμπί και ΧΑΜΗΛΟ όταν πατήθηκε το κουμπί. Τέλος, αφιέρωσα τέσσερις καρφίτσες GPIO στην οδήγηση του βηματικού κινητήρα.

Δεδομένου ότι ο κινητήρας μας έπρεπε να πατήσει μόνο έναν βαθμό χωρίς να απαιτείται έλεγχος της ταχύτητας, επιλέξαμε έναν απλούστερο οδηγό βηματικού κινητήρα (L298N) που απλώς ανεβάζει τις γραμμές ελέγχου για να τροφοδοτηθεί στις εισόδους του κινητήρα. Για να μάθετε πώς να χειρίζεστε τους βηματικούς κινητήρες σε πολύ χαμηλό επίπεδο, αναφερθήκαμε τόσο στο φύλλο δεδομένων L298N όσο και στη βιβλιοθήκη Arduino. Τα βηματικά μοτέρ έχουν μαγνητικό πυρήνα με διακλαδισμένα δάχτυλα εναλλασσόμενης πολικότητας. Τα τέσσερα καλώδια είναι τυλιγμένα για να ελέγχουν δύο ηλεκτρομαγνήτες που τροφοδοτούν το κάθε αντίθετο δάχτυλο του κινητήρα. Έτσι, αλλάζοντας την πολικότητα των δακτύλων, είμαστε σε θέση να σπρώξουμε το βήμα ένα βήμα. Με αυτή τη γνώση του τρόπου με τον οποίο λειτουργούσαν τα βήματα από επίπεδο υλικού, καταφέραμε να ελέγξουμε τα βήματα πολύ πιο εύκολα. Επιλέξαμε να απενεργοποιήσουμε τον βηματικό κινητήρα από μια τροφοδοσία 5V στο εργαστήριο και όχι το Pi λόγω της μέγιστης κατανάλωσης ρεύματος περίπου 0,8 A, που είναι περισσότερο από ό, τι θα μπορούσε να προσφέρει το Pi.

Βήμα 6: Λογισμικό

Λογισμικό
Λογισμικό
Λογισμικό
Λογισμικό
Λογισμικό
Λογισμικό
Λογισμικό
Λογισμικό

Το λογισμικό για αυτό το έργο μπορεί να αναλυθεί σε τέσσερα κύρια στοιχεία που αλληλεπιδρούν μεταξύ τους: Επεξεργασία εικόνας, Έλεγχος κινητήρα, Δημιουργία πλέγματος και Ενσωματωμένες λειτουργίες.

Ως περίληψη του λογισμικού, μπορούμε να κοιτάξουμε το πρώτο σχήμα. Καθώς εκκινείται το σύστημα, το.bashrc συνδέεται αυτόματα στο Pi και αρχίζει να τρέχει τον κώδικα python μας. Το σύστημα ανάβει τη λυχνία κατάστασης για να ενημερώσει τον χρήστη ότι έχει ξεκινήσει σωστά και περιμένει το πάτημα του κουμπιού. Ο χρήστης μπορεί στη συνέχεια να τοποθετήσει το αντικείμενο προς σάρωση και να κλείσει το καπάκι. Αφού πατήσετε το κουμπί, η λυχνία LED χτυπά για να ενημερώσει το χρήστη ότι η συσκευή λειτουργεί. Η συσκευή θα κάνει βρόχο μεταξύ επεξεργασίας εικόνας και ελέγχου κινητήρα έως ότου ολοκληρωθεί η πλήρης περιστροφή και συλλεχθούν όλα τα δεδομένα αντικειμένου. Τέλος, δημιουργείται το πλέγμα και το αρχείο αποστέλλεται μέσω ηλεκτρονικού ταχυδρομείου σε προεπιλεγμένο μήνυμα ηλεκτρονικού ταχυδρομείου. Αυτό επανεκκινεί τον κύκλο και το μηχάνημα είναι έτοιμο να εκτελέσει άλλη σάρωση με το πάτημα ενός κουμπιού.

ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ

Το πρώτο πράγμα που εφαρμόστηκε ήταν η επεξεργασία μιας καταγεγραμμένης εικόνας προκειμένου να εξαχθούν οι πληροφορίες που είναι αποθηκευμένες στην εικόνα σε μια μορφή που θα μπορούσε να χρησιμοποιηθεί για τη δημιουργία μιας συστοιχίας σημείων στο διάστημα. Για να το κάνω αυτό, ξεκίνησα τραβώντας μια φωτογραφία του αντικειμένου στην πλατφόρμα μαζί με όλο τον θόρυβο του φόντου που δημιουργείται από το λέιζερ που λάμπει στο πίσω μέρος του κουτιού και διασκορπίζεται. Αυτή η εικόνα είχε δύο κύρια προβλήματα στην ακατέργαστη μορφή της. Πρώτον, το αντικείμενο εξετάστηκε υπό γωνία με αυξημένη προοπτική και δεύτερον, υπήρχε πολύς θόρυβος στο παρασκήνιο. Το πρώτο πράγμα που έπρεπε να κάνω ήταν να λάβω υπόψη αυτήν τη γωνία θέασης, επειδή η χρήση της φωτογραφίας ως έχει δεν θα μας επέτρεπε να καθορίσουμε ένα σταθερό ύψος αντικειμένου. Όπως φαίνεται στο δεύτερο σχήμα, το ύψος του ανάποδου σχήματος "L" είναι συνεπές. Ωστόσο, επειδή η μία πλευρά είναι μεγαλύτερη από την άλλη φαίνεται να έχουν διαφορετικά ύψη στην άκρη πιο κοντά στον θεατή.

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

Το επόμενο πρόβλημα που έπρεπε να λυθεί ήταν αυτό του θορύβου στο υπόβαθρο με τη μορφή εξωτερικού φωτός και φωτός που αντανακλάται από το ίδιο το λέιζερ. Για να το κάνω αυτό φιλτράρισα το φως χρησιμοποιώντας τη συνάρτηση inRange () του OpenCV. Ορίζω το όριο να παίρνει μόνο κόκκινο φως σε ένα ορισμένο επίπεδο. Για να πάρω τη σωστή τιμή, ξεκίνησα με ένα ελαφρύ όριο και συνέχισα να αυξάνω το επίπεδο κατωφλίου μέχρι το μόνο φως που πήρα ήταν το φως λέιζερ στο αντικείμενο που σαρώνεται. Μόλις είχα αυτήν την εικόνα, βρήκα το πιο φωτεινό pixel σε κάθε σειρά λάβετε μια γραμμή ενός εικονοστοιχείου ανά σειρά που οριοθετούσε την πιο αριστερή πλευρά της γραμμής λέιζερ. Στη συνέχεια, κάθε εικονοστοιχείο μετατράπηκε σε κορυφή σε τρισδιάστατο χώρο και αποθηκεύτηκε σε έναν πίνακα, όπως περιγράφεται στην ενότητα δημιουργίας πλέγματος. Τα αποτελέσματα αυτών των βημάτων φαίνονται στο τέταρτο σχήμα.

Μηχανικός έλεγχος

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

Δημιουργία πλέγματοςΓια να δημιουργήσω ένα πλέγμα από όλες τις επεξεργασμένες εικόνες, έπρεπε πρώτα να μετατρέψω κάθε λευκό εικονοστοιχείο στην επεξεργασμένη εικόνα σε κορυφή σε χώρο 3D. Επειδή συλλέγω μεμονωμένες φέτες του αντικειμένου με κυλινδρική συμμετρία, ήταν λογικό να αρχίσω να συλλέγω κυλινδρικές συντεταγμένες. Αυτό είχε νόημα καθώς το ύψος της εικόνας θα μπορούσε να αντιπροσωπεύει τον άξονα z, η απόσταση από το κέντρο του περιστρεφόμενου τραπεζιού θα μπορούσε να αντιπροσωπεύει τον άξονα R και η περιστροφή του βηματικού κινητήρα θα μπορούσε να αντιπροσωπεύει τον άξονα theta. Ωστόσο, επειδή αποθήκευσα τα δεδομένα μας σε κυλινδρικές συντεταγμένες, έπρεπε να μετατρέψω κάθε μία από αυτές τις κορυφές σε καρτεσιανές συντεταγμένες.

Μόλις δημιουργήθηκαν αυτές οι κορυφές, αποθηκεύτηκαν σε μια λίστα και η εν λόγω λίστα αποθηκεύτηκε σε μια άλλη λίστα που περιείχε τις λίστες κορυφών που δημιουργήθηκαν για κάθε εικόνα που τραβήχτηκε. Μόλις επεξεργαστούν όλες οι εικόνες και μετατραπούν σε κορυφές, έπρεπε να επιλέξω τις κορυφές που πραγματικά ήθελα να αντιπροσωπεύονται στο τελικό πλέγμα. Wantedθελα να συμπεριληφθεί η κορυφαία κορυφή και η κάτω κορυφή και στη συνέχεια με βάση την ανάλυση επέλεξα έναν ομοιόμορφα κατανεμημένο αριθμό κορυφών που θα χρησιμοποιούσα για κάθε εικόνα. Επειδή δεν ήταν όλες οι λίστες κορυφών του ίδιου μήκους, έπρεπε να τις εξισορροπήσω βρίσκοντας τη λίστα με τον μικρότερο αριθμό κορυφών και αφαιρώντας τις κορυφές από όλες τις άλλες λίστες μέχρι να είναι όλες ίσες. Με τις λίστες κορυφών που δημιουργήθηκαν ήμουν πλέον σε θέση να δημιουργήστε ένα πλέγμα. Επέλεξα να μορφοποιήσω το πλέγμα μας σύμφωνα με το πρότυπο αρχείου.obj καθώς είναι απλό και εκτυπώσιμο σε 3D.

Ενσωματωμένη λειτουργία

Αφού η συσκευή ήταν λειτουργική, την γυάλισα προσθέτοντας πλήρη ενσωματωμένη λειτουργικότητα. Αυτό σήμαινε την αφαίρεση του πληκτρολογίου, του ποντικιού και της οθόνης και την αποστολή ασύρματου αρχείου.obj μετά την ολοκλήρωση της επεξεργασίας. Για να ξεκινήσω, άλλαξα τον κωδικό.bashrc για να συνδεθώ αυτόματα και να ξεκινήσω το κύριο πρόγραμμα python κατά την εκκίνηση. Αυτό έγινε χρησιμοποιώντας το sudo raspi-config και επιλέγοντας "Console Autologin" και προσθέτοντας τη γραμμή "sudo python /home/pi/finalProject/FINAL.py" στο /home/pi/.bashrc. Εκτός από αυτό, πρόσθεσε ένα κουμπί και LED κατάστασης για την είσοδο και την έξοδο του χρήστη. Το κουμπί θα επιτρέψει στον χρήστη να πει στη συσκευή πότε θα ξεκινήσει τη σάρωση και το LED θα πει στον χρήστη την κατάσταση του μηχανήματος. Εάν η λυχνία LED είναι αναμμένη, η συσκευή είναι έτοιμη να ξεκινήσει μια νέα σάρωση. Εάν η λυχνία LED σφύζει, η συσκευή σαρώνει αυτήν τη στιγμή. Εάν η λυχνία LED είναι γραφείο, υπάρχει σφάλμα λογισμικού, το οποίο απαιτεί επανεκκίνηση του συστήματος. Τέλος, επέτρεψα στη συσκευή να στείλει το αρχείο.obj μέσω email. Αυτό έγινε χρησιμοποιώντας τις βιβλιοθήκες smtplib και email. Αυτή η δυνατότητα αποστολής μηνυμάτων ηλεκτρονικού ταχυδρομείου μας έδωσε έναν πολύ βολικό και ασύρματο τρόπο να παραδώσουμε το παραγόμενο αρχείο στον χρήστη για πρόσβαση σε πολλές διαφορετικές πλατφόρμες.

Βήμα 7: Ενσωμάτωση

Ενσωμάτωση
Ενσωμάτωση

Αφού κατασκεύασα τα διάφορα κομμάτια της συσκευής, τη συγκέντρωσα μαζί. Το παραπάνω σχήμα δείχνει με τη σειρά:

(α) συναρμολογημένο κουτί έξω

(β) συναρμολογημένο κουτί μέσα με κάμερα και λέιζερ

(γ) εσωτερική όψη του ηλεκτρονικού κρεβατιού

(δ) πίσω μέρος του Pi με πρόσβαση σε θύρες Pi και είσοδο κινητήρα 5V

(ε) κουμπί με δακτύλιο LED και φωτεινή ένδειξη κατάστασης στο μπροστινό μέρος της συσκευής

Βήμα 8: Αποτελέσματα

Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα

Ο σαρωτής 3D λέιζερ μπόρεσε να σαρώσει αντικείμενα με αξιοπρεπή ακρίβεια. Τα χαρακτηριστικά των αντικειμένων είναι ευδιάκριτα και αναγνωρίσιμα και τα μέρη ήταν πολύ εύκολο να εκτυπωθούν 3D χρησιμοποιώντας ένα λογισμικό τεμαχισμού όπως το Repetier. Τα παραπάνω σχήματα δείχνουν μερικές δειγματοληψίες σαρώματος ενός κομμάτι ξύλου και ενός λαστιχένιου παπιού.

Ένα από τα μεγαλύτερα ευρήματα και επιτυχίες που ανακάλυψα κατά τη διάρκεια των δοκιμών ήταν η συνέπεια της συσκευής. Κατά τη διάρκεια πολλαπλών δοκιμών του ίδιου αντικειμένου, ο σαρωτής ήταν σε θέση να παράγει ένα αρχείο.obj που ήταν πολύ παρόμοιο κάθε φορά, ακόμη και αν αλλάξαμε ελαφρώς την τοποθέτηση του αντικειμένου. Όπως φαίνεται στις τρεις ξεχωριστές σαρώσεις, όλες μοιάζουν πολύ, αποτυπώνοντας τις ίδιες λεπτομέρειες και την ίδια ποσότητα λεπτομερειών. Συνολικά εντυπωσιάστηκα με τη συνέπεια και τη στιβαρότητα του συστήματός μας.

Μία από τις μεταβλητές που ήμουν πραγματικά σε θέση να συντονίσω είναι η ανάλυση των σαρώσεων. Επειδή υπάρχουν 400 βήματα στο stepper, μπορώ να επιλέξω πόσο μεγάλο είναι κάθε ΔΘ για να υπαγορεύει τη γωνιακή ανάλυση. Από προεπιλογή, έχω τη γωνιακή ανάλυση σε 20 επαναλήψεις, πράγμα που σημαίνει ότι κάθε πλαίσιο, ο κινητήρας περιστρέφεται κατά 20 βήματα (400/20 = 20). Αυτό επιλέχθηκε κυρίως για το συμφέρον του χρόνου - χρειάζονται περίπου 45 δευτερόλεπτα για να ολοκληρωθεί μια σάρωση με αυτόν τον τρόπο. Ωστόσο, εάν θέλω μια σάρωση πολύ υψηλότερης ποιότητας, μπορώ να αυξήσω τον αριθμό των επαναλήψεων έως και 400. Αυτό δίνει πολλά περισσότερα σημεία για την κατασκευή του μοντέλου, κάνοντας μια πολύ πιο λεπτομερή σάρωση. Εκτός από τη γωνιακή ανάλυση, μπορώ επίσης να προσαρμόσω την κατακόρυφη ανάλυση ή πόσα διαφορετικά σημεία επιλέγω να κάνω ψηφοφορία κατά μήκος της φέτα λέιζερ. Για παρόμοιο ενδιαφέρον στο χρόνο, έχω αυτή την προεπιλογή σε 20, αλλά μπορώ να την αυξήσω για καλύτερα αποτελέσματα. Παίζοντας με αυτές τις παραμέτρους της γωνιακής ανάλυσης και της χωρικής ανάλυσης, μπόρεσα να συγκεντρώσω τα αποτελέσματα διαφορετικών σαρώσεων παρακάτω στο τελευταίο σχήμα. Κάθε ετικέτα διαμορφώνεται έτσι ώστε να είναι η γωνιακή ανάλυση x χωρική ανάλυση. Όπως φαίνεται στις προεπιλεγμένες ρυθμίσεις σάρωσης, οι δυνατότητες της πάπιας είναι αναγνωρίσιμες αλλά όχι λεπτομερείς. Ωστόσο, καθώς αυξάνω την ανάλυση, αρχίζουν να εμφανίζονται μεμονωμένα ακριβή χαρακτηριστικά, όπως τα μάτια, το ράμφος, η ουρά και τα φτερά στην πάπια. Η σάρωση της εικόνας με την υψηλότερη ανάλυση χρειάστηκε περίπου 5 λεπτά. Το να βλέπεις τόσο ψηλά ένα εφικτό ψήφισμα ήταν μια πολύ μεγάλη επιτυχία.

Περιορισμοί

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

Επόμενα βήματα

Αν και ήμουν ευχαριστημένος με τα αποτελέσματα του έργου μας, υπήρχαν μερικά πράγματα που θα μπορούσαν να εφαρμοστούν για να γίνει καλύτερο. Για αρχάριους, στην τρέχουσα κατάσταση, η ανάλυση σάρωσης μπορεί να αλλάξει μόνο με την αλλαγή των σκληρών κωδικοποιημένων μεταβλητών ανάλυσης στον κώδικά μας. Για να γίνει το έργο πιο ενσωματωμένο, θα μπορούσε να συμπεριληφθεί ένα ποτενσιόμετρο ανάλυσης, ώστε ο χρήστης να μπορεί να αλλάξει την ανάλυση χωρίς να χρειάζεται να συνδέσει οθόνη και πληκτρολόγιο στο σαρωτή. Επιπλέον, ο σαρωτής δημιουργεί εικόνες που μερικές φορές μπορεί να φαίνονται οδοντωτές. Για να διορθωθεί αυτό, θα μπορούσαν να εφαρμοστούν τεχνικές εξομάλυνσης πλέγματος για την εξομάλυνση των παρατυπιών και των σκληρών γωνιών. Τέλος, διαπίστωσα ότι οι συντεταγμένες pixel δεν κλιμακώνονται καλά στον πραγματικό κόσμο. Τα πλέγματα που δημιούργησα ήταν 6 έως 7 φορές μεγαλύτερα από το πραγματικό αντικείμενο. Στο μέλλον θα ήταν πλεονεκτικό να εφαρμοστεί ένας τρόπος κλίμακας πλεγμάτων ώστε να είναι πιο ακριβείς στο πραγματικό μέγεθος του αντικειμένου.

Βήμα 9: Πόροι

Έχω συμπεριλάβει τον κώδικα, αρχεία STL για εκτύπωση και αρχεία DXF για κοπή για το σύνολο του έργου.

Διαγωνισμός Raspberry Pi 2020
Διαγωνισμός Raspberry Pi 2020
Διαγωνισμός Raspberry Pi 2020
Διαγωνισμός Raspberry Pi 2020

Πρώτο βραβείο στο Raspberry Pi Contest 2020

Συνιστάται: