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

Roomba Scout Explorer: 8 Βήματα
Roomba Scout Explorer: 8 Βήματα

Βίντεο: Roomba Scout Explorer: 8 Βήματα

Βίντεο: Roomba Scout Explorer: 8 Βήματα
Βίντεο: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Ιούλιος
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Ως ένα από τα πιο πολυαναμενόμενα και πολύ ερευνημένα αμερικανικά έργα, τα έργα του rover rover έχουν γίνει ανθρώπινα επιτεύγματα στην συνεχώς προχωρούμενη παραγωγή αυτόνομων συστημάτων υψηλής τεχνολογίας με μοναδικό σκοπό τη διερεύνηση και ερμηνεία των χερσαίων και επιφανειών του κόκκινου πλανήτη πίσω η γη. Ως μέρος ενός πιο προσωπικού έργου προς τιμήν των αποστολών στον Άρη, ο στόχος μας ήταν να δημιουργήσουμε ένα ρομπότ roomba που θα μπορούσε να δράσει αυτόνομα σε συγκεκριμένο χρονικό διάστημα και να αντιδράσει ανάλογα σε ορισμένα κριτήρια στην περιοχή του.

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

Βήμα 1: Εξοπλισμός

-Roomba w/ Attachable Camera (με συγκεκριμένο όνομα γνωστό)

-Συνδεδεμένος διακομιστής

-Windows 10 / Mac με δυνατότητα σύνδεσης στο Διαδίκτυο

-Φωτεινή πλατφόρμα

-Σκούρο πάτωμα

-Οποιαδήποτε αδέσποτα αντικείμενα μονόχρωμου σχεδιασμού

Βήμα 2: Ρύθμιση MATLAB

Ρύθμιση MATLAB
Ρύθμιση MATLAB

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

Με το MATLAB 2016a και μεταφορτωμένο, δημιουργήστε ένα φάκελο που περιέχει αυτά τα αρχεία ρομπότ και εισαγάγετε το παρακάτω αρχείο MATLAB παρακάτω στο φάκελο και εκτελέστε το για να εγκαταστήσετε τα υπόλοιπα απαραίτητα αρχεία roomba.

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

Τώρα, χρησιμοποιήστε την παρακάτω εντολή στο παράθυρο εντολών για να ρυθμίσετε το roomba:

r = roomba (#).

Το σύμβολο # είναι ο «αριθμός» του καθορισμένου δωματίου. Ωστόσο, εάν θέλετε απλώς έναν προσομοιωτή του roomba, πληκτρολογήστε την ακόλουθη εντολή:

r = roomba (0).

Η προσομοίωση συνιστάται για τον έλεγχο των μοτίβων κίνησης.

Εάν είστε περίεργοι για το τι εντολές μπορεί να ακολουθήσει το roomba, πληκτρολογήστε τα ακόλουθα στο παράθυρο εντολών:

doc roomba.

Για περισσότερες λεπτομέρειες, επισκεφθείτε την ακόλουθη ιστοσελίδα:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Βήμα 3: Λειτουργία: Κίνηση

Λειτουργία: Κίνηση
Λειτουργία: Κίνηση
Λειτουργία: Κίνηση
Λειτουργία: Κίνηση

Όσον αφορά την κίνηση, το roomba θα πρέπει να κινείται αυτόματα για ένα ορισμένο χρονικό διάστημα που αναφέρεται στις εισόδους. Ο στόχος της κίνησης του ρομπότ είναι να αντιδρά σωστά όταν αλλάζουν οι αισθητήρες του (προφυλακτήρες, προφυλακτήρες φωτός και αισθητήρες γκρεμών) παρουσία διαφόρων εμποδίων. Αυτό το μέρος θα λειτουργήσει ως βάση για όλες τις εντολές του roomba, καθώς θα προστεθούν περισσότερες δυνατότητες στον κώδικα αργότερα. Απαιτούνταν ορισμένες προδιαγραφές:

-Για να μειώσει τη ζημιά, το ρομπότ πρέπει να μειώσει την ταχύτητα σε χαμηλότερη ταχύτητα.

-Όταν πλησιάζει έναν γκρεμό ή έναν τοίχο, το ρομπότ θα κινηθεί αντίστροφα και θα αλλάξει τη γωνία του ανάλογα με το σημείο πρόσκρουσης

-Μετά από λίγο χρόνο οδήγησης, το roomba θα σταματήσει τελικά και θα τραβήξει φωτογραφίες από τη γύρω περιοχή

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

Βήμα 4: Λειτουργία: Επεξεργασία εικόνας

Λειτουργία: Επεξεργασία εικόνας
Λειτουργία: Επεξεργασία εικόνας

Σύμφωνα με το αίτημα, μας ανατέθηκε να τροποποιήσουμε τα δεδομένα μιας εικόνας (ή αρκετών εικόνων) που έλαβε η κάμερα του ρομπότ, στην οποία αποφασίσαμε να κάνουμε το roomba να «μετράει» τον αριθμό των αντικειμένων που βλέπει στην εικόνα.

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

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

Βήμα 5: Λειτουργία: Χαρτογράφηση

Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση
Λειτουργία: Χαρτογράφηση

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

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

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

Βήμα 6: Αντιπαραβολή

Αντιπαράθεση
Αντιπαράθεση
Αντιπαράθεση
Αντιπαράθεση
Αντιπαράθεση
Αντιπαράθεση
Αντιπαράθεση
Αντιπαράθεση

Δεδομένου ότι όλα αυτά θα τοποθετηθούν σε ένα μόνο αρχείο, δημιουργήσαμε μια συνάρτηση χρησιμοποιώντας καθένα από τα δύο προηγούμενα βήματα ως υπολειτουργίες του. Ένα τελικό σχέδιο έγινε με την ακόλουθη τροποποίηση της συνάρτησης redux που ονομάζεται "recon". Για να αποφευχθεί η σύγχυση για το MATLAB, τα σενάρια "counter" και "rombplot3" μετονομάστηκαν σε ενσωματωμένες συναρτήσεις "CountR" και "plotr", αντίστοιχα.

Αρκετές αλλαγές έπρεπε να γίνουν στην τελική έκδοση σε αντίθεση με τα προηγούμενα σενάρια:

-Η προέλευση θα επισημαίνεται πάντα με έναν κόκκινο κύκλο

-Κάθε φορά που το roomba σταματά από τους προφυλακτήρες, η θέση σημειώνεται με μαύρο κύκλο

-Κάθε φορά που το roomba σταματά από τους αισθητήρες του βράχου, η θέση σημειώνεται με έναν μπλε κύκλο

-Κάθε φορά που το roomba σταματά να ερευνά την περιοχή, η τοποθεσία σημειώνεται με έναν πράσινο κύκλο

-Οι εικόνες έχουν τροποποιηθεί ώστε να αφαιρεθεί το πάνω μέρος λόγω της πιθανής παρεμβολής της χρονικής σφραγίδας στα αποτελέσματα

-Τα σύνορα δεν θα υπολογίζονται ως αντικείμενο λόγω των μάλλον μεγάλων αριθμών που αποκτήθηκαν

-Έχουν αλλάξει αρκετές μεταβλητές, οπότε για να αποφύγετε τη σύγχυση χρησιμοποιήστε τις παραπάνω εκδόσεις για αναφορά.

Βήμα 7: Δοκιμή

Δοκιμές
Δοκιμές

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

Μετά τον καθορισμό του ρυθμισμένου χρόνου και της ταχύτητας βάσης, το roomba επέδειξε επαρκή συμπεριφορά κίνησης, σταματώντας και απομακρύνοντας κάθε «γκρεμό» ή αντικείμενο στο οποίο εισβάλλει καθώς και επιβραδύνοντας καθώς εντόπισε κάτι κοντά. Μόλις φτάσει στην επιθυμητή απόσταση ταξιδιού τριών μέτρων, το ρομπότ θα προχωρήσει στη στάση και θα αξιολογήσει την περιοχή, λαμβάνοντας εικόνες από κάθε περιοχή 45 μοιρών και θα προχωρήσει μπροστά αν το επιτρέπει ο χρόνος. Ωστόσο, οι στροφές του εμφανίστηκαν μεγαλύτερες από τις ζητούμενες, πράγμα που σημαίνει ότι τα δεδομένα συντεταγμένων θα αποκρύπτονταν.

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

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

Βήμα 8: Συμπέρασμα

συμπέρασμα
συμπέρασμα

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

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

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

Συνιστάται: