Mündəricat:
- Addım 1: Materiallar və Təchizatlar:
- Addım 2:
- Addım 3: "Bağçanızı" yığın
- Addım 4: Kod yazmaq
- Addım 5: Kodu kopyalayın
Video: Bağ Köməkçisi Roomba Bot: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Kiara Myers, Ahmad Alghadeer və Madison Tippet
Məqsəd:
Bu təlimat, MATLAB-dan istifadə edərək, ölçüsünə görə yığılacaq qədər yetişmiş dairəvi şəkilli meyvə/tərəvəzləri aşkar edərək, bir bağda gəzmək üçün MATLAB-dan istifadə edərək Roomba Botu necə proqramlaşdırmağı öyrədəcək. Bu robot sizə nə qədər meyvə yığmağa hazır olduğunu və hansı yolu keçdiyini bildirən bir e -poçt da göndərir.
Xüsusiyyətləri:
- Divarları aşkar etmək və vurmamaq üçün bir az dönmək üçün işıq sensorlarından istifadə edir
- Bağçanın sonundakı qayaya çırpıldıqda proqramı pozmaq üçün qabar sensorlar istifadə edir
- Bağdakı bir dairəni aşkar etmək və sonra onun radiusunu təyin etmək üçün görüntü işlənməsindən istifadə edir
- Meyvənin varlığını göstərən rəngli lenti aşkar etmək üçün uçurum sensörlərindən istifadə edir
Addım 1: Materiallar və Təchizatlar:
- Bir noutbuk
- MATLAB 2017
- Roomba tozsoran
- Moruq Pi
- Taxta bloklar
- Ağ kağız
- Qara Kağız
- Rəngli lent/rəngli kağızdan nazik zolaq
- Böyük Qaya
Addım 2:
Addım 3: "Bağçanızı" yığın
- Qara kağızınızı götürün və müxtəlif ölçülü dairələri kəsin
-
Bu qara dairələri böyük bir ağ kağıza yapışdırın
Bir meyvə aşkar edərkən bu ziddiyyət lazım olacaq
-
Robotunuzun hərəkət etməsi üçün labirentə bənzər bir bağ yolu qurmaq üçün ağac bloklarınızı istifadə edin
Yuxarıda göstərildiyi kimi U şəkilli bir yol seçdik
- Bahçenizin sonunda robotunuzun bitdiyini bilmək üçün bir qaya və ya qapı və ya başqa bir şey əlavə edin
-
Ağ kağızınızı dairə ilə bağın divarlarına yapışdırın
Divarlarımız kamera üçün çox qısa olduğu üçün lent üçün kovalardan istifadə etdik
- Meyvənin qarşısında yerə rəngli lent/rəngli kağızdan nazik zolaq qoyun
Addım 4: Kod yazmaq
Bağda gəzmək
Çarpma Sensorlarından istifadə edərək: Proqramı işə salmaq üçün, kod pozulana qədər müxtəlif if ifadələrini döngə verən bir zaman ifadəsinə yerləşdiririk. Tamponlardan hər hansı biri vurulursa, bu, onların dəyərinin doğruya bərabər olması ilə nəticələnəcək (Boolean dilində 1 -dir). If ifadəsi, dəyərlərindən biri 1 -ə bərabər olduqda kodu pozmaq üçün istifadə olunur.
Cliff Sensorlarından İstifadə: Bu vaxt ifadəsində, Roomba'nın bir bitkinin yerinə gəldiyini bildirmək üçün if ifadəsindən istifadə edirik. Roomba, uçurum sensorlarının götürdüyü qırmızı eşikini araşdıraraq, yerdəki rəngli lenti aşkarlayır. Sol və ya sağ uçurum sensoru yerdən daha böyük bir eşik olan bir rəng algılarsa, robotu 2 saniyə dayandıracaq (fasilə əmrindən istifadə edərək). Bu 2 saniyə ərzində Roomba meyvənin şəklini çəkəcək və göstərəcək. Komanda ilə qurulmuş imfindcircles istifadə edərək, dairələrinizin radiusu üçün bir sıra seçin və Roomba sözdə meyvənizi tapacaq.
Şəkil İşlənməsindən istifadə: if ifadəsinin içərisində başqa bir if ifadəsi yerləşdiririk: əgər aşkar edilmiş radius radius3, yetişmiş meyvənin minimum tələbimizdən böyükdürsə və ya ona bərabərdirsə, r1 (buna siz qərar verirsiniz), sonra sayın və göstərin Roomba nə qədər meyvə hazırdır və bağçada davam etmək üçün açılır. Əks təqdirdə növbə bağçada davam edir. Qeyd: Hər Roomba fərqli olduğu üçün döndüyünüz bucağı tənzimləməyiniz lazım ola bilər
İşıq Bamperlərindən istifadə: Başqa bir if ifadəsində, işıq tamponlarının heç birinin müəyyən edilmiş həddimizdən artıq olmamasına əmin olmaq üçün analiz edilir. Sol, sağ, sol mərkəz, sağ mərkəz, sol ön və ya sağ ön işıq tamponu eşikin üstündən keçərsə, Roomba divara dəyməmək üçün uyğun bucaqda bir qədər dönəcəkdir. Beləliklə, labirentdə gəzmək.
Kodun qalan hissəsi, Roombanın keçdiyi yolu qurmaq və sonra nəticələri e -poçtunuza göndərmək üçün istifadə olunur
Addım 5: Kodu kopyalayın
Məqsəd: Ölçülərinə əsasən, roomba bir bağdan keçəcək və götürülməyə hazır olan tərəvəzləri/meyvələri ayıracaq. Girişlər: Lightbump sensorlar, Cliff sensorlar, Bump sensorlar, kameradan görüntü Çıxışlar: İşıq sensorlar eşikdən daha böyük olduqda, roomba dönəcək və bir şəkil çəkəcək, əgər tərəvəz/meyvənin radiusu müəyyən bir aralığındadırsa. Roomba bir obyektə girəndə kod pozulur, astronavta neçə meyvənin hazır olması barədə bir e -poçt göndərir və otaq hərəkətinin xəritəsini yaradır. İstifadə: Əgər və ifadələr, əmrlər, MATLAB -dan e -poçt kodu
k = 0
tik
timerVal = tic
doğru olarkən
v =.2; % sürət r.setDriveVelocity (v, v);% roomba irəli getmək L = r.getLightBumpers; LC = L. Sol Mərkəz; Rr = L. sağ; Lf = L. sol; RC = L. sağ mərkəz; LF = L.leftFront; RF = L.rightFront; Q = 75; % eşik. RTH = 30; Yüksək qırmızı eşik RTL = 10; %Aşağı qırmızı eşik B = r.getBampers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; əgər S.leftFront> PL1 || S.rightFront> PL1 %, yerdəki rəngin eşikdən yuxarı olub olmadığını algılar. Durdur duraklama (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % 2 saniyə fasilə img = r.getImage; %image imshow (img)%ekran görüntüsü [mərkəzlər3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'qaranlıq', 'Həssaslıq', 0.9); h = viscircles (mərkəzlər3, radius3); radii3> = r1 T = 1 k = k+1 dist1 = 0.2 olarsa, görüntünün müəyyən aralığında olan radius dairələrini axtarın.*keçən zaman %Əgər aşkar olunan radius yetişmiş meyvənin minimum %tələbindən çox və ya bərabərdirsə, sonra Roomba bu meyvəni sayar elseif radii3 <= r3 T = 0 başqa T = 0 dist2 = 0.2.
əgər T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Bir meyvə aşkar edilərsə, nömrəni Roombada göstər, %səs çıxar və dön elseif T == 2 r.turnAngle (78) %2 meyvə aşkar edilərsə, %bağçası boyunca davam etmək üçün dönün başqa r.turnAngle (78) %Heç bir meyvə aşkar edilmirsə, %bağ sonu boyunca davam etmək üçün dönün. əgər LC> Q r.stop r.turnAngle (-7) başqa RC> Q r.stop r.turnAngle (7) başqa LF> Q r.stop r.turnAngle (-7) başqa RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %İşıq tamponlarının dəyərlərindən biri eşikdən yuxarı çıxırsa, Roomba % %divara dəyməməsi üçün uyğun istiqamətə bir az dönəcək
əgər B.right == 1 || B. sol == 1 || B.front == 1 dist3 = 0.2.*Keçən Zaman r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) % bumbers vurulur, sonra roomba səs çalır, ətrafında fırlanır, %və kodu pozur
sonu qırmaq
son səpələnmə (0.533, 0, '^') səpələnməni (0.533, dist1, '<') səpələnməni (-dist2, dist1, 'v') saxlamanı (-dist2, 0, 'd') saxla (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ('İnternet', 'E_mail', poçt); setpref ('İnternet', 'SMTP_Server', host) rekvizitləri = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', poçt); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', liman); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'doğru'); props.setProperty ('mail.smtp.auth', 'doğru'); props.setProperty ('mail.smtp.socketFactory.port', liman); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'yalan'); sendmail (poçt, 'Salam Astronavt! Bağda bu qədər meyvə var', kmsg, {'motion.png'})
Tövsiyə:
WLED (ESP8266 -da) + IFTTT + Google köməkçisi: 5 addım
WLED (ESP8266 -da) + IFTTT + Google köməkçisi: Bu təlimat, ELES8266 -da WLED üçün IFTTT və Google köməkçisindən istifadə etməyə başlayacaq. WLED & ESP8266, tynick-də bu bələdçini izləyin: https: //tynick.com/blog/11-03-2019/getting-started…Bu qədər böyük proqram üçün Aircookie-yə səs verin
DIY Hava köməkçisi: 6 addım
DIY Hava Köməkçisi: Keçən dəfə ESP32 -dən indiki havanı yayımlaya biləcək bir hava yayım stansiyası hazırladım. Əgər maraqlanırsınızsa, əvvəlki təlimatı yoxlaya bilərsiniz. İndi təkmilləşdirilmiş bir versiya etmək istəyirəm ki, bizi yoxlamaq üçün bir şəhər təyin edim
Google köməkçisi tərəfindən idarə olunan LED matrisi!: 7 addım (şəkillərlə)
Google köməkçisi tərəfindən idarə olunan LED matrisi!: Bu dərslikdə, hər yerdə bir smartfon istifadə edərək formu idarə edə biləcəyiniz Google köməkçisi ilə idarə olunan LED matrisini necə edə biləcəyinizi sizə göstərəcəyəm, buna görə başlayaq
DIY Ağıllı Qaraj Qapı Açacağı + Ev köməkçisi inteqrasiyası: 5 addım
DIY Ağıllı Qaraj Qapı Açacağı + Ev Köməkçisi İnteqrasiyası: Bu DIY layihəsindən istifadə edərək normal qaraj qapınızı ağıllı çevirin. Evin köməkçisi (MQTT üzərindən) istifadə edərək onu necə quracağınızı və idarə edəcəyinizi və qaraj qapınızı uzaqdan açıb bağlaya biləcəyinizi sizə göstərəcəyəm. Wemos adlı bir ESP8266 lövhəsindən istifadə edəcəm
Astronavt köməkçisi Roomba: 4 addım
Astronavta kömək edən Roomba: Bu layihə, iRobot Version 2 gəmisində olan Raspberry Pi 3-dən istifadə etməklə hazırlanmışdır. MATLAB robotu sensorlar və kameradan istifadə edərək xüsusi təlimatlara əməl etmək üçün proqramlaşdırmaq üçün istifadə olunur. Sensorlar və kameralar müəyyən işləri yerinə yetirmək üçün istifadə olunur