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

Mars Roomba: 6 βήματα
Mars Roomba: 6 βήματα

Βίντεο: Mars Roomba: 6 βήματα

Βίντεο: Mars Roomba: 6 βήματα
Βίντεο: ΠΛΗ10 ΜΑΘΗΜΑ 1.5 - ΣΤΟΙΧΕΙΑ ΤΟΥ MIPS - ΜΕΡΟΣ 2 από 6 - Αριθμητικές Εντολές 2024, Ιούλιος
Anonim
Mars Roomba
Mars Roomba

Αυτό το Instructable θα σας καθοδηγήσει στις οδηγίες λειτουργίας ενός Botb κενού Roomba που ελέγχεται με Raspberry Pi. Το λειτουργικό σύστημα που θα χρησιμοποιήσουμε είναι μέσω MATLAB.

Βήμα 1: Προμήθειες

Τι θα χρειαστεί να συγκεντρώσετε για να πραγματοποιήσετε αυτό το έργο:

  • Bot της ηλεκτρικής σκούπας Create2 Roomba του iRobot
  • Raspberry Pi
  • Κάμερα Raspberry Pi
  • Η τελευταία έκδοση του MATLAB
  • Η εργαλειοθήκη εγκατάστασης Roomba για το MATLAB
  • Εφαρμογή MATLAB για κυψελοειδή συσκευή

Βήμα 2: Η δήλωση προβλήματος

Η Δήλωση Προβλήματος
Η Δήλωση Προβλήματος

Έχουμε αναλάβει να χρησιμοποιήσουμε το MATLAB για να αναπτύξουμε ένα ρόβερ που θα μπορούσε να χρησιμοποιηθεί στον Άρη για να βοηθήσουμε τους επιστήμονες στη συλλογή δεδομένων πλανητών. Οι λειτουργίες που αναφέραμε στο έργο μας ήταν το τηλεχειριστήριο, η αναγνώριση αντικτύπου αντικειμένου, η αναγνώριση νερού, η αναγνώριση ζωής και η επεξεργασία εικόνας. Για να επιτύχουμε αυτά τα κατορθώματα, κωδικοποιήσαμε χρησιμοποιώντας τις εντολές της εργαλειοθήκης Roomba για να χειριστούμε τις πολλές λειτουργίες του Creat2 Roomba του iRobot.

Βήμα 3: Τηλεχειριστήριο Bluetooth

Τηλεχειριστήριο Bluetooth
Τηλεχειριστήριο Bluetooth

Αυτή η διαφάνεια θα περάσει από τον κώδικα για να ελέγξει την κίνηση του Roomba χρησιμοποιώντας τις δυνατότητες Bluetooth της συσκευής smartphone σας. Για να ξεκινήσετε, κατεβάστε την εφαρμογή MATLAB στο smartphone σας και συνδεθείτε στο λογαριασμό σας Mathworks. Μόλις συνδεθείτε, μεταβείτε στα "περισσότερα", "ρυθμίσεις" και συνδεθείτε στον υπολογιστή σας χρησιμοποιώντας τη διεύθυνση IP του. Μόλις συνδεθείτε, επιστρέψτε στο "περισσότερα" και επιλέξτε "αισθητήρες". Πατήστε στον τρίτο αισθητήρα στην επάνω γραμμή εργαλείων της οθόνης και πατήστε στην εκκίνηση. Τώρα, το smartphone σας είναι τηλεχειριστήριο!

Ο κωδικός έχει ως εξής:

ενώ 0 == 0

παύση (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Side = PhoneData (3);

bumps = r.getBumpers;

αν Πλευρά> 80 || Πλευρά <-80

r.stop

r.beep ('C, E, G, C^, G, E, C')

Διακοπή

elseif Side> 20 && Side <40

r.turnAngle (-5);

elseif Πλευρά> 40

r.turnAngle (-25);

elseif Πλευρά-40

r.turnAngle (5);

elseif Πλευρά <-40

r.turnAngle (25);

τέλος

εάν Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

τέλος

τέλος

Βήμα 4: Αναγνώριση αντικτύπου

Αναγνώριση Αντίκτυπου
Αναγνώριση Αντίκτυπου

Μια άλλη λειτουργία που εφαρμόσαμε ήταν ο εντοπισμός της πρόσκρουσης του Roomba σε ένα αντικείμενο και στη συνέχεια η διόρθωση της τρέχουσας διαδρομής του. Για να γίνει αυτό, έπρεπε να χρησιμοποιήσουμε τις προϋποθέσεις με τις ενδείξεις των αισθητήρων προφυλακτήρα για να προσδιορίσουμε αν χτυπήθηκε ένα αντικείμενο. Εάν το ρομπότ χτυπήσει ένα αντικείμενο, θα κάνει πίσω 0,2 μέτρα και θα περιστραφεί υπό γωνία που καθορίζεται από την οποία χτυπήθηκε ο προφυλακτήρας. Μόλις χτυπηθεί ένα στοιχείο, εμφανίζεται ένα μενού που εμφανίζει τη λέξη "ουφ".

Ο κώδικας εμφανίζεται παρακάτω:

ενώ 0 == 0

bumps = r.getBumpers;

r.setDriveVelocity (.1)

αν bumps.left == 1

msgbox ('Ωχ!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Ωχ!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Ωχ!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Ωχ!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Ωχ!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

τέλος

τέλος

Βήμα 5: Αναγνώριση ζωής

Αναγνώριση Ζωής
Αναγνώριση Ζωής

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

Ο κωδικός έχει ως εξής:

t = 10;

i = 0;

ενώ t == 10

img = r.getImage; imshow (img)

παύση (0,167)

i = i + 1;

red_mean = μέσος όρος (μέσος όρος (img (:,:, 1)));

blue_mean = μέσος όρος (μέσος όρος (img (:,,, 3)));

green_mean = μέσος όρος (μέσος όρος (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %το επιθυμούν περίπου 100

εννέα_συμπληρωματικά = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

ενώ nine_plus_ten == 21 %πράσινο - ζωή

αν green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox («βρέθηκε πιθανή πηγή ζωής, σχεδιάστηκε η τοποθεσία»);

παύση (2)

διαγραφή (α)

[y2, Fs2] = audioread ('z_speak2.wav');

ήχος (y2, Fs2)

παύση (2)

%plant = r.getImage; %imshow (φυτό)?

%εξοικονόμηση ('plant_img.mat', plant ');

%τοποθεσία του οικοπέδου με πράσινο χρώμα

i = 5;

Διακοπή

αλλού

εννέα_συμπληρωματικά = 19;

τέλος

τέλος

εννέα_συμπληρωματικά = 21;

ενώ nine_plus_ten == 21 %μπλε - woder

αν blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox («βρέθηκε πηγή νερού, σχεδιάστηκε η τοποθεσία») ·

παύση (2)

διαγραφή (α)

[y3, Fs3] = audioread ('z_speak3.wav');

ήχος (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%εξοικονόμηση ('water_img.mat', woder)

%τοποθεσία του οικοπέδου με μπλε χρώμα

i = 5;

Διακοπή

αλλού

εννέα_συμπληρωματικά = 19;

τέλος

τέλος

εννέα_συμπληρωματικά = 21;

ενώ nine_plus_ten == 21 %λευκό - εξωγήινοι monkaS

αν white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = audioread ('z_speak5.wav');

ήχος (y5, Fs5);

παύση (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

ήχος (ys, Fss)?

παύση (3)

r.stop

% alien = r.getImage; %imshow (εξωγήινο);

% save ('alien_img.mat', alien);

i = 5;

Διακοπή

αλλού

εννέα_συμπληρωματικά = 19;

τέλος

τέλος

αν i == 5

α = 1? %γωνία στροφής

t = 9; %τερματισμός μεγάλου βρόχου

i = 0;

τέλος

τέλος

Βήμα 6: Εκτέλεσε το

Αφού γραφτεί όλος ο κώδικας, συνδυάστε τον σε ένα αρχείο και voila! Το ρομπότ Roomba θα είναι πλέον πλήρως λειτουργικό και θα λειτουργεί όπως διαφημίζεται! Ωστόσο, το στοιχείο ελέγχου Bluetooth πρέπει είτε να βρίσκεται σε ξεχωριστό αρχείο είτε να διαχωρίζεται από τον υπόλοιπο κώδικα με %%.

Απολαύστε τη χρήση του ρομπότ σας !!

Συνιστάται: