Բովանդակություն:
- Քայլ 1. Նախնականացում և տվիչներ
- Քայլ 2: Տվյալների ստացում
- Քայլ 3: Ավարտելով առաքելությունը
- Քայլ 4: Եզրակացություն
Video: Roomba Explorer: 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Օգտագործելով 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- ի հետ փոխազդելու համար:
Խորհուրդ ենք տալիս:
Roomba Bot the Bulider: 5 քայլ (նկարներով)
Roomba Bot the Bulider. ճակատին ամրացված կկարողանա առարկաները տեղաշարժել: Նրա հետ ծածկագիրը սահմանված է գրանցելու առաջին շարժումը GUI տուփով, որը կարող եք կառավարել միայն մկնիկի կտտոցով: Հետո
MATLAB վերահսկվող Roomba: 5 քայլ
MATLAB Controlled Roomba. Այս նախագծի նպատակն է օգտագործել MATLAB- ը, ինչպես նաև փոփոխված iRobot ծրագրավորվող ռոբոտը: Մեր խումբը համատեղեց մեր կոդավորման հմտությունները `ստեղծելու համար MATLAB սցենար, որն օգտագործում է iRobot- ի բազմաթիվ գործառույթներ, ներառյալ ժայռերի տվիչները, բամպերի զգայունությունը
Ստեղնաշարի դյուրանցումներ Internet Explorer- ի համար: 4 քայլ
Internet Explorer- ի ստեղնաշարի դյուրանցումներ
Roomba Scout Explorer: 8 քայլ
Roomba Scout Explorer. Որպես ամերիկյան ամենասպասված և շատ հետազոտված նախագծերից մեկը, Mars rover- ի նախագծերը դարձել են մարդկային նվաճումներ բարձր տեխնոլոգիական ինքնավար համակարգերի անընդհատ առաջադեմ արտադրության մեջ `միմիայն հետաքննության և
Bus Pirate 3EEPROM Explorer Board: 5 քայլ
Bus Pirate 3EEPROM Explorer Board. Եթե դուք ունեք Hack a Day's Bus Pirates- ից որևէ մեկը, ինչ եք անում դրա հետ: Իմացեք 1-մետաղալարերի, I2C- ի և SPI EEPROM- ների մասին 3EEPROM Explorer- ի տախտակով (մենք այն անվանում ենք THR-EE-PROM): EEPROM- ը հիշողության չիպի տեսակ է, որը պահպանում է տվյալները առանց շարունակական էներգիայի