Πίνακας περιεχομένων:
- Βήμα 1: Συγκεντρώστε τα υλικά σας
- Βήμα 2: Κατεβάστε τις Εργαλειοθήκες Roomba για το MATLAB
- Βήμα 3: Συνδεθείτε στο Roomba σας
- Βήμα 4: Επιλέξτε πώς θέλετε να ελέγχετε το Roomba σας
- Βήμα 5: Οδηγήστε το Roomba σας
Βίντεο: Μετατρέποντας το Roomba σας σε Mars Rover: 5 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Βήμα 1: Συγκεντρώστε τα υλικά σας
Για να ολοκληρώσετε αυτό το έργο, θα χρειαστεί να συγκεντρώσετε τα ακόλουθα υλικά:
1 Roomba Robot
1 κιτ Raspberry Pi
1 Βιντεοκάμερα
Πρόσβαση στο MATLAB
Βήμα 2: Κατεβάστε τις Εργαλειοθήκες Roomba για το MATLAB
Εκτελέστε τον ακόλουθο κώδικα για να εγκαταστήσετε τις απαραίτητες εργαλειοθήκες για την ολοκλήρωση αυτού του έργου.
λειτουργία roombaInstall
clc?
% λίστα αρχείων προς εγκατάσταση
αρχεία = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'};
% τοποθεσία από την οποία πρέπει να εγκατασταθεί
επιλογές = weboptions ('CertificateFilename', ''); % το λέει να αγνοήσει τις απαιτήσεις πιστοποιητικού
διακομιστής = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/';
dlgTitle = 'Εγκατάσταση/Ενημέρωση Roomba';
% εμφανίζει το σκοπό και λάβετε επιβεβαίωση
προτροπή = {
'Αυτό το πρόγραμμα θα κατεβάσει αυτά τα αρχεία EF 230 Roomba:'
''
strjoin (αρχεία, '')
''
'σε αυτόν τον φάκελο:'
''
CD
''
'Θέλετε να συνεχίσετε? '
};
μπιπ?
yn = questdlg (προτροπή,…
dlgΤίτλος,…
«Ναι», «Όχι», «Ναι»)
εάν ~ strcmp (yn, 'Yes'), επιστροφή. τέλος
% λαμβάνετε τη λίστα των αρχείων που υπάρχουν
υπάρχοντα_αρχεία = αρχεία (cellfun (@exist, αρχεία)> 0);
if ~ isempty (υπάρχοντα_αρχεία)
% βεβαιωθείτε ότι είναι πραγματικά εντάξει η αντικατάστασή τους
prompt = {'Αντικαθιστάτε αυτά τα αρχεία:'
''
strjoin (υπάρχοντα_αρχεία, '')
''
'ΟΚ για αντικατάσταση;'
};
μπιπ?
yn = questdlg (προτροπή,…
dlgΤίτλος,…
«Ναι», «Όχι», «Ναι»)
εάν ~ strcmp (yn, 'Yes'), επιστροφή. τέλος
τέλος
% λήψη των αρχείων
cnt = 0;
για i = 1: μήκος (αρχεία)
f = αρχεία {i};
disp (['Λήψη' f]);
προσπαθήστε
url = [διακομιστής f];
websave (f, url, options)? % προστέθηκαν επιλογές για αποφυγή σφαλμάτων ασφαλείας
cnt = cnt + 1;
σύλληψη
disp (['Σφάλμα κατά τη λήψη' f]);
ομοίωμα = [f '.html'];
εάν υπάρχει (εικονικό, 'αρχείο') == 2
διαγραφή (ομοίωμα)
τέλος
τέλος
τέλος
αν cnt == μήκος (αρχεία)
msg = 'Επιτυχής εγκατάσταση';
waitfor (msgbox (msg, dlgTitle));
αλλού
msg = 'Σφάλμα εγκατάστασης - δείτε το παράθυρο εντολών για λεπτομέρειες';
waitfor (errordlg (msg, dlgTitle));
τέλος
τέλος %roombaInstall
Βήμα 3: Συνδεθείτε στο Roomba σας
Τώρα ήρθε η ώρα να συνδεθείτε στο Roomba σας χρησιμοποιώντας WiFi. Χρησιμοποιώντας 2 δάχτυλα, πατήστε ταυτόχρονα τα κουμπιά Dock και Spot για να ενεργοποιήσετε ή να επαναφέρετε το Roomba. Στη συνέχεια, εκτελέστε τον κωδικό r = roomba (# του Roomba σας) στο παράθυρο εντολών του MATLAB για να συνδεθείτε στο ρομπότ σας. Μόλις εκτελέσετε αυτήν την εντολή, το Roomba θα πρέπει να είναι έτοιμο να ξεκινήσει.
Βήμα 4: Επιλέξτε πώς θέλετε να ελέγχετε το Roomba σας
Υπάρχουν δύο τρόποι με τους οποίους μπορείτε να ελέγξετε το Roomba: αυτόνομα ή χρησιμοποιώντας smartphone ως χειριστήριο.
Εάν επιλέξετε να οδηγείτε αυτόματα το Roomba, θα χρειαστεί να χρησιμοποιήσετε τους τρεις ενσωματωμένους αισθητήρες: αισθητήρες βράχου, αισθητήρες χτυπήματος και αισθητήρες φωτός.
Για να χρησιμοποιήσετε ένα smartphone, πρέπει πρώτα να συνδέσετε το smartphone σας με τον υπολογιστή σας ακολουθώντας τα παρακάτω βήματα.
ΣΗΜΕΙΩΣΗ: Ο υπολογιστής και το smartphone σας πρέπει να βρίσκονται στο ίδιο δίκτυο WiFi για να συνδεθούν σωστά!
1. Κατεβάστε την εφαρμογή MATLAB από το κατάστημα εφαρμογών στη συσκευή σας.
2. Πληκτρολογήστε "connector on" στο παράθυρο εντολών και ορίστε έναν κωδικό πρόσβασης που θα πρέπει να εισαχθεί και στις δύο συσκευές.
3. Αφού το κάνετε, το MATLAB θα σας δώσει τη διεύθυνση IP των υπολογιστών σας. Πρέπει να μεταβείτε στη σελίδα ρυθμίσεων στην εφαρμογή MATLAB στο smartphone σας και να προσθέσετε έναν υπολογιστή χρησιμοποιώντας τη δεδομένη διεύθυνση IP και τον κωδικό πρόσβασης που εισαγάγατε νωρίτερα.
4. Στο παράθυρο εντολών στον υπολογιστή σας, πληκτρολογήστε τον κωδικό m = mobiledev και αυτό θα πρέπει να προετοιμάσει το smartphone σας ως χειριστήριο για το Roomba σας.
5. Ο υπολογιστής και το smartphone σας θα πρέπει να είναι έτοιμα για χρήση τώρα.
Βήμα 5: Οδηγήστε το Roomba σας
Τώρα που έχετε όλα τα απαραίτητα εργαλεία για να δημιουργήσετε το Mars Rover σας, είστε έτοιμοι να δημιουργήσετε τον δικό σας κώδικα. Έχουμε επισυνάψει έναν παράδειγμα κώδικα παρακάτω τόσο για την αυτόνομη οδήγηση όσο και για την οδήγηση με smartphone.
Αυτόνομη οδήγηση
συνάρτηση Explore_modified (r)
%ορίσματα εισόδου: 1 αντικείμενο roomba, r
%ορίσματα εξόδου: κανένα
%περιγραφή:
Η συνάρτηση %χρησιμοποιεί έναν άπειρο βρόχο για να επιτρέψει την αυτόνομη
%εξερεύνηση του περιβάλλοντος χώρου του bot.
%
Το %funciton παρέχει επίσης οδηγίες στο roomba για το τι πρέπει να κάνετε μέσα
%τις ακόλουθες καταστάσεις: Οι τροχοί χάνουν την επαφή με το έδαφος, an
%αντικείμενο ανιχνεύεται μπροστά ή σε κάθε πλευρά του bot, και α
%ξαφνική πτώση εντοπίζεται μπροστά ή προς τις δύο πλευρές του bot.
%
Οι %τυπικές οδηγίες περιλαμβάνουν εντολές κίνησης που προορίζονται για μεγιστοποίηση
%εξερεύνηση ή αποφυγή εντοπισμένου κινδύνου και εντολές επικοινωνίας
%πληροφορίες σχετικά με τις ανακαλύψεις των bots (εικόνες), τη θέση (γράφημα), %και κατάσταση (προειδοποίηση σε κατάσταση σύνδεσης) με το χρήστη μέσω matlab και/ή email. Αρκετά
Προστίθενται %ηχητικές εντολές για απόλαυση.
%δυνατότητες ρύθμισης email
mail = '[email protected]';
κωδικός πρόσβασης = 'EF230Roomba';
setpref ("Διαδίκτυο", "SMTP_Server", "smtp.gmail.com");
setpref ("Διαδίκτυο", "E_mail", αλληλογραφία);
setpref ('Internet', 'SMTP_Username', mail)?
setpref («Διαδίκτυο», «SMTP_Password», κωδικός πρόσβασης)
props = java.lang. System.getProperties;
props.setProperty ('mail.smtp.starttls.enable', 'true');
props.setProperty ('mail.smtp.auth', 'true');
props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');
props.setProperty ('mail.smtp.socketFactory.port', '465');
% r = roomba (19)
r.beep ('G2 ^^, G2 ^^, G2 ^^, G2 ^^, A2 ^^, A2 ^^, G1 ^^, E1 ^^, C2 ^^, C2 ^^, C1 ^^, C1 ^^, D1 ^^, C1 ^^, D2 ^^, E4 ^^, G2 ^^, G2 ^^, G2 ^^, G2 ^^, A2 ^^, A2 ^^, G1 ^^, E1 ^^, C2 ^^, C2 ^^, C2 ^^, Ε1 ^^, Ε1 ^^, Ε1 ^^, D1 ^^, C4 ^^ ');
v =.1;
reflect_datum = 2700; %καθορισμένη τιμή αναφοράς αισθητήρων βράχου
lightBumper_datum = 200; %set τιμή αναφοράς αισθητήρων προφυλακτήρα
pos = [0, 0]; %μεταβλητή για αποθήκευση θέσης με αρχικοποιημένο το δεδομένο
γωνία = 0; %καθορισμένη γωνία αναφοράς
netangle = 0; %μετατόπιση καθαρής γωνίας
i = 2; %iterator για προσθήκη γραμμών στη μεταβλητή αποθήκευσης θέσης
dist = 0;
r.setDriveVelocity (v, v); %start roomba προχωρώντας μπροστά
ενώ ισχύει
Cliff = r.getCliffSensors;
Bump = r.getBumpers;
Light = r.getLightBumpers;
RandAngle = randi ([20, 60], 1); %δημιουργεί 1 τυχαία γωνία μεταξύ 20 και 60 μοιρών. Χρησιμοποιείται για να αποτρέψει το bot να κολλήσει σε έναν βρόχο
%Τι πρέπει να κάνετε εάν ένας ή περισσότεροι τροχοί χάσουν επαφή με το έδαφος:
%διακοπή κίνησης, αποστολή προειδοποιητικού email με εικόνα του περιβάλλοντος χώρου, %και ρωτήστε τον χρήστη εάν θα συνεχίσει ή περιμένει βοήθεια
εάν Bump.rightWheelDrop == 1 || Bump.leftWheelDrop == 1
r.stop
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
r.beep ('F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^, F#1 ^^, C1 ^^ ')
img = r.getImage;
imwrite (img, 'stuck.png');
%--------------------------
imfile = 'stuck.png';
θέση = savepos (pos);
%---------------------------
sendmail (mail, 'HELP!', 'I am strandled on a cliff!', {imfile, position})
list = {'Continue', 'Stop'};
idx = μενού ("Τι πρέπει να κάνω;", λίστα);
αν idx == 2
Διακοπή
τέλος
%Τι πρέπει να κάνετε εάν εντοπιστεί ένα αντικείμενο μπροστά από το bot:
%διακοπή, κίνηση πίσω, λήψη φωτογραφίας, ειδοποίηση χρήστης για ανακάλυψη
%μέσω ηλεκτρονικού ταχυδρομείου, στρίψτε 90 μοίρες και συνεχίστε την εξερεύνηση
elseif Light.leftCenter> lightBumper_datum || Light.rightCenter> lightBumper_datum || Bump.front == 1
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
r.moveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
r.beep ('A1^, A1^, A4^, A2^, G2^, G2^, G4^, Bb2^, Bb2^, Bb3.5^, G1^, A8^')
img = r.getImage;
imwrite (img, 'FrontBump.png')
%--------------------------
imfile = 'FrontBump.png';
θέση = savepos (pos);
%---------------------------
sendmail (mail, 'Alert!', 'I found something!', {imfile, position})
γωνία = 90;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.setDriveVelocity (v, v);
%Τι να κάνετε αν εντοπιστεί αντικείμενο στα αριστερά του bot:
%διακοπή, στροφή προς το αντικείμενο, δημιουργία αντιγράφων ασφαλείας, λήψη φωτογραφιών, ειδοποίηση
%χρήστης της ανακάλυψης μέσω ηλεκτρονικού ταχυδρομείου, γυρίστε 90 μοίρες και συνεχίστε την εξερεύνηση
elseif Light.leftFront> lightBumper_datum || Light.left> lightBumper_datum || Bump.left == 1
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
γωνία = 30;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.moveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
r.beep ('A4^, A4^, G1^, E1^, C3.5^, C2 ^^, C1^, C1^, C2^, D2^, D2^, E8^')
img = r.getImage;
imwrite (img, 'LeftBump.png')
%--------------------------
imfile = 'LeftBump.png';
θέση = savepos (pos);
%---------------------------
sendmail (mail, 'Alert!', 'I found something!', {imfile, position})
γωνία = -90;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.setDriveVelocity (v, v);
%Τι πρέπει να κάνετε εάν εντοπιστεί αντικείμενο στα δεξιά του bot:
%διακοπή, στροφή προς το αντικείμενο, δημιουργία αντιγράφων ασφαλείας, λήψη φωτογραφιών, ειδοποίηση
%χρήστης της ανακάλυψης μέσω ηλεκτρονικού ταχυδρομείου, γυρίστε 90 μοίρες και συνεχίστε την εξερεύνηση
elseif Light.rightFront> lightBumper_datum || Light.right> lightBumper_datum || Bump.right == 1
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
γωνία = -30;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.moveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
παύση (1,5).
r.beep ('C1^, C1^, C2^, D2^, D2^, C8^')
img = r.getImage;
imwrite (img, 'RightBump.png')
%--------------------------
imfile = 'RightBump.png';
θέση = savepos (pos);
%---------------------------
sendmail (mail, 'Alert!', 'I found something!', {imfile, position});
γωνία = 90;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.setDriveVelocity (v, v);
%Τι πρέπει να κάνετε εάν εντοπιστεί γκρεμός στα αριστερά του bot:
%στάση, κίνηση προς τα πίσω, στρίψτε δεξιά, συνεχίστε την εξερεύνηση
elseif Cliff.left <reflect_datum || Cliff.leftFront <reflect_datum
r.stop;
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
r.moveDistance (-. 125);
dist = r.getDistance;
pos (i, 1) = pos (i-1, 1) + dist * sind (netangle) · %get x συντεταγμένη
pos (i, 2) = pos (i-1, 2) + dist * cosd (netangle) · %get y συντεταγμένη
i = i+1;
γωνία = -RandAngle;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.setDriveVelocity (v, v);
%Τι πρέπει να κάνετε εάν εντοπιστεί γκρεμός στα δεξιά του bot:
%στάση, κίνηση προς τα πίσω, στροφή αριστερά, συνέχιση της εξερεύνησης
elseif Cliff.right <reflect_datum || Cliff.rightFront <reflect_datum
r.stop;
dist = r.getDistance;
pos (i, 1) = dist * sind (γωνία); %get x συντεταγμένη
pos (i, 2) = dist * cosd (γωνία); %get y συντεταγμένη
i = i+1;
r.moveDistance (-. 125);
γωνία = RandAngle;
netangle = netangle+angle?
r.turnAngle (γωνία);
r.setDriveVelocity (v, v);
τέλος
τέλος
Smartphone Controller
Επιλογές = {'Αυτόνομος', 'Χειροκίνητος έλεγχος'}
Προτροπή = μενού ("Πώς θα θέλατε να ελέγχετε το rover;", Επιλογές)
m = mobiledev
r = roomba (19)
εάν Προτροπή == 1
Εξερευνητής)
αλλού
ενώ ισχύει
παύση (.5)
PhoneData = m. Προσανατολισμός;
Azi = PhoneData (1);
Pitch = PhoneData (2);
Side = PhoneData (3);
αν Πλευρά> 130 || Πλευρά <-130 %εάν το τηλέφωνο είναι αναποδογυρισμένο σταματήστε το roomba και βγάλετε τον βρόχο
r.stop
r.beep ('C, C, C, C')
Διακοπή
elseif Side> 25 && Side <40 %εάν το τηλέφωνο γυρίσει πλάγια μεταξύ 25 και 40 βαθμών στρίψτε αριστερά 5 βαθμούς
r.turnAngle (-5);
elseif Πλευρά> 40 %εάν το τηλέφωνο γυρίσει πλάγια πάνω από 40 βαθμούς στρίψτε αριστερά 45 βαθμούς
r.turnAngle (-45)
elseif Side -40 %εάν το τηλέφωνο είναι στραμμένο πλάγια μεταξύ -25 και -40 βαθμών στρίψτε δεξιά 5 βαθμούς
r.turnAngle (5);
elseif Πλευρά <-40 %εάν το τηλέφωνο γυρίσει πλάγια λιγότερο από -40 βαθμούς στρίψτε αριστερά 45 βαθμούς
r.turnAngle (45)
τέλος
%Εάν το τηλέφωνο κρατιέται κοντά στην κατακόρυφο, τραβήξτε μια εικόνα και σχεδιάστε την
εάν Pitch <-60 && εικόνα <= 9
r.πιπ
img = r.getImage;
υποσχέδιο (3, 3, εικόνα)
imshow (img)
τέλος
%κινούνται εμπρός και πίσω με βάση τον μπροστινό και τον πίσω προσανατολισμό
εάν Pitch> 15 && Pitch <35 %εάν το βήμα μεταξύ 15 και 35 βαθμών κινείται προς τα εμπρός σε μικρή απόσταση
%λαμβάνουν δεδομένα ελαφρού προφυλακτήρα πριν από τη μετακίνηση
litBump = r.getLightBumpers;
εάν litBump.leftΜπροστινό> 500 || litBump.leftCenter> 500 || litBump.rightCenter> 500 || litBump.rightFront> 500 %εάν κάτι βρίσκεται μπροστά από την αίθουσα και θα χτυπήσει αν προχωρήσει, κάντε θόρυβο και εμφανίστε το μήνυμα
r.beep ('C ^^, F#^, C ^^, F#^')
αλλιώς %κίνηση
r.moveDistance (.03);
%Λάβετε δεδομένα προφυλακτήρα μετά τη μετακίνηση
Bump = r.getBumpers;
αν Bump.right == 1 || Bump.left == 1 || Bump.front == 1
r.beep ('A, C, E')
r.moveDistance (-. 01)
τέλος
%λαμβάνουν δεδομένα αισθητήρα βράχου
Cliff = r.getCliffSensors;
αν Cliff.left> 1500 || Cliff.leftΜπροστινό> 1500 || Cliff.rightΜπροστινό> 1500 || Cliff.right> 1500 %εάν κάτι ενεργοποιεί τον αισθητήρα γκρεμού αντιμετωπίστε το ως λάβα και δημιουργήστε αντίγραφα ασφαλείας
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (-. 031)
τέλος
τέλος
elseif Βήμα> 35 %αν το βήμα μεγαλύτερου των 35 βαθμών κινείται προς τα εμπρός σε μεγαλύτερη απόσταση
%λαμβάνουν δεδομένα ελαφρού προφυλακτήρα πριν από τη μετακίνηση
litBump = r.getLightBumpers;
εάν litBump.leftΜπροστινό> 15 || litBump.leftCenter> 15 || litBump.rightCenter> 15 || litBump.rightFront> 15 %εάν κάτι βρίσκεται μπροστά από την αίθουσα και θα χτυπήσει αν προχωρήσει, κάντε θόρυβο και εμφανίστε το μήνυμα
r.beep ('C ^^, F#^, C ^^, F#^')
αλλιώς %κίνηση
r.moveDistance (.3)
%Λάβετε δεδομένα προφυλακτήρα μετά τη μετακίνηση
Bump = r.getBumpers;
αν Bump.right == 1 || Bump.left == 1 || Bump.front == 1 %εάν χτυπήσετε κάτι κάντε θόρυβο, εμφανίστε το μήνυμα και δημιουργήστε αντίγραφα ασφαλείας
r.beep ('A, C, E')
r.moveDistance (-. 01)
τέλος
%λαμβάνουν δεδομένα αισθητήρα βράχου μετά τη μετακίνηση
Cliff = r.getCliffSensors;
αν Cliff.left> 1500 || Cliff.leftΜπροστινό> 1500 || Cliff.rightΜπροστινό> 1500 || Cliff.right> 1500 %αν κάτι ενεργοποιήσει τον αισθητήρα γκρεμού αντιμετωπίστε το ως λάβα και δημιουργήστε αντίγραφα ασφαλείας
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (-. 31)
τέλος
τέλος
elseif Pitch -35 %εάν το βήμα μεταξύ -15 και -35 βαθμού μετακινηθείτε πίσω σε μικρή απόσταση
r.moveDistance (-. 03);
%λαμβάνουν δεδομένα αισθητήρα βράχου μετά τη μετακίνηση
Cliff = r.getCliffSensors;
αν Cliff.left> 1500 || Cliff.leftΜπροστινό> 1500 || Cliff.rightΜπροστινό> 1500 || Cliff.right> 1500 %αν κάτι ενεργοποιήσει τον αισθητήρα γκρεμού αντιμετωπίστε το ως λάβα και δημιουργήστε αντίγραφα ασφαλείας
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (.04)
τέλος
elseif Pitch -60 %εάν το βήμα μεταξύ -35 και -60 βαθμών μετακινηθεί προς τα πίσω σε μεγαλύτερη απόσταση
r.moveDistance (-. 3)
%λαμβάνουν δεδομένα αισθητήρα βράχου μετά τη μετακίνηση
Cliff = r.getCliffSensors;
αν Cliff.left> 1500 || Cliff.leftΜπροστινό> 1500 || Cliff.rightΜπροστινό> 1500 || Cliff.right> 1500 %εάν κάτι ενεργοποιεί τον αισθητήρα γκρεμού αντιμετωπίστε το ως λάβα και δημιουργήστε αντίγραφα ασφαλείας
r.beep ('C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C, C ^^, C')
r.moveDistance (.31)
τέλος
τέλος
τέλος
τέλος
Συνιστάται:
Mars Rover χρησιμοποιώντας Raspberry Pi: 5 βήματα
Mars Rover Using Raspberry Pi: Dear all Great Learner, Είμαι πάντα περίεργος να μάθω για το mars rover, Έχοντας 6 τροχούς που μπορούν να βγουν σε όλη την επιφάνεια του Άρη και να εξερευνήσουν πράγματα από τη Γη. Θέλω επίσης να εξερευνήσω κάτι καθισμένος στο φορητό υπολογιστή μου. Λοιπόν, τώρα πιστεύω ότι είναι η κατάλληλη στιγμή να το φτιάξω και
Mars Roomba Project UTK: 4 Βήματα
Mars Roomba Project UTK: ΑΠΟΠΟΙΗΣΗ: ΑΥΤΟ ΘΑ ΛΕΙΤΟΥΡΓΕΙ ΑΝ ΕΙΝΑΙ ΣΥΝΕΧΙΣΜΕΝΟ ΤΟ ROOMBA ΜΕ ΠΟΛΥ ΣΥΓΚΕΚΡΙΜΕΝΟ ΤΡΟΠΟ, ΑΥΤΟ ΤΟ ΟΔΗΓΙΟ ΔΗΜΙΟΥΡΓΗΣΗ ΔΗΜΙΟΥΡΓΗΘΗΚΕ ΚΑΙ ΠΡΟΟΡΙΖΕΤΑΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΑΠΟ ΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΕΧΝΙΚΩΝ ΜΑΘΗΤΩΝ ΚΑΙ ΔΙΑΔΙΚΑΣΙΖΕΤΑΙ γραμμένο και
Mars Roomba: 6 βήματα
Mars Roomba: Αυτό το Instructable θα σας καθοδηγήσει στις οδηγίες χρήσης ενός Botp κενού Roomba που ελέγχεται με Raspberry Pi. Το λειτουργικό σύστημα που θα χρησιμοποιήσουμε είναι μέσω MATLAB
Μετατρέποντας τα Windows XP ή Vista σε Mac και Linux: 10 βήματα
Μετατρέποντας τα Windows XP ή τα Vista σας σε Mac και Linux: Αυτό το Instructable θα σας δείξει πώς να μετατρέψετε τον υπολογιστή σας των Windows σε mac και pc, καθώς και να εκτελείτε Linux.- Σας συνιστώ να έχετε τουλάχιστον 2 GB RAM - και πάνω από 10 GB του χώρου στο σκληρό δίσκο (αν θέλετε linux) συνιστάται vista ή XP - το κάνω σε
Μετατρέποντας την κάμερά σας σε "στρατιωτική νυχτερινή όραση", προσθέτοντας εφέ νυχτερινής όρασης ή δημιουργώντας λειτουργία νυχτερινής όρασης σε οποιαδήποτε κάμερα !!!: 3 βήματα
Μετατροπή της φωτογραφικής σας μηχανής σε "στρατιωτικό Nightvision", Προσθήκη εφέ Nightvision ή Δημιουργία Λειτουργίας NightVision "Σε οποιαδήποτε κάμερα !!! *Εάν χρειάζεστε βοήθεια, στείλτε email: [email protected] Μιλάω αγγλικά, γαλλικά, ιαπωνικά, ισπανικά και γνωρίζω άλλες γλώσσες αν είστε