Mundarija:

MATLAB bilan Roomba: 4 qadam (rasmlar bilan)
MATLAB bilan Roomba: 4 qadam (rasmlar bilan)

Video: MATLAB bilan Roomba: 4 qadam (rasmlar bilan)

Video: MATLAB bilan Roomba: 4 qadam (rasmlar bilan)
Video: MESTEMACHER: Health-conscious bread for more than 150 years 2024, Noyabr
Anonim
MATLAB bilan Roomba
MATLAB bilan Roomba

Ushbu loyiha MATLAB va iRobot Create2 dasturlashtiriladigan robotidan foydalanadi. MATLAB haqidagi bilimlarimizni sinab ko'rish orqali biz Create2 -ni tasvirlarni talqin qilish va signallarni aniqlash uchun dasturlashimiz mumkin. Robotning funksionalligi asosan MATLAB mobil ilovasi va Raspberry Pi kamera moduliga bog'liq.

1 -qadam: ehtiyot qismlar va materiallar

Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar
Materiallar va ehtiyot qismlar

1. iRobot yaratish, 2 -versiya

- Bu dasturlashtiriladigan robot, u Roombaga o'xshaydi. Bilingki, bu iRobot mahsuloti vakuum emas. Bu foydalanuvchi tomonidan maxsus dasturlash uchun mo'ljallangan.

2. MATLAB 2017a

- Ko'pgina eski versiyalar biz ishlatgan kodga mos keladi. MATLAB sizda mavjud bo'lgan versiyaga mos kelmaydigan buyruqni aniqlab beradi va eng mos buyruqni taklif qiladi.

3. Raspberry Pi 3 Model B, 1.2 -versiya

- Qaysi Raspberry Pi sizning iRobot -ga mos kelishini tekshiring. Qo'shimcha yordam uchun bu havolani ko'ring: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Bu ko'rsatma sizga oldindan dasturlashtirilgan Raspberry Pi bilan ishlayotganingizni ko'rsatadi. Shuni yodda tutingki, quyidagi amallarni bajarish uchun oldindan dasturlashtirilgan Pi bilan ishlash kerak bo'ladi. Oldindan dasturlashtirilgan Pi -dan foydalanish sizga barcha kodlashni faqat MATLAB -da bajarishga imkon beradi.

4. V2 kamera moduli (Raspberry Pi uchun)

- Siz hayron qolishingiz mumkin; o'lchamiga qaramay, Raspberry Pi kamera moduli juda yaxshi sifatga ega. Bu loyiha uchun eng arzon va eng mos variant.

Majburiy emas: 3D bosma stend. Bu kamerani barqarorlashtirish uchun ishlatiladi. Bu robotning ishlashiga ta'sir qilmaydi, lekin agar siz tasvir ma'lumotlarini rang va/yoki ob'ektni aniqlash uchun ishlatmoqchi bo'lsangiz, bu sizning kodlashingizga yordam beradi.

2 -qadam: Konfiguratsiya

Konfiguratsiya
Konfiguratsiya
Konfiguratsiya
Konfiguratsiya

1. Raspberry Pi va kamera modulini ulash (Uskuna)

- Raspberry Pi -ni quvvatlantirish uchun siz mikrokontroldagi ayol quvvat portiga erkak USB -ni ulashingiz kerak bo'ladi. Majburiy emas: kuchlanish 5V dan oshmasligi uchun voltaj regulyatoridan foydalanish mumkin. Raspberry Pi -ni quvvatlantirgandan so'ng, siz uni robotga ulashingiz mumkin, erkak USB -ni anakartdan mikrokontroldagi USB port A ga ulashingiz mumkin.

- Pi -ni Roomba -ga ulaganingizdan so'ng, kamera o'rnatishga tayyor. Kamera moduli siz kutganingizdan ancha kichik bo'ladi. E'tibor bering, linzalar sensorga o'rnatiladi va kameradan oq tasma cho'zilgan. Ipni olib tashlamang yoki yirtmang! Bu Raspberry Pi -ga ulash uchun kerak bo'lgan kabel. Birinchidan, lentaning uchini ushlab turing va kumush ulagichlar va ko'k kabelni toping. Bular qarama -qarshi tomonlarda. Keyin, Raspberry Pi -dagi chekilgan va HDMI portlari orasidagi uyani toping. E'tibor bering, uni kichik, oq qulf yopadi. Qulfni sekin ko'taring, lekin uni uyadan olib tashlamang, chunki u qulab tushadi va doimiy shikastlanadi. Qulfni ko'targaningizdan so'ng, lentani oling va HDMI portiga kumush ulagichlarga qarang. Moviy tomon Ethernet portiga qaraydi. Lentani uyasi ichiga sekin suring. Siz uni uyaga majburlashingiz shart emas. Tugatgandan so'ng, qulfni pastga tushiring. Agar sizning kamerangiz to'g'ri himoyalangan bo'lsa, siz lentani (ohista) tortib, kuchlanishni sezishingiz kerak. Ip bo'shashmasligi kerak. Kamerangizni Pi -ga ulaganingizdan so'ng, siz uning qanchalik bo'sh ekanligini sezishingiz mumkin. Shuning uchun biz uni ushlab turish uchun 3D bosma moslamadan foydalanganmiz. Kamerani yuqori sifatli suratga olish uchun qanday materiallardan foydalanishni xohlayotganingizni o'zingiz hal qilasiz.

2. To'g'ri fayllarni o'rnatish va kompyuterga Roomba-ni ulash Barcha jihozlar konfiguratsiya qilinganidan so'ng, siz MATLAB-ni o'rnatishga o'tishingiz mumkin, bu sizga robot bilan muloqot qilish imkonini beruvchi m-fayllar bilan bog'liq. Buning uchun MATLAB -ni oching va barcha tegishli fayllarni birga saqlash uchun yangi papka yarating. Kerakli fayllarni o'rnatish/yangilash uchun ushbu skriptdan foydalaning:

- Endi barcha fayllar siz yaratgan papkada ko'rsatilishi kerak. MATLAB fayllarni qidiradigan kataloglar ro'yxatiga ushbu yo'lni qo'shish uchun joriy papka oynasini o'ng tugmasini bosing va "Yo'lga qo'shish" -ni tanlang. Barcha fayllaringiz to'g'ri yo'lda ekanligiga ishonch hosil qiling.

3. Fayllar o'rnatilgandan so'ng, endi siz robotga ulanishni boshlashingiz mumkin. Robotni ishga tushirishdan so'ng, uni ishga tushirishdan so'ng, qattiq sozlamalarni tiklashdan boshlang (har safar ishlatishdan oldin va keyin robotni qattiq sozlashni unutmang). Ikkinchidan, robot va noutbukni bir xil wifi tarmog'iga ulang. Shundan so'ng, biz MATLAB orqali oldindan dasturlashtirilgan Raspberry Pi bilan gaplashamiz va Roomba nomini va Roomba funksiyasini ishlatamiz. Masalan, men 28 -robotga quyidagi satr yordamida ulanardim: R = roomba (28).

- Ob'ektni R o'zgaruvchisiga qanday tayinlaganimga e'tibor bering, endi men o'zgarmaydigan Roomba funktsiyalariga o'rnatish faylidan R o'zgaruvchini tuzilish kabi ko'rib chiqishim mumkin.

- R.turnAngle (90) Agar hamma narsa yaxshi ketsa, musiqiy ohang o'ynashi kerak, bu aloqani tasdiqlaydi.

3 -qadam: MATLAB mantig'i

Ushbu qadamning pastki qismidagi PDF -hujjat - bu MATLAB -da kodlash jarayonining batafsil mantiqiy oqimi. Robot yaqin atrofdagi ob'ektni aniqlaganda biz bilan aloqa o'rnatishi uchun biz jarlik, yorug'lik va yorug'lik zarbasi sensorlarini ishga tushirdik. Masalan, robot oldinga siljiganida, uning yorug'lik sezgichlari o'z yo'lidagi ob'ektlarni u sayohat qilayotgan vektorga muvofiq tekshiradi. Biz robot uchun masofa chegarasini tanladik, shunda u ob'ektga yaqinlashganda, u bilan to'qnashish o'rniga teskari tomonga buriladi. Bizning robotimiz, shuningdek, biz kodlash jarayonida ko'rsatgan Twitter bilan tuzilgan (bu quyida ko'rsatiladi).

Tajribani yaxshilash uchun biz mobil qurilmalarimizdagi MATLAB dasturidan foydalandik, shunda biz faqat telefonimizni egib robotning harakatini boshqaramiz. Bu ixtiyoriy faoliyat, chunki siz, albatta, MATLAB kod segmentidagi moveDistance buyrug'i yordamida robotni harakatga keltira olasiz. Shuni yodda tutingki, agar sizning maqsadingiz aniq bo'lsa, robotni boshqarish uchun MATLAB buyruqlaridan foydalanish afzalroqdir. Agar siz robotni maqsadli joylashtirmoqchi bo'lsangiz, kamera ma'lum bir joyda suratga tushsa, robotning harakatlarini MATLABda kodlash yaxshiroqdir. O'yin -kulgi paytida robotni boshqarish uchun MATLAB ilovasidan foydalanish aniqlik uchun kerak emas.

Kod Roombaga asosiy sozlamalarni bajarishni, so'ngra uzluksiz tsiklni davom ettirishni buyuradi. Dastlab, noutbuk Roomba () buyrug'i yordamida Roomba bilan bog'lanishni o'rnatadi. Shuningdek, u MATLAB -da webwrite () buyrug'i yordamida twitter aloqasini o'rnatadi. Loop Roomba atrofidagi muhitga qarab beshta asosiy mantiqiy oqimni o'z ichiga oladi. Birinchidan, Roomba to'siqlarni tekshiradi va agar u to'sqinlik qilsa, orqaga qarab to'g'rilaydi. Bu tsiklga o'rnatilgan - bu foydalanuvchilarni Roomba olib ketilayotgani to'g'risida ogohlantiruvchi ikkinchi yo'l. Qattiq Mars urush zonasida muhim yordamchi dastur. Roomba o'z pozitsiyasini xavfsizligini aniqlagandan so'ng, u keyingi harakatini aniqlash uchun mobil qurilmaga qaraydi. Agar mobil qurilma oldinga siljigan bo'lsa, u g'ildirakning tezligini qadam darajasiga qarab aylantirishdan ko'ra, rulon o'lchovining og'irligiga qarab tayanch tezlikni hisoblab chiqadi. Telefon, shuningdek, Roombani teskari harakatlantirishi mumkin. Neytral mobil qurilma holati oxirgi ikkita yo'lni yopadi. Dam olayotgan Roomba chet el bayrog'ini qidiradi va foydalanuvchini shunga mos ravishda ogohlantiradi.

Quyida bizning kodimiz (MATLAB 2017a da to'ldirilgan)

%kirish: Wi -Fi ulangan qurilmadan, kameradan yo'naltirish ma'lumotlari

%ma'lumot, sensor ma'lumotlari

%chiqish: harakat Wi -Fi ulangan qurilma va harakat bilan boshqariladi

% - sensorlar ma'lumotlarini o'qish orqali xavfsizlik tekshiriladi. Agar kamera aniqlasa

% begona bayroq, keyin Roomba dushman bayrog'ini tweetlash orqali javob beradi

% aniqlandi.

%maqsadi: bizning qurilmamiz faqat himoya qiladiganlardan boshqa maqsadsiz yashaydi

% uni yaratdi, u o'z yaratuvchisiga xizmat qiladi va qiladi

% aynan nima deyilgan.

%Foydalanish: asosan dastur o'z -o'zidan ishlaydi.

hammasini tozalash, hammasini yopish, clc

%Ob'ektlar va o'zgaruvchilarni ishga tushirish

r = xona (28);

m = mobiledev;

%javobni ishlatish = veb -yozish (xost nomi, ma'lumotlar)

xost nomi = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop operatsion … buyruq kutilmoqda';

ma'lumotlar = strcat ('api_key =', API, '& status =', tvit);

reponse = webwrite (xost nomi, ma'lumotlar);

%doimiy ishlaydigan tsikl

1 == 1 bo'lsa

Relavent ma'lumotlarini o'z ichiga olgan %tuzilmalar

o = m.yo'nalish; %mobil qurilmaning yo'nalishi

yorug'lik = r.getLightBampers (); %Light Bamper qiymatlari

a = r.getCliffSensors (); %CLiff sensori qiymatlari

bump = r.getBampers (); %Tampon sensorlar

%bamperlarni tekshiring

agar bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

%datchiklarni tekshiring

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || yorug'lik. o'ng> 60 || nur.rightFront> 60 || yorug'lik. o'ng markaz> 60

r.moveDistance (-. 2,.2);

%Cliff sensorlarini tekshiring

%O'g'rilikka qarshi signal va ogohlantirish

boshqa <a & chap <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop o'chirildi!'

ma'lumotlar = strcat ('api_key =', API, '& status =', tvit);

reponse = webwrite (xost nomi, ma'lumotlar);

%Oddiy Cliff oldini olish operatsiyasi

elseif a.chap <300 || a. o'ng <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

%Roomba tekshiruvlardan o'tdi va endi normal ish bilan ishlaydi.

%Dastlab qurilmaning rulosi o'lchanadi va asosga aylanadi

G'ildirak tezligini hisoblash uchun %tezlik ishlatiladi

%Oldinga harakat

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

agar o (2)> =-70 && o (2) <0 bo'lsa

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

boshqa o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

boshqa r.stop

oxiri

%Orqaga harakat

elseif (3)> 100 && (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

%dam olish xonasi floresan sifatida belgilangan chet el bayrog'ini qidiradi

%yashil Qog'oz

boshqa

r.stop

img = r.getImage (); %rasm oladi

ostona = kul rang (img (200: 383,:, 2))+.1; %yashil yashil darajasi

agar chegara>.42

tweet = 'Dushman aniqlandi!'

ma'lumotlar = strcat ('api_key =', API, '& status =', tvit);

reponse = webwrite (xost nomi, ma'lumotlar);

boshqa

r.stop

oxiri

oxiri

oxiri

4 -qadam: Xulosa

Yodingizda bo'lsin, siz yuqorida yozgan skriptdan foydalanishingiz mumkin, lekin siz uni har doim ehtiyojlaringizga mos ravishda o'zgartirishingiz mumkin. Bu sizning telefoningiz tomonidan boshqarilishi shart emas! (Biroq, bu yanada qiziqarli bo'ladi.) Robotingizni boshqarish uchun qaysi usulni tanlashni tanlang. Robotingiz bilan haydang va zavqlaning!

Tavsiya: