Πίνακας περιεχομένων:
- Βήμα 1: Αρχικοποίηση και αισθητήρες
- Βήμα 2: Λήψη δεδομένων
- Βήμα 3: Τελική αποστολή
- Βήμα 4: Συμπέρασμα
Βίντεο: Roomba Explorer: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Χρησιμοποιώντας το MATLAB και το iRobot's Create2 Robot, αυτό το έργο θα εξερευνήσει διάφορες περιοχές μιας άγνωστης τοποθεσίας. Χρησιμοποιήσαμε τους αισθητήρες στο Robot για να βοηθήσουμε στον ελιγμό ενός επικίνδυνου εδάφους. Λαμβάνοντας φωτογραφίες και βίντεο από ένα Raspberry Pi που επισυνάπτεται, μπορέσαμε να προσδιορίσουμε τα εμπόδια που θα αντιμετωπίσει το Robot και θα ταξινομηθούν.
Ανταλλακτικά και Υλικά
Για αυτό το έργο, θα χρειαστείτε
-ένας υπολογιστής
-η νεότερη έκδοση του MATLAB (το MATLAB R2018b χρησιμοποιήθηκε για αυτό το έργο)
- roombaInstall εργαλειοθήκη
-iRobot's Create2 Robot
-Raspberry Pi με κάμερα
Βήμα 1: Αρχικοποίηση και αισθητήρες
Πριν ξεκινήσουμε οποιονδήποτε προγραμματισμό, κατεβάσαμε την εργαλειοθήκη roombaInstall, η οποία επέτρεπε την πρόσβαση σε διαφορετικά στοιχεία του Robot.
Αρχικά, δημιουργήσαμε ένα GUI για να προετοιμάσουμε οποιοδήποτε ρομπότ. Για να το κάνετε αυτό, πρέπει να πληκτρολογήσετε τον αριθμό του Ρομπότ ως είσοδο. Αυτό θα επιτρέψει την πρόσβαση για την εκτέλεση του προγράμματός μας στο Ρομπότ. Δουλέψαμε για να οδηγήσουμε το Ρομπότ σε πολλούς εδάφους που θα συναντούσε. Εφαρμόσαμε τους αισθητήρες Cliff, τους αισθητήρες χτυπήματος φωτός και τους αισθητήρες φυσικού χτυπήματος, χρησιμοποιώντας τις εξόδους τους για να ταξιδέψουμε το ρομπότ για να αλλάξουμε ταχύτητα και κατεύθυνση. Όταν κάποιος από τους έξι αισθητήρες χτυπήματος φωτός ανιχνεύει ένα αντικείμενο, η τιμή που παράγουν θα μειωθεί, με αποτέλεσμα η ταχύτητα του ρομπότ να μειωθεί για να αποφευχθεί σύγκρουση πλήρους ταχύτητας. Όταν το Ρομπότ τελικά συγκρουστεί με ένα εμπόδιο, οι αισθητήρες Physical Bump θα αναφέρουν μια τιμή μεγαλύτερη από το μηδέν. εξαιτίας αυτού, το Robot θα σταματήσει, οπότε δεν θα υπάρξουν περαιτέρω συγκρούσεις και περισσότερες λειτουργίες μπορούν να τεθούν σε δράση. Για τους αισθητήρες Cliff, θα διαβάσουν τη φωτεινότητα της περιοχής γύρω τους. Εάν η τιμή είναι μεγαλύτερη από 2800, καθορίσαμε ότι το Ρομπότ θα ήταν σε σταθερό έδαφος και ασφαλές. Αλλά, εάν η τιμή είναι μικρότερη από 800, οι αισθητήρες Cliff θα ανιχνεύσουν έναν γκρεμό, σταματώντας αμέσως για να μην πέσουν. Οποιαδήποτε τιμή ενδιάμεσα καθορίστηκε ότι αντιπροσωπεύει το νερό και θα προκαλέσει το Ρομπότ να σταματήσει τη δράση του. Χρησιμοποιώντας τους παραπάνω αισθητήρες, η ταχύτητα του Ρομπότ αλλάζει επιτρέποντάς μας να προσδιορίσουμε καλύτερα εάν υπάρχει κάποιος κίνδυνος.
Παρακάτω είναι ο κωδικός (από το MATLAB R2018b)
%% Αρχικοποίηση
dlgPrompts = {'Αριθμός Roomba'};
dlgTitle = 'Επιλέξτε το Roomba σας';
dlgDefaults = {''};
opts. Resize = 'on';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Δημιουργία παραθύρου που ζητά από τον χρήστη να εισαγάγει τον αριθμό του δωματίου του
n = str2double (dlgout {1});
r = roomba (n); % Αρχικοποιεί τον καθορισμένο από τον χρήστη Roomba %% Προσδιορισμός ταχύτητας από αισθητήρες Light Bump ενώ ισχύει s = r.getLightBumpers; % λαμβάνουν αισθητήρες χτυπήματος φωτός
lbumpout_1 = extractfield (s, 'left'); % λαμβάνει τις αριθμητικές τιμές των αισθητήρων και τους καθιστά πιο εύχρηστους lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = extractfield (s, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, 'rightFront');
lbumpout_6 = extractfield (s, 'right');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % μετατρέπει τιμές σε πίνακα
sLbump = ταξινόμηση (lbout); Μπορεί να εξαχθεί %μήτρα ταξινομήσεων στη χαμηλότερη τιμή
lowLbump = sLbump (1); ταχύτητα =.05+(lowLbump)*. 005 %χρησιμοποιώντας τη χαμηλότερη τιμή, η οποία αντιπροσωπεύει στενά εμπόδια, για τον προσδιορισμό της ταχύτητας, υψηλότερη ταχύτητα όταν δεν ανιχνεύεται τίποτα
r.setDriveVelocity (ταχύτητα, ταχύτητα)
τέλος
% Φυσικοί προφυλακτήρες
b = r.getBumpers; %Έξοδος αληθής, ψευδής
bsen_1 = extractfield (β, «αριστερά»)
bsen_2 = extractfield (β, «δεξιά»)
bsen_3 = extractfield (β, «μπροστά»)
bsen_4 = extractfield (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'rightWheelDrop')
χτυπήματα = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = άθροισμα (αλήτες)
αν tbump> 0 r.setDriveVelocity (0, 0)
τέλος
% Αισθητήρες Cliff
c = r.getCliffSensors %% 2800 ασφαλές, αλλιώς νερό
csen_1 = extractfield (γ, «αριστερά»)
csen_2 = extractfield (γ, «δεξιά»)
csen_3 = extractfield (γ, «αριστερά μπροστά»)
csen_4 = extractfield (c, 'rightFront')
γκρεμοί = [csen_1, csen_2, csen_3, csen_4]
ordcliff = ταξινόμηση (γκρεμοί)
εάν ordcliff (1) <2750
r.setDriveVelocity (0, 0)
αν γκρεμός <800
disp 'cliff'
αλλού
διαρροή «νερού»
τέλος
r. TurnAngle (45)
τέλος
Βήμα 2: Λήψη δεδομένων
Αφού ενεργοποιηθούν οι αισθητήρες φυσικού χτυπήματος, το Robot θα εφαρμόσει το Raspberry Pi στο σκάφος του για να τραβήξει μια φωτογραφία του εμποδίου. Αφού τραβήξετε μια φωτογραφία, χρησιμοποιώντας αναγνώριση κειμένου εάν υπάρχει κείμενο στην εικόνα, το Ρομπότ θα καθορίσει ποιο είναι το εμπόδιο και τι λέει το εμπόδιο.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
φωτογραφία = imread ('imgfromcamera.jpg')
ocrResults = ocr (φωτογραφία)
αναγνωρισμένοText = ocrResults. Text;
εικόνα;
κείμενο απεικόνισης (φωτογραφία) (220, 0, αναγνωρισμένοκείμενο, 'BackgroundColor', [1 1 1]);
Βήμα 3: Τελική αποστολή
Όταν το Ρομπότ καθορίσει ότι το εμπόδιο είναι το ΣΠΙΤΙ, θα ολοκληρώσει την αποστολή του και θα μείνει σπίτι. Μετά την ολοκλήρωση της αποστολής, το Ρομπότ θα στείλει μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου ότι επέστρεψε στο σπίτι και θα στείλει τις εικόνες που πήρε κατά τη διάρκεια του ταξιδιού του.
% Αποστολή e-mail
setpref ("Διαδίκτυο", "SMTP_Server", "smtp.gmail.com");
setpref ("Διαδίκτυο", "E_mail", "[email protected]"); % λογαριασμός αλληλογραφίας προς αποστολή από το setpref ('Διαδίκτυο', 'SMTP_Username', 'εισαγωγή email αποστολέα'). % username setpref ονόματος αποστολέα («Διαδίκτυο», «SMTP_Password», «εισαγωγή κωδικού αποστολέα»). % Κωδικός πρόσβασης αποστολέων
props = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ("Εισαγάγετε email λήψης", "Roomba", "Roomba επέστρεψε στο σπίτι !!", "imgfromcamera.jpg") % λογαριασμός αλληλογραφίας για αποστολή
Το ρομπότ τελειώνει.
Βήμα 4: Συμπέρασμα
Το πρόγραμμα MATLAB που περιλαμβάνεται διαχωρίζεται από ολόκληρο το σενάριο που χρησιμοποιήθηκε με το Robot. Στο τελικό σχέδιο, βεβαιωθείτε ότι έχετε βάλει όλο τον κώδικα, εκτός από το βήμα προετοιμασίας, σε έναν βρόχο while για να βεβαιωθείτε ότι οι προφυλακτήρες λειτουργούν συνεχώς. Αυτό το πρόγραμμα μπορεί να επεξεργαστεί ώστε να ταιριάζει στις ανάγκες του χρήστη. Εμφανίζεται η διαμόρφωση του ρομπότ μας.
*Υπενθύμιση: Μην ξεχνάτε ότι η εργαλειοθήκη roombaInstall χρειάζεται για να αλληλεπιδρά το MATLAB με το Robot και το ενσωματωμένο Raspberry Pi.
Συνιστάται:
Συντομεύσεις πληκτρολογίου για τον Internet Explorer !!: 4 βήματα
Συντομεύσεις πληκτρολογίου για τον Internet Explorer
Roomba-Assistant Assisting Roomba: 4 Βήματα
Roomba-Assisting Roomba: Αυτό το έργο γίνεται χρησιμοποιώντας το Raspberry Pi 3 στο iRobot Create Version 2. Το MATLAB χρησιμοποιείται για να προγραμματίσει το ρομπότ να ακολουθεί συγκεκριμένες οδηγίες χρησιμοποιώντας τους αισθητήρες και την κάμερα. Οι αισθητήρες και οι κάμερες χρησιμοποιούνται για την εκτέλεση συγκεκριμένων
Roomba Scout Explorer: 8 Βήματα
Roomba Scout Explorer: Ως ένα από τα πιο πολυαναμενόμενα και πολύ ερευνημένα αμερικανικά έργα, τα έργα του rover rover έχουν γίνει ανθρώπινα επιτεύγματα στην ολοένα και πιο εξελιγμένη παραγωγή αυτόνομων συστημάτων υψηλής τεχνολογίας με μοναδικό σκοπό τη διερεύνηση και την
Από το Roomba στο Rover σε μόλις 5 βήματα !: 5 βήματα
Από το Roomba στο Rover σε μόλις 5 βήματα !: Τα ρομπότ Roomba είναι ένας διασκεδαστικός και εύκολος τρόπος για να βυθίσετε τα δάχτυλά σας στον κόσμο της ρομποτικής. Σε αυτό το Instructable, θα αναφέρουμε λεπτομερώς πώς να μετατρέψετε ένα απλό Roomba σε ελεγχόμενο rover που αναλύει ταυτόχρονα το περιβάλλον του. Λίστα μερών 1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 Βήματα
Bus Pirate 3EEPROM Explorer Board: Αν έχετε έναν από τους Hack a Day's Bus Pirates, τι κάνετε με αυτό; Μάθετε σχετικά με τα 1-wire, I2C και SPI EEPROM με τον πίνακα εξερευνήσεων 3EEPROM (το ονομάζουμε THR-EE-PROM). Το EEPROM είναι ένας τύπος τσιπ μνήμης που αποθηκεύει δεδομένα χωρίς συνεχή τροφοδοσία