Mundarija:

Roomba to'xtash joyi: 6 qadam
Roomba to'xtash joyi: 6 qadam

Video: Roomba to'xtash joyi: 6 qadam

Video: Roomba to'xtash joyi: 6 qadam
Video: Как сделать шестерню на токарном станке. 2024, Noyabr
Anonim
Roomba mashinalar pal
Roomba mashinalar pal

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

Materiallar
Materiallar
Materiallar
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

Sensorlardan foydalanish uchun mantiqan MATLAB kodini yaratish
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 va robotni sinovdan o'tkazish
Kod va robotni sinovdan o'tkazish
Kod va robotni sinovdan o'tkazish
Kod va robotni sinovdan o'tkazish
Kod va robotni sinovdan o'tkazish
Kod va robotni sinovdan o'tkazish

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: