Talaan ng mga Nilalaman:

Roomba MATLAB Project: 5 Hakbang
Roomba MATLAB Project: 5 Hakbang

Video: Roomba MATLAB Project: 5 Hakbang

Video: Roomba MATLAB Project: 5 Hakbang
Video: Matlab Simulation for iRobot Create Maze Exploration 2024, Nobyembre
Anonim
Roomba MATLAB Project
Roomba MATLAB Project

Ang kasalukuyang plano na mayroon ang NASA para sa Mars rover ay upang ito ay maging isang data collector at gumala sa paligid ng Mars, nangongolekta ng mga sample ng lupa upang ibalik sa Earth upang makita ng mga siyentista kung mayroong mga nakaraang form ng buhay sa planeta. Bilang karagdagan, nagpapadala ang rover ng mga imahe sa mga siyentipiko, upang maaari silang makatulong na mag-navigate sa rover at ayusin ang anumang mga problema na mayroon ito.

Ang ideya ng aming pangkat para sa aming proyekto ay para sa rover na gawin ang katulad ng NASA rover na aalis sa mundo sa 2020, ngunit upang mapa rin ang heograpiya ng lupa. Makakaramdam ng roomba ang mga bangin at ititigil ang sarili bago ito mahulog, at pagkatapos ay mag-back up, lumiko, at baguhin ang kurso nito upang hindi ito mahulog at mapinsala. Ang aming iba pang ideya na isinama sa aming proyekto ay para ma-plot ng roomba ang mga landmark na nakikita nito, at magpakita ng isang lagay ng lupa sa tuwing natapos ang loop at ang kurso nito ay naipatakbo na.

Ang itinuturo na ito ay para sa sinumang iba pa na nais na lumikha ng parehong uri ng code para sa kanilang roomba.

Hakbang 1: Hakbang 1: Kailangan ng Mga Materyales

Hakbang 1: Kailangan ng Mga Materyales
Hakbang 1: Kailangan ng Mga Materyales
Hakbang 1: Kailangan ng Mga Materyales
Hakbang 1: Kailangan ng Mga Materyales

Kakailanganin mong:

  1. Isang roomba
  2. MATLAB
  3. Ang file na ito upang patakbuhin ang roomba
  4. Isang patag na ibabaw
  5. Isang ibabaw ng mesa upang kumilos bilang isang "bangin"

Hakbang 2: Hakbang 2: Pag-set up / Pagkuha ng Code para sa Roomba

Hakbang 2: Pag-set up / Pagkuha ng Code para sa Roomba
Hakbang 2: Pag-set up / Pagkuha ng Code para sa Roomba

Magiging ganito ang iyong screen sa sandaling na-input mo ang mga file.

Hakbang 3: Hakbang 3: Pag-set up ng Mga Cliff Sensor / LED Lights

Sasabihin sa code na ito ang iyong roomba nang eksakto kung anong anggulo ang liliko, suriin ang impormasyon ng baterya, sabihin sa iyong roomba kung gaano kabilis pumunta, at upang suriin para sa isang tao sa pamamagitan ng camera ng roomba. Magiging beep din ito kung kinikilala nito ang isang tao, at ititigil ang sarili bago umalis sa isang bangin.

% subukan ang rob.setLEDDigits (") x = 0; y = 0; theta = 0; balakid = ; ikot = 1; AngCorr = @ (x) x + 3.059. * X. ^ 0.4205; % Pag-andar upang iwasto ang mga anggulo ng pagliko habang rob.getBatteryInfo.percent> 15 rob.setLEDDigits ("" rob) rob.stop rob.setLEDDigits ('Cliff') pause (0.5) balakid (cycle) = 2; AA_cliffbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

Hakbang 4: Hakbang 4: Sinusuri ang Mga hadlang

Makukuha ng code na ito ang roomba para sa tseke para sa mga item sa paligid nito, at susuriin ang sensor ng paga upang matiyak na titigil ito bago ito mapinsala mismo.

% Suriin ang Light Sensor kung ang AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') ay naka-pause (0.5) sagabal (cycle) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Suriin ang Bump Sensor kung AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) balakid (ikot) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Kung wala kung isempty (balakid) balakid (cycle) = 0; kung hindi man (haba) magtapos

Hakbang 5: Hakbang 5: Plotting

Hakbang 5: Plotting
Hakbang 5: Plotting

Sasabihin sa code na ito ang iyong roomba upang magbalak ng kung ano ang nakatagpo nito sa paglalakbay. Ang isang balangkas na tulad nito ay lilitaw pagkatapos tumigil ang roomba.

% Kumuha ng Posisyon d = rob.getDistansya; kung cycle == 1 theta (cycle) = 0; x (cycle) = d. * cosd (theta (cycle)); % total dist na naglakbay sa x y (cycle) = d. * sind (theta (cycle)); % total dist na naglakbay sa iba pa theta (cycle) = theta (cycle-1) + rob.getAngle; x (cycle) = d. * cosd (theta (cycle)) + x (cycle-1); % kabuuang distansya na naglakbay sa x y (cycle) = d. * sind (theta (cycle)). * d + y (cycle-1); % kabuuang distansya na naglakbay sa y pagtatapos% Kundisyon ng pag-break kung rob.get Buttons.clean break end% Increment cycle cycle = cycle + 1; tapusin ang rob.stop para sa i = 1: ikot kung sagabal (i) == 1% Wall plot (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') iba pang balakid (i) == 2% Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') end text (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hold on end% Distress Signal habang ang tunay na rob.beep pause (3) kung rob.get Buttons.clean break end end% catch% rob.stop% end

Inirerekumendang: