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

Mars Roomba: 6 քայլ
Mars Roomba: 6 քայլ

Video: Mars Roomba: 6 քայլ

Video: Mars Roomba: 6 քայլ
Video: Rumor/Jeter 6 1/2 week old roomba ride2018 2024, Հուլիսի
Anonim
Mars Roomba
Mars Roomba

Այս Instructable- ը ձեզ կառաջնորդի Raspberry Pi- ով վերահսկվող Roomba վակուումային բոտը գործարկելու ուղղություններով: Օպերացիոն համակարգը, որը մենք օգտագործելու ենք, MATLAB- ի միջոցով է:

Քայլ 1: Պաշարներ

Այն, ինչ ձեզ հարկավոր է հավաքել այս նախագիծն իրականացնելու համար.

  • iRobot- ի Create2 Roomba փոշեկուլ բոտը
  • Ազնվամորի Պի
  • Raspberry Pi տեսախցիկ
  • MATLAB- ի վերջին տարբերակը
  • Roomba- ի տեղադրման գործիքների տուփը MATLAB- ի համար
  • MATLAB հավելված բջջային սարքի համար

Քայլ 2: Խնդրի հայտարարություն

Խնդրի հայտարարություն
Խնդրի հայտարարություն

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

Քայլ 3: Bluetooth հեռակառավարում

Bluetooth հեռակառավարում
Bluetooth հեռակառավարում

Այս սլայդը կանցնի կոդի միջոցով ՝ Roomba- ի շարժումը վերահսկելու համար ՝ օգտագործելով ձեր սմարթֆոնի սարքի Bluetooth հնարավորությունները: Սկսելու համար ներբեռնեք MATLAB հավելվածը ձեր սմարթֆոնին և մուտք գործեք ձեր Mathworks հաշիվ: Մուտք գործելուց հետո անցեք «ավելին», «կարգավորումներ» և միացեք ձեր համակարգչին ՝ օգտագործելով նրա IP հասցեն: Միանալուց հետո վերադառնաք «ավելին» և ընտրեք «տվիչներ»: Հպեք էկրանի վերին գործիքագոտու երրորդ սենսորին և կտտացրեք մեկնարկի վրա: Այժմ, ձեր սմարթֆոնը հեռակառավարիչ է:

Կոդը հետևյալն է.

մինչդեռ 0 == 0

դադար (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Սկիպիդար = PhoneData (2);

Կողք = PhoneData (3);

bumps = r.getBumpers;

եթե Կողմ> 80 || Կողմ <-80

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

r.epep ('C, E, G, C^, G, E, C')

ընդմիջում

elseif Կողք> 20 && Կողք <40

r.turnAngle (-5);

elseif Կողմ> 40

r.turnAngle (-25);

elseif Կողմ -40

r.turnAngle (5);

elseif Կողմ <-40

r.turnAngle (25);

վերջ

եթե Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

վերջ

վերջ

Քայլ 4: Ազդեցության ճանաչում

Ազդեցության ճանաչում
Ազդեցության ճանաչում

Մեկ այլ գործառույթ, որը մենք իրականացրեցինք, Roomba- ի ազդեցությունը օբյեկտի վրա հայտնաբերելն էր, այնուհետև ուղղել նրա ընթացիկ ուղին: Դա անելու համար մենք պետք է օգտագործեինք պայմանական պայմաններ բամպերի սենսորների ընթերցումներով ՝ որոշելու, թե արդյոք առարկան հարվածել է: Եթե ռոբոտը հարվածի օբյեկտին, այն հետ կքաշվի: Երբ որևէ տարր հարվածել է, հայտնվում է ընտրացանկ, որտեղ ցուցադրվում է «օֆ» բառը:

Կոդը ներկայացված է ստորև.

մինչդեռ 0 == 0

bumps = r.getBumpers;

r.setDriveVelocity (.1)

եթե bumps.left == 1

msgbox ('Օֆ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Օֆ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Օֆ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Օֆ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Օֆ!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

վերջ

վերջ

Քայլ 5: Կյանքի ճանաչում

Կյանքի ճանաչում
Կյանքի ճանաչում

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

Կոդը հետևյալն է.

t = 10;

i = 0;

իսկ t == 10

img = r.getImage; ցուցադրել (img)

դադար (0.167)

i = i + 1;

red_mean = միջին (միջին (միջին (img (:,:, 1)));

blue_mean = միջին (միջին (միջին (img (:,:, 3)));

green_mean = միջին (միջին (միջին (img (:,:, 2)));

սպիտակ_միջոց = (կապույտ_գույն + կանաչ_միջոց + կարմիր_միջոց) / 3; %-ը ցանկանում է, որ այս արժեքը մոտ 100 լինի

ինը_պլյուս_թեն = 21;

կանաչ_շեմ = 125;

կապույտ_շեմ = 130;

սպիտակ_շեմ = 124;

կարմիր_շեմ = 115;

իսկ ինը_պլյուս_թեն == 21 %կանաչ - կյանք

եթե green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('հնարավոր կյանքի աղբյուրը գտնված է, գտնվելու վայրը գծագրված');

դադար (2)

ջնջել (ա)

[y2, Fs2] = audioread ('z_speak2.wav');

ձայն (y2, Fs2)

դադար (2)

%գործարան = r.getImage; %imshow (գործարան);

%խնայողություն ('plant_img.mat', գործարան ');

%հողամասի գտնվելու վայրը կանաչ գույնով

i = 5;

ընդմիջում

ուրիշ

ինը_պլյուս_թեն = 19;

վերջ

վերջ

ինը_պլյուս_թեն = 21;

մինչդեռ ինը_պլյուս_թեն == 21 %կապույտ `մսեղեն

եթե blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox («ջրի աղբյուր է գտնվել, գտնվելու վայրը գծապատկերված է»);

դադար (2)

ջնջել (ա)

[y3, Fs3] = audioread ('z_speak3.wav');

ձայն (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%խնայողություն ('water_img.mat', woder)

%հողամասի գտնվելու վայրը կապույտ գույնով

i = 5;

ընդմիջում

ուրիշ

ինը_պլյուս_թեն = 19;

վերջ

վերջ

ինը_պլյուս_թեն = 21;

իսկ nine_plus_ten == 21 %սպիտակ - այլմոլորակայիններ monkaS

եթե white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = audioread ('z_speak5.wav');

ձայն (y5, Fs5);

դադար (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

ձայն (ys, Fss);

դադար (3)

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

% խորթ = r.getImage; %imshow (այլմոլորակային);

% խնայողություն ('alien_img.mat', այլմոլորակային);

i = 5;

ընդմիջում

ուրիշ

ինը_պլյուս_թեն = 19;

վերջ

վերջ

եթե ես == 5

a = 1; %պտտման անկյուն

t = 9; %դադարեցնել մեծ օղակը

i = 0;

վերջ

վերջ

Քայլ 6: Գործարկեք այն

Ամբողջ ծածկագիրը գրվելուց հետո այն միացրեք մեկ ֆայլի և voila- ի: Ձեր Roomba բոտը այժմ լիովին կգործի և կգործի այնպես, ինչպես գովազդվում է: Այնուամենայնիվ, Bluetooth- ի վերահսկիչը պետք է լինի կամ առանձին ֆայլում կամ անջատված լինի մնացած կոդից %% - ով:

Վայելեք ձեր ռոբոտի օգտագործումը !!

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