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, Srpanj
Anonim
Roomba MATLAB projekt
Roomba MATLAB projekt

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, tako da znanstvenici mogu vidjeti postoje li neki prethodni oblici života na planeti. Osim toga, rover šalje naučnicima slike natrag kako bi im pomogli u navigaciji roverom i riješili sve probleme koje bi mogao imati.

Ideja naše grupe za naš projekt je da rover učini isto što i rover NASA -e koji će napustiti Zemlju 2020., ali i da ucrta zemljopis zemlje. 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 njezin tijek prođe.

Ovo uputstvo je za svakoga tko 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/dobivanje 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šoj roombi točno reći pod kojim kutom treba okrenuti, provjeriti podatke o bateriji, reći vašoj roombi koliko brzo treba ići i provjeriti ima li ljudi kroz kameru roombe. Također će se oglasiti zvučnim signalom ako identificira osobu, te će se zaustaviti prije silaska s litice.

% pokušajte rob.setLEDDigits ('') x = 0; y = 0; theta = 0; prepreka = ; ciklus = 1; AngCorr = @(x) x + 3,059.*X.^0,4205; %Funkcija ispravljanja kutova zavoja tijekom rob.getBatteryInfo.procent> 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 osjetnik svjetla ako je AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pauza (0,5) prepreka (ciklus) = 1; %Zid AA_wallbeep (rob) %Sigurnosno kopiranje i okretanje rob.moveDistance (-. 15) rob.turnAngle (30) end %Provjerite osjetnik udara ako AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pauzira (0.5) prepreka (ciklus) = 1; %Zid AA_wallbeep (rob) %Sigurnosno kopiranje i skretanje rob.moveDistance (-. 15) rob.turnAngle (30) end %Ako nema ako je prazna (prepreka) prepreka (ciklus) = 0; inače duljina (prepreka) <prepreka ciklusa (ciklus) = 0; kraj

Korak 5: Korak 5: Iscrtavanje

Korak 5: Iscrtavanje
Korak 5: Iscrtavanje

Ovaj kôd reći će vašoj roombi da isplanira s čime se susreće 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 prijeđenog puta u x y (ciklus) = d.*sind (theta (ciklus)); % ukupne udaljenosti propuštene u y else theta (ciklus) = theta (ciklus-1) + rob.getAngle; x (ciklus) = d.*cosd (theta (ciklus)) + x (ciklus-1); % ukupnog prijeđenog puta u x y (ciklus) = d.*sind (theta (ciklus)).*d + y (ciklus-1); %ukupna udaljenost prijeđena u y kraju %Uvjet 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 %Crtež litice (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') završni 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čeni: