Mundarija:

MATLAB tomonidan boshqariladigan Roomba: 5 qadam
MATLAB tomonidan boshqariladigan Roomba: 5 qadam

Video: MATLAB tomonidan boshqariladigan Roomba: 5 qadam

Video: MATLAB tomonidan boshqariladigan Roomba: 5 qadam
Video: BU DUNYONI ASLIDA KIMLAR BOSHQARMOQDA? 2024, Iyul
Anonim
MATLAB tomonidan boshqariladigan Roomba
MATLAB tomonidan boshqariladigan Roomba
MATLAB tomonidan boshqariladigan Roomba
MATLAB tomonidan boshqariladigan Roomba

Loyihaning maqsadi - MATLAB, shuningdek o'zgartirilgan dasturlashtirilgan iRobot robotidan foydalanish. Bizning guruh kodlash ko'nikmalarimizni birlashtirib, iRobot -ning ko'p funktsiyalari, shu jumladan jarlik sensori, bamper sensori, yorug'lik sensori va kameradan foydalanadigan MATLAB skriptini yaratdi. Biz bu sensor va kamera o'qishlarini kirish sifatida ishlatdik, bu bizga MATLAB kodi funktsiyalari va halqalari yordamida kerakli ma'lumotlarni chiqarish imkonini berdi. Shuningdek, biz iRobot -ga ulanish va uni boshqarish uchun MATLAB mobil qurilmasi va giroskopidan foydalanamiz.

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

MATLAB 2018a

-MATLAB -ning 2018 -yilgi versiyasi eng ko'p afzal qilingan versiya, chunki u mobil qurilmaga ulangan kod bilan eng yaxshi ishlaydi. Biroq, bizning kodimizning aksariyat qismi MATLAB versiyalarida talqin qilinishi mumkin.

iRobot qurilmasini yaratish

-Bu maxsus dasturlashtirilgan va kodlash uchun mo'ljallangan maxsus qurilma. (Bu haqiqiy vakuum emas)

Raspberry Pi (kamera bilan)

- Bu qimmat bo'lmagan kompyuter taxtasi, iRobotning miyasi sifatida ishlaydi. Bu kichik bo'lishi mumkin, lekin u ko'p narsaga qodir. Kamera - bu qo'shimcha. Shuningdek, u malina pi -dan foydalanib, barcha funktsiyalari va buyruqlarini oladi. Yuqorida tasvirlangan kamera Tennessi universiteti muhandislik asoslari bo'limlari tomonidan yaratilgan 3D bosma stendga o'rnatilgan.

2 -qadam: Roomba ma'lumotlar bazasi fayli

Roomba ma'lumotlar bazasi fayli
Roomba ma'lumotlar bazasi fayli

Roomba uchun to'g'ri funktsiyalar va buyruqlardan foydalanish uchun sizga kerak bo'lgan asosiy fayl mavjud. Bu fayl siz yozgan kod - bu sizning xona xonangizni boshqarishni osonlashtirish uchun funktsiyalarni oladi.

Faylni ushbu havola orqali yoki quyida yuklanadigan faylni yuklab olishingiz mumkin

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

3 -qadam: Roomba -ga ulanish

Birinchidan, siz robotingiz malina pi kartasiga mikro USB vilkasi yordamida ulanganligiga ishonch hosil qilishingiz kerak. Keyin kompyuter va robotni bir xil WiFi -ga to'g'ri ulashingiz kerak. Bu bajarilgandan so'ng, siz robotni ishga tushirishingiz va unga robot ma'lumotlar bazasi faylidagi buyruq yordamida ulanishingiz mumkin. (Robotni ishlatishdan oldin va keyin har doim qattiq holatga qaytaring). Masalan, biz robotimizga ulanish uchun "r.roomba (19)" buyrug'idan foydalanamiz va r o'zgaruvchisini qurilmamizga tayinlaymiz. Bu ma'lumotlar bazasi faylini nazarda tutadi, u o'zgaruvchini har qanday vaqtda biz murojaat qila oladigan tuzilma sifatida o'rnatadi.

4 -qadam: Kod

Kodeks
Kodeks
Kodeks
Kodeks

Biz quyida to'liq kodni biriktirdik, lekin bu erda skriptimizdagi muhim elementlarni ajratib ko'rsatadigan qisqacha sharh. Biz robotning imkoniyatlarini to'liq oshirish uchun barcha sensorlardan, shuningdek kameradan foydalandik. Shuningdek, biz mobil qurilmani robotimizga ulashimiz va uni qo'lda boshqarish uchun uning groskopidan foydalanishimiz mumkin bo'lgan kodni ham qo'shdik.

Biz "r.setDriveVelocity (.06)" oddiy buyrug'i bilan boshladik, u robotning oldinga tezligini.06 m/s ga o'rnatadi. Bu robotni oldindan harakatga keltirish uchun

So'ngra, bizning asosiy skriptimiz, biz quyida keltirilgan shartli bayonotlarda murojaat qilishimiz mumkin bo'lgan tuzilmalarni yaratish orqali berilgan robot ma'lumotlarini oladigan vaqtli tsikl bilan boshlanadi, bu bizga robotga tuzilish ma'lumotlari asosida ma'lum bir buyruqni bajarishini aytish imkonini beradi. robot sensorlar bilan o'qiydi. Biz uni robot o'z jarlik sensorlarini o'qishi va qora yo'ldan ketishi uchun o'rnatdik

haqiqiy % while esa "noto'g'ri" narsa paydo bo'lguncha davom etadi (bu holda u cheksiz davom etadi) data = r.getCliffSensors; data2 = r.getBumpers; % jarlik sensori qiymatlari haqidagi ma'lumotlarni uzluksiz oladi va ularni % img = r.getImage o'zgaruvchisiga tayinlaydi; % O'rnatilgan kameradan rasm oladi % image (img); % Olingan tasvirni ko'rsatadi % red_mean = o'rtacha (o'rtacha (img (:,,, 1)))); % agar data.rightFront <2000 r.turnAngle (-2) bo'lsa, yashil rangning o'rtacha qiymatini oladi; % Roomba -ni taxminan.2 daraja CW ga aylantiradi, o'ng old jarlik sensorlar qiymati 2000 r.setDriveVelocity (.05) dan pastga tushganda; elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % Roomba -ga taxminan.2 m/s tezlikni davom ettirishini aytadi, agar o'ng va chap old datchiklarning har ikkala qiymati 2000 % dan past bo'lsa r.turnAngle (0); % Roombaga yuqoridagi shartlar to'g'ri bo'lsa, burilmasligini aytadi

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Bu vaqt tsiklidan so'ng, biz kamera orqali olingan ma'lumotlarni ishga tushiradigan boshqa while tsiklini kiritamiz. Va biz if dasturidan foydalanamiz, bu holda loop ma'lum bir dastur (alexnet) yordamida tasvirni taniydi va u tasvirni aniqlagandan so'ng darhol mobil qurilmaning masofadan boshqarish pultini ishga tushiradi

tarmoq = alexnet; % Alexnet chuqur o'rganishni haqiqiy % Infinite o'zgaruvchisiga belgilaydi img = r.getImage; img = imresize (img, [227, 227]); label = tasniflash (anet, img); agar yorliq == "qog'oz sochiq" || label == "muzlatgich" label = "suv"; oxirgi rasm (img); unvon (belgi (belgi)); chizilgan;

Vaqt tsikli qurilmani telefon orqali boshqarishga imkon beradi, bu ma'lumotni telefon gyroskopidan oladi va biz uni doimiy ravishda MATLAB -ga qayta uzatuvchi matritsaga ulaymiz. Biz matritsa ma'lumotlarini o'qiydigan va telefon gyroskopining ma'lum qiymatlari asosida qurilmani harakatga keltiradigan chiqish beradigan if iborasidan foydalanamiz. Biz mobil qurilmaning Yo'nalish sensorlaridan foydalanganimizni bilish muhim. Yuqorida aytib o'tilgan bittadan uchta matritsa telefonning yo'nalish sensorlarining har bir elementi bo'yicha toifalarga bo'linadi, bu azimut, balandlik va yon. Agar bayonotlar tomon 50 qiymatidan oshsa yoki -50 dan pastga tushsa, robot ma'lum masofani oldinga (musbat 50) yoki orqaga (manfiy 50) siljitadi. Va xuddi shu narsa pitch qiymati uchun ham amal qiladi. Agar pitch qiymati -25 dan past bo'lgan 25 qiymatidan oshsa, robot 1 gradus (musbat 25) yoki salbiy 1 gradus (manfiy 25) burchak ostida buriladi

haqiqiy pauza (.1) % Har bir qiymatni olishdan oldin 5 soniya pauza Controller = iphone. Orientation; % Azimuthal = Controller (1) o'zgaruvchiga iPhone yo'nalishi qiymatlari uchun matritsani tayinlaydi; % Matritsaning birinchi qiymatini Pitch = Controller (2) o'zgaruvchisiga belgilaydi; % Matritsaning ikkinchi qiymatini o'zgarmaydiganga tayinlaydi (iPhone yonma -yon ushlab turganda oldinga va orqaga buriladi) Side = Controller (3); % O'zgaruvchiga matritsaning uchinchi qiymatini belgilaydi (iPhone yonma -yon ushlab turganda chapga va o'ngga egiladi) % Telefonning yo'nalishiga qarab chiqishga olib keladi, agar Yon> 130 || Yon 25 r harakat Harakat masofa (-. 1) % Roombani taxminan.1 metr orqaga siljitadi, agar iPhone kamida 25 gradus orqaga burilgan bo'lsa, boshqa tomon 25 r.turnAngle (-1) %, agar iPhone bo'lsa, Roombani taxminan 1 daraja CCW ga aylantiradi. chapga eng kamida 25 gradusga egilgan bo'lsa, Pitch <-25 r.turnAngle (1) % Agar iPhone kamida 25 daraja burilgan bo'lsa, Roombani taxminan 1 daraja CW ga aylantiradi.

Bu bizning kodimizning asosiy qismlari, agar biz sizning foydangiz uchun bo'limni tezda nusxalash va joylashtirishingiz kerak bo'lsa, biz kiritgan bo'lardik. Ammo, agar kerak bo'lsa, bizning butun kodimiz quyida keltirilgan

5 -qadam: Xulosa

Biz yozgan ushbu kod, bizning robotimiz uchun, shuningdek, loyihaning umumiy tasavvuriga mo'ljallangan. Bizning maqsadimiz robotning ko'p funktsiyalaridan foydalanadigan yaxshi dizayn skriptini yaratish uchun barcha MATLAB kodlash ko'nikmalaridan foydalanish edi. Telefon boshqaruvchisidan foydalanish siz o'ylagandek qiyin emas va bizning kodimiz sizga iRobotni kodlash tushunchasini yaxshiroq tushunishga yordam beradi deb umid qilamiz.

Tavsiya: