Kazalo:
- 1. korak: Materiali in potrebščine:
- 2. korak:
- 3. korak: Sestavljanje vašega "vrta"
- 4. korak: Pisanje kode
- 5. korak: Kopirajte kodo
Video: Vrtni pomočnik Roomba Bot: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Kiara Myers, Ahmad Alghadeer in Madison Tippet
Namen:
Ta pouk vas bo naučil, kako programirati Roomba Bota z uporabo MATLAB-a za krmarjenje po vrtu in zaznati sadje/zelenjavo okrogle oblike, ki je dovolj zrela, da jo lahko poberete glede na velikost. Ta robot vam pošlje tudi e -poštno sporočilo in vas opozori, koliko sadja je pripravljeno za nabiranje in pot, po kateri je potoval.
Lastnosti:
- Uporablja svetlobne senzorje za zaznavanje sten in rahlo obračanje, da se izogne udarcem
- Uporablja senzorje udarcev, da prekine program, ko udari o skalo na koncu vrta
- Z obdelavo slik zazna krog na vrtu in nato določi njegov polmer
- Uporablja senzorje pečine za zaznavanje barvnega traku, ki označuje prisotnost sadja
1. korak: Materiali in potrebščine:
- En prenosni računalnik
- MATLAB 2017
- Roomba sesalnik
- Malina Pi
- Lesene kocke
- Bel papir
- Črni papir
- Barvni trak/tanek trak iz barvnega papirja
- Veliki rock
2. korak:
3. korak: Sestavljanje vašega "vrta"
- Vzemite črni papir in izrežite kroge različnih velikosti
-
Te črne kroge prilepite na velik bel papir
Ta kontrast bo potreben pri odkrivanju sadja
- S svojimi lesnimi bloki zgradite vrtno pot, podobno labirintu, za navigacijo vašega robota
Izbrali smo pot v obliki črke U, kot je prikazano zgoraj
- Na koncu vrta dodajte kamen ali vrata ali drug predmet, da bo vaš robot vedel, da je to storjeno
- Beli papir s krogom prilepite na stene vrta
Za vezanje smo uporabili vedra, ker so bile naše stene prekratke za kamero
- Barvni trak/tanek trak barvnega papirja položite na tla pred sadjem
4. korak: Pisanje kode
Krmarjenje po vrtu
Uporaba senzorjev udarcev: Za zagon programa umestimo kodiranje v stavek while, ki prehaja skozi različne stavke if, dokler se koda ne razbije. Če je kateri koli odbijač zadet, bo njihova vrednost enaka true (kar je v logični vrednosti 1). Stavek if se uporablja za prekinitev kode, ko je ena od njihovih vrednosti enaka 1.
Uporaba senzorjev Cliff: V stavku while uporabimo stavek if, da Roombi povemo, kdaj je prispela na lokacijo tovarne. Roomba zazna barvni trak na tleh s pregledom praga rdeče barve, ki ga zaznajo senzorji pečine. Če levi ali desni senzor pečine zazna barvo z večjim pragom od tal, bo robota ustavil za 2 sekundi (z ukazom za premor). V teh 2 sekundah bo Roomba posnela in prikazala podobo sadja. Z vgrajenim ukazom imfindcircles nastavite obseg polmerov vaših krogov in vaša Roomba bo našla vaše tako imenovano sadje.
Uporaba obdelave slik: V stavek if vstavimo še en stavek if, ki pravi: če je zaznani polmer, radii3, večji ali enak naši minimalni zahtevi za zrelo sadje, r1 (to se odločite sami), nato preštejte in prikažite Roomba, koliko sadja je pripravljenih in se obrnite, da nadaljujete skozi vrt. Če ne, na vrsti za nadaljevanje skozi vrt. Opomba: morda boste morali prilagoditi kot zavijanja, ker je vsaka Roomba drugačna
Uporaba svetlobnih odbijačev: V drugem stavku if se svetlobni odbijači analizirajo, da se prepriča, da noben od njih ne preseže našega določenega praga. Če gre levi, desni, levi srednji, desni srednji, levi sprednji ali desni sprednji odbijač luči nad prag, se bo Roomba nekoliko obrnila v ustreznem kotu, da se izogne trčenju v steno. Zato krmarjenje po labirintu.
Preostali del kode se uporabi za načrtovanje poti, ki jo je opravila Roomba, in nato rezultate pošlje na vaš e -poštni naslov
5. korak: Kopirajte kodo
% Namen: Roomba bo glede na svoje velikosti šla skozi vrt in razlikovala zelenjavo/sadje, ki je pripravljeno za nabiranje. % Vhodi: Senzorji Lightbump, Senzorji Cliff, Senzorji Bump, slika iz kamere % Izhodi: Kadar koli so svetlobni senzorji večji od praga, se roomba obrne in posname sliko, piska, če je polmer % zelenjave/sadja med določenim območjem. Koda se zlomi, ko roomba naleti na % objekt, astronavtu pošlje e -poštno sporočilo o tem, koliko sadja je pripravljeno za % pobiranja, in preslikavo gibanja roombe. % Uporaba: če in medtem, izjave, ukazi za risanje, e -poštna koda iz MATLAB -a
k = 0
tic
timerVal = tic
medtem ko je res
v = 0,2; % velocity r.setDriveVelocity (v, v);% roomba pojdi naprej L = r.getLightBumpers; LC = L.levi center; Rr = L. desno; Lf = L.levo; RC = L. desno središče; LF = L.levo spredaj; RF = L. desno spredaj; Q = 75; % prag. RTH = 30; %Visok rdeči prag RTL = 10; %Nizek rdeč prag B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; če je S.leftFront> PL1 || S.rightFront> PL1 % zazna, če je barva na tleh nad pragom r.stop pavza (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % premor za 2 sekundi img = r.getImage; %take image imshow (img)%display image [centres3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0,9); h = viscircles (centri3, polmeri3); %poiščite kroge polmerov w/v določenem obsegu na sliki, če je radii3> = r1 T = 1 k = k+1 dist1 = 0,2.*elapsedTime %Če je zaznani polmer večji ali enak minimalni zahtevi %zrelega sadja, potem Roomba to sadje šteje drugače, če je polmer3 <= r3 T = 0 drugače T = 0 dist2 = 0,2.*elapsedTime %Če ne, potem ne šteje konca sadja
če je T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Če je bilo zaznano sadje, potem na Roombi prikažite številko, %naredite hrup in obrnite elseif T == 2 r.turnAngle (78) %Če odkrijete 2 sadeža, zavijte, da nadaljujete skozi %vrt else r.turnAngle (78) %Če plodov ne zaznate, zavrtite za nadaljevanje skozi %end end če je LC> Q r.stop r.turnAngle (-7) drugače, če RC> Q r.stop r.turnAngle (7) drugače, če 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 %Če katera od vrednosti svetlobnih odbijačev preseže prag, potem %Roomba se bo nekoliko obrnil v ustrezno smer, da se izogne %udarcu v steno
če je B. desno == 1 || B.levo == 1 || B. spredaj == 1 dist3 = 0,2.*ElapsedTime r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) %Če kateri od udarci, potem roomba predvaja zvok, se vrti, %in zlomi kodo
prelomni konec
end scatter (0.533, 0, '^') hold on scatter (0.533, dist1, '<') hold on scatter (-dist2, dist1, 'v') hold on scatter (-dist2, 0, 'd') saveas (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' geslo = 'Srsora123#' gostitelj = 'smtp.gmail.com' port = '465'
setpref ('Internet', 'E_mail', pošta); setpref ('Internet', 'SMTP_Server', host) rekviziti = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pošta); props.setProperty ('mail.smtp.host', gostitelj); props.setProperty ('mail.smtp.port', vrata); 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', vrata); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (pošta, "Pozdravljeni astronavt! Na vrtu je toliko sadja", kmsg, {'movement.png'})
Priporočena:
Samodejni vrtni sistem, zgrajen na Raspberry Pi za zunanjo ali notranjo uporabo - MudPi: 16 korakov (s slikami)
Samodejni vrtni sistem, zgrajen na Raspberry Pi za zunanjo ali notranjo uporabo - MudPi: Ali imate radi vrtnarjenje, vendar ne najdete časa za vzdrževanje? Morda imate kakšne sobne rastline, ki so videti malo žejne ali iščejo način za avtomatizacijo hidroponike? V tem projektu bomo rešili te težave in se naučili osnov
Vrtni monitor: 3 koraki
Vrtni monitor: To je najnovejša in popolna različica mojih vrtnih monitorjev, naredil sem prejšnje različice z različno uporabo, na primer eno z LCD -jem in drugo z ESP8266. Vendar sem to različico bolje dokumentiral, zato sem se odločil, da jo naložim
Gardenduino Aka vrtni mojster: 4 koraki
Gardenduino Aka vrtni mojster: no, ali se vam ne zdi dolgočasno čistiti trate, zalivati rastline & kaj pa ne! No, ravno vrtnarjenje ni moja skodelica čaja. zato sem se odločil za avtomatski sistem, ki bo skrbel za moj vrt! Začnimo
Vrtni vlak - Arduino Wireless NMRA DCC: 4 koraki (s slikami)
Vrtni vlak - Arduino Wireless NMRA DCC: Na podlagi prejšnjih navodil z DCC na sistemu mrtvih tirnic sem idejo nadalje razvil z ročno ukazno postajo DCC s tipkovnico in LCD zaslonom. Ukazna postaja vsebuje vse kodiranje, potrebno za navodila NMRA DCC, vendar
Brezžični vrtni sistem: 7 korakov
Brezžični vrtni sistem: Ta projekt temelji na Arduinu in uporablja " module " da vam pomaga pri zalivanju rastlin in se prijavite na temp, tla in dež. Sistem je brezžičen preko 2,4 GHz in uporablja module NRF24L01 za pošiljanje in sprejemanje podatkov. Naj vam malo razložim, kako