Mundarija:
- 1 -qadam: Materiallar va materiallar:
- 2 -qadam:
- 3 -qadam: "Bog'ingizni" yig'ish
- 4 -qadam: Kodni yozish
- 5 -qadam: Kodni nusxalash
Video: Bog 'yordamchisi Roomba Bot: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Kiara Myers, Ahmad Alxader va Madison Tippet
Maqsad:
Bu ko'rsatma sizga MATLAB-dan foydalanib, Roomba Bot-ni dasturlash, bog'da sayohat qilish, etuk pishgan, meva-sabzavotlarni o'lchamiga qarab aniqlash uchun o'rgatadi. Shuningdek, bu robot sizga qancha meva terishga tayyorligini va u qaysi yo'lni bosib o'tgani haqida elektron pochta xabarini yuboradi.
Xususiyatlari:
- Yorug'lik sezgichlaridan foydalanib, devorlarni aniqlang va ularga tegmasin
- Bog'ning oxiridagi qoyaga tegib ketganda, dasturni buzish uchun datchiklardan foydalaniladi
- Bog'dagi aylanani aniqlash va keyin uning radiusini aniqlash uchun tasvirni qayta ishlashdan foydalanadi
- Meva borligini ko'rsatuvchi rangli tasmani aniqlash uchun jarlik sensorlaridan foydalanadi
1 -qadam: Materiallar va materiallar:
- Bitta noutbuk
- MATLAB 2017
- Roomba changyutgichi
- Raspberry Pi
- Yog'och bloklari
- Oq qog'oz
- Qora qog'oz
- Rangli qog'oz/rangli tasma/ingichka tasma
- Katta rok
2 -qadam:
3 -qadam: "Bog'ingizni" yig'ish
- Qora qog'ozni oling va har xil o'lchamdagi doiralarni kesib oling
-
Bu qora doiralarni katta oq qog'ozga yopishtiring
Meva aniqlanganda bu kontrast zarur bo'ladi
-
O'zingizning yog'och bloklaringizdan foydalanib, robotingiz harakatlanishi uchun labirintga o'xshash bog 'yo'lini yarating
Biz yuqorida tasvirlangan U shaklidagi yo'lni tanladik
- Bog'ingizning oxiriga robot yoki eshik yoki boshqa narsalarni qo'shing, shunda u bajarilganligini biladi
-
Oq qog'ozingizni doira bilan bog'ning devorlariga yopishtiring
Devorlarimiz kamera uchun juda qisqa bo'lgani uchun biz uni chelaklar bilan yopishtirdik
- Meva oldida erga rangli lenta/rangli qog'ozning ingichka tasmasini qo'ying
4 -qadam: Kodni yozish
Bog'da sayohat qilish
Bump Sensor -dan foydalanish: Dasturni ishga tushirish uchun biz kodni vaqtinchalik ifodaga joylashtiramiz, u kod buzilmaguncha turli if -larni bajaradi. Agar bamperlardan birortasi urilsa, bu ularning qiymatiga to'g'ri kelishiga olib keladi (bu mantiqda 1 ga teng). If ifodasi ularning qiymatlaridan biri 1 ga teng bo'lganda kodni buzish uchun ishlatiladi.
Cliff datchiklaridan foydalanish: "Vaqt" bayonotida biz "If" so'zidan foydalanib, Roomba zavodga qachon etib kelganini aytib beramiz. Roomba jarlik datchiklari ko'taradigan qizil ostonani tekshirib, erdagi rangli tasmani aniqlaydi. Agar chap yoki o'ng jarlik sensori erga qaraganda kattaroq polni aniqlasa, u robotni 2 soniya to'xtatadi (pauza buyrug'i yordamida). Bu 2 soniya davomida Roomba meva tasvirini oladi va ko'rsatadi. Buyruqda o'rnatilgan imfindcircles-dan foydalanib, doiralaringizning radiusi uchun diapazonni belgilang, shunda Roomba sizning mevangizni topadi.
Tasvirni qayta ishlashdan foydalanish: if iborasi ichiga biz boshqa if ifodasini joylashtiramiz: agar aniqlangan radius radius3 pishgan meva uchun minimal talabimizdan katta yoki unga teng bo'lsa, r1 (buni siz hal qilasiz), keyin hisoblang va aks ettiring. Roomba qancha meva tayyor va bog'da davom etish uchun buriladi. Agar yo'q bo'lsa, navbat bog 'bo'ylab davom etadi. Eslatma: burilish burchagini o'zgartirish kerak bo'lishi mumkin, chunki har bir Roomba boshqacha
Yorug'lik bamperlaridan foydalanish: Boshqa if ifodasida, yorug'lik bamperlari tahlil qilinadi, ularning hech biri bizning belgilangan chegaramizdan oshmaydi. Agar chap, o'ng, chap markaz, o'ng markaz, chap old yoki o'ng old yorug'lik bamperi ostonadan oshsa, devorga tegmaslik uchun Roomba mos burchak ostida biroz buriladi. Shunday qilib, labirint bo'ylab sayohat qilish.
Kodning qolgan qismi Roomba bosib o'tgan yo'lni tuzish uchun ishlatiladi va natijalarni elektron pochtangizga yuboradi
5 -qadam: Kodni nusxalash
% Maqsad: ularning kattaligiga qarab, xona xonasi bog'dan o'tadi va yig'ib olishga tayyor bo'lgan sabzavot/mevalarni ajratib turadi. % Kirishlar: Yorug'lik datchiklari, Cliff sensorlar, Bump sensorlar, kameradan tasvir % Chiqish: yorug'lik sensori ostonadan kattaroq bo'lsa, xona qaytadi va tasvirni oladi, agar % sabzavot/meva radiusi ma'lum diapazon oralig'ida bo'lsa. Roomba ob'ektga % urilganda kod buziladi, astronavtga qancha meva tayyor bo'lishini elektron pochta orqali yuboradi va xona harakatining xaritasini ko'rsatadi. % Foydalanish: If va while bayonotlari, buyruqlar tuzish, MATLAB elektron pochta kodi
k = 0
tik
timerVal = savdo
rost bo'lsa ham
v =.2; % tezlik r.setDriveVelocity (v, v);% roomba oldinga siljish L = r.getLightBampers; LC = L.leftCenter; Rr = L. huquqi; Lf = L. chap; RC = L.rightCenter; LF = L.leftFront; RF = L.rightFront; Q = 75; % chegarasi. RTH = 30; %Yuqori qizil chegara RTL = 10; %Past qizil chegara B = r.getBampers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; agar S.leftFront> PL1 || S.rightFront> PL1 % erdagi rang chegaradan yuqori ekanligini aniqlaydi r.stop pauza (2) elapsedTime = toc (timerVal-2) tic timerVal = tic % 2 soniya pauza img = r.getImage; %image imshow (img)%displey tasviri [markazlar3, radii3] = imfindircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viskular (markazlar3, radiuslar3); Agar radius3> = r1 T = 1 k = k+1 dist1 = 0,2., keyin Roomba bu mevani hisoblaydi, aks holda radii3 <= r3 T = 0 boshqa T = 0 dist2 = 0,2.*o'tganTime %Agar bo'lmasa, u meva uchini hisoblamaydi.
agar T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78) %Agar meva aniqlangan bo'lsa, u holda Roomba raqamini ko'rsatish, %shovqin qilish va burish elseif T == 2 r.turnAngle (78) %Agar 2 ta meva aniqlansa, %bog 'bo'ylab davom etish uchun aylantiring else r.turnAngle (78) %Agar meva topilmasa, %bog' oxirigacha davom eting. agar LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) if LF> Q r.stop r.turnAngle (-7) if RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end %Agar yorug'lik bamperlarining qiymatlaridan biri ostonadan oshsa, %Roomba %devorga urilmasligi uchun ozgina mos yo'nalishga buriladi
agar B.right == 1 || B. chap == 1 || B.front == 1 dist3 = 0,2.*O'tgan vaqt r.stop r.beep ('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle (360) % bumberlar uriladi, keyin roomba tovush chiqaradi, atrofida aylanadi, %va kodni buzadi
uzilish oxiri
tugash tarqalishi (0.533, 0, '^') tarqalishni ushlab turish (0.533, dist1, '<') tarqalishni ushlab turish (-dist2, dist1, 'v') tarqalishini ushlab turish (-dist2, 0, 'd') saqlash (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123#' host = 'smtp.gmail.com' port = '465'
setpref ("Internet", "E_mail", pochta); setpref ('Internet', 'SMTP_Server', host) rekvizitlari = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', pochta); props.setProperty ('mail.smtp.host', xost); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'rost'); props.setProperty ('mail.smtp.debug', 'rost'); props.setProperty ('mail.smtp.auth', 'rost'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'noto'g'ri'); sendmail (pochta, 'Salom astronavt! Bog'da mevalar ko'p', kmsg, {'motion.png'})
Tavsiya:
WLED (ESP8266 bo'yicha) + IFTTT + Google yordamchisi: 5 qadam
WLED (ESP8266 -da) + IFTTT + Google Assistant: Bu qo'llanma WLED uchun IFTTT va Google Assistant -ni ESP8266 -da ishlatishni boshlaydi. WLED -ni sozlash uchun & ESP8266, tynick bo'yicha ushbu qo'llanmani bajaring: https: //tynick.com/blog/11-03-2019/getting-started… Aircookie-ga shunday ajoyib dastur uchun baqiring
DIY ob -havo yordamchisi: 6 qadam
DIY ob -havo yordamchisi: Oxirgi marta men ESP32 -dan hozirgi ob -havo ma'lumotlarini efirga uzatadigan ob -havo stantsiyasini yaratish uchun foydalanganman. Agar sizni qiziqtirsa, oldingi ko'rsatmalarni tekshirishingiz mumkin. Endi men yangilangan versiyani yaratmoqchiman, bizni tekshirish uchun shaharni belgilayman
Arduino mashinalar yordamchisi - har safar mashinangizni to'g'ri joyga qo'ying: 5 qadam (rasmlar bilan)
Arduino avtoturargoh yordamchisi - Har safar mashinangizni to'g'ri joyga qo'ying: Ushbu loyihada men sizga Arudino yordamida avtoturargoh yordamchisini qanday qurishni ko'rsataman. Bu to'xtash joyi yordamchisi sizning mashinangizgacha bo'lgan masofani o'lchaydi va LCD displey o'qilishi va svetodiod yordamida uni to'g'ri joyga qo'yishingizga yordam beradi
Avtomatik toymas eshikni uy yordamchisi va ESPHome yordamida boshqaring: 5 qadam (rasmlar bilan)
Avtomatik toymas eshikni uy yordamchisi va ESPHome yordamida boshqaring: Quyidagi maqolada men o'z uyimga o'rnatgan avtomatik toymas eshikni boshqarish haqidagi shaxsiy tajribam haqida fikrlar bor. "V2 Alfariss" markali bu darvoza uni boshqarish uchun bir nechta Phox V2 pultlari bilan ta'minlangan. Menda ham bor
Arduino -dan foydalangan holda Google yordamchisi bilan nazorat uyining chiroqlari: 7 qadam
Arduino yordamida Google Assistant bilan nazorat uyining chiroqlari: (Yangilanish 2020 yil 22-avgustda: Bu ko'rsatma 2 yoshda va ba'zi uchinchi tomon ilovalariga asoslangan. Ularning tarafidagi har qanday o'zgarishlar bu loyihani ishlamaslikka olib kelishi mumkin. Bu mumkin yoki bo'lmasligi mumkin) hozir ishlayapsiz, lekin siz uni ma'lumotnoma sifatida kuzatib, o'zgartirishingiz mumkin