Բովանդակություն:

Roomba Explorer: 4 քայլ
Roomba Explorer: 4 քայլ

Video: Roomba Explorer: 4 քայլ

Video: Roomba Explorer: 4 քայլ
Video: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Հուլիսի
Anonim
Roomba Explorer
Roomba Explorer

Օգտագործելով MATLAB- ը և iRobot- ի Create2 ռոբոտը ՝ այս նախագիծը կուսումնասիրի անհայտ տեղանքի տարբեր տարածքներ: Մենք ռոբոտի սենսորների օգնությամբ օգնեցինք վտանգավոր տեղանքով մանևրել: Լուսանկարներ և տեսաֆիլմեր ստանալով կից Raspberry Pi- ից, մենք կարողացանք որոշել այն խոչընդոտները, որոնց բախվելու է Ռոբոտը, և դրանք դասակարգվելու են:

Մասեր և նյութեր

Այս նախագծի համար ձեզ հարկավոր կլինի

-համակարգիչ

-MATLAB- ի վերջին տարբերակը (այս նախագծի համար օգտագործվել է MATLAB R2018b)

- roomba Տեղադրեք գործիքատուփ

-iRobot- ի Create2 ռոբոտը

-Ազնվամորու Պի տեսախցիկով

Քայլ 1. Նախնականացում և տվիչներ

Սկզբնականացում և սենսորներ
Սկզբնականացում և սենսորներ

Նախքան որևէ ծրագրավորում սկսելը, մենք ներբեռնեցինք roombaInstall գործիքների տուփը, որը թույլ էր տալիս մուտք գործել Ռոբոտի տարբեր բաղադրիչներ:

Սկզբում մենք ստեղծեցինք GUI ՝ ցանկացած ռոբոտ նախաստորագրելու համար: Դա անելու համար հարկավոր է մուտքագրել Ռոբոտի համարը ՝ որպես մուտքագրում: Սա թույլ կտա մուտք գործել մեր ծրագիրը Ռոբոտին: Մենք աշխատել ենք Ռոբոտին մանևրելու այն բազմաթիվ վայրերում, որոնց նա կհանդիպի: Մենք կիրառեցինք Cliff սենսորները, Light Bump Sensors- ը և Physical Bump Sensors- ը ՝ օգտագործելով դրանց ելքերը ՝ ռոբոտին ճամփորդելու և արագությունը և ուղղությունը փոխելու համար: Երբ վեց լույսի հարվածների սենսորներից որևէ մեկը օբյեկտ է հայտնաբերում, դրանց թողած արժեքը կնվազի ՝ պատճառելով, որ ռոբոտի արագությունը նվազի ՝ լիարժեք արագության բախումից խուսափելու համար: Երբ Ռոբոտը վերջապես բախվի որևէ խոչընդոտի, Physical Bump սենսորները կհայտնեն զրոյից մեծ արժեք; դրա պատճառով Ռոբոտը կդադարի, այնպես որ այլ բախումներ չեն լինի, և ավելի շատ գործառույթներ կարող են գործի դրվել: Cliff Sensors- ի համար նրանք կկարդան իրենց շրջակայքի պայծառությունը: Եթե արժեքը գերազանցում է 2800 -ը, մենք որոշեցինք, որ Ռոբոտը կլինի կայուն հողի վրա և ապահով: Բայց, եթե արժեքը 800 -ից պակաս է, Cliff Sensors- ը հայտնաբերում է ժայռը `անմիջապես կանգ առնելով, որպեսզի չընկնի: Միջանկյալ ցանկացած արժեք որոշվել է, որ ներկայացնում է ջուրը և կհանգեցնի Ռոբոտին դադարեցնել իր գործողությունը: Օգտագործելով վերը նշված սենսորները, Ռոբոտի արագությունը փոխվում է, ինչը թույլ է տալիս մեզ ավելի լավ որոշել, արդյոք կա որևէ վտանգ:

Ստորև բերված է կոդը (MATLAB R2018b- ից)

%% Նախնականացում

dlgPrompts = {'Roomba համարը'};

dlgTitle = 'Ընտրեք ձեր սենյակը';

dlgDefaults = {''};

opts. Resize = 'միացված';

dlgout = մուտքագրում

n = str2 կրկնակի (dlgout {1});

r = roomba (n); % Նախնականացնում է օգտվողի կողմից նշված Roomba %% Արագության որոշումը Light Bump Sensors- ից իսկ ճշմարիտ s = r.getLightBumpers; % -ը ստանում են թեթև հարվածի տվիչներ

lbumpout_1 = extractfield (ներ, «ձախ»); % -ը վերցնում է տվիչների թվային արժեքները և դրանք դարձնում ավելի օգտագործելի lbumpout_2 = extractfield (ներ, 'leftFront');

lbumpout_3 = extractfield (ներ, 'leftCenter');

lbumpout_4 = extractfield (ներ, 'rightCenter');

lbumpout_5 = extractfield (ներ, 'rightFront');

lbumpout_6 = extractfield (ներ, «աջ»);

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % -ը արժեքները վերածում է մատրիցի

sLbump = տեսակավորում (lbout); %տեսակավորման մատրիցան մինչև ամենացածր արժեքը կարող է հանվել

lowLbump = sLbump (1); արագություն =.05+(lowLbump)*. 005 %օգտագործելով ամենացածր արժեքը, որը ներկայացնում է սերտ խոչընդոտներ, արագությունը որոշելու համար, ավելի բարձր արագություն, երբ ոչինչ չի հայտնաբերվում

r.setDriveVelocity (արագություն, արագություն)

վերջ

% Ֆիզիկական բամպերներ

b = r.getBumpers; %Արդյունքը ճիշտ է, կեղծ

bsen_1 = extractfield (բ, «ձախ»)

bsen_2 = extractfield (բ, «աջ»)

bsen_3 = extractfield (բ, «առջև»)

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = գումար (bums)

եթե tbump> 0 r.setDriveVelocity (0, 0)

վերջ

Cliff սենսորներ

c = r.getCliffSensors %% 2800 անվտանգ, այլապես ջուր

csen_1 = extractfield (գ, «ձախ»)

csen_2 = արդյունահանման դաշտ (գ, «աջ»)

csen_3 = extractfield (գ, «ձախակողմյան ճակատ»)

csen_4 = extractfield (գ, «աջ ճակատ»)

ժայռեր = [csen_1, csen_2, csen_3, csen_4]

ordcliff = տեսակավորում (ժայռեր)

եթե ordcliff (1) <2750

r.setDriveVelocity (0, 0)

եթե ժայռ <800

ցրել «ժայռ»

ուրիշ

ջուր թափել

վերջ

r. TurnAngle (45)

վերջ

Քայլ 2: Տվյալների ստացում

Ֆիզիկական հարվածի սենսորների գործարկումից հետո Ռոբոտը կիրականացնի իր Raspberry Pi նավը ՝ խոչընդոտը լուսանկարելու համար: Լուսանկարելուց հետո, օգտագործելով տեքստի ճանաչումը, եթե նկարի մեջ տեքստ կա, Ռոբոտը կորոշի, թե որն է խոչընդոտը և ինչ է ասում խոչընդոտը:

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

լուսանկար = imread ('imgfromcamera.jpg')

ocrResults = ocr (լուսանկար)

ճանաչվածՏեքստ = ocrResults. Text;

գործիչ;

imshow (լուսանկար) տեքստ (220, 0, ճանաչված տեքստ, 'BackgroundColor', [1 1 1]);

Քայլ 3: Ավարտելով առաքելությունը

Երբ Ռոբոտը որոշի, որ խոչընդոտը ՏՈEՆ է, նա կավարտի իր առաքելությունը և կմնա տանը: Առաքելության ավարտից հետո Ռոբոտը կուղարկի էլ.

% Ուղարկելով էլ

setpref («Ինտերնետ», «SMTP_Server», «smtp.gmail.com»);

setpref («Ինտերնետ», «E_mail», «[email protected]»); % փոստի հաշիվ setpref- ից ուղարկելու համար («Ինտերնետ», «SMTP_Username», «մուտքագրեք ուղարկողի էլ. հասցե»); % ուղարկողների օգտվողի անուն setpref ('Ինտերնետ', 'SMTP_Password', 'մուտքագրեք ուղարկողի գաղտնաբառը'); % Ուղարկողների գաղտնաբառ

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

sendmail ('Մուտքագրեք ստացող էլ. փոստ', 'Roomba', 'Roomba վերադարձել է տուն !!', 'imgfromcamera.jpg') % փոստի հասցե ուղարկելու համար

Ռոբոտն այնուհետև ավարտված է:

Քայլ 4: Եզրակացություն

Եզրակացություն
Եզրակացություն

Ներառված MATLAB ծրագիրը առանձնացված է ամբողջ սցենարից, որն օգտագործվել է Ռոբոտի հետ: Վերջնական նախագծում, համոզվեք, որ ամբողջ ծածկագիրը, բացառությամբ սկզբնավորման քայլի, մի որոշ ժամանակի մեջ դրեք, որպեսզի համոզվեք, որ բամպերներն անընդհատ աշխատում են: Այս ծրագիրը կարող է խմբագրվել `օգտվողի կարիքներին համապատասխան: Robուցադրված է մեր Ռոբոտի կոնֆիգուրացիան:

*Հիշեցում. Մի մոռացեք, որ roombaInstall գործիքակազմը անհրաժեշտ է MATLAB- ին Robot- ի և Raspberry Pi- ի հետ փոխազդելու համար:

Խորհուրդ ենք տալիս: