Mundarija:
- 1 -qadam: kerakli qismlar
- 2 -qadam: fayllar va kamera konfiguratsiyasi
- 3 -qadam: Roomba uchun dastlabki test
- 4 -qadam: MATLAB kodining namunasi
Video: Astronavt-yordamchi Roomba: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bu loyiha iRobot Create Version 2 bortidagi Raspberry Pi 3 yordamida amalga oshiriladi. MATLAB robotni sensorlar va kameralar yordamida aniq ko'rsatmalarga amal qilishni dasturlash uchun ishlatiladi. Datchiklar va kameralar, agar biror narsa noto'g'ri ketsa, kosmonavtni kuzatib boradigan va o'z bazasi bilan aloqa qilish imkoniyatini beradigan aniq vazifalarni bajarish uchun ishlatiladi.
1 -qadam: kerakli qismlar
1. iRobot 2 -versiyasini yaratish
IRobot Create - bu loyihaning eng muhim qismi, chunki u dasturlashtirilishi mumkin va kelajakda kosmonavtlarga ergashadigan va ularga yordam beradigan haqiqiy rover uchun ajoyib tasvir bo'lishi mumkin
2. Raspberry Pi 3
Raspberry Pi bu loyiha uchun dasturlashtirilgan edi. Kod Pi uchun mo'ljallangan va unga ilova qilingan Pi versiyasi 3 (B modeli). Arduino kabi boshqa dasturlashtiriladigan taxtalardan foydalanish mumkin, ammo arduino va boshqa ko'pgina platalar boshqa bosqichda tasvirlanganidan farqli ravishda kodlashni talab qiladi
3. Raspberry Pi kamera moduli
Ushbu loyiha uchun Raspberry Pi -ga kerak bo'lgan yagona tashqi aloqa - bu kamera moduli. Kamera moduli ushbu loyihaning ajralmas qismi hisoblanadi, chunki Roomba faqat kamerada ko'rgan narsalariga asoslanib vazifalarni bajaradi
4. MATLAB 2018a
MATLAB -ning ikkinchi oxirgi versiyasi, 2018a, ushbu sozlashda ishtirok etgan kodlash uchun ishlatilgan. MATLAB -ning boshqa ko'plab versiyalari bu bilan ishlaydi, chunki Roomba dasturlashi bir muncha vaqtdan beri mavjud
2 -qadam: fayllar va kamera konfiguratsiyasi
1. Raspberry Pi va Camera -ning Roomba -ga ulanishi
- Pi iRobot -ga to'g'ridan -to'g'ri mikro USB orqali ulanishi mumkin. Bu faqat foydalanishga tayyor bo'lishi kerak. Shu bilan birga, uni shu paytgacha taqdimot davomida rasmlarda ko'rsatilgandek, xona xonasiga mahkam joylashtirish tavsiya etiladi.
- Kamera Raspberry Pi -ga to'g'ridan -to'g'ri ulanadi va kamerani to'g'ridan -to'g'ri ushlab turish uchun biror narsa sotib olish yoki yasash tavsiya etiladi. Agar kamerani ko'rmasa, uni kamerada ushlab turishning ma'nosi yo'q.
2. Fayllar
- Hamma narsa o'rnatilgandan va ulanganidan so'ng, "Spot" va "Dock" tugmachalarini 10 soniya birga ushlab turish orqali robotning qayta tiklanganiga va ishga tayyor ekanligiga ishonch hosil qiling.
- Bu erda birinchi navbatda MATLAB kerak. Roomba uchun fayllar birinchi bo'lib o'rnatilishi kerak va bu fayllarni ishga tushirish uchun faqat havolada ko'rsatilgan kod kerak bo'ladi:
- https://ef.engr.utk.edu/ef230-2017-08//projects/ro…
3 -qadam: Roomba uchun dastlabki test
Ishlayotganiga ishonch hosil qilish uchun xona xonasida ko'plab dastlabki tekshiruvlar o'tkazilishi kerak.
1. Roomba bilan bir xil Wi -Fi tarmog'iga ulanganingizga ishonch hosil qiling. Bu holda, siz hech qachon MATLAB orqali ulana olmaysiz.
2. Sizning xonangiz qaysi raqamga tayinlanganligini bilib oling, shunda siz tanlagan xonaga maxsus ulanishingiz mumkin. Misol uchun, agar sizning xonangizning raqami 30 bo'lsa, siz unga MATLAB -dagi buyruqlar oynasiga roomba (30) yozib ulanasiz.
3. Roomba MATLAB -da tuzilmalar orqali boshqarilishi mumkin. Masalan, agar siz roomba (30) kodini 'r' o'zgaruvchisiga o'rnatgan bo'lsangiz, robot r.moveDistance (0,2, 0,1) buyrug'i bilan oldinga siljishi mumkin.
4. Roomba -ga xabar berish mumkin bo'lgan turli xil buyruqlar mavjud va ularni buyruqlar oynasiga 'doc roomba' yozish orqali ko'rish mumkin.
5. Yorug'lik, zarba va jarlik o'qishlari uchun sensorlar hammasini "doc roomba" da ko'rsatilgan buyruqlar yordamida o'qish mumkin, lekin sensor ma'lumotlarini ko'rish uchun doimiy, aniq menyuni "r.testSensors" yordamida ko'rish mumkin. '.
6. Bularning barchasi sinovdan o'tkazilgandan so'ng, robotning tasvirni yig'ish dasturidan foydalanib, olingan rasmlarni o'qish va ko'rish mumkin. Buning asosiy kodi img = r.getImage va imshow (img) bo'ladi;.
7. Rasmning RGB qiymatlarini red_mean = o'rtacha (o'rtacha (img (:,,, 1))) kodlari bilan topish mumkin;
green_mean = o'rtacha (o'rtacha (img (:,,:, 2))); va blue_mean = o'rtacha (o'rtacha (img (:,,, 3))));.
4 -qadam: MATLAB kodining namunasi
Hozirgi vaqtda siz Mars Rover prototipini insonga yordam berish uchun sensorlar va tasvirni suratga olish dasturidan foydalanishga tayyormiz. Bizning misolimiz - kosmonavtning orqasidan oq rangni kuzatib, unga qarab harakat qilish. Agar sensorlar yuqori qiymatlarni o'qiyotgan bo'lsa, robot signal beradi, shunda kosmonavt robotni qoqilib qolsa, uni qayta o'rnatishi mumkin, yoki agar u jarlikka tiqilib qolsa, uni olib, qayta o'rnatishi mumkin. Biroq, bu xatolarni faqat oqni ko'rgandagina o'qiydi. Oq rangni ko'ra olmagan holda, robot xato rejimiga o'tadi. Ko'rganlariga qarab, uy bazasiga ikki xil elektron pochta xabarlarini yuborish dasturlashtirilgan. Agar u kosmonavtning terining rangini ko'rsa, bu yaxshi emas, shuning uchun agar kosmonavt terisi kostyumida nuqson bo'lsa, u uy bazasini ogohlantiradi. Boshqa xabar, agar kosmonavt ko'zdan g'oyib bo'lsa. Agar kameralarda oq yoki terining rangi ko'rsatilmagan bo'lsa, robot aylanib, boshqa, lekin boshqa elektron pochta xabarini yuboradi. Roomba kosmonavtni ko'ra olmaydigan rasmlar elektron pochta xabarlari bilan birga yuboriladi. Bizning loyihamiz uchun kod quyida ko'rsatilgan:
i = 1 uchun:.1: 3 img = r.getImage; rasm (img) red_mean = o'rtacha (o'rtacha (img (:,,:, 1))); green_mean = o'rtacha (o'rtacha (img (:,,:, 2))); blue_mean = o'rtacha (o'rtacha (img (:,,:, 3)))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.step elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || shoxrux.hud700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || nur.rightFront> 700 || yengil. o'ng> 700 r.bip () r.beep () r.beep () r.beep () r. setDriveVelocity (.3,.2) r.stop end end end green_mean <35 && blue_mean <35 %teri rangini ko'rsatish (kosmonavtning terisining rangiga qarab sozlash kerak) r.beep (); r.beep (); r.beep (); pochta = '[email protected]'; %kostyum o'chirilganligini ko'rsatuvchi elektron pochta xabarini yuboradi psswd = 'ha'; xost = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'mavzu'; m_text = 'test'; setpref ("Internet", "E_mail", pochta); setpref ("Internet", "SMTP_Server", xost); setpref ("Internet", "SMTP_Username", pochta); setpref ("Internet", "SMTP_Password", psswd); rekvizitlar = 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 (emailto, 'Yordam!', 'Kosmonavtlar formasi yopiq!', img); tugatish, agar red_mean 135 || yashil_mean 135 || blue_mean 135 uchun j = 1: 2 %, agar oq rang robot tomonidan topilmasa r.turnAngle (360) mail = '[email protected]'; psswd = 'ha'; xost = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'mavzu'; m_text = 'test'; setpref ("Internet", "E_mail", pochta); setpref ("Internet", "SMTP_Server", xost); setpref ("Internet", "SMTP_Username", pochta); setpref ("Internet", "SMTP_Password", psswd); rekvizitlar = 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 (emailto, 'Yordam!', 'Kosmonavt topilmaydi!', img); r.stop oxiri oxiri
Shubhasiz, bu erda tartibsiz, lekin nusxa ko'chirilgandan so'ng uni o'chirish kerak. Buning uchun parollar va elektron pochta xabarlari, albatta, ushbu loyihani amalga oshirayotganlar tomonidan taqdim etiladi.
Biroq, bizning misolimiz bu robotni har kimga mos kelishi uchun uni chalkashtirib yuborishning ko'p usullaridan biridir. Ko'p turli xil ishlar qilish mumkin, ularga o'zingiz mos kelasiz.
Tavsiya:
Roomba Bot - bulider: 5 qadam (rasmlar bilan)
Roomba Bot bulider: Bot Builder - bu "ushlagichlar" bilan jihozlangan xona. old tomondan biriktirilgan narsalar atrofdagi narsalarni harakatlantira oladi. U bilan kod sichqonchaning bir marta bosilishi bilan boshqariladigan GUI qutisi bilan birinchi harakatni yozib olish uchun o'rnatiladi. Keyin
MATLAB tomonidan boshqariladigan Roomba: 5 qadam
MATLAB tomonidan boshqariladigan Roomba: Ushbu loyihaning maqsadi MATLAB -dan, shuningdek o'zgartirilgan dasturlashtirilgan iRobot robotidan foydalanishdir. Bizning guruhimiz iRobot -ning ko'p funktsiyalari, shu jumladan jarlik sensorlar, bamper sensorlaridan foydalanadigan MATLAB skriptini yaratish uchun kodlash ko'nikmalarimizni birlashtirdi
Mars Roomba loyihasi UTK: 4 qadam
Mars Roomba Project UTK: DISCLAIMER: BU YALANGA ISHLAB CHIQARILADI, agar ROOMBA har xil usulda o'rnatilsa, bu ko'rsatma TENNESSEE STUDENTLARI UNIVERSITETI VA FACULTYTYTI uchun ishlatilgan, bu xona uchun mahalliy kod ishlatiladi. yozilgan va
Roomba to'xtash joyi: 6 qadam
Roomba Parking Pal: Bu loyihada iRobot Create dasturlashtiriladigan roomba, MATLAB r2018a va MATLAB mobillari ishlatiladi. Ushbu uchta vositadan va kodlash haqidagi bilimlarimizdan foydalanib, biz iRobot Create dasturini ranglarni talqin qilish uchun dasturlashtirdik va vazifalarni bajarish uchun bort datchiklaridan foydalandik. Bu
Roomba Explorer: 4 qadam
Roomba Explorer: MATLAB va iRobot -ning Create2 robotidan foydalanib, ushbu loyiha noma'lum joyning turli joylarini o'rganadi. Biz xavfli erni manevr qilishga yordam berish uchun Robot datchiklaridan foydalanganmiz. Raspberry Pi -dan fotosuratlar va video tasmalarni olish orqali