Բովանդակություն:
Video: Roomba MATLAB- ով. 4 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Այս նախագիծը օգտագործում է 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: Եզրակացություն
Հիշեք, դուք կարող եք օգտագործել մեր վերևում գրված սցենարը, բայց միշտ կարող եք այն փոխել ձեր կարիքներին համապատասխան: Պարտադիր չէ, որ այն վերահսկվի ձեր հեռախոսի միջոցով: (Այնուամենայնիվ, դա ավելի հաճելի է դարձնում:) Ընտրեք, թե որ մեթոդով եք նախընտրում օգտագործել ձեր ռոբոտին կառավարելու համար: Շարժվեք ձեր ռոբոտի հետ և վայելեք:
Խորհուրդ ենք տալիս:
Roomba Bot the Bulider: 5 քայլ (նկարներով)
Roomba Bot the Bulider. ճակատին ամրացված կկարողանա առարկաները տեղաշարժել: Նրա հետ ծածկագիրը սահմանված է գրանցելու առաջին շարժումը GUI տուփով, որը կարող եք կառավարել միայն մկնիկի կտտոցով: Հետո
MATLAB վերահսկվող Roomba: 5 քայլ
MATLAB Controlled Roomba. Այս նախագծի նպատակն է օգտագործել MATLAB- ը, ինչպես նաև փոփոխված iRobot ծրագրավորվող ռոբոտը: Մեր խումբը համատեղեց մեր կոդավորման հմտությունները `ստեղծելու համար MATLAB սցենար, որն օգտագործում է iRobot- ի բազմաթիվ գործառույթներ, ներառյալ ժայռերի տվիչները, բամպերի զգայունությունը
Roomba MATLAB նախագիծ ՝ 5 քայլ
Roomba MATLAB նախագիծ. NASA- ի մարսագնացը ներկայիս ծրագիրը նախատեսում է, որ այն լինի տվյալների հավաքող և շրջի Մարսի շուրջը ՝ հավաքելով հողի նմուշներ Երկիր վերադարձնելու համար, որպեսզի գիտնականները տեսնեն, թե արդյոք նախկինում կյանքի ձևեր կային, թե ոչ: մոլորակը: Լրացուցիչ
Roomblock: ROS նավարկություն սովորելու հարթակ Roomba- ով, Raspberry Pi- ով և RPLIDAR- ով. 9 քայլ (նկարներով)
Roomblock: ROM նավարկություն սովորելու հարթակ Roomba- ով, Raspberry Pi- ով և RPLIDAR- ով. Ի՞նչ է սա: " Roomblock " ռոբոտային հարթակ է, որը բաղկացած է Roomba- ից, Raspberry Pi 2 -ից, լազերային սենսորից (RPLIDAR) և շարժական մարտկոցից: Մոնտաժման շրջանակը կարող է պատրաստվել 3D տպիչների միջոցով: ROS նավիգացիոն համակարգը հնարավորություն է տալիս կազմել սենյակների քարտեզ և օգտագործել
ROOMBA, որը վարում է ARDUINO YUN- ը Wifi հավելվածի միջոցով ՝ STEFANO DALL'OLIO. 4 քայլ (նկարներով)
ROOMBA- ն առաջնորդվում է ARDUINO YUN- ի միջոցով `STEFANO DALL'OLIO- ի միջոցով. Այս ուղեցույցով ես կիսում եմ ARDUINO YUN- ին Roomba- ին միացնելու ծածկագիրը, որպեսզի Roomba- ն Wifi- ով վարվի: Կոդն ու ծրագիրը ամբողջությամբ ստեղծվել և մշակվել է իմ կողմից` Ստեֆանո Դալլ » Olio. Իմ Roomba- ն Roomba 620 է, բայց կարող եք օգտագործել նույն ծածկագիրը մյուս Roomb- ի համար