Turinys:

„Roomba MATLAB“projektas: 5 žingsniai
„Roomba MATLAB“projektas: 5 žingsniai

Video: „Roomba MATLAB“projektas: 5 žingsniai

Video: „Roomba MATLAB“projektas: 5 žingsniai
Video: PROYECTO CONTROL DE VOZ POR ARDUINO 2024, Lapkritis
Anonim
Roomba MATLAB projektas
Roomba MATLAB projektas

Dabartinis NASA planas, skirtas Marso roveriui, yra tai, kad jis yra duomenų rinkėjas ir klaidžioja aplink Marsą, renka dirvožemio mėginius, kad juos sugrąžintų į Žemę, kad mokslininkai galėtų pamatyti, ar planetoje buvo ankstesnių gyvybės formų. Be to, roveris siunčia vaizdus mokslininkams, kad jie galėtų padėti naršyti roverį ir išspręsti galimas problemas.

Mūsų grupės idėja mūsų projektui yra tai, kad roveris padarys tą patį, ką NASA roveris, kuris 2020 m. Paliks žemę, bet taip pat suplanuos žemės geografiją. „Roomba“galėtų pajusti uolas ir sustoti, kol nenukris, o tada atsitraukti, pasukti ir pakeisti savo eigą, kad ji nenukristų ir nebūtų pažeista. Kita mūsų idėja, integruota į mūsų projektą, yra tai, kad „roomba“galėtų nubrėžti matomus orientyrus ir parodyti sklypą kiekvieną kartą, kai ciklas baigiamas ir jo eiga paleidžiama.

Ši instrukcija skirta visiems kitiems, kurie norėtų sukurti to paties tipo kodą savo „roomba“.

1 žingsnis: 1 žingsnis: reikalingos medžiagos

1 žingsnis: reikalingos medžiagos
1 žingsnis: reikalingos medžiagos
1 žingsnis: reikalingos medžiagos
1 žingsnis: reikalingos medžiagos

Jums reikės:

  1. Kambarys
  2. MATLAB
  3. Šis failas skirtas paleisti „roomba“
  4. Plokščias paviršius
  5. Stalo paviršius veikia kaip „skardis“

2 veiksmas: 2 veiksmas: „Roomba“kodo nustatymas/gavimas

2 veiksmas: „Roomba“kodo nustatymas/gavimas
2 veiksmas: „Roomba“kodo nustatymas/gavimas

Įvedus failus, ekranas atrodys taip.

3 veiksmas: 3 žingsnis: uolų jutiklių/LED žibintų nustatymas

Šis kodas jūsų kambariui tiksliai nurodys, kokiu kampu pasukti, patikrins baterijos informaciją, nurodys, kaip greitai eiti, ir patikrins, ar nėra žmogaus per „roomba“kamerą. Jis taip pat pypsės, jei atpažins asmenį, ir sustos prieš nusileisdamas nuo uolos.

% pabandykite rob.setLEDDigits ('') x = 0; y = 0; teta = 0; kliūtis = ; ciklas = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; %Funkcija posūkio kampams taisyti, kai rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0,1) %Go %Patikrinkite asmenį, jei AA_checkperson (rob) rob.beep end %Patikrinkite uolos jutiklį, jei AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pauzė (0.5) kliūtis (ciklas) = 2; AA_cliffbeep (rob) %Atsarginė kopija ir posūkis rob.moveDistance (-. 15) rob.turnAngle (30) pabaiga

4 žingsnis: 4 žingsnis: kliūčių tikrinimas

Šis kodas patikrins „roomba“, kad patikrintų aplink esančius daiktus, ir patikrins smūgio jutiklį, kad įsitikintų, jog jis sustoja prieš sugadindamas save.

%Patikrinkite šviesos jutiklį, jei AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Siena') pauzė (0,5) kliūtis (ciklas) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Patikrinkite smūgio jutiklį, jei AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pauzė (0.5) kliūtis (ciklas) = 1; %Siena AA_wallbeep (apiplėšti) %Atsarginė kopija ir posūkis rob.moveDistance (-. 15) rob.turnAngle (30) pabaiga %Jei nėra, jei tuščia (kliūtis) kliūtis (ciklas) = 0; elseif ilgis (kliūtis) <ciklo kliūtis (ciklas) = 0; galas

5 žingsnis: 5 žingsnis: braižymas

5 žingsnis: braižymas
5 žingsnis: braižymas

Šis kodas lieps jūsų „roomba“išsiaiškinti, su kuo susiduria savo kelionės metu. Toks siužetas pasirodys sustojus „roomba“.

%Gauti poziciją d = rob.getDistance; jei ciklas == 1 teta (ciklas) = 0; x (ciklas) = d.*cosd (teta (ciklas)); % viso nuvažiuoto atstumo x y (ciklas) = d.*sind (teta (ciklas)); % viso nuvažiuoto atstumo % teta (ciklas) = teta (ciklas-1) + rob.getAngle; x (ciklas) = d.*cosd (teta (ciklas)) + x (ciklas-1); % viso nuvažiuoto atstumo x y (ciklas) = d.*sind (teta (ciklas)).*d + y (ciklas-1); %viso nuvažiuoto atstumo %y % %Pertraukos sąlyga, jei rob.getButtons.clean break end % pabaiga rob.stop, kai i = 1: ciklas, jei kliūtis (i) == 1 %Sienos sklypas (x (i), y (i), „Žymeklis“, „kvadratas“, „MarkerEdgeColor“, „r“) kita kliūtis (i) == 2 %uolos brėžinys (x (i), y (i), „Marker“, „o“, „MarkerEdgeColor“, „k“) pabaigos tekstas (.9, 0,9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') palaiko pabaigos % nelaimės signalą, o tiesa rob.beep pauzė (3), jei rob.getButtons.clean break end end % catch % rob.stop % end

Rekomenduojamas: