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

Roomba Parking Pal: 6 Βήματα
Roomba Parking Pal: 6 Βήματα

Βίντεο: Roomba Parking Pal: 6 Βήματα

Βίντεο: Roomba Parking Pal: 6 Βήματα
Βίντεο: Quick start guide to Roomba® 2024, Ιούλιος
Anonim
Roomba Parking Pal
Roomba Parking Pal

Αυτό το έργο χρησιμοποιεί ένα iRobot Δημιουργία προγραμματιζόμενου roomba, MATLAB r2018a και MATLAB κινητό. Χρησιμοποιώντας αυτά τα τρία μέσα και τις γνώσεις μας για την κωδικοποίηση, προγραμματίσαμε το iRobot Create να ερμηνεύει χρώματα και να χρησιμοποιεί ενσωματωμένους αισθητήρες για την ολοκλήρωση εργασιών. Αυτό το έργο εξαρτάται από την επικοινωνία Raspberry Pi και MATLAB για την εκτέλεση αυτών των εργασιών.

Βήμα 1: Υλικά

Υλικά
Υλικά
Υλικά
Υλικά

1. iRobot Δημιουργία ρομπότ

2. MATLAB r2018a

3. Raspberry Pi

4. Ενότητα κάμερας

5. Τρισδιάστατη εκτυπωμένη βάση σταθεροποίησης κάμερας

6. Smartphone με εγκατεστημένο κινητό MATLAB

7. Laptop/Computer με εγκατεστημένο το MATLAB

Βήμα 2: Σύνδεση

Αυτό το βήμα αφορά τη σύνδεση του Raspberry Pi με το ρομπότ, δεύτερον τη σύνδεση του ρομπότ με τον υπολογιστή σας και τη σύνδεση του smartphone με τον υπολογιστή.

Το πιο εύκολο μέρος αυτής της διαδικασίας είναι η σύνδεση του Raspberry Pi με το ρομπότ σας, αφού το Raspberry Pi είναι τοποθετημένο στην κορυφή του ρομπότ. Υπάρχει ένα καλώδιο από το ρομπότ που το μόνο που έχετε να κάνετε είναι να το συνδέσετε στο πλάι του Raspberry Pi.

Το επόμενο βήμα είναι η σύνδεση του ρομπότ με τον υπολογιστή σας, ώστε να μπορείτε να εκτελέσετε εντολές για να εκτελέσει το ρομπότ. Το πρώτο πράγμα που πρέπει να κάνετε είναι να συνδέσετε τον υπολογιστή σας στο ασύρματο δίκτυο που δημιουργεί το roomba σας. Τώρα, συνιστάται να χρησιμοποιήσετε το εικονίδιο Set Path στο MATLAB για να ορίσετε τη διαδρομή, ώστε να μπορείτε να χρησιμοποιήσετε τις λειτουργίες της εργαλειοθήκης Roomba από το MATLAB. Κάθε φορά που ξεκινάτε και τελειώνετε με το ρομπότ, πρέπει να κάνετε μια σκληρή επαναφορά του ρομπότ "Two-Finger Salute", πράγμα που σημαίνει ότι κρατάτε πατημένα τα κουμπιά σύνδεσης και εντοπισμού για δέκα δευτερόλεπτα έως ότου η φωτεινή ένδειξη δείξει ότι θα απελευθερωθεί. Είχατε επιτυχία με αυτήν τη σκληρή επαναφορά εάν ακούσετε το ρομπότ να παίζει σε μικρή κλίμακα. Στη συνέχεια, πρέπει να συνδεθείτε στο roomba χρησιμοποιώντας μια γραμμή κώδικα όπως αυτή "r = roomba (x)", όπου "x" είναι ο αριθμός που ορίζεται στο ρομπότ που έχετε.

Τέλος, πρέπει να κατεβάσετε το κινητό MATLAB σε οποιαδήποτε κινητή συσκευή θα χρησιμοποιήσετε για αυτό το έργο και αυτή η εφαρμογή είναι διαθέσιμη τόσο σε συσκευές Android όσο και σε συσκευές Apple. Μόλις εγκατασταθεί η εφαρμογή, θα πρέπει να συνδεθείτε χρησιμοποιώντας τα διαπιστευτήριά σας. Στη συνέχεια, πρέπει να συνδέσετε αυτήν τη συσκευή στον υπολογιστή σας, χρησιμοποιώντας την καρτέλα με την ένδειξη "Περισσότερα" -> στη συνέχεια κάντε κλικ στην επιλογή "ρυθμίσεις" -> στη συνέχεια κάντε κλικ στην επιλογή "Προσθήκη υπολογιστή", αυτό θα εμφανίσει την οθόνη που φαίνεται στις παραπάνω εικόνες. Αφού το δείτε Το επόμενο βήμα που πρέπει να περάσετε είναι να συνδέσετε και να συνδέσετε τις πληροφορίες που ζητάει. Μόλις συνδεθείτε επιτυχώς, θα μπορείτε να καλέσετε στο τηλέφωνό σας λειτουργίες που ορίζετε στον υπολογιστή σας για τον έλεγχο του ρομπότ σας.

Βήμα 3: Λογική δημιουργία κώδικα MATLAB για χρήση αισθητήρων

Λογικά Δημιουργία κώδικα MATLAB για χρήση αισθητήρων
Λογικά Δημιουργία κώδικα MATLAB για χρήση αισθητήρων

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

Σχεδιασμένος στο r2018a MATLAB, αυτός ο κώδικας χρησιμοποιεί τις τυπικές εργαλειοθήκες, την εργαλειοθήκη iRobot Create, καθώς και την εργαλειοθήκη κινητών MATLAB. Το roomba που χρησιμοποιείται σε αυτό το παράδειγμα ορίζεται ως 26 και το r = roomba (26) χρειάζεται να εκτελεστεί μόνο μία φορά για να επικοινωνήσει πλήρως με το roomba.

Κώδικας:

συνάρτηση parkassist (x) εάν x == 1

r = roomba (26) % συνδέεται με roomba

ενώ ισχύει

r.setDriveVelocity (.05,.05) % ρυθμίζει το roomba σε πιο αργή ταχύτητα οδήγησης

bump = r.getBumpers % λαμβάνει τα δεδομένα από τους αισθητήρες bump

cliff = r.getCliffSensors % λαμβάνει τα δεδομένα από τους αισθητήρες βράχου

light = r.getLightBumpers % λαμβάνει τα δεδομένα από τους αισθητήρες χτυπήματος φωτός

img = r.getImage;% διαβάζει την κάμερα από το ρομπότ

red_mean = μέσο (μέσος όρος (img (:,:, 1))) % διαβάζει τη μέση ποσότητα κόκκινων εικονοστοιχείων

green_mean = μέσο (μέσος όρος (img (:,,, 2))) % διαβάζει τη μέση ποσότητα πράσινων εικονοστοιχείων

blue_mean = μέσος όρος (μέσος όρος (img (:,,, 3))) % διαβάζει τη μέση ποσότητα μπλε εικονοστοιχείων

αν bump.front == 1 %διαβάζει μπροστά αισθητήρες χτυπήματος

r.stop %σταματά το roomba

Το msgbox ('Path Obscured!', 'Parking Assistant Message') % εμφανίζει το μήνυμα λέγοντας ότι η διαδρομή αποκρύπτεται % τερματίζει τον βρόχο

elseif green_mean> 150

r.stop %σταματά το roomba

cont = questdlg ('Continue?', 'Path Completed') %εμφανίζει το πλαίσιο ερωτήσεων που ζητά να συνεχιστεί

αν cont == 'Ναι'

parkassist (1) %επανεκκινεί τον κώδικα

αλλού

τέλος

Το break % τελειώνει τον βρόχο

elseif red_mean> 140

r.turnAngle (45) %γυρίζει την αίθουσα δωματίου 45 μοίρες

r.timeStart %ξεκινά μετρητή ώρας

ενώ ισχύει

r.setDriveVelocity (.05,.05) %ορίζει την ταχύτητα του δωματίου

time = r.timeGet %εκχωρεί το χρόνο σε μια μεταβλητή

bump = r.getBumpers % λαμβάνει τα δεδομένα από τους αισθητήρες bump

cliff = r.getCliffSensors % λαμβάνει τα δεδομένα από τους αισθητήρες βράχου

light = r.getLightBumpers % λαμβάνει τα δεδομένα από τους αισθητήρες χτυπήματος φωτός

img = r.getImage;% διαβάζει την κάμερα από το ρομπότ

red_mean = μέσο (μέσος όρος (img (:,:, 1))) % διαβάζει τη μέση ποσότητα κόκκινων εικονοστοιχείων

green_mean = μέσο (μέσος όρος (img (:,,, 2))) % διαβάζει τη μέση ποσότητα πράσινων εικονοστοιχείων

blue_mean = μέσος όρος (μέσος όρος (img (:,,, 3))) % διαβάζει τη μέση ποσότητα μπλε εικονοστοιχείων

αν blue_mean> 120

r.moveDistance (-0.01) % μετακινεί το roomba προς τα πίσω ένα τραγούδι καθορισμένης απόστασης Αναπαραγωγή (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % παίζει μια αυξανόμενη μουσική κλίμακα

Το msgbox ('Water Found!', 'Parking Assistant Message') % εμφανίζει ένα μήνυμα που λέει ότι βρέθηκε νερό r.turnAngle (-80) % περιστρέφει την αίθουσα 80 μοίρες

διακοπή % τερματίζει τον τρέχοντα βρόχο

elseif light.rightΜπροστινό> 25 || light.leftFront> 25 %διαβάζει αισθητήρες κτυπήματος φωτός

r.moveDistance (-0,01) % μετακινεί το roomba προς τα πίσω σε μια καθορισμένη απόσταση

r.turnAngle (-35) % περιστρέφει το roomba 35 μοίρες

διακοπή %τερματίζει τον τρέχοντα βρόχο

elseif cliff.rightFront <2500 && cliff.leftΜπροστά <2500 %διαβάζει και τους δύο αισθητήρες βράχου

r.moveDistance (-0,1) % μετακινεί το roomba προς τα πίσω σε μια καθορισμένη απόσταση

r.turnAngle (-80) %περιστρέφει το roomba 80 μοίρες

διακοπή % τερματίζει τον τρέχοντα βρόχο

elseif time> = 3

r.stop %σταματά το roomba

Contin = questdlg ('Free Station, Continue?', 'Parking Assistant Message') %ρωτά αν θα πρέπει να συνεχίσει το roomba αν συνεχίσει == 'Ναι'

r.turnAngle (-90) % περιστρέφει την αίθουσα 90 μοιρών

parkassist (1) %επανεκκινεί τη λειτουργία

αλλού

r.stop % σταματά το roomba

τέλος

αλλού

τέλος

τέλος

elseif cliff.rightFront <2500 && cliff.leftΜπροστά <2500 %διαβάζει και τους δύο αισθητήρες βράχου

r.moveDistance (-0,1) %μετακινεί το roomba προς τα πίσω σε μια καθορισμένη απόσταση

r.turnAngle (-90) %περιστρέφει το roomba κατά 90 μοίρες

elseif cliff.rightFront <2500 %διαβάζει τον σωστό αισθητήρα βράχου

r.turnAngle (-5) %στρέφει ελαφρώς το roomba στην αντίθετη κατεύθυνση του αισθητήρα βράχου

elseif cliff.leftΜπροστά <2500 %διαβάζει τον αριστερό αισθητήρα βράχου

r.turnAngle (5) %γυρίζει ελαφρώς το roomba στην αντίθετη κατεύθυνση του αισθητήρα βράχου

αλλού

τέλος

τέλος

τέλος

Βήμα 4: Δοκιμή κώδικα και ρομπότ

Δοκιμή κώδικα και ρομπότ
Δοκιμή κώδικα και ρομπότ
Δοκιμή κώδικα και ρομπότ
Δοκιμή κώδικα και ρομπότ
Δοκιμή κώδικα και ρομπότ
Δοκιμή κώδικα και ρομπότ

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

Βήμα 5: Αναγνώριση σφάλματος

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

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

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

Συνιστάται: