Mundarija:
- 1 -qadam: materiallar
- 2 -qadam: ulanish
- 3 -qadam: Sensorlardan foydalanish uchun mantiqan MATLAB kodini yaratish
- 4 -qadam: Kod va robotni sinab ko'rish
- 5 -qadam: xatoni aniqlash
- 6 -qadam: Xulosa
Video: Roomba to'xtash joyi: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Ushbu loyihada iRobot Create dasturlashtiriladigan roomba, MATLAB r2018a va MATLAB mobile ishlatiladi. Ushbu uchta vositadan va kodlash haqidagi bilimlarimizdan foydalangan holda, biz iRobot Create dasturini ranglarni talqin qilish uchun dasturlashtirdik va vazifalarni bajarish uchun bort datchiklaridan foydalandik. Bu loyihalar bu vazifalarni bajarish uchun Raspberry Pi va MATLAB muloqotiga bog'liq.
1 -qadam: materiallar
1. iRobot robot yaratish
2. MATLAB r2018a
3. Raspberry Pi
4. Kamera moduli
5. 3 o'lchamli bosilgan kamera stabilizatori
6. MATLAB mobil o'rnatilgan smartfon
7. MATLAB o'rnatilgan noutbuk/kompyuter
2 -qadam: ulanish
Bu qadam Raspberry Pi -ni robotga ulash, ikkinchidan robotni kompyuteringizga ulash va smartfonni kompyuterga ulash haqida.
Bu jarayonning eng oson qismi - Raspberry Pi -ni robotingizga ulash, chunki Raspberry Pi robotning yuqori qismiga o'rnatilgan. Robotning shnuri bor, buning uchun Raspberry Pi yoniga ulash kifoya.
Keyingi qadam robotni kompyuterga ulashdir, shunda siz robot bajaradigan buyruqlarni bajarishingiz mumkin. Siz qilishingiz kerak bo'lgan birinchi narsa - bu sizning kompyuteringizni Roomba yaratadigan simsiz tarmoqqa ulash. Endi MATLAB -dagi Roomba asboblar qutisidagi funktsiyalarni ishlatish uchun yo'lni belgilash uchun MATLAB -da yo'lni belgilash belgisidan foydalanish tavsiya etiladi. Har safar robot bilan ishlashni boshlaganingizda va tugatganingizda, siz "Ikki barmoqli salom" ni qaytarishingiz kerak, bu esa siz to'xtash joyini va nuqta tugmachalarini o'n soniya ushlab turing, shunda yorug'lik o'chadi. Agar siz robotning qisqa miqyosda o'ynashini eshitgan bo'lsangiz, siz bu qiyin qayta tiklashda muvaffaqiyat qozongansiz. Keyin siz "r = roomba (x)" kabi kod satridan foydalanib, xona xonasiga ulanishingiz kerak, bu erda 'x' - bu sizning robotingiz uchun berilgan raqam.
Nihoyat, siz MATLAB mobil qurilmasini ushbu loyiha uchun ishlatadigan har qanday mobil qurilmaga yuklab olishingiz kerak va bu ilova Android va Apple qurilmalarida mavjud. Ilova o'rnatilgandan so'ng, hisob ma'lumotlari yordamida tizimga kirishingiz kerak bo'ladi. Keyin siz "Qo'shimcha" yorlig'ini ishlatib, ushbu qurilmani kompyuteringizga ulashingiz kerak -> keyin "Sozlamalar" -> "Kompyuter qo'shish" tugmasini bosing, bu yuqoridagi rasmlarda ko'rsatilgan ekranni ko'rsatadi. Buni ko'rganingizdan so'ng. Siz o'tishi kerak bo'lgan keyingi qadam - bu faqat kerakli ma'lumotlarni ulash va o'chirishdir. Muvaffaqiyatli ulangandan so'ng, siz robotni boshqarish uchun telefoningizda kompyuterda belgilagan funktsiyalarni chaqira olasiz.
3 -qadam: Sensorlardan foydalanish uchun mantiqan MATLAB kodini yaratish
Kodning ko'p qismi "loop" ichida bo'lsa, uni yaratish eng oson bo'ladi, shunda roomba o'zi ko'rib turgan qiymatlarni doimiy ravishda yangilab turishi mumkin. Agar xato bo'lsa, MATLAB xatoni ko'rsatadi va u kodda ko'rsatiladi, bu esa muammolarni bartaraf etishni nisbatan sodda qiladi.
R2018a MATLAB -da yaratilgan ushbu kod standart asboblar qutilari, iRobot Create asboblar qutisi va MATLAB mobil asboblar qutisidan foydalanadi. Bu misolda ishlatilgan roomba 26 deb belgilanadi va r = roomba (26) faqat Roomba bilan to'liq bog'lanish uchun ishga tushirilishi kerak.
Kod:
Parkassist funktsiyasi (x), agar x == 1 bo'lsa
r = roomba (26) % Roomba -ga ulanadi
rost bo'lsa ham
r.setDriveVelocity (.05,.05) % xona tezligini pastroq haydash tezligiga o'rnatadi.
bump = r.getBampers % datchiklardan ma'lumotlarni oladi
cliff = r.getCliffSensors % jarlik sensorlaridan ma'lumotlarni oladi
light = r.getLightBampers % yorug'lik zarbasi sensorlaridan ma'lumotlarni oladi
img = r.getImage;% robotni kameradan o'qiydi
red_mean = o'rtacha (o'rtacha (img (:,:, 1))) % qizil piksellarning o'rtacha miqdorini o'qiydi
green_mean = o'rtacha (o'rtacha (img (:,,,, 2))) % yashil piksellarning o'rtacha miqdorini o'qiydi
blue_mean = o'rtacha (o'rtacha (img (:,,: 3))) % ko'k piksellarning o'rtacha miqdorini o'qiydi
agar bump.front == 1 %oldingi zarba sezgichlarini o'qiydi
r.stop %roomba -ni to'xtatadi
msgbox ('Yo'l yashiringan!', 'Avtoturargoh yordamchisining xabari') %, yo'l yopiqligini bildiruvchi xabarni ko'rsatadi % uzilish tugaydi.
elseif green_mean> 150
r.stop %roomba -ni to'xtatadi
cont = questdlg ('Davom etilsinmi?', 'Yo'l tugadi') %davom ettirishni so'ragan savollar qutisini ko'rsatadi
agar davomi == "Ha"
parkassist (1) %kodni qayta ishga tushiradi
boshqa
oxiri
break % tsiklni tugatadi
140
r.turnAngle (45) %xonani 45 gradusga buradi
r.timeStart %vaqt hisoblagichini ishga tushiradi
rost bo'lsa ham
r.setDriveVelocity (.05,.05) %xona tezligini belgilaydi
time = r.timeGet %o'zgarmaydiganga vaqt ajratadi
bump = r.getBampers % datchiklardan ma'lumotlarni oladi
cliff = r.getCliffSensors % jarlik sensorlaridan ma'lumotlarni oladi
light = r.getLightBampers % yorug'lik zarbasi sensorlaridan ma'lumotlarni oladi
img = r.getImage;% robotni kameradan o'qiydi
red_mean = o'rtacha (o'rtacha (img (:,:, 1))) % qizil piksellarning o'rtacha miqdorini o'qiydi
green_mean = o'rtacha (o'rtacha (img (:,,,, 2))) % yashil piksellarning o'rtacha miqdorini o'qiydi
blue_mean = o'rtacha (o'rtacha (img (:,,: 3))) % ko'k piksellarning o'rtacha miqdorini o'qiydi
agar blue_mean> 120
r.
msgbox ("Suv topildi!", "Avtoturargoh yordamchisi xabari") % suv topilganligi haqidagi xabarni ko'rsatadi r.turnAngle (-80) % xona 80 gradusga aylanadi
break % joriy tsiklni tugatadi
elseif nur.rightFront> 25 || light.leftFront> 25 %yorug'lik zarbasi sensorlarini o'qiydi
r.moveDistance (-0.01) % xona xonasini belgilangan masofaga orqaga siljitadi
r.turnAngle (-35) % xonani 35 gradusga aylantiradi
break %joriy tsiklni tugatadi
elseif cliff.rightFront <2500 && cliff.leftFront <2500 %ikkala jarlik sensorlarini ham o'qiydi
r.moveDistance (-0.1) % roombani belgilangan masofani orqaga siljitadi
r.turnAngle (-80) %xona 80 gradusga aylanadi
break % joriy tsiklni tugatadi
boshqa vaqt> = 3
r.stop %roomba -ni to'xtatadi
contin = questdlg ('Bekatsiz, Davom etilsinmi?', 'Avtoturargoh yordamchisi xabari') %, agar Contin == 'Ha' bo'lsa, xona xonasi davom etishini so'raydi.
r.turnAngle (-90) % xonani 90 gradusga aylantiradi
parkassist (1) %funksiyani qayta ishga tushiradi
boshqa
r.stop % xonani to'xtatadi
oxiri
boshqa
oxiri
oxiri
elseif cliff.rightFront <2500 && cliff.leftFront <2500 %ikkala jarlik sensorlarini ham o'qiydi
r.moveDistance (-0.1) %roombani belgilangan masofani orqaga siljitadi
r.turnAngle (-90) %xona 90 gradusga aylanadi
elseif cliff.rightFront <2500 %to'g'ri jarlik sensorini o'qiydi
r.turnAngle (-5) %xona xonasini jarlik sensori teskari tomonga ozgina buradi
elseif cliff.leftFront <2500 %chap jarlik sensorini o'qiydi
r.turnAngle (5) %xona xonasini jarlik sezgichining teskari tomoniga ozgina buradi
boshqa
oxiri
oxiri
oxiri
4 -qadam: Kod va robotni sinab ko'rish
Kod ishlab chiqilgandan so'ng, keyingi qadam kod va robotni sinab ko'rish edi. Kodda juda ko'p turli xil sozlashlar bo'lishi mumkin, masalan, robotning burilish burchagi, harakat tezligi va har bir rang uchun chegaralar, robotingiz uchun bu qiymatlarni aniqlashning eng yaxshi usuli - bu test. ular borgan sari o'zgaradi. Biz o'tkazgan har bir ish kuni uchun biz bu qiymatlarni doimiy ravishda o'zgartirib turardik, chunki ularning ba'zilari sizning robotingiz ishlaydigan muhitga tayanadi. Biz topgan eng yaxshi usul - bu xonani o'zingiz xohlagan yo'lda joylashtirish. Kamera siz xohlamagan ranglarni aniqlay olmasligi uchun etarlicha baland to'siq. Keyingi qadam - bu vazifani bajarishini xohlaganingizda uni ishga tushirish va kerakli ranglarni ko'rsatish. Siz ketayotganingizda, agar siz biron bir muammoni ko'rsangiz, eng yaxshi narsa - oldingi tamponni bosib, uni to'xtatib qo'yish, keyin siz muammoga duch kelgan parametrni o'zgartiring.
5 -qadam: xatoni aniqlash
Har bir loyiha tugallangach, har doim xato manbalari bo'ladi. Biz uchun robotning burilish burchagi aniq emasligi bilan bog'liq xato bor edi, shuning uchun agar siz 45 gradusga burilishni aytsangiz, u aniq bo'lmaydi. Biz uchun yana bir xato manbai shundaki, ba'zida robot ishlamay qolishi mumkin va siz uni qayta ishga tushirishdan oldin uni qayta tiklashingiz kerak bo'ladi. Biz uchun asosiy xatoning asosiy manbai shundaki, xuddi shu kod har xil robotlarga bir xil ta'sir qilmaydi, shuning uchun siz unga sabrli bo'lishingiz va shunga mos ravishda sozlashingiz kerak bo'ladi.
6 -qadam: Xulosa
Endi sizda xonangiz bilan o'ynash uchun barcha vositalar mavjud, ya'ni siz xohlagan maqsadingizga erishmoqchi bo'lgan holda kodni o'zgartirishingiz mumkin. Bu sizning kuningizning eng yaxshi qismi bo'lishi kerak, shuning uchun dam oling va xavfsiz haydang!
Tavsiya:
Arduino avtomobilining teskari to'xtash joyi haqida ogohlantirish tizimi - Bosqichma -bosqich: 4 qadam
Arduino avtomobilining teskari to'xtash joyi haqida ogohlantirish tizimi | Bosqichma-bosqich: Ushbu loyihada men Arduino UNO va HC-SR04 Ultrasonik Sensor yordamida oddiy Arduino avtomobilining teskari to'xtash sensori sxemasini loyihalashtiraman. Arduino -ga asoslangan bu avtomobilni teskari ogohlantirish tizimi avtonom navigatsiya, robotlar diapazoni va boshqa diapazonlarda ishlatilishi mumkin
Velosiped tepish joyi sensori Magicbit [Magicblocks]: 8 qadam
Magicbit [Magicblocks] dan velosiped tepish joyi sensori: Magicblocks yordamida Magicbit yordamida Kickstand Position Sensor qilish uchun oddiy DIY loyihasi. Biz ESP32 -ga asoslangan ushbu loyihani ishlab chiqish paneli sifatida magicbit -dan foydalanmoqdamiz. Shuning uchun, ushbu loyihada har qanday ESP32 ishlab chiqish kartasidan foydalanish mumkin
"Resys" rezistorli saqlash joyi tizimi: 7 qadam (rasmlar bilan)
"Resys" rezistorli saqlash tizimi: Bu sizning rezistorlaringizni topishni osonlashtiradigan tizim. Kerakli qiymatni qidiring va o'ng tortmachasi yonadi. Bu tizim kerakli tortmalar soniga qadar kengaytirilishi mumkin
Universitet kampusidagi talabalar to'xtash joyi xaritasi: 7 qadam (rasmlar bilan)
Universitet kampusidagi talabalar to'xtash joyi xaritasi: Ko'pchilik talabalar universitet kampusida qaerda to'xtashlari mumkinligi haqida hayron bo'lishadi. Bu muammoni hal qilish uchun men Yuta shtati universiteti kampusining asosiy maydonining yoritilgan mashinalar xaritasini tuzdim. Xaritada talabalar to'xtash joylari qanday ekanligini tezda ko'rib chiqishlari mumkin
Arduino bilan garajda to'xtash joyi: 4 qadam (rasmlar bilan)
Arduino bilan garajda mashinalar uchun masofa o'lchagich: Bu oddiy loyiha sizning mashinangiz bamperi oldidagi narsalardan masofani ko'rsatib, garajda mashinangizni to'xtatib qo'yishga yordam beradi. "To'xtatish" xabari to'xtash vaqti kelganida sizga xabar beradi. odatdagidek HC-SR04 yoki Parallax Ping)))