Satura rādītājs:
- 1. solis: Materiāli un piederumi:
- 2. darbība:
- 3. solis: "Dārza" salikšana
- 4. solis: koda rakstīšana
- 5. darbība: kopējiet kodu
Video: Dārza palīgs Roomba Bot: 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Kiara Myers, Ahmad Alghadeer un Madison Tippet
Mērķis:
Šī pamācība iemācīs jums programmēt Roomba Bot, izmantojot MATLAB, lai pārvietotos pa dārzu, atklājot apļveida augļus/dārzeņus, kas ir pietiekami nogatavojušies, lai tos varētu salasīt, ņemot vērā to lielumu. Šis robots arī nosūta jums e -pastu, brīdinot, cik augļu ir gatavi novākšanai un ceļu, pa kuru tas devās.
Iespējas:
- Izmanto gaismas sensorus, lai noteiktu sienas un nedaudz pagrieztu, lai izvairītos no sitiena
- Izmanto sitienu sensorus, lai pārtrauktu programmu, kad tā ietriecas klintī dārza galā
- Izmanto attēlu apstrādi, lai atklātu loku dārzā un pēc tam noteiktu tā rādiusu
- Izmanto klints sensorus, lai noteiktu krāsainu lenti, kas norāda uz augļa klātbūtni
1. solis: Materiāli un piederumi:
- Viens klēpjdators
- MATLAB 2017
- Roomba putekļu tīrītājs
- Raspberry Pi
- Koka bloki
- Baltā grāmata
- Melns papīrs
- Krāsaina lente/plāna krāsaina papīra sloksne
- Lielais klints
2. darbība:
3. solis: "Dārza" salikšana
- Paņemiet melno papīru un izgrieziet dažāda lieluma apļus
- Uzlīmējiet šos melnos apļus uz liela balta papīra
Šis kontrasts būs nepieciešams, atklājot augļus
-
Izmantojiet koka blokus, lai izveidotu labirintam līdzīgu dārza taku, lai jūsu robots varētu pārvietoties
Mēs izvēlējāmies U formas ceļu, kā parādīts iepriekš
- Dārza beigās pievienojiet akmeni vai durvis vai citu priekšmetu, lai jūsu robots zinātu, ka tas ir izdarīts
-
Līmējiet savu balto papīru ar apli uz dārza sienām
Mēs pielīmējām spaiņus, jo mūsu sienas bija pārāk īsas kamerai
- Ielieciet krāsainu lenti/plānu krāsaina papīra sloksni uz zemes augļa priekšā
4. solis: koda rakstīšana
Navigācija dārzā
Izmantojot trieciena sensorus: Lai palaistu programmu, mēs ievietojam kodējumu īslaicīgajā paziņojumā, kas tiek apskatīts dažādos paziņojumos, līdz kods ir salauzts. Ja trāpīs kāds no buferiem, to vērtība būs vienāda ar patieso (kas Būla režīmā ir vērtība 1). Ja paziņojums tiek izmantots, lai pārtrauktu kodu, ja viena no to vērtībām ir vienāda ar 1.
Klints sensoru izmantošana: Paziņojuma laikā mēs izmantojam paziņojumu if, lai paziņotu Roomba, kad tā ir ieradusies rūpnīcas atrašanās vietā. Roomba nosaka krāsaino lenti uz grīdas, pārbaudot sarkanās krāsas slieksni, ko uzņem klints sensori. Ja kreisās vai labās klints sensors nosaka krāsu ar lielāku slieksni nekā zemei, tas apturēs robotu uz 2 sekundēm (izmantojot pauzes komandu). Šo 2 sekunžu laikā Roomba uzņems un parādīs augļa attēlu. Izmantojot iebūvēto komandu, atrodiet apļu rādiusu, un Roomba atradīs jūsu tā saucamos augļus.
Attēlu apstrādes izmantošana: Ja paziņojumā mēs iestrādājam citu paziņojumu, ja teikts: ja atklātais rādiuss, rādiuss3, ir lielāks vai vienāds ar mūsu minimālo prasību pēc gataviem augļiem r1 (jūs to izlemjat), tad saskaitiet un parādiet Roomba, cik daudz augļu ir gatavi, un pagriezieties, lai turpinātu cauri dārzam. Ja nē, pagrieziens, lai turpinātu cauri dārzam. Piezīme: iespējams, jums būs jāpielāgo pagrieziena leņķis, jo katra Roomba ir atšķirīga
Gaismas buferu izmantošana: citā paziņojumā gaismas buferi tiek analizēti, lai pārliecinātos, ka neviens no tiem nav lielāks par mūsu noteikto slieksni. Ja kreisais, labais, kreisais centrs, labais centrs, kreisais priekšējais vai labais priekšējais gaismas buferis iet virs sliekšņa, tad Roomba nedaudz pagriezīsies atbilstošā leņķī, lai nesaskartos ar sienu. Tādējādi navigācija labirintā.
Pārējais kods tiek izmantots, lai uzzīmētu Roomba izvēlēto ceļu un pēc tam nosūtītu rezultātus uz jūsu e -pastu
5. darbība: kopējiet kodu
Mērķis: pamatojoties uz to izmēriem, roomba izies dārzā un atšķirs dārzeņus/augļus, kas ir gatavi savākšanai. % Ievadi: gaismas trieciena sensori, klints sensori, trieciena sensori, attēls no kameras Kods pārtrūkst, kad Roomba ietriecas % objektā, nosūta astronautam e -pastu par to, cik augļu ir gatavi uzņemt, un Roomba kustības kartēšanu. Lietošana: Ja un paziņojumu laikā, zīmēšanas komandas, e -pasta kods no MATLAB
k = 0
tic
timerVal = tic
kamēr taisnība
v = 0,2; % velocity r.setDriveVelocity (v, v);% roomba iet uz priekšu L = r.getLightBumpers; LC = L. kreisais centrs; Rr = L.pareizi; Lf = L.pa kreisi; RC = L.pareizais centrs; LF = L.pa kreisi; RF = L.pa labiFront; Q = 75; % slieksnis. RTH = 30; %Augsts sarkanais slieksnis RTL = 10; %Zems sarkanais slieksnis B = r.getBampers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; ja S.leftFront> PL1 || S.rightFront> PL1 % nosaka, vai krāsa uz zemes ir virs sliekšņa r. Apstāšanās pauze (2) pagājisTime = toc (timerVal-2) tic timerVal = tic % pauze 2 sekundes img = r.getImage; %uzņemt attēlu imshow (img)%parādīt attēlu [centri3, rādiusi3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0,9); h = viscircles (centri3, rādiusi3); %meklē rādiusa apļus ar norādītu diapazonu attēlā, ja rādiuss3> = r1 T = 1 k = k+1 dist1 = 0,2.*pagājušais laiks %Ja konstatētais rādiuss ir lielāks vai vienāds ar nogatavojušos augļu minimālo %, tad Roomba uzskaita šos augļus, ja rādiuss3 <= r3 T = 0 cits T = 0 dist2 = 0,2.*pagājušais laiks %
ja T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Ja tika konstatēts auglis, parādiet numuru Roomba, %rada troksni un pagrieziet elseif T == 2 r.turnAngle (78) %Ja tiek konstatēti 2 augļi, tad pagriezieties, lai turpinātu caur %dārzu else r.turnAngle (78) %Ja augļi netiek atklāti, tad pagriezieties, lai turpinātu caur %dārza beigu galu ja LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %Ja kāda no gaismas buferu vērtībām pārsniedz slieksni, tad %the Roomba nedaudz pagriezīsies atbilstošajā virzienā, lai izvairītos no %sitiena pret sienu
ja B.pareizi == 1 || B.pa kreisi == 1 || B. front == 1 dist3 = 0.2.*Pagājušais laiks r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Ja kāds no bumbers tiek trāpīts, tad roomba atskaņo skaņu, griežas apkārt, %un pārkāpj kodu
pārtraukuma beigas
beigu izkliede (0,533, 0, '^') aizturēt izkliedi (0,533, dist1, '<') aizturēt izkliedi (-dist2, dist1, 'v') aizturēt izkliedi (-dist2, 0, 'd') saveas (gcf, “Kustība.png”)
kmsg = num2str (k) mail = '[email protected]' parole = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ('Internets', 'E -pasts', pasts); setpref ('Internets', 'SMTP_Server', saimniekdators) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pasts); props.setProperty ('mail.smtp.host', resursdators); props.setProperty ('mail.smtp.port', osta); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', ports); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (pasts, 'Sveiki, astronaut! Dārzā ir tik daudz augļu', kmsg, {'motion.png'})
Ieteicams:
Gaismas termometrs - vitaminizēta dārza gaisma (eNANO De Jardin): 6 soļi
Gaismas termometrs - vitaminizēts dārza apgaismojums (eNANO De Jardin): vitaminizēts dārza apgaismojums ar arduino NANO un temperatūras sensoru BMP180. Mūsu pazemīgajai dārza gaismai būs slepena jauda: tā varēs norādīt āra temperatūru, izmantojot krāsu kodu un mirgo. Tās darbība ir šāda: tā ir
ESP8266 - dārza apūdeņošana ar taimeri un tālvadību, izmantojot internetu / ESP8266: 7 soļi (ar attēliem)
ESP8266 - dārza apūdeņošana ar taimeri un tālvadību, izmantojot internetu / ESP8266: ESP8266 - apūdeņošana ar tālvadību un ar laiku dārzeņu dārziem, puķu dārziem un zālājiem. Tas izmanto ESP-8266 ķēdi un hidraulisko / elektrisko vārstu apūdeņotāja padevei. Priekšrocības: zemas izmaksas (~ 30,00 ASV dolāri) ātras piekļuves komandas
Saules dārza apgaismojuma pārvietošana līdz RBG: 7 soļi (ar attēliem)
Saules dārza apgaismojuma riteņbraukšana līdz RBG: vietnē Youtube ir daudz video par saules dārza apgaismojuma remontu; pagarinot saules dārza gaismas akumulatora darbības laiku, lai tie darbotos ilgāk naktī, un neskaitāmas citas uzlaušanas iespējas. Šis pamācības veids ir nedaudz atšķirīgs no tiem, kas atrodami vietnē Y
Automātiska dārza sistēma, kas veidota uz Raspberry Pi āra vai iekštelpās - MudPi: 16 soļi (ar attēliem)
Automātiska dārza sistēma, kas veidota uz Raspberry Pi āra vai iekštelpās - MudPi: Vai jums patīk dārzkopība, bet nevarat atrast laiku tās uzturēšanai? Varbūt jums ir istabas augi, kas izskatās mazliet izslāpuši vai meklē veidu, kā automatizēt hidroponiku? Šajā projektā mēs atrisināsim šīs problēmas un apgūsim pamatus
Dārza monitors: 3 soļi
Dārza monitors: šī ir jaunākā un pilnīgākā mana dārza monitoru versija, esmu izveidojis iepriekšējās versijas ar dažādiem lietojumiem, piemēram, vienu ar LCD un otru ar ESP8266. Tomēr esmu labāk dokumentējis šo versiju, tāpēc esmu nolēmis to augšupielādēt. Kad c