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

MATLAB վերահսկվող Roomba: 5 քայլ
MATLAB վերահսկվող Roomba: 5 քայլ

Video: MATLAB վերահսկվող Roomba: 5 քայլ

Video: MATLAB վերահսկվող Roomba: 5 քայլ
Video: ЭКСКЛЮЗИВ! Идет охота на «криминальных генералов» 2024, Հուլիսի
Anonim
MATLAB վերահսկվող Roomba
MATLAB վերահսկվող Roomba
MATLAB վերահսկվող Roomba
MATLAB վերահսկվող Roomba

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

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

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

MATLAB 2018 ա

-MATLAB- ի 2018 -ի տարբերակը առավել նախընտրելի տարբերակն է, հիմնականում այն պատճառով, որ այն լավագույնս աշխատում է բջջային սարքին միացվող կոդի հետ: Այնուամենայնիվ, մեր ծածկագրի մեծ մասը կարող է մեկնաբանվել MATLAB- ի տարբերակների մեծամասնությունում:

iRobot Ստեղծեք սարք

-Այս սարքը հատուկ պատրաստված սարք է, որի միակ նպատակը ծրագրավորումը և ծածկագրումն է: (Դա իրական վակուում չէ)

Raspberry Pi (տեսախցիկով)

- Սա ոչ թանկարժեք համակարգչային տախտակ է, որն աշխատում է որպես iRobot- ի ուղեղ: Այն կարող է փոքր լինել, բայց ունակ է շատ բանի: Տեսախցիկը լրացուցիչ հավելում է: Այն նաև օգտագործում է ազնվամորու pi- ն ՝ իր բոլոր գործառույթներն ու հրամանները ստանալու համար: Վերևում պատկերված տեսախցիկը տեղադրված է 3D տպագիր տակդիրի վրա, որը ստեղծվել է Թենեսիի համալսարանի Engineering Fundamentals բաժինների կողմից

Քայլ 2: Roomba տվյալների շտեմարանի ֆայլ

Roomba տվյալների շտեմարանի ֆայլ
Roomba տվյալների շտեմարանի ֆայլ

Կա հիմնական ֆայլ, որն անհրաժեշտ կլինի ձեր սենյակի համար համապատասխան գործառույթներ և հրամաններ օգտագործելու համար: Այս ֆայլը հենց այնտեղ է, որտեղ դուք գրել եք կոդը, որտեղից ստացվում են գործառույթներ `ձեր սենյակի գործարկումը ավելի կառավարելի դարձնելու համար:

Դուք կարող եք ներբեռնել ֆայլը այս հղումով կամ ներքևում ներբեռնվող ֆայլով

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Քայլ 3: Միացում Roomba- ին

Նախ, դուք պետք է համոզվեք, որ ձեր ռոբոտը միացված է ձեր ազնվամորի պի տախտակին `օգտագործելով միկրո USB վարդակից: Այնուհետեւ դուք պետք է պատշաճ կերպով միացրեք ձեր համակարգիչը եւ ռոբոտը նույն WiFi- ին: Երբ դա արվի, դուք կարող եք միացնել ձեր ռոբոտին և միանալ դրան ՝ օգտագործելով ռոբոտների տվյալների բազայի ֆայլում տրված հրամանը: (Միշտ դժվարությամբ վերականգեք ձեր ռոբոտը այն օգտագործելուց առաջ և հետո): Օրինակ, մենք օգտագործում ենք «r.roomba (19)» հրամանը ՝ մեր ռոբոտին միանալու համար ՝ մեր սարքին նշանակելով r փոփոխականը: Սա վերաբերում է տվյալների բազայի ֆայլին, որը ստեղծում է մեր փոփոխականը որպես կառույց, որին կարող ենք անդրադառնալ ցանկացած պահի:

Քայլ 4: Կոդ

Օրենսգիրքը
Օրենսգիրքը
Օրենսգիրքը
Օրենսգիրքը

Մենք ստորև կցել ենք ամբողջական ծածկագիրը, բայց ահա համառոտ ակնարկ, որն ընդգծում է մեր սցենարի կարևոր տարրերը: Մենք օգտագործեցինք բոլոր սենսորները, ինչպես նաև տեսախցիկը `մեր ռոբոտի ներուժը լիովին առավելագույնի հասցնելու համար: Մենք ներառեցինք նաև ծածկագիր, որը թույլ էր տալիս բջջային սարքը միացնել մեր ռոբոտին և օգտագործել դրա գրիոսկոպը `այն ձեռքով կառավարելու համար:

Սկսեցինք «r.setDriveVelocity (.06)» պարզ հրամանով, որը ռոբոտի առաջընթաց արագությունը սահմանում է.06 մ/վ: Սա պարզապես ռոբոտին նախապես շարժելու համար է:

Այնուհետև, մեր հիմնական սցենարը գործարկվում է միառժամանակ օղակով, որը վերցնում է տվյալ ռոբոտի տվյալները ՝ ստեղծելով կառույցներ, որոնք մենք կարող ենք հղում կատարել և օգտագործել ստորև բերված պայմանական հայտարարություններում ՝ այդպիսով թույլ տալով մեզ ասել, որ ռոբոտը կատարում է որոշակի հրաման ՝ կառուցվածքի տվյալների հիման վրա: ռոբոտը կարդում է իր տվիչներով: Մենք այն տեղադրեցինք այնպես, որ ռոբոտը կարդա իր ժայռի տվիչները և հետևի սև ճանապարհով:

իսկ ճշմարիտ % while loop- ը գնում է մինչև ինչ -որ «կեղծ» բան (այս դեպքում այն շարունակվում է անվերջ) data = r.getCliffSensors; data2 = r.getBumpers; % -ը անընդհատ առբերում է տվյալները ժայռերի տվիչների արժեքների վերաբերյալ և դրանք վերագրում է փոփոխական % img = r.getImage; % Նկարում է տեղադրված տեսախցիկից % պատկեր (img); % Shույց է տալիս այն պատկերը, որն արվել է % red_mean = միջին (միջին (միջին (img (:,:, 1))); % -ը շրջում է Roomba- ն մոտավորապես.2 աստիճան CW, երբ աջ առջևի ժայռի տվիչների արժեքը ընկնում է 2000 r.setDriveVelocity- ից (.05); elseif data.leftFront data.leftFront && 2000> data.rightF Front r.moveDistance (.1); % -ը Roomba- ին շարունակում է առաջ շարժվել մոտավորապես.2 մ/վ արագությամբ, եթե աջ և ձախ դիմային սենսորների երկու արժեքներն ընկնում են 2000 % r.turnAngle- ից (0); % -ը Roomba- ին ասում է, որ չշրջվի, եթե վերը նշված պայմանները համապատասխանում են իրականությանը

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Այս while օղակից հետո մենք մուտքագրում ենք մեկ այլ while հանգույց, որը խթանում է տեսախցիկի միջոցով ստացված տվյալները: Եվ մենք օգտագործում ենք if հայտարարություն այս while loop- ի ներսում, որը ճանաչում է պատկերը ՝ օգտագործելով հատուկ ծրագիր (alexnet), և այն նույնացնելուց հետո այն անմիջապես միացնում է բջջային սարքի հեռակառավարումը:

անետ = alexnet; % Վերագրում է alexnet խորը ուսուցում փոփոխականին իսկական % Infinite while loop img = r.getImage; img = պատկերացնել (img, [227, 227]); պիտակ = դասակարգել (anet, img); եթե պիտակ == "թղթե սրբիչ" || label == "սառնարան" label = "ջուր"; վերջի պատկերը (img); վերնագիր (նշան (պիտակ)); ոչ -ոքի;

While հանգույցը, որը թույլ է տալիս մեզ կառավարել սարքը մեր հեռախոսով, այդ տվյալները վերցնում է հեռախոսի գիրոսկոպից և մենք այն միացնում ենք այն մատրիցային, որը անընդհատ տվյալները համակարգչով հետ է փոխանցում MATLAB: Մենք օգտագործում ենք if հայտարարություն, որը կարդում է մատրիցայի տվյալները և տալիս ելք, որը շարժում է սարքը ՝ հիմնված հեռախոսի գիրոսկոպի որոշակի արժեքների վրա: Կարևոր է իմանալ, որ մենք օգտագործել ենք շարժական սարքի կողմնորոշման տվիչները: Վերոնշյալ մեկից երեք մատրիցան դասակարգվում է հեռախոսի կողմնորոշիչ տվիչների յուրաքանչյուր տարրի կողմից, որն է ազիմութը, սկիպիդարը և կողը: Եթե հայտարարությունները ստեղծեցին պայմաններ, որոնք նշում էին, երբ կողմը գերազանցում է 50 արժեքները կամ իջնում -50 -ից, ապա ռոբոտը որոշակի հեռավորություն է առաջ շարժում (դրական 50) կամ հետընթաց (բացասական 50): Եվ նույնը վերաբերում է սկիպիդար արժեքին: Եթե թեքության արժեքը գերազանցում է -25 -ից 25 -ի արժեքը, ռոբոտը շրջվում է 1 աստիճանի (դրական 25) կամ բացասական 1 աստիճանի (բացասական 25) անկյան տակ:

իսկական դադար (.1) % Դադար.5 վայրկյան առաջ յուրաքանչյուր արժեք վերցնելուց Controller = iphone. Orientation; % Վերագրում է iPhone- ի կողմնորոշման արժեքների մատրիցը Azimuthal = Controller (1); % Վերագրում է մատրիցի առաջին արժեքը փոփոխական Pitch = Controller (2); % Վերագրում է մատրիցի երկրորդ արժեքը փոփոխականին (թեքել առաջ և հետ, երբ iPhone- ը կողքից պահվում է) Կողք = Կառավարիչ (3); % Վերագրում է մատրիցի երրորդ արժեքը փոփոխականին (թեքություն դեպի ձախ և աջ, երբ iPhone- ը կողքի է պահվում) % առաջացնում է ելք ՝ ելնելով հեռախոսի կողմնորոշումից, եթե Side> 130 || Կողք 25 ռ. ՇարժումՀեռավորությունը (-. 1) % Տեղափոխում է Roomba- ն մոտավորապես.1 մետր, եթե iPhone- ը թեքված է առնվազն 25 աստիճանով դեպի հակառակ կողմ: թեքված է առնվազն 25 աստիճանով այլ կերպ < / b> <25 r.turnAngle (1) % Շրջում է Roomba- ն մոտավորապես 1 աստիճան CW, եթե iPhone- ը թեքված է առնվազն 25 աստիճանի ծայրով

Սրանք ընդամենը մեր ծածկագրի հիմնական հատվածների կարևորագույն կետերն են, որոնք մենք ներառել ենք, եթե ձեզ անհրաժեշտության դեպքում արագ պատճենել և տեղադրեք: Այնուամենայնիվ, անհրաժեշտության դեպքում մեր ամբողջ ծածկագիրը կցված է ստորև:

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

Այս կոդը, որը մենք գրել ենք, հատուկ նախագծված է մեր ռոբոտի, ինչպես նաև ծրագրի ընդհանուր տեսլականի համար: Մեր նպատակն էր օգտագործել MATLAB- ի կոդավորման մեր բոլոր հմտությունները `լավ դիզայնի սցենար ստեղծելու համար, որն օգտագործում է ռոբոտի հնարավորությունների մեծ մասը: Հեռախոսի վերահսկիչն օգտագործելն այնքան էլ դժվար չէ, որքան կարող եք մտածել, և մենք հույս ունենք, որ մեր ծածկագիրը կարող է օգնել ձեզ ավելի լավ հասկանալ iRobot- ի կոդավորման հիմքում ընկած հայեցակարգը:

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