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

Roomba MATLAB- ով. 4 քայլ (նկարներով)
Roomba MATLAB- ով. 4 քայլ (նկարներով)

Video: Roomba MATLAB- ով. 4 քայլ (նկարներով)

Video: Roomba MATLAB- ով. 4 քայլ (նկարներով)
Video: Roomba Control (ROS & MATLAB) 2024, Նոյեմբեր
Anonim
Roomba MATLAB- ով
Roomba MATLAB- ով

Այս նախագիծը օգտագործում է MATLAB- ը և iRobot Create2 ծրագրավորվող ռոբոտը: Փորձարկելով MATLAB- ի մասին մեր գիտելիքները, մենք կարող ենք ծրագրավորել Creat2- ը `պատկերների մեկնաբանման և ազդանշանների հայտնաբերման համար: Ռոբոտի ֆունկցիոնալությունը հիմնականում կախված է MATLAB բջջային հավելվածից և Raspberry Pi տեսախցիկի մոդուլից:

Քայլ 1: Մասեր և նյութեր

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

1. iRobot Ստեղծել, տարբերակ 2

- Սա ծրագրավորվող ռոբոտ է, որը նման է Roomba- ի: Տեղյակ եղեք, որ iRobot- ի այս արտադրանքը վակուում չէ: Այն նախատեսված է օգտագործողի կողմից անհատական ծրագրավորման համար:

2. MATLAB 2017 ա

- Հին տարբերակների մեծ մասը համատեղելի կլինի ստորև օգտագործված ծածկագրի հետ: MATLAB- ը կբացահայտի այնպիսի հրաման, որը համատեղելի չէ ձեր ունեցած տարբերակի հետ և կառաջարկի լավագույն պիտանի հրաման:

3. Raspberry Pi 3 Model B, տարբերակ 1.2

- Ստուգեք, թե որ Raspberry Pi- ն է համատեղելի ձեր iRobot- ի հետ: Լրացուցիչ օգնության համար տես այս հղումը ՝ https://www.irobotweb.com/~/media/MainSite/PDFs/A… Սա ուսանելի է ենթադրում, որ դուք աշխատում եք նախապես ծրագրավորված Raspberry Pi- ի հետ: Խնդրում ենք տեղյակ լինել, որ ձեզ հարկավոր է աշխատել նախապես ծրագրավորված Pi- ի հետ ՝ հետևյալ քայլերն աշխատելու համար: Նախապես ծրագրավորված Pi- ի օգտագործումը թույլ կտա ձեզ կատարել ձեր ամբողջ կոդավորումը միայն MATLAB- ում:

4. Camera Module V2 (Raspberry Pi- ի համար)

- Դուք կարող եք զարմանալ; չնայած իր չափսերին, Raspberry Pi Camera Module- ը շատ լավ որակ է: Սա այս նախագծի ամենաէժան և համատեղելի տարբերակն է:

Լրացուցիչ. 3D տպագիր տակդիր: Սա օգտագործվում է տեսախցիկի կայունացման համար: Դա չի ազդում ռոբոտի ֆունկցիոնալության վրա, բայց դա կօգնի ձեր կոդավորմանը, եթե ցանկանում եք օգտագործել պատկերների տվյալները գույնի և (կամ) օբյեկտի ճանաչման համար:

Քայլ 2: Կազմաձևում

Կազմաձևում
Կազմաձևում
Կազմաձևում
Կազմաձևում

1. Միացնելով Raspberry Pi- ն և տեսախցիկի մոդուլը (Սարքավորումներ)

- Raspberry Pi- ն սնուցելու համար ձեզ հարկավոր է միկրոկառավարիչի վրա գործող կանացի հոսանքի արական միկրո USB միացում: Լրացուցիչ. Լարման կարգավորիչը կարող է օգտագործվել `ապահովելու համար, որ լարումը չի գերազանցում 5 Վ -ը: Raspberry Pi- ին միացնելուց հետո կարող եք այն միացնել ձեր ռոբոտին ՝ միկրոկառավարիչի վրա մայրական սալիկից մինչև USB պորտ արական USB a- ն գործարկելով:

- Pi- ն Roomba- ին միացնելուց հետո տեսախցիկը պատրաստ է տեղադրման: Camera Module- ը շատ ավելի փոքր կլինի, քան դուք ակնկալում էիք: Նկատի ունեցեք, որ ոսպնյակը տեղադրված է սենսորի վրա, իսկ տեսախցիկից սպիտակ ժապավենը տարածվում է: ՄԻ հանեք կամ պատռեք ժապավենը: Սա այն մալուխն է, որն անհրաժեշտ է այն Raspberry Pi- ին միացնելու համար: Նախ, պահեք ժապավենի ծայրը և գտեք արծաթե միակցիչները և կապույտ մալուխը: Սրանք հակառակ կողմերում են: Հաջորդը, գտեք Ethernet- ի և HDMI պորտերի միջև ընկած հատվածը ձեր Raspberry Pi- ում: Ուշադրություն դարձրեք, որ այն ծածկում է մի փոքրիկ, սպիտակ կողպեք: Դանդաղ բարձրացրեք կողպեքը, բայց մի հանեք այն անցքից, քանի որ այն կպոկվի և ընդմիշտ կվնասվի: Կողպեքը բարձրացնելուց հետո բռնեք ժապավենը և արծաթագույն միակցիչներին նայեք դեպի HDMI պորտ: Կապույտ կողմը կանդրադառնա Ethernet նավահանգստին: Դանդաղ սահեցրեք ժապավենը անցքի մեջ, մինչ այն դեռ կողպված է: Պարտադիր չէ, որ այն ուժով մտնեք անցքի մեջ: Տեղադրելուց հետո կողպեքը հետ մղեք ներքև: Եթե ձեր տեսախցիկը պատշաճ կերպով ամրացված է, դուք պետք է կարողանաք (նրբորեն) քաշել ժապավենը և լարվածություն զգալ: Ապավենը չպետք է ազատ լինի: Ձեր տեսախցիկը Pi- ին միացնելուց հետո կարող եք նկատել, թե որքան թուլացած է այն: Ահա թե ինչու մենք այն ամրացնելու համար օգտագործեցինք եռաչափ տպիչ սարք: Ձեր ընտրությունն է `որոշելու, թե ինչ նյութեր կցանկանայիք օգտագործել ձեր տեսախցիկը անշարժ պահելու համար բարձրորակ պատկերների համար:

2. Պատշաճ ֆայլերի տեղադրում և Roomba- ն ձեր համակարգչին միացնելը Ձեր սարքավորումների ամբողջ կազմաձևումից հետո այժմ կարող եք անցնել MATLAB- ի տեղադրմանը, ինչպես նաև հարակից m- ֆայլերին, որոնք թույլ են տալիս շփվել ռոբոտի հետ: Դա անելու համար բացեք MATLAB- ը և ստեղծեք նոր թղթապանակ ՝ բոլոր հարակից ֆայլերը միասին պահելու համար: Օգտագործեք այս սցենարը `անհրաժեշտ ֆայլերը տեղադրելու/թարմացնելու համար ՝

- Բոլոր ֆայլերը այժմ պետք է հայտնվեն ձեր ստեղծած թղթապանակում: Աջ սեղմեք ընթացիկ թղթապանակի պատուհանում և ընտրեք «Ավելացնել ճանապարհին» ՝ այդ ուղին այն դիրեկտորիաների ցանկին ավելացնելու համար, որտեղ MATLAB- ը ֆայլեր է փնտրում: Համոզվեք, որ ձեր բոլոր ֆայլերը ճիշտ ուղու վրա են:

3. Երբ ֆայլերը տեղադրվեն, այժմ կարող եք սկսել միանալ ձեր ռոբոտին: Սկսեք ՝ միացնելով ձեր ռոբոտը, այնուհետև ՝ դժվարին վերականգնել այն անմիջապես գործարկելուց հետո (մի մոռացեք, որ ձեր ռոբոտը կոշտ վերականգնել ամեն անգամ օգտագործելուց առաջ և հետո): Երկրորդ, միացրեք ձեր ռոբոտը և նոութբուքը նույն WiFi ցանցին: Դրանից հետո մենք կխոսենք նախապես ծրագրավորված Raspberry Pi- ի հետ MATLAB- ի միջոցով `զանգահարելով Roomba- ն` օգտագործելով դրա տրված անունը և roomba գործառույթը: Օրինակ, ես կկապվեի ռոբոտ 28 -ին ՝ օգտագործելով հետևյալ տողը ՝ R = roomba (28):

- Ուշադրություն դարձրեք, թե ինչպես եմ օբյեկտը նշանակել փոփոխականին R. Ես այժմ կարող եմ մուտք գործել Roomba- ի գործառույթներ տեղադրման ֆայլից ՝ R փոփոխականին վերաբերվելով կառույցի:

- R.turnAngle (90) Եթե ամեն ինչ լավ է ընթանում, երաժշտական երանգ պետք է հնչի ՝ հաստատելով կապը:

Քայլ 3: MATLAB տրամաբանություն

Այս քայլի ներքևում գտնվող PDF փաստաթուղթը մանրամասն տրամաբանական հոսքի գծապատկեր է MATLAB- ում մեր կոդավորման գործընթացի համար: Մենք ակտիվացրեցինք ժայռի, լույսի և լույսի բախման տվիչները, որպեսզի թույլ տանք ռոբոտին շփվել մեզ հետ, երբ հայտնաբերում է իր անմիջական հարևանությամբ գտնվող օբյեկտը: Օրինակ, երբ ռոբոտը առաջ է շարժվում, նրա լուսային տվիչները փնտրում են իր ճանապարհին գտնվող օբյեկտները ՝ ըստ այն վեկտորի, որով նա ճանապարհորդում է: Մենք ընտրեցինք ռոբոտի հեռավորության շեմը, որպեսզի երբ նա մոտենա օբյեկտին, այն հետ շրջվի, այլ ոչ թե բախվի դրան: Մեր ռոբոտը կազմաձևված է նաև Twitter- ով, որը մենք նշել ենք մեր կոդավորման գործընթացում (սա կցուցադրվի ստորև):

Փորձը բարձրացնելու համար մենք օգտագործեցինք MATLAB հավելվածը մեր բջջային սարքերում, որպեսզի կարողանանք վերահսկել ռոբոտի շարժումները ՝ պարզապես թեքելով մեր հեռախոսները: Սա կամընտիր գործունեություն է, քանի որ դուք, անշուշտ, կարող եք ռոբոտին տեղաշարժել ՝ փոխարենը օգտագործելով MATLAB կոդի հատվածում moveDistance հրահանգը: Հիշեք, որ ձեր ռոբոտը կառավարելու համար MATLAB հրամանների օգտագործումը նախընտրելի է, եթե ձեր նպատակը ճշգրիտ լինելն է: Եթե ցանկանում եք նպատակ դնել ձեր ռոբոտին այնպես, որ տեսախցիկը լուսանկարում է որոշակի վայրում, գուցե ավելի լավ է ռոբոտի շարժումները ծածկագրել MATLAB- ում: Entertainվարճալի ժամանակ, MOTLAB հավելվածը ռոբոտին կառավարելու համար ցանկալի չէ ճշգրտության համար:

Օրենսգիրքը Roomba- ին պատվիրում է կատարել հիմնական կարգավորումը, այնուհետև շարունակել շարունակական օղակի միջոցով: Սկզբում նոութբուքը Roomba () հրամանի միջոցով կապ կկազմի Roomba- ի հետ: Այն նաև ստեղծում է twitter կապը ՝ օգտագործելով MATLAB- ի webwrite () հրամանը: Օղակը պարունակում է հինգ հիմնական տրամաբանական հոսքեր ՝ կախված Roomba- ն շրջապատող միջավայրից: Սկզբում Roomba- ն ստուգում է խոչընդոտների առկայությունը և հետընթաց է կատարում, եթե գտնում է, որ այն խոչընդոտված է: Այդ հանգույցում ներդրված է երկրորդ ուղին, որն ահազանգում է օգտվողներին, եթե Roomba- ն տարվի: Կարևոր օգտակար գործիք Մարսյան դաժան ռազմական գոտում: Երբ Roomba- ն որոշեց, որ իր դիրքն անվտանգ է, բջջային սարքին է թվում `որոշելու իր հաջորդ շարժումը: Եթե շարժական սարքը թեքված է առաջ, այն կհաշվարկի բազային արագությունը `կախված գլանափաթեթի չափման ծանրությունից, քան կկարգավորի առանձին անիվների պտտման արագությունը` ելնելով թեքության աստիճանից: Հեռախոսը կարող է նաև Roomba- ն շարժել հակառակ ուղղությամբ: Չեզոք բջջային սարքի վիճակը դարպաս է բերում վերջին երկու ուղիները: Հանգիստ Roomba- ն կփնտրի Այլմոլորակայինի դրոշ և համապատասխանաբար կզգուշացնի օգտվողին:

Ստորև բերված է մեր կոդը (լրացված է MATLAB 2017a- ում)

%մուտքեր. կողմնորոշման տվյալներ wifi միացված սարքից, տեսախցիկից

%տեղեկատվություն, տվիչների տվյալներ

%ելքեր. շարժումը վերահսկվում է wifi միացված սարքի և շարժման միջոցով

% -ը ստուգվում է սենսորային տվյալների ընթերցմամբ: Եթե տեսախցիկը հայտնաբերի

Այլմոլորակայինի դրոշ, ապա սենյակը պատասխանում է թշնամու դրոշը թվիթերով

% -ը նկատվել է:

%նպատակը. մեր սարքը ապրում է առանց որևէ նպատակի, բացառությամբ նրանց պաշտպանելու

% -ը ստեղծեց այն, այն ծառայում է իր ստեղծողին և անում է

% հենց այն, ինչ ասվում է:

Օգտագործում. Ըստ էության, ծրագիրը կգործի ինքնուրույն:

մաքրել բոլորը, փակել բոլորը, clc

Օբյեկտների և փոփոխականների սկզբնականացում

r = սենյակ (28);

m = mobiledev;

%օգտագործել պատասխան = վեբ գրառում (հյուրընկալողի անուն, տվյալներ)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop- ը գործառնական է … սպասում է հրամանին';

տվյալներ = strcat ('api_key =', API, '& status =', թվիթ);

պատասխան = վեբ գրառում (հյուրընկալողի անուն, տվյալներ);

%անընդհատ աշխատող հանգույց

մինչդեռ 1 == 1

%Relavent տվյալներ պարունակող կառույցներ

o = մ. կողմնորոշում; %շարժական սարքի կողմնորոշում

լույս = r.getLightBumpers (); Թեթև բամպերի արժեքներ

a = r.getCliffSensors (); %CLiff ցուցիչի արժեքներ

bump = r.getBumpers (); %Bumper սենսորներ

%ստուգիչ բամպեր

եթե bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

%ստուգեք լույսի տվիչները

elseif light.left> 60 || light.leftF Front> 60 || light.leftCenter> 60 || թեթեւ. աջ> 60 || light.rightF Front> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

%ստուգեք Cliff տվիչները

Հակագողության ազդանշան և ծանուցում

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r. beep ();

tweet = 'RoboCop- ը վերացվել է':

տվյալներ = strcat ('api_key =', API, '& status =', թվիթ);

պատասխան = վեբ գրառում (հյուրընկալողի անուն, տվյալներ);

Նորմալ ժայռերի խուսափման գործողություն

elseif a.left <300 || ա. ճիշտ <300 || a.leftFront <300 || ա. աջ ճակատ <300

r.moveDistance (-. 2,.2);

Roomba- ն անցավ ստուգումները և այժմ կաշխատի նորմալ շահագործմամբ:

Սկզբում սարքի գլանափաթեթը չափվում է և դառնում հիմք

%արագություն, որն այնուհետև օգտագործվում է անիվի արագությունը հաշվարկելու համար

%Առաջ շարժում

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

եթե o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

այլապես r.stop

վերջ

Հետընթաց շարժում

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r. beep ();

r. beep ();

%resting roomba- ն որոնելու է որպես ֆլուորեսցենտ նշված Այլմոլորակային դրոշը

%կանաչ Կտոր թուղթ

ուրիշ

ռ. դադարեցնել

img = r.getImage (); %վերցնել պատկերը

շեմ = մոխրագույն (img (200: 383,:, 2))+. 1; %կանաչ կանաչ մակարդակ

եթե շեմ>.42

tweet = 'Հակառակորդը նկատվեց !!'

տվյալներ = strcat ('api_key =', API, '& status =', թվիթ);

պատասխան = վեբ գրառում (հյուրընկալողի անուն, տվյալներ);

ուրիշ

ռ. դադարեցնել

վերջ

վերջ

վերջ

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

Հիշեք, դուք կարող եք օգտագործել մեր վերևում գրված սցենարը, բայց միշտ կարող եք այն փոխել ձեր կարիքներին համապատասխան: Պարտադիր չէ, որ այն վերահսկվի ձեր հեռախոսի միջոցով: (Այնուամենայնիվ, դա ավելի հաճելի է դարձնում:) Ընտրեք, թե որ մեթոդով եք նախընտրում օգտագործել ձեր ռոբոտին կառավարելու համար: Շարժվեք ձեր ռոբոտի հետ և վայելեք:

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