Mundarija:
- 1 -qadam: ehtiyot qismlar va materiallar
- 2 -qadam: Roomba ma'lumotlar bazasi fayli
- 3 -qadam: Roomba -ga ulanish
- 4 -qadam: Kod
- 5 -qadam: Xulosa
Video: MATLAB tomonidan boshqariladigan Roomba: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
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
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 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
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:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Google Assistant tomonidan boshqariladigan LED matritsasi!: 7 qadam (rasmlar bilan)
Google Assistant tomonidan boshqariladigan LED matritsasi!: Bu qo'llanmada men sizga Google Assistant tomonidan boshqariladigan LED matritsasini qanday qilish kerakligini ko'rsataman, uni har qanday joyda smartfon yordamida boshqarish mumkin, shuning uchun boshlaylik
IQ tomonidan boshqariladigan step motorli lift: 15 qadam
IQ bilan boshqariladigan qadamli motorli lift: men kamin ustiga o'rnatilgan televizorni yashiradigan katta rasmni ko'tarishni avtomatlashtirishim kerak edi. Rasm qo'l bilan ko'tarilishi mumkin bo'lgan arqon, kasnaklar va qarshi og'irliklardan foydalanadigan maxsus toymasin po'latdan yasalgan ramkaga o'rnatiladi. Bu nazariy jihatdan yaxshi eshitiladi, lekin
Brauzer tomonidan boshqariladigan Roomba roboti Raspberry Pi Model 3 A+: 6 qadam (rasmlar bilan)
Brauzer tomonidan boshqariladigan Roomba roboti Raspberry Pi Model 3 A+bilan: Umumiy nuqtai Bu ko'rsatma o'lik Roombaga yangi miya (Raspberry Pi), ko'zlar (veb -kamera) va hamma narsani veb -brauzerdan boshqarish usulini berishga qaratiladi. Ketma -ket interfeys orqali boshqarishga imkon beradigan Roomba xakerlari ko'p. Menda yo'q
ARDUINO YUN tomonidan boshqariladigan ROOMBA STEFANO DALL'OLIO tomonidan Wifi ilovasi orqali: 4 qadam (rasmlar bilan)
AROMINO YUN tomonidan boshqariladigan ROOMBA Wifi ilovasi orqali STEFANO DALL'OLIO: Ushbu qo'llanmada men ARDUINO YUN -ni Roomba -ga Wi -Fi orqali ulash uchun kodni ulashaman. Kod va ilovani to'liq Stefano Dall yaratgan va ishlab chiqqan. Olio.Mening Roomba - bu Roomba 620, lekin siz xuddi shu kodni boshqa Roomb uchun ishlatishingiz mumkin