Sisällysluettelo:

Roomba MATLAB -projekti: 5 vaihetta
Roomba MATLAB -projekti: 5 vaihetta

Video: Roomba MATLAB -projekti: 5 vaihetta

Video: Roomba MATLAB -projekti: 5 vaihetta
Video: Irobot Roomba 976 2024, Heinäkuu
Anonim
Roomba MATLAB -projekti
Roomba MATLAB -projekti

Nykyinen suunnitelma, jonka NASA on suunnitellut Mars -roverille, on se, että se on tiedonkerääjä ja vaeltaa Marsin ympärillä keräämällä näytteitä maaperästä tuodakseen takaisin Maalle, jotta tiedemiehet voivat nähdä, onko planeetalla aiempia elämänmuotoja. Lisäksi rover lähettää kuvia tiedemiehille, jotta he voivat auttaa navigoimaan roverissa ja korjaamaan mahdolliset ongelmat.

Ryhmämme ideana projektillemme on, että rover tekee saman kuin NASAn rover, joka lähtee maapallolta vuonna 2020, mutta myös kartoittaa maan maantieteellisen sijainnin. Roomba kykenisi havaitsemaan kallioita ja pysähtymään ennen kuin se putoaa, ja sitten perääntymään, kääntymään ja muuttamaan kurssiaan, jotta se ei putoa ja vahingoitu. Toinen ideamme, joka on integroitu projektiin, on, että roomba pystyy piirtämään näkemänsä maamerkit ja näyttämään juonen aina, kun silmukka on valmis ja sen kulku on suoritettu.

Tämä ohje on tarkoitettu kaikille muille, jotka haluavat luoda samantyyppisen koodin roomballeen.

Vaihe 1: Vaihe 1: Tarvittavat materiaalit

Vaihe 1: Tarvittavat materiaalit
Vaihe 1: Tarvittavat materiaalit
Vaihe 1: Tarvittavat materiaalit
Vaihe 1: Tarvittavat materiaalit

Tarvitset:

  1. Huone
  2. MATLAB
  3. Tämä tiedosto roomban suorittamiseen
  4. Tasainen pinta
  5. Pöytäpinta, joka toimii "kalliona"

Vaihe 2: Vaihe 2: Roomban koodin määrittäminen/saaminen

Vaihe 2: Roomban asentaminen/koodin hankkiminen
Vaihe 2: Roomban asentaminen/koodin hankkiminen

Näyttö näyttää tältä, kun syötät tiedostot.

Vaihe 3: Vaihe 3: Kalliosensorien/LED -valojen asentaminen

Tämä koodi kertoo roomballe tarkalleen, mihin kulmaan tulee kääntyä, tarkistaa akun tiedot, kertoo roomballesi kuinka nopeasti mennä ja tarkistaa, onko henkilö Roomban kameran kautta. Se myös piippaa, jos se tunnistaa henkilön, ja pysähtyy ennen kuin lähtee kalliolta.

% kokeile rob.setLEDDigits ('') x = 0; y = 0; teeta = 0; este = ; sykli = 1; AngCorr = @(x) x + 3,059.*X.^0,4205; %Toiminto kääntökulmien korjaamiseksi rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0,1) %Go %Tarkista henkilö jos AA_checkperson (rob) rob.beep end %Tarkista Cliff Sensor jos AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') tauko (0,5) este (sykli) = 2; AA_cliffbeep (ryöstö) %Varmuuskopioi ja käännä rob.moveDistance (-. 15) rob.turnAngle (30) end

Vaihe 4: Vaihe 4: Esteiden tarkistaminen

Tämä koodi saa roomban tarkistamaan ympärillään olevat kohteet ja tarkistaa törmäysanturin varmistaakseen, että se pysähtyy ennen kuin se vahingoittaa itseään.

%Tarkista valotunnistin, jos AA_lightcheck (ryöstö) rob.stop rob.setLEDDigits ('Seinä') tauko (0,5) este (sykli) = 1; %Wall AA_wallbeep (ryöstö) %Varmuuskopioi ja käännä rob.moveDistance (-. 15) rob.turnAngle (30) end %Tarkista Bump Sensor jos AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') tauko (0.5) este (sykli) = 1; %Seinä AA_seinäpiippaus (ryöstö) %Varmuuskopioi ja käännä rob.moveDistance (-. 15) rob.turnAngle (30) end %Jos ei mitään, jos tyhjä (este) este (sykli) = 0; elseif pituus (este) <pyöräilyesto (sykli) = 0; loppuun

Vaihe 5: Vaihe 5: Piirustus

Vaihe 5: Piirustus
Vaihe 5: Piirustus

Tämä koodi kehottaa roombaasi piirtämään, mitä se kohtaa matkansa aikana. Tällainen juoni tulee näkyviin, kun roomba on pysähtynyt.

%Hae sijainti d = rob.getDistance; jos sykli == 1 teeta (sykli) = 0; x (sykli) = d.*cosd (teeta (sykli)); % kokonaismatkasta x y (sykli) = d.*sind (theta (sykli)); % kokonaismatka y muussa teetassa (sykli) = teeta (sykli-1) + rob.getAngle; x (sykli) = d.*cosd (teeta (sykli)) + x (sykli-1); % kokonaismatkasta x y (sykli) = d.*sind (theta (sykli)).*d + y (sykli-1); %kokonaismatka y lopussa %Tauko -ehto, jos rob.getButtons.clean break end %Lisäysjakso = sykli + 1; loppuun rob.stop i = 1: pyöräile, jos este (i) == 1 %Seinäkaavio (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif este (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') lopun teksti (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' normalized ') odottavat % % hätäsignaalia, kun taas tosi rob.beep pause (3) if rob.getButtons.clean break end end % catch % rob.stop % end

Suositeltava: