Mundarija:

Roomba Explorer: 4 qadam
Roomba Explorer: 4 qadam

Video: Roomba Explorer: 4 qadam

Video: Roomba Explorer: 4 qadam
Video: Shahzoda - To'kilib | Шахзода - Тукилиб 2024, Iyul
Anonim
Roomba Explorer
Roomba Explorer

MATLAB va iRobot -ning Create2 robotidan foydalanib, ushbu loyiha noma'lum joyning turli joylarini o'rganadi. Biz xavfli erni manevr qilishga yordam berish uchun Robot datchiklaridan foydalanganmiz. Raspberry Pi -dan fotosuratlar va video tasmalarni olish orqali biz robot duch keladigan to'siqlarni aniqladik va ular tasniflanadi.

Materiallar va ehtiyot qismlar

Ushbu loyiha uchun sizga kerak bo'ladi

-kompyuter

-MATLABning eng yangi versiyasi (bu loyihada MATLAB R2018b ishlatilgan)

- roombaInstall asboblar qutisi

-iRobot -ning Create2 roboti

-Kamera bilan Raspberry Pi

1 -qadam: ishga tushirish va sensorlar

Boshlash va sensorlar
Boshlash va sensorlar

Dasturlashni boshlashdan oldin, biz robotning turli komponentlariga kirishga ruxsat beruvchi roombaInstall asboblar qutisini yukladik.

Dastlab biz har qanday robotni ishga tushirish uchun GUI yaratdik. Buning uchun kirish sifatida Robot raqamini kiritish kerak. Bu bizning dasturimizni ishga tushirish imkoniyatini beradi Robot biz robotni duch keladigan ko'plab erlarda manevr qilish uchun ishladik. Biz tezlikni yoki yo'nalishni o'zgartirish uchun Robotga o'tish uchun ularning chiqishlarini ishlatib, Cliff Sensor, Light Bump Sensor va Fizik Bump Sensorlarini qo'lladik. Oltita yorug'lik zarbasi datchiklaridan birortasi ob'ektni aniqlaganda, ular chiqaradigan qiymat kamayadi, bu esa to'liq tezlikda to'qnashuvni oldini olish uchun robot tezligini pasayishiga olib keladi. Robot oxir -oqibat to'siq bilan to'qnashganda, jismoniy zarba sensori noldan katta qiymat haqida xabar beradi; shu sababli, Robot to'xtaydi, shuning uchun boshqa to'qnashuvlar bo'lmaydi va boshqa funktsiyalarni harakatga keltirish mumkin. Cliff Sensorlari uchun ular atrofdagi maydonning yorqinligini o'qiydilar. Agar qiymat 2800 dan katta bo'lsa, biz Robot barqaror joyda va xavfsiz bo'lishini aniqladik. Ammo, agar qiymat 800 dan past bo'lsa, Cliff sensorlar qulab tushmasligi uchun darhol to'xtaydi. Ularning orasidagi har qanday qiymat suvni ifodalaydi va robot o'z harakatini to'xtatadi. Yuqoridagi sensorlardan foydalanib, robotning tezligi o'zgaradi, bu bizga xavf mavjudligini yaxshiroq aniqlash imkonini beradi.

Quyida kod (MATLAB R2018b dan)

%% Boshlanish

dlgPrompts = {'Roomba raqami'};

dlgTitle = 'O'z xonangizni tanlang';

dlgDefaults = {''};

opts. Resize = "yoqilgan";

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Foydalanuvchiga xona raqamini kiritishni taklif qiladigan oyna yarating.

n = str2double (dlgout {1});

r = xona (n); % Foydalanuvchi tomonidan belgilangan Roomba %% ni ishga tushiradi Light Bump sensorlaridan tezlikni aniqlash haqiqiy s = r.getLightBumpers; % yorug'lik zarbasi sensorlarini oladi

lbumpout_1 = ekstrakt maydoni (lar, "chapda"); % datchiklarning raqamli qiymatlarini oladi va ularni yanada qulayroq qiladi lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'o'ng');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % qiymatlarni matritsaga o'zgartiradi

sLbump = tartiblash (lbout haqida); %saralash matritsasini eng past qiymatiga ajratish mumkin

lowLbump = sLbump (1); tezlik =.05+(lowLbump)*. 005 %hech narsa aniqlanmagan tezlikni, yuqori tezlikni aniqlash uchun yaqin to'siqlarni ifodalovchi eng past qiymatdan foydalanadi.

r.setDriveVelocity (tezlik, tezlik)

oxiri

% Jismoniy bamperlar

b = r.getBampers; %Chiqish to'g'ri, noto'g'ri

bsen_1 = ekstrakt maydoni (b, "chapda")

bsen_2 = ekstrakt maydoni (b, "o'ng")

bsen_3 = ekstrakt maydoni (b, "old")

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

zarbalar = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)

agar tbump> 0 r.setDriveVelocity (0, 0)

oxiri

% Cliff sensorlar

c = r.getCliffSensors %% 2800 xavfsiz, boshqa suv

csen_1 = ekstrakt maydoni (c, "chapda")

csen_2 = ekstrakt maydoni (c, "o'ng")

csen_3 = ekstrakt maydoni (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

jarliklar = [csen_1, csen_2, csen_3, csen_4]

ordcliff = saralash (jarliklar)

agar ordcliff (1) <2750

r.setDriveVelocity (0, 0)

agar jarlik <800

disp 'jarlik'

boshqa

"suv"

oxiri

r. TurnAngle (45)

oxiri

2 -qadam: Ma'lumot olish

Jismoniy zarba sezgichlari o'chirilgandan so'ng, robot Raspberry Pi bortidagi to'siqni suratga olish uchun foydalanadi. Suratga olgandan so'ng, agar rasmda matn bo'lsa, matnni tanib olish yordamida Robot nima to'siq ekanligini va nima deyayotganini aniqlaydi.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

rasm = imread ('imgfromcamera.jpg')

ocrResults = ocr (rasm)

tan olinganText = ocrResults. Text;

raqam;

imshow (rasm) matni (220, 0, taniqliTekst, 'BackgroundColor', [1 1 1]);

3 -qadam: Missiyani yakunlash

Robot to'siq HOME ekanligini aniqlaganida, u o'z vazifasini bajaradi va uyda qoladi. Missiya tugagandan so'ng, robot o'z uyiga qaytganligi haqida elektron pochta xabarini yuboradi va safar davomida olgan rasmlarini yuboradi.

% Elektron pochta yuborish

setpref ("Internet", "SMTP_Server", "smtp.gmail.com");

setpref ('Internet', 'E_mail', '[email protected]'); setpref -dan yuboriladigan % pochta hisobi ('Internet', 'SMTP_Username', 'yuboruvchi elektron pochtasini kiriting'); % yuboruvchilar foydalanuvchi nomi setpref ('Internet', 'SMTP_Password', 'yuboruvchi parolini kiriting'); % Yuboruvchilar paroli

rekvizitlar = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'rost'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Qabul qilinadigan elektron pochtani kiriting', 'Roomba', 'Roomba uyga qaytdi !!', 'imgfromcamera.jpg') yuboriladigan % pochta hisobi

Robot tugadi.

4 -qadam: Xulosa

Xulosa
Xulosa

MATLAB dasturi Robotda ishlatilgan skriptdan ajratilgan. Oxirgi qoralamada, bamperlar doimo ishlayotganiga ishonch hosil qilish uchun, boshlang'ich bosqichidan tashqari, barcha kodni vaqt oralig'iga qo'yganingizga ishonch hosil qiling. Bu dastur foydalanuvchi talablariga mos ravishda tahrirlanishi mumkin. Robotimizning konfiguratsiyasi ko'rsatilgan.

*Eslatma: MATLAB robot va bortdagi Raspberry Pi bilan ishlash uchun roombaInstall asboblar qutisi kerakligini unutmang.

Tavsiya: