Satura rādītājs:

Roomba MATLAB projekts: 5 soļi
Roomba MATLAB projekts: 5 soļi

Video: Roomba MATLAB projekts: 5 soļi

Video: Roomba MATLAB projekts: 5 soļi
Video: PROYECTO CONTROL DE VOZ POR ARDUINO 2024, Jūlijs
Anonim
Roomba MATLAB projekts
Roomba MATLAB projekts

Pašreizējais NASA plāns attiecībā uz Marsa roveri ir paredzēts, lai tas būtu datu savācējs un klīst apkārt Marsam, savācot augsnes paraugus, lai tos atgrieztu uz Zemes, lai zinātnieki varētu redzēt, vai uz planētas ir bijušas iepriekšējās dzīvības formas. Turklāt rover nosūta atpakaļ attēlus zinātniekiem, lai viņi varētu palīdzēt pārvietoties pa roveri un novērst iespējamās problēmas.

Mūsu grupas ideja mūsu projektam ir tāda, ka roveris darīs to pašu, ko NASA roveris, kurš 2020. gadā atstās zemi, bet arī, lai kartētu zemes ģeogrāfiju. Roomba spētu nojaust klintis un apstāties, pirms tas nokrīt, un pēc tam dublēties, pagriezties un mainīt kursu, lai tas nenokristu un netiktu sabojāts. Cita mūsu ideja, kas iekļauta mūsu projektā, ir, lai roomba varētu uzzīmēt redzamos orientierus un parādīt sižetu katru reizi, kad cilpa ir pabeigta un tā norise ir pabeigta.

Šī pamācība ir paredzēta ikvienam citam, kurš vēlas izveidot tāda paša veida kodu savai roomba.

1. darbība: 1. darbība: nepieciešamie materiāli

1. darbība. Nepieciešamie materiāli
1. darbība. Nepieciešamie materiāli
1. darbība. Nepieciešamie materiāli
1. darbība. Nepieciešamie materiāli

Jums būs nepieciešams:

  1. Istabiņa
  2. MATLAB
  3. Šis fails, lai palaistu roomba
  4. Plakana virsma
  5. Galda virsma, kas darbojas kā "klints"

2. darbība: 2. darbība: Roomba koda iestatīšana/iegūšana

2. darbība: Roomba koda iestatīšana/iegūšana
2. darbība: Roomba koda iestatīšana/iegūšana

Pēc failu ievadīšanas ekrāns izskatīsies šādi.

3. darbība: 3. darbība: klints sensoru/LED gaismu uzstādīšana

Šis kods jūsu istabai precīzi pateiks, kādā leņķī pagriezties, pārbaudīs informāciju par akumulatoru, pateiks istabai, cik ātri jāiet, un pārbaudīs, vai nav personas, izmantojot roomba kameru. Tas arī pīkstēs, ja identificēs personu, un apstāsies pirms nokāpšanas no klints.

% mēģiniet rob.setLEDDigits ('') x = 0; y = 0; teta = 0; šķērslis = ; cikls = 1; AngCorr = @(x) x + 3,059.*X.^0,4205; %Funkcija, lai labotu pagrieziena leņķus, kamēr rob.getBatteryInfo.percent> 15 rob.setLEDDigits (") rob.setDriveVelocity (0,1) %Go %Pārbaudīt personu, ja AA_checkperson (rob) rob.beep end %Pārbaudiet klints sensoru, ja AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pauze (0,5) šķērslis (cikls) = 2; AA_cliffbeep (rob) %Dublēt un pagriezt rob.moveDistance (-. 15) rob.turnAngle (30) beigas

4. darbība: 4. darbība. Šķēršļu pārbaude

Šis kods ļaus Roomba pārbaudīt apkārt esošos priekšmetus un pārbaudīs trieciena sensoru, lai pārliecinātos, ka tas apstājas, pirms tas pats sevi sabojā.

%Pārbaudiet gaismas sensoru, ja AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Siena') pauze (0,5) šķērslis (cikls) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Pārbaudiet sasituma sensoru, ja AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pauze (0.5) šķērslis (cikls) = 1; %Wall AA_wallbeep (aplaupīt) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Ja nav, ja ir tukšs (šķērslis) šķērslis (cikls) = 0; elseif garums (šķērslis) <cikla šķērslis (cikls) = 0; beigas

5. darbība: 5. darbība

5. solis: Zīmēšana
5. solis: Zīmēšana

Šis kods liks jūsu roomba uzzīmēt, ar ko tā saskaras savā ceļojumā. Šāds sižets parādīsies pēc tam, kad roomba būs apstājies.

%Iegūt pozīciju d = rob.getDistance; ja cikls == 1 teta (cikls) = 0; x (cikls) = d.*cosd (teta (cikls)); % kopējais nobrauktais attālums x y (cikls) = d.*sind (teta (cikls)); % kopējais nobrauktais attālums citur teta (cikls) = teta (cikls-1) + rob.getAngle; x (cikls) = d.*cosd (teta (cikls)) + x (cikls-1); % kopējais nobrauktais attālums x y (cikls) = d.*sind (teta (cikls)).*d + y (cikls-1); %kopējais nobrauktais attālums y beigās %Pārtraukuma nosacījums, ja rob.getButtons.clean break end %Palielinājuma cikla cikls = cikls + 1; beigas rob.stop uz i = 1: cikls, ja šķērslis (i) == 1 %Sienas gabals (x (i), y (i), 'Marķieris', 'kvadrāts', 'MarkerEdgeColor', 'r') cits šķērslis (i) == 2 %klints diagramma (x (i), y (i), 'marķieris', 'o', 'MarkerEdgeColor', 'k') beigu teksts (.9, 0,9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') aiztur beigu % briesmu signālu, kamēr patiesa rob.beep pauze (3), ja rob.getButtons.clean break end end % catch % rob.stop % end

Ieteicams: