Sisukord:

Roomba MATLAB projekt: 5 sammu
Roomba MATLAB projekt: 5 sammu

Video: Roomba MATLAB projekt: 5 sammu

Video: Roomba MATLAB projekt: 5 sammu
Video: Roomba Positioning with trajectory - Ultrasonic (SPAN: Smart Passive/Active Node) 2024, Juuli
Anonim
Roomba MATLAB projekt
Roomba MATLAB projekt

Praegune plaan, mis NASA -l Marsi roveri jaoks on, on see, et see oleks andmekoguja ja rändaks ümber Marsi, kogudes mullaproove Maale tagasi toomiseks, et teadlased näeksid, kas planeedil oli ka varasemaid eluvorme. Lisaks saadab rover teadlastele pilte, et nad saaksid aidata roveril navigeerida ja lahendada võimalikud probleemid.

Meie grupi idee meie projekti jaoks on, et rover teeks sama, mis NASA rover, kes 2020. aastal maalt lahkub, aga ka kaardistaks maa geograafia. Roomba oleks võimeline tundma kaljusid ja peatuma enne, kui see maha kukub, ning seejärel varundama, pöörama ja muutma oma suunda, et see ei kukuks ega saaks kahjustada. Meie teine idee, mis on meie projekti integreeritud, on see, et roomba saaks joonistada nähtavad vaatamisväärsused ja näidata maatükki iga kord, kui tsükkel on lõppenud ja selle kulg on joostud.

See juhend on mõeldud kõigile teistele, kes soovivad oma roomba jaoks sama tüüpi koodi luua.

1. samm: 1. samm: vajalikud materjalid

Samm: vajalikud materjalid
Samm: vajalikud materjalid
Samm: vajalikud materjalid
Samm: vajalikud materjalid

Sa vajad:

  1. Tuba
  2. MATLAB
  3. See fail roomba käivitamiseks
  4. Tasane pind
  5. Lauapind, mis toimib "kaljuna"

2. samm: 2. samm: Roomba koodi seadistamine/hankimine

2. samm: Roomba koodi seadistamine/hankimine
2. samm: Roomba koodi seadistamine/hankimine

Pärast failide sisestamist näeb teie ekraan välja selline.

3. samm: 3. samm: kaljuandurite/LED -tulede seadistamine

See kood ütleb teie roomale täpselt, millise nurga all pöörata, kontrollib aku teavet, ütleb toale, kui kiiresti edasi minna, ja kontrollib roomba kaamera kaudu inimest. See piiksub ka siis, kui tuvastab inimese, ja peatub enne kaljult mahatulekut.

% proovige rob.setLEDDigits ('') x = 0; y = 0; teeta = 0; takistus = ; tsükkel = 1; AngCorr = @(x) x + 3,059.*X.^0,4205; %Funktsioon pöördenurkade parandamiseks, kui rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0,1) %Go %Check Person Check if AA_checkperson (rob) rob.beep end %Kontrolli kaljuandurit, kui AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') paus (0,5) takistus (tsükkel) = 2; AA_cliffbeep (rööv) %Varunda ja pööra rob.moveDistance (-. 15) rob.turnAngle (30) lõpp

4. samm: 4. samm: takistuste kontrollimine

See kood kontrollib roomba ümbritsevate esemete olemasolu ja kontrollib põrkeandurit, et veenduda, kas see peatub enne, kui see ennast kahjustab.

%Kontrollige valgusandurit, kui AA_lightcheck (rööv) rob.stop rob.setLEDDigits ('Sein') paus (0,5) takistus (tsükkel) = 1; %Seina AA_seinapiiks (röövimine) %Tagasi üles ja pööramine rob.moveDistance (-. 15) rob.turnAngle (30) lõpp %Kontrollige põrkeandurit, kui AA_bumpcheck (rööv) rob.stop rob.setLEDDigits ('Sein') paus (0.5) takistus (tsükkel) = 1; %Sein AA_seinapiiks (röövimine) %Tagasi üles ja pööre rob.moveDistance (-. 15) rob.turnAngle (30) lõpp %Kui pole, kui tühi (takistus) takistus (tsükkel) = 0; elseif pikkus (takistus) <tsükli takistus (tsükkel) = 0; lõpp

5. samm: 5. samm: joonistamine

5. samm: joonistamine
5. samm: joonistamine

See kood ütleb teie roombale, et ta saaks välja mõelda, mida ta oma teekonnal kohtab. Selline süžee ilmub pärast toa peatumist.

%Asendi hankimine d = rob.getDistance; kui tsükkel == 1 teeta (tsükkel) = 0; x (tsükkel) = d.*cosd (teeta (tsükkel)); % läbitud vahemaadest x y (tsükkel) = d.*sind (teeta (tsükkel)); kogu läbitud teepikkus % mujal teeta (tsükkel) = teeta (tsükkel-1) + rob.getAngle; x (tsükkel) = d.*cosd (teeta (tsükkel)) + x (tsükkel-1); % läbitud teepikkustest x y (tsükkel) = d.*sind (teeta (tsükkel)).*d + y (tsükkel-1); %kogu läbitud vahemaa y lõpus %Katkestustingimus, kui rob.getButtons.puhasta pausi lõpp %Suurendustsükli tsükkel = tsükkel + 1; lõpp rob.stop i = 1 jaoks: tsükkel, kui takistus (i) == 1 %Seinajoon (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif takistus (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') lõpptekst (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hoiavad end % hädasignaali, samas kui tõene rob.beep paus (3), kui rob.getButtons.clean break end end % catch % rob.stop % end

Soovitan: