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

Roomba-Assistant Assisting Roomba: 4 Βήματα
Roomba-Assistant Assisting Roomba: 4 Βήματα

Βίντεο: Roomba-Assistant Assisting Roomba: 4 Βήματα

Βίντεο: Roomba-Assistant Assisting Roomba: 4 Βήματα
Βίντεο: You’re welcome 😚 #Roomba #maintenance 2024, Νοέμβριος
Anonim
Roomba που βοηθάει τον αστροναύτη
Roomba που βοηθάει τον αστροναύτη

Αυτό το έργο γίνεται χρησιμοποιώντας το Raspberry Pi 3 στο iRobot Δημιουργία έκδοσης 2. Το MATLAB χρησιμοποιείται για να προγραμματίσει το ρομπότ να ακολουθεί συγκεκριμένες οδηγίες χρησιμοποιώντας τους αισθητήρες και την κάμερα. Οι αισθητήρες και οι κάμερες χρησιμοποιούνται για την εκτέλεση συγκεκριμένων εργασιών που θα ακολουθούσαν έναν αστροναύτη και θα του έδιναν τη δυνατότητα να επικοινωνεί με την οικιακή του βάση εάν κάτι πάει στραβά.

Βήμα 1: Απαραίτητα ανταλλακτικά

Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά
Απαραίτητα ανταλλακτικά

1. iRobot Δημιουργία έκδοσης 2

Το iRobot Create είναι το πιο ουσιαστικό μέρος αυτού του έργου αφού είναι προγραμματιζόμενο και μπορεί να αποτελέσει μια εξαιρετική αναπαράσταση για ένα πραγματικό rover που ακολουθεί τους αστροναύτες και τους βοηθά στο μέλλον

2. Raspberry Pi 3

Το Raspberry Pi ήταν το προγραμματιζόμενο που χρησιμοποιήθηκε για αυτό το έργο. Ο κωδικός έχει σχεδιαστεί για το Pi και η έκδοση του Pi που επισυνάπτεται είναι το 3 (μοντέλο Β). Άλλοι προγραμματιζόμενοι πίνακες όπως το arduino είναι χρήσιμοι, ωστόσο, το arduino και οι περισσότεροι άλλοι πίνακες θα απαιτούν διαφορετική κωδικοποίηση από αυτή που περιγράφεται σε άλλο βήμα

3. Ενότητα κάμερας Raspberry Pi

Η μόνη εξωτερική σύνδεση με το Raspberry Pi που απαιτείται για αυτό το έργο είναι η μονάδα κάμερας. Η μονάδα κάμερας είναι το αναπόσπαστο μέρος αυτού του έργου, καθώς το roomba θα εκτελεί εργασίες μόνο με βάση αυτό που βλέπει στην κάμερα

4. MATLAB 2018a

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

Βήμα 2: Διαμόρφωση αρχείων και κάμερας

Διαμόρφωση αρχείων και κάμερας
Διαμόρφωση αρχείων και κάμερας

1. Σύνδεση Raspberry Pi και κάμερας με το roomba

  • Το Pi μπορεί να συνδεθεί απευθείας στο iRobot με micro USB. Αυτό είναι το μόνο που χρειάζεται για να είναι έτοιμο για χρήση. Ωστόσο, συνιστάται να τοποθετείται με ασφάλεια στο roomba, όπως φαίνεται στις εικόνες καθ 'όλη τη διάρκεια της παρουσίασης μέχρι τώρα.
  • Η κάμερα έχει άμεση σύνδεση με το Raspberry Pi και συνιστάται ιδιαίτερα να αγοράσετε ή να κάνετε κάτι για να κρατήσετε την κάμερα απευθείας ψηλά. Δεν υπάρχει πραγματικό νόημα για την κάμερα αν δεν μπορεί να κρατηθεί στη θέση της για να δείξει τι βλέπει η κάμαρα.

2. Αρχεία

  • Αφού ρυθμίσετε και συνδέσετε τα πάντα, βεβαιωθείτε ότι το ρομπότ είναι μηδενισμένο και έτοιμο για λειτουργία, κρατώντας πατημένα τα κουμπιά "Spot" και "Dock" για 10 δευτερόλεπτα μαζί.
  • Εδώ είναι που χρειάζεται πρώτα το MATLAB. Τα αρχεία για το roomba πρέπει να εγκατασταθούν πρώτα και το μόνο που χρειάζεται για να εκτελεστούν αυτά τα αρχεία είναι ο κώδικας που παρέχεται σε αυτόν τον σύνδεσμο:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Βήμα 3: Αρχική δοκιμή Roomba

Υπάρχουν πολλοί αρχικοί έλεγχοι που πρέπει να γίνουν στο roomba για να βεβαιωθείτε ότι λειτουργεί.

1. Βεβαιωθείτε ότι είστε συνδεδεμένοι στο ίδιο δίκτυο WiFi με το roomba. Χωρίς αυτό, δεν θα συνδεθείτε ποτέ μέσω του MATLAB.

2. Μάθετε σε ποιον αριθμό έχει εκχωρηθεί το roomba σας, ώστε να μπορείτε να συνδεθείτε συγκεκριμένα με το roomba που επιλέξατε. Για παράδειγμα, εάν ο αριθμός του roomba σας είναι 30, θα συνδεθείτε με αυτόν πληκτρολογώντας το roomba (30) στο παράθυρο εντολών στο MATLAB.

3. Το roomba μπορεί να ελεγχθεί μέσω δομών στο MATLAB. Για παράδειγμα, εάν ορίσετε τον κωδικό σας για το roomba (30) στη μεταβλητή 'r', το ρομπότ μπορεί να μετακινηθεί προς τα εμπρός με την εντολή r.moveDistance (0.2, 0.1).

4. Υπάρχουν πολλές διαφορετικές εντολές που μπορούν να κοινοποιηθούν στο roomba και αυτές μπορούν να προβληθούν πληκτρολογώντας «doc roomba» στο παράθυρο εντολών.

5. Οι αισθητήρες για ανάγνωση φωτός, χτυπήματος και γκρεμού μπορούν όλοι να διαβαστούν χρησιμοποιώντας τις εντολές που εμφανίζονται στο «doc roomba», αλλά ένας τρόπος για να έχετε ένα σταθερό, τακτοποιημένο μενού για να δείτε τα δεδομένα των αισθητήρων μπορεί να δει με τη χρήση του «r.testSensors '.

6. Αφού δοκιμάσετε όλα αυτά, το λογισμικό συλλογής εικόνων του ρομπότ μπορεί να χρησιμοποιηθεί για την ανάγνωση και την προβολή φωτογραφιών. Ο βασικός κώδικας για αυτό θα ήταν img = r.getImage και imshow (img); Το

7. Τιμές RGB της εικόνας μπορείτε να βρείτε με τους κωδικούς red_mean = mean (mean (img (:,,, 1)));

green_mean = μέσος όρος (μέσος όρος (img (:,:, 2))); και blue_mean = μέσος όρος (μέσος όρος (img (:,,, 3))); Το

Βήμα 4: Παράδειγμα κώδικα MATLAB

Παράδειγμα Κώδικας MATLAB
Παράδειγμα Κώδικας MATLAB

Σε αυτό το σημείο, είστε πλέον έτοιμοι να χρησιμοποιήσετε τους αισθητήρες και το λογισμικό λήψης εικόνας για να δημιουργήσετε τη δική σας περιστροφή σε ένα πρωτότυπο Mars Rover που βοηθά τον άνθρωπο. Το παράδειγμά μας είναι να ακολουθήσουμε τον αστροναύτη παρακολουθώντας το λευκό χρώμα και να κινηθούμε προς αυτό. Το ρομπότ θα κάνει μπιπ εάν οι αισθητήρες του διαβάζουν υψηλές τιμές, έτσι ώστε ο αστροναύτης να μπορεί να επαναφέρει το ρομπότ εάν έχει κολλήσει ή να πάει να το πάρει και να το επαναφέρει αν είναι κολλημένο σε έναν γκρεμό. Ωστόσο, διαβάζει μόνο αυτά τα σφάλματα αρκεί να βλέπει λευκό. Χωρίς να μπορεί να δει το λευκό χρώμα, το ρομπότ θα εισέλθει σε λειτουργία σφάλματος. Είναι προγραμματισμένο να στέλνει δύο διαφορετικά είδη μηνυμάτων ηλεκτρονικού ταχυδρομείου πίσω στην αρχική βάση, ανάλογα με το τι βλέπει. Εάν δει το χρώμα του δέρματος του αστροναύτη, αυτό προφανώς δεν είναι καλό, οπότε θα ειδοποιήσει τη βάση του σπιτιού εάν ο αστροναύτης εμφανίζει δέρμα με δυσλειτουργία κοστουμιού. Το άλλο μήνυμα ετοιμάζεται αν ο αστροναύτης απλώς εξαφανιστεί από τα μάτια. Εάν δεν εμφανίζεται λευκό ή χρώμα δέρματος για τις κάμερες, το ρομπότ θα περιστρέφεται και θα στέλνει ένα άλλο, αλλά διαφορετικό email. Οι εικόνες όπου το roomba δεν μπορεί να δει τον αστροναύτη θα σταλούν μαζί με το μήνυμα στα μηνύματα ηλεκτρονικού ταχυδρομείου. Ο κωδικός για το έργο μας φαίνεται παρακάτω:

για i = 1:.1: 3 img = r.getImage; εικόνα (img) red_mean = μέσος όρος (μέσος όρος (img (:,:, 1))); green_mean = μέσος όρος (μέσος όρος (img (:,:, 2))); blue_mean = μέσος όρος (μέσος όρος (img (:,,, 3))); αν red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftΜπροστινό <10 || cliff.rightΜπροστινό <10 || cliff.right700 || light.leftΜπροστινό> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightΕμπρός> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else for i = 1: 2 r.moveDistance (0.2, 0.1) r setDriveVelocity (.3,.2) r.stop end end τέλος αν green_mean <35 && blue_mean <35 %εμφανίζεται το χρώμα του δέρματος (πρέπει να προσαρμοστεί με βάση το χρώμα του δέρματος του αστροναύτη) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; %στέλνει email που δείχνει ότι το κοστούμι είναι απενεργοποιημένο psswd = 'ναι'; host = 'smtp.gmail.com'; θύρα = '465'; emailto = '[email protected]'; m_subject = 'θέμα'; m_text = 'δοκιμή'; setpref ("Διαδίκτυο", "E_mail", αλληλογραφία); setpref ('Internet', 'SMTP_Server', host)? setpref ('Internet', 'SMTP_Username', mail)? setpref ("Internet", "SMTP_Password", psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail)? props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port)? props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port)? props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ("mail.smtp.socketFactory.fallback", "false"); sendmail (emailto, 'Help!', 'The astronauts uniform is off!', img)? τέλος αν red_mean 135 || green_mean 135 || blue_mean 135 για j = 1: 2 %αν δεν μπορεί να βρεθεί λευκό από το ρομπότ r.turnAngle (360) mail = '[email protected]'; psswd = 'ναι'; host = 'smtp.gmail.com'; θύρα = '465'; emailto = '[email protected]'; m_subject = 'θέμα'; m_text = 'δοκιμή'; setpref ("Διαδίκτυο", "E_mail", αλληλογραφία); setpref ('Internet', 'SMTP_Server', host)? setpref ('Internet', 'SMTP_Username', mail)? setpref ("Διαδίκτυο", "SMTP_Password", psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mail)? props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', port)? props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port)? props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ("mail.smtp.socketFactory.fallback", "false"); sendmail (emailto, 'Help!', 'The astronaut can't be found!', img)? r.stop τέλος τέλος τέλος

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

Ωστόσο, το παράδειγμά μας είναι μόνο ένας από τους πολλούς τρόπους να μπλέξετε με αυτό το ρομπότ για να ταιριάζει σε όλους. Υπάρχουν πολλά διαφορετικά πράγματα που πρέπει να γίνουν, τα οποία μπορείτε να προσαρμόσετε στον εαυτό σας.

Συνιστάται: