Cuprins:

Proiectul Roomba MATLAB: 5 pași
Proiectul Roomba MATLAB: 5 pași

Video: Proiectul Roomba MATLAB: 5 pași

Video: Proiectul Roomba MATLAB: 5 pași
Video: MS Excel. Автозаполнение. Одновременный ввод данных на несколько листов. 2024, Noiembrie
Anonim
Proiectul Roomba MATLAB
Proiectul Roomba MATLAB

Planul actual pe care NASA îl are pentru roverul Marte este ca acesta să fie un colector de date și să se plimbe în jurul lui Marte, colectând probe de sol pentru a le readuce pe Pământ, astfel încât oamenii de știință să poată vedea dacă au existat forme de viață anterioare pe planetă. În plus, rover-ul trimite înapoi imagini oamenilor de știință, astfel încât aceștia să poată ajuta navigarea roverului și să remedieze orice probleme ar putea avea.

Ideea grupului nostru pentru proiectul nostru este ca rover-ul să facă același lucru cu rover-ul NASA care va părăsi pământul în 2020, dar și să identifice geografia țării. Roomba ar fi capabil să simtă stâncile și să se oprească înainte să cadă, apoi să facă backup, să se întoarcă și să-și schimbe cursul, astfel încât să nu cadă și să fie deteriorat. Cealaltă idee integrată în proiectul nostru este ca roomba să poată trasa reperele pe care le vede și să arate un complot de fiecare dată când bucla este terminată și cursul acesteia a fost rulat.

Acest instructable este pentru oricine altcineva care ar dori să creeze același tip de cod pentru roomba lor.

Pasul 1: Pasul 1: Materiale necesare

Pasul 1: Materiale necesare
Pasul 1: Materiale necesare
Pasul 1: Materiale necesare
Pasul 1: Materiale necesare

Vei avea nevoie:

  1. A roomba
  2. MATLAB
  3. Acest fișier pentru a rula roomba
  4. O suprafață plană
  5. O suprafață de masă pentru a acționa ca o „stâncă”

Pasul 2: Pasul 2: Configurarea / obținerea codului pentru Roomba

Pasul 2: Configurarea / obținerea codului pentru Roomba
Pasul 2: Configurarea / obținerea codului pentru Roomba

Ecranul dvs. va arăta astfel după ce introduceți fișierele.

Pasul 3: Pasul 3: Configurarea senzorilor de stâncă / a luminilor LED

Acest cod îi va indica camerei dvs. exact ce unghi trebuie să rotească, va verifica informațiile despre baterie, va spune camerei dvs. cât de repede să meargă și să verifice dacă există o persoană prin camera camerei. De asemenea, va emite un sunet dacă identifică o persoană și se va opri înainte de a ieși de pe o stâncă.

% încercați rob.setLEDDigits ('') x = 0; y = 0; theta = 0; obstacol = ; ciclu = 1; AngCorr = @ (x) x + 3.059. * X. ^ 0.4205; % Funcție pentru corectarea unghiurilor de rotație în timp ce rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1)% Mergi% Verifică persoana dacă AA_checkperson (rob) rob.beep end% Verifică senzorul de stâncă dacă AA_cliffcheck (rob)) rob.stop rob.setLEDDigits („Cliff”) pauză (0,5) obstacol (ciclu) = 2; AA_cliffbeep (rob)% Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

Pasul 4: Pasul 4: Verificarea obstacolelor

Acest cod va primi roomba pentru verificarea articolelor din jurul său și va verifica senzorul de umflare pentru a vă asigura că se oprește înainte de a se deteriora singur.

% Verificați senzorul de lumină dacă AA_lightcheck (rob) rob.stop rob.setLEDDigits („Perete”) pauză (0,5) obstacol (ciclu) = 1; % Perete AA_wallbeep (rob)% Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Verificați senzorul Bump dacă AA_bumpcheck (rob) rob.stop rob.setLEDDigits („Wall”) pauză (0,5) obstacol (ciclu) = 1; % Perete AA_wallbeep (rob)% Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Dacă nu există dacă este gol (obstacol) obstacol (ciclu) = 0; elseif lungime (obstacol) <ciclu obstacol (ciclu) = 0; Sfârșit

Pasul 5: Pasul 5: Complotarea

Pasul 5: Complotarea
Pasul 5: Complotarea

Acest cod vă va spune roomba să descrie ceea ce întâlnește în călătoria sa. Un complot ca acesta va apărea după ce roomba s-a oprit.

% Obțineți poziția d = rob.getDistance; if cycle == 1 theta (cycle) = 0; x (ciclu) = d. * cosd (theta (ciclu)); % dist total parcurs în x y (ciclu) = d. * sind (theta (ciclu)); % distanță totală parcursă în altceva theta (ciclu) = theta (ciclu-1) + rob.getAngle; x (ciclu) = d. * cosd (theta (ciclu)) + x (ciclu-1); % dist total parcurs în x y (ciclu) = d. * sind (theta (ciclu)). * d + y (ciclu-1); % distanță totală parcursă la sfârșitul anului% Stare de pauză dacă rob.getButtons.clean sfârșit de pauză% Ciclu ciclu de creștere = ciclu + 1; end rob.stop for i = 1: cycle if obstacle (i) == 1% Grafic de perete (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif obstacle (i) == 2% Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') text final (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hold on end% Distress Signal while true rob.beep pause (3) if rob.getButtons.clean break end end% catch% rob.stop% end

Recomandat: