Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Σύνδεση
- Βήμα 3: Λογική δημιουργία κώδικα MATLAB για χρήση αισθητήρων
- Βήμα 4: Δοκιμή κώδικα και ρομπότ
- Βήμα 5: Αναγνώριση σφάλματος
- Βήμα 6: Συμπέρασμα
Βίντεο: Roomba Parking Pal: 6 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Αυτό το έργο χρησιμοποιεί ένα 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 για χρήση αισθητήρων
Ο κώδικας θα είναι πιο εύκολο να δημιουργηθεί όταν η πλειοψηφία του είναι εντός του βρόχου 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 σας, πράγμα που σημαίνει ότι μπορείτε να χειριστείτε τον κώδικα με όποιον τρόπο θέλετε για να επιτύχετε τους στόχους που επιθυμείτε. Αυτό θα πρέπει να είναι το καλύτερο μέρος της ημέρας σας, οπότε διασκεδάστε και οδηγήστε με ασφάλεια!
Συνιστάται:
Arduino Parking Assistant - Παρκάρετε το αυτοκίνητό σας στο σωστό σημείο κάθε φορά: 5 βήματα (με εικόνες)
Arduino Parking Assistant - Παρκάρετε το αυτοκίνητό σας στο σωστό σημείο κάθε φορά: Σε αυτό το έργο, θα σας δείξω πώς να φτιάξετε τον δικό σας βοηθό στάθμευσης χρησιμοποιώντας ένα Arudino. Αυτός ο βοηθός στάθμευσης μετρά την απόσταση από το αυτοκίνητό σας και σας καθοδηγεί να το σταθμεύσετε στο σωστό σημείο χρησιμοποιώντας μια ένδειξη οθόνης LCD και ένα LED, το οποίο προοδευτικά
Cyber-Physical Security of Smart Parking and Traffic Control: 6 βήματα
Cyber-Physical Security of Smart Parking and Traffic Control: Το διαδίκτυο αυξάνεται με δισεκατομμύρια συσκευές, όπως αυτοκίνητα, αισθητήρες, υπολογιστές, διακομιστές, ψυγεία, κινητές συσκευές και πολλά άλλα με πρωτοφανή ρυθμό. Αυτό εισάγει πολλαπλούς κινδύνους και τρωτά σημεία στην υποδομή, τη λειτουργία ενός
DIY - Arduino Based Parking Assistant V2: 6 βήματα
DIY - Arduino Based Parking Assistant V2: Όταν η ζωή σου δίνει μπανάνες !!!!! Απλώς φάτε τα. Η αναγκαιότητα είναι η μητέρα των εφευρέσεων και δεν θα αρνηθώ αυτό το γεγονός. Ειλικρινά, αυτή είναι η 2η φορά που έπεσα στον τοίχο του γκαράζ από τότε που μετακομίσαμε σε αυτό το νέο σπίτι. Αυτό ήταν, δεν θα υπήρχε
MIDI Pod-Pal: 4 βήματα
MIDI Pod-Pal: *** ΕΝΗΜΕΡΩΣΗ 4/22/'21 ****** Έχω προσθέσει ένα πλήρες διάγραμμα που δείχνει όλη την καλωδίωση που βοηθά στην κατασκευή. *** Δεν θα μπω σε ένα γελοίο ποσό βάθος εδώ στο κομμάτι της κατασκευής, η πρόθεσή μου ήταν να δείξω ένα άλλο παράδειγμα κατασκευής ενός MI που βασίζεται σε Arduino
Roomba-Assistant Assisting Roomba: 4 Βήματα
Roomba-Assisting Roomba: Αυτό το έργο γίνεται χρησιμοποιώντας το Raspberry Pi 3 στο iRobot Create Version 2. Το MATLAB χρησιμοποιείται για να προγραμματίσει το ρομπότ να ακολουθεί συγκεκριμένες οδηγίες χρησιμοποιώντας τους αισθητήρες και την κάμερα. Οι αισθητήρες και οι κάμερες χρησιμοποιούνται για την εκτέλεση συγκεκριμένων