Sadržaj:

Roomba MATLAB projekt: 5 koraka
Roomba MATLAB projekt: 5 koraka

Video: Roomba MATLAB projekt: 5 koraka

Video: Roomba MATLAB projekt: 5 koraka
Video: Серия видео IJARS: Интервью профессора Питера Корка, июнь (2014 г.) 2024, Novembar
Anonim
Roomba MATLAB projekat
Roomba MATLAB projekat

Trenutni plan koji NASA ima za Mars rover je da on bude sakupljač podataka i da luta po Marsu, prikupljajući uzorke tla kako bi se vratio na Zemlju kako bi naučnici mogli vidjeti postoje li neki prethodni oblici života na planeti. Osim toga, rover šalje naučnike slike kako bi im pomogli u navigaciji i riješili sve probleme koje bi mogao imati.

Ideja naše grupe za naš projekt je da rover učini isto što i NASA -in rover koji će napustiti Zemlju 2020. godine, ali i da ucrta geografiju kopna. Roomba bi mogla osjetiti litice i zaustaviti se prije nego što padne, a zatim se vratiti, okrenuti i promijeniti kurs kako ne bi pala i oštetila se. Naša druga ideja integrirana u naš projekt je da roomba može iscrtati orijentire koje vidi i prikazati zaplet svaki put kada se petlja završi i ako se njen tok pokrene.

Ovo uputstvo je za svakoga ko bi želio stvoriti istu vrstu koda za svoju roombu.

Korak 1: Korak 1: Potrebni materijali

Korak 1: Potrebni materijali
Korak 1: Potrebni materijali
Korak 1: Potrebni materijali
Korak 1: Potrebni materijali

Trebat će vam:

  1. Roomba
  2. MATLAB
  3. Ova datoteka za pokretanje roombe
  4. Ravna površina
  5. Površina stola koja djeluje kao "litica"

Korak 2: Korak 2: Postavljanje/dobijanje koda za Roombu

Korak 2: Postavljanje/dobivanje koda za Roombu
Korak 2: Postavljanje/dobivanje koda za Roombu

Vaš zaslon će izgledati ovako nakon što unesete datoteke.

Korak 3: Korak 3: Postavljanje senzora litica/LED svjetala

Ovaj kôd će vašem roombi točno reći pod kojim kutom treba okrenuti, provjeriti podatke o bateriji, reći mu koliko brzo treba ići i provjeriti ima li ljudi kroz kameru roombe. Takođe će se oglasiti zvučnim signalom ako identifikuje osobu, i zaustaviće se pre silaska sa litice.

% pokušajte rob.setLEDDigits ('') x = 0; y = 0; theta = 0; prepreka = ; ciklus = 1; AngCorr = @(x) x + 3,059.*X.^0,4205; %Funkcija za ispravljanje uglova okretanja dok rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %Idi %Provjeri osobu ako AA_checkperson (rob) rob.beep end %Provjeri senzor litice ako je AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pauza (0.5) prepreka (ciklus) = 2; AA_cliffbeep (rob) %Sigurnosno kopiranje i okretanje rob.moveDistance (-. 15) rob.turnAngle (30) end

Korak 4: Korak 4: Provjeravanje prepreka

Ovaj kôd će roombu provjeriti ima li oko nje stavki, te će provjeriti senzor udara kako bi se uvjerio da se zaustavlja prije nego što se ošteti.

%Provjerite senzor svjetla ako je AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pauza (0,5) prepreka (ciklus) = 1; %Wall AA_wallbeep (rob) %Sigurnosno kopiranje i okretanje rob.moveDistance (-. 15) rob.turnAngle (30) end %Provjerite senzor udarca ako AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pauzira (0.5) prepreka (ciklus) = 1; %Zid AA_wallbeep (rob) %Nazad i skrenite rob.moveDistance (-. 15) rob.turnAngle (30) end %Ako nema ako je prazna (prepreka) prepreka (ciklus) = 0; inače, ako je dužina (prepreka) <prepreka ciklusa (ciklus) = 0; kraj

Korak 5: Korak 5: Iscrtavanje

Korak 5: Iscrtavanje
Korak 5: Iscrtavanje

Ovaj kôd će reći vašoj roombi da iscrta šta će naići na svom putovanju. Zavjera poput ove pojavit će se nakon što se roomba zaustavi.

%Dobijte poziciju d = rob.getDistance; ako je ciklus == 1 teta (ciklus) = 0; x (ciklus) = d.*cosd (theta (ciklus)); % ukupnog pređenog puta u x y (ciklus) = d.*sind (theta (ciklus)); % ukupnog pređenog puta u y else theta (ciklus) = theta (ciklus-1) + rob.getAngle; x (ciklus) = d.*cosd (theta (ciklus)) + x (ciklus-1); % ukupnog pređenog puta u x y (ciklus) = d.*sind (theta (ciklus)).*d + y (ciklus-1); %ukupni pređeni put na kraju y %Stanje prekida ako rob.getButtons.clean break end %Povećanje ciklusa ciklusa = ciklus + 1; kraj rob.stop za i = 1: ciklus ako je prepreka (i) == 1 %Zidna ploha (x (i), y (i), 'Marker', 'kvadrat', 'MarkerEdgeColor', 'r') inače prepreka (i) == 2 %Grafikon litice (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') krajnji tekst (.9, 0.9, sprintf ('Kvadrat = Zid) nCircle = Cliff '),' Units ',' normalized ') držite na kraju % Signal opasnosti dok je istinita rob.beep pauza (3) ako rob.getButtons.clean break end % catch % rob.stop % end

Preporučuje se: