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

Roomba MATLAB Έργο: 5 Βήματα
Roomba MATLAB Έργο: 5 Βήματα

Βίντεο: Roomba MATLAB Έργο: 5 Βήματα

Βίντεο: Roomba MATLAB Έργο: 5 Βήματα
Βίντεο: Roomba Control (ROS & MATLAB) 2024, Νοέμβριος
Anonim
Roomba MATLAB Project
Roomba MATLAB Project

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

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

Αυτό το διδακτικό είναι για οποιονδήποτε άλλο θα ήθελε να δημιουργήσει τον ίδιο τύπο κώδικα για το roomba του.

Βήμα 1: Βήμα 1: Απαιτούμενα υλικά

Βήμα 1: Απαιτούνται υλικά
Βήμα 1: Απαιτούνται υλικά
Βήμα 1: Απαιτούνται υλικά
Βήμα 1: Απαιτούνται υλικά

Θα χρειαστείτε:

  1. Ένα δωμάτιο δωματίου
  2. MATLAB
  3. Αυτό το αρχείο για την εκτέλεση του roomba
  4. Μια επίπεδη επιφάνεια
  5. Μια επιφάνεια τραπεζιού για να λειτουργήσει ως "γκρεμός"

Βήμα 2: Βήμα 2: Ρύθμιση/Λήψη κώδικα για το Roomba

Βήμα 2: Ρύθμιση/Λήψη κώδικα για το Roomba
Βήμα 2: Ρύθμιση/Λήψη κώδικα για το Roomba

Η οθόνη σας θα μοιάζει με αυτήν μόλις εισαγάγετε τα αρχεία.

Βήμα 3: Βήμα 3: Ρύθμιση αισθητήρων Cliff/LED Lights

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

% try rob.setLEDDigits ('') x = 0; y = 0; θήτα = 0; εμπόδιο = ; κύκλος = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Λειτουργία για τη διόρθωση των γωνιών στροφής ενώ rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Μετάβαση %Check For Person if AA_checkperson (rob) rob.beep end %Check Cliff Sensor if AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') παύση (0.5) εμπόδιο (κύκλος) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

Βήμα 4: Βήμα 4: Έλεγχος για εμπόδια

Αυτός ο κωδικός θα πάρει το roomba για έλεγχο για αντικείμενα γύρω του και θα ελέγξει τον αισθητήρα χτυπήματος για να βεβαιωθείτε ότι σταματάει προτού βλάψει τον εαυτό του.

%Έλεγχος αισθητήρα φωτός εάν AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') παύση (0.5) εμπόδιο (κύκλος) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Check Bump Sensor if AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) εμπόδιο (κύκλος) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %If no if isempty (εμπόδιο) εμπόδιο (κύκλος) = 0; elseif μήκος (εμπόδιο) <κύκλος εμπόδιο (κύκλος) = 0; τέλος

Βήμα 5: Βήμα 5: Σχεδίαση

Βήμα 5: Σχεδίαση
Βήμα 5: Σχεδίαση

Αυτός ο κωδικός θα πει στο roomba σας να σχεδιάσει τι συναντά στο ταξίδι του. Μια πλοκή όπως αυτή θα εμφανιστεί αφού σταματήσει το roomba.

%Λήψη θέσης d = rob.getDistance; αν κύκλος == 1 θήτα (κύκλος) = 0? x (κύκλος) = d.*cosd (theta (κύκλος)); % συνολική απόσταση που διανύθηκε σε x y (κύκλος) = d.*sind (theta (κύκλος)); % συνολική απόσταση που διανύθηκε σε y άλλο theta (κύκλος) = theta (κύκλος-1) + rob.getAngle; x (κύκλος) = δ.*cosd (theta (κύκλος)) + x (κύκλος-1); % συνολική απόσταση που διανύθηκε σε x y (κύκλος) = d.*sind (theta (κύκλος)).*d + y (κύκλος-1). %συνολική διανυθείσα διαδρομή στο y τέλος %Συνθήκη διακοπής εάν rob.getButtons.clean break end %Κύκλος κύκλου αύξησης = κύκλος + 1; τέλος rob.stop για i = 1: κύκλος αν εμπόδιο (i) == 1 %Πίνακας τοίχου (x (i), y (i), "Marker", "square", "MarkerEdgeColor", "r") elseif εμπόδιο (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') τελικό κείμενο (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hold at end % Distress Signal while true rob.beep pause (3) if rob.getButtons.clean break end end % catch % rob.stop % end

Συνιστάται: