Բովանդակություն:
Video: Mars Roomba Project UTK: 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
ՀՐԱՊԱՐԱԿՈ:ԹՅՈՆ. ՍԱ ՄԻԱՅՆ ԿՇԱՌԵԼ, ԵԹԵ ՌՈMՄԲԱԸ ՄԵԿՆԱՐԿՎԵԼ Ա
ՇԱՏ ՀԱՏՈAYԿ AYԱՆԱՊԱՐՀ, ԱՅՍ ՈSTRՍՈԻՉԸ ՍՏԵՎԵԼ Է ԵՎ ՄՏԱՎԵԼ Է ՕԳՏԱԳՈՐՎԵԼ ՏԵՆԵՍԻԱՅԻ ՈՍԱՆՈՆԵՐԻ ԵՎ ՖԱԿՈTԼՏԵՏԻ ՀԱՄԱԼՍԱՐԱՆՈՄ:
Այս կոդը օգտագործվում է Roomba- ի ստեղծման համար `MATLAB- ում տեղական գրված և պահպանված ծածկագիրը գործարկելու համար: Սա չի աշխատի, եթե չկարողանաք ստանալ անհրաժեշտ գրադարաններ Թենեսիի համալսարանի կայքից: Եթե ունեք գրադարաններ, ապա կարող եք դրանք օգտագործել `ձեր սեփական Roomba- ն ծրագրավորելու համար` օգտագործելով գրադարանի գործառույթները: Այս Instructable- ը սովորեցնում է ձեզ, թե ինչպես տեղադրել գրադարանները, ստեղծել թղթապանակ բոլոր ծածկագրերի համար և ինչպես կոդավորել և օգտագործել մեր ներքևում տրված ծրագիրը:
Պահանջվող նյութեր.
· Ռոմեբա
· MATLAB
· Ազնվամորի Պի և Պի տեսախցիկ
Քայլ 1: Գրադարանների ձեռքբերում
Ինժեներական կայքում կա գործիքատուփ/գրադարան, ներբեռնեք և տեղադրեք նոր թղթապանակի մեջ: Այս թղթապանակը պետք է պարունակի նախագծի աշխատանքի բոլոր ֆայլերը, քանի որ ձեր պատրաստած ծրագրում օգտագործվող ցանկացած գործառույթ պետք է հղում կատարի գրադարանին: Դա անելուց հետո կարող եք սկսել աշխատել ձեր ծրագրերի վրա
Քայլ 2: Writրագրերի գրառում
Կան բավականին շատ գործառույթներ, որոնք կարող են օգտագործվել ծրագրում, այդ գործառույթներին կարելի է հասնել ՝ օգտագործելով «doc roomba» հրամանը: Օգտագործելով այս գործառույթները, դուք կարող եք վերահսկել ձեր Roomba- ն շատ տարբեր եղանակներով: Ստորև բերված ծածկագիրը մարսագնաց ստեղծելու համար տարբեր եղանակներով օգտագործում է հարվածի սենսորներ, լուսադիոդային սենսորներ, տեսախցիկ և ժայռերի տվիչներ: Մենք հարվածների սենսորների միջոցով հայտնաբերեցինք, թե երբ Roomba- ն հարվածում է ինչ -որ առարկայի, երբ դա տեղի ունենա, ռոբոտը կվերադառնա, կշրջվի և կշարունակի շարժվել: Մինչև Roomba- ն հարվածում է որևէ առարկայի, լուսային սանդղակը կբացահայտի օբյեկտը և կդանդաղեցնի Roomba- ն, այնպես որ երբ այն բախվի առարկայի հետ ՝ հարվածի սենսորը ակտիվացնելու համար, Roomba- ն ավելի քիչ կվնասվի/կազդի ազդեցությունից: Տեսախցիկը մակերեսին ջուր կամ լավա է փնտրում, եթե հեղուկ չգտնվի, ապա ռոբոտը կշարունակի որոնումները, եթե ջուր գտնվի, ապա ռոբոտը օպերատորներին կուղարկի հաղորդագրություն: Clայռի տվիչները նախատեսված են ռոբոտին կանգնեցնելու համար, եթե այն մոտենա ժայռին: Եթե ռոբոտը զգում է ժայռի ժայռը, այն կշրջվի և կշրջվի, որպեսզի չընկնի:
Քայլ 3: Կոդ
Պատճենեք և տեղադրեք այն MATLAB ֆայլում, որը գտնվում է գրադարանների հետ նույն թղթապանակում
functionMainRoombaFile (r)
r.setDriveVelocity (0.1, 0.1)
իսկ ճշմարիտ % Infinte while loop ՝ ծածկագիրը գործարկելու համար
dontFall = cliffCheck (r) % «cliffCheck» գործառույթին նշանակում է «dontFall» փոփոխական
if dontFall % if «cliffCheck» - ի ավարտից հետո կոդով շարունակելու մասին հայտարարությունը
r.setDriveVelocity (0.1, 0.1) % Շարունակում է Roomba- ն շարժվել «cliffCheck» - ի ավարտից հետո
end % ավարտում է «dontFall» if հայտարարությունը
bumper = bumpcheck (r) % Վերագրում է «bumper» փոփոխականին «bumpcheck» գործառույթին
եթե բամպեր % if «bumpcheck» - ից հետո կոդով անցնելու մասին հայտարարությունը ավարտված է
r.setDriveVelocity (0.1, 0.1) % Շարունակում է Roomba- ն շարժվել «bumpcheck» - ի ավարտից հետո
end % ավարտում է «բամպերը» if հայտարարությունը
հեղուկներ = LiquidCheck (r) % Վերագրում է փոփոխական «հեղուկներ» «LiquidCheck» գործառույթին
եթե հեղուկներ % if հայտարարությունը «LiquidCheck» - ի ավարտից հետո կոդով անցնելու մասին
r.setDriveVelocity (0.1, 0.1) % Շարունակում է Roomba- ն շարժվել «LiquidCheck» - ի ավարտից հետո
վերջ % ավարտում է «հեղուկները», եթե հայտարարությունը
lightbumper = lightcheck (r) % Վերագրում է «lightbumper» փոփոխականին «lightcheck» գործառույթին
դադար (0.1) % Կարճ դադար `օղակի շարունակական կրկնությունից խուսափելու համար
end % ավարտվում է անվերջ, իսկ հանգույցը
end % ավարտի գործառույթը
գործառույթը bumper = bumpcheck (r) % Ստեղծում է «bumpcheck» գործառույթ
bumpdata = r.getBumpers % Հանձնարարում է բոլոր տվյալները բամպերից «bumpdata» փոփոխականին
բամպեր = bumpdata.right || bumpdata.left || bumpdata.front % Ստեղծում է պահված փոփոխական ՝ «բամպեր», տարբեր բամպերների համար
եթե bumpdata.right> 0 % Եթե հայտարարությունը առաջացնի սենյակի տարբեր գործառույթներ, եթե բամպերը բախվի
r.stop % Կանգնում է Roomba- ին
r.moveDistance (-0.3, 0.2) % Հակադարձում է Roomba 0.3 մ
r.turnAngle (90, 0.5) % Հնարավորինս արագ պտտում է Roomba- ն 90 աստիճանով
վերջ
եթե bumpdata.front> 0
ռ. դադարեցնել
r.moveDistance (-0.3, 0.2)
r.turnAngle (randi (270), 0.5) % Պտտում է Roomba- ն 0 -ից 270 աստիճանի միջև հնարավորինս արագ
վերջ
եթե bumpdata.left> 0
ռ. դադարեցնել
r.moveDistance (-0.3, 0.2)
r.turnAngle (-90, 0.5) % Հնարավորինս արագ պտտում է Roomba -90 աստիճանով
վերջ
վերջ
գործառույթը lightbumper = lightcheck (r) % Ստեղծում է «lightcheck» գործառույթ
lightdata = r.getLightBumpers % Վերագրում է բոլոր տվյալները լուսային հարվածի սենսորից փոփոխական «lightdata» - ին
lightbumper = lightdata.left || lightdata.right || lightdata.rightCenter || lightdata.leftCenter % Ստեղծում է պահվող փոփոխական ՝ «lightbumper» ՝ տարբեր լուսային բամպերների համար
if lightbumper % If հայտարարություն ՝ վերևից զանգահարելու համար lightbumper- ի տվյալները
եթե lightdata.left> 10 % Եթե հայտարարությունը առաջացնում է սենյակի տարբեր գործառույթներ, եթե լույսի բամպերը զգում է 10 -ից մեծ արժեքներ
r.setDriveVelocity (0.05, 0.05) % Դանդաղեցնում է roomba- ն ՝ հարվածի պատրաստվելու համար
end % ավարտում է սկզբնական if հայտարարությունը
եթե lightdata.rightCenter> 10
r.setDriveVelocity (0.05, 0.05)
վերջ
եթե lightdata.right> 10
r.setDriveVelocity (0.05, 0.05)
վերջ
եթե lightdata.leftCenter> 10
r.setDriveVelocity (0.05, 0.05)
վերջ
end % ավարտում է «lightbumper» if հայտարարությունը
end %ավարտում է lightcheck գործառույթը
գործառույթը dontFall = cliffCheck (r) % Ստեղծում է «cliffCheck» գործառույթը
տվյալներ = r.getCliffSensors; % Iffայռի սենսորից բոլոր տվյալները վերագրում է փոփոխական «տվյալներին»
dontFall = data.left <1020 || data.left Առաջինը <1020 || data.rightF Front <1020 || data.right <1020 % Ստեղծում է պահվող փոփոխական ՝ «dontFall», տարբեր ժայռերի տվիչների համար
if dontFall % If հայտարարություն `զանգահարելու ժայռի տվիչի տվյալները վերևից
եթե տվյալները. ձախ <1010 % Եթե հայտարարությունը առաջացնում է սենյակի տարբեր գործառույթներ, եթե ժայռի սենսորը զգում է 1010 -ից պակաս արժեքներ
ռ. դադարեցնել
r.moveDistance (-0.2, 0.2) % Հակադարձում է Roomba 0.2 մ
r.turnAngle (-90, 0.5) % Հնարավորինս արագ պտտում է Roomba -90 աստիճանով
elseif data.left Առաջինը <1010
ռ. դադարեցնել
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Հնարավորինս արագ պտտում է Roomba- ն 90 աստիճանով
elseif data.rightF Front <1010
ռ. դադարեցնել
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Հնարավորինս արագ պտտում է Roomba- ն 90 աստիճանով
elseif data.right <1010
ռ. դադարեցնել
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Հնարավորինս արագ պտտում է Roomba- ն 90 աստիճանով
վերջ
վերջ
վերջ
գործառույթ հեղուկներ = LiquidCheck (r) % Ստեղծում է «LiquidCheck» գործառույթը
իսկ ճշմարիտ %-ը սկսում է անվերջ հանգույց ՝ չափագրման համար
img = r.getImage; % -ը կարդում է ռոբոտի տեսախցիկը
image (img) % -ը ցույց է տալիս պատկերը պատկերի պատուհանում
red_mean = միջին (միջին (միջին (img (200, 150, 1))))% -ը կարդում է կարմիր պիքսելների միջին քանակը
blue_mean = միջին (միջին (միջին (img (200, 150, 3))))% -ը կարդում է կապույտ պիքսելների միջին քանակը
հեղուկներ = կարմիր_միջոց || blue_mean % Ստեղծում է պահվող փոփոխական ՝ «հեղուկներ» ՝ տարբեր գույնի փոփոխականների համար
եթե հեղուկներ % If հայտարարություն, որը կոչում է պատկերի տվյալները վերևից
եթե red_mean> 170 % Եթե հայտարարությունը առաջացնում է սենյակի տարբեր գործառույթներ, եթե տեսախցիկը տեսնում է 170 -ից ավելի միջին կարմիր գույն
r.stop % կանգնում է roomba- ին
r.setLEDCenterColor (255) % -ը շրջան է դնում կարմիր գույնի
r.setLEDDigits (); % մաքրել էկրանը
f = սպասման վահանակ (0, '*ՄՈCOՏՔԻ ՀՈESSՅՍԸ' '); % -ը ստեղծում է հաղորդագրության բեռնման սպասման տող
r.setLEDDigits ('HOT'); % -ը LED էկրանը դնում է «HOT» ելքի վրա
դադար (0,5) %Համառոտ Դադարեցվել տեղեկատվությունը կարդալու համար
r.setLEDDigits («LAVA»); % -ը LED էկրան է դնում «LAVA» ելքի վրա
դադար (0.5)
սպասասեղան (.33, f, '*ՄՈCOՏՔԻ ՈESSԵՐՁ*'); %-ը ստեղծում է սպասման տողի աճ
r.setLEDDigits ('HOT');
դադար (0.5)
r.setLEDDigits («LAVA»);
դադար (0.5)
սպասասեղան (.67, f, '*ՄՈCOՏՔԻ ՈESSԵՐՁ*'); % -ը ստեղծում է սպասման տողի աճ
r.setLEDDigits ('HOT');
դադար (0.5)
r.setLEDDigits («LAVA»);
սպասասեղան (1, զ, '*ՄՈCOՏՔԻ ՀՈESSՅՍԸ'); %-ը լրացնում է սպասասեղանը
դադար (1)
փակել (զ) %փակում է սպասասեղանը
r.setLEDDigits (); % մաքրում է LED էկրանը
փակել բոլորը %Փակում է բոլոր նախորդ պատուհանները
առանցքներ («Գույն», «ոչ», «XColor», «ոչ», «YColor», «ոչ») % Մաքրում է առանցքների և գծապատկերի գծապատկերի պատուհանը
y = 0.5; % -ը սահմանում է տեքստի y- դիրքը գծապատկերման պատուհանում
x = 0.06; % -ը սահմանում է տեքստի x- դիրքը գծապատկերման պատուհանում
վերնագիր ('MARS ROOMBA- ից', 'fontsize', 32) % Ավելացնում է վերնագիր գծագրման պատուհանում
quadeqtxt = 'ՎՏԱՆԳԱՎՈՐ ԼԱՎԱ'; % «Quadeqtxt» փոփոխականը դնում է 0 ելքի վրա
տեքստ (x, y, quadeqtxt, 'interpreter', 'latex', 'fontsize', 36); % -ը ցուցադրում է քառակուսի տեքստը գծագրման պատուհանում
r.moveDistance (-0.2, 0.2) %-ը շրջում է սենյակը 0.2 մ
r.turnAngle (180, 0.5) %-ը հնարավորինս արագ պտտում է սենյակը 180 աստիճանով
r.setLEDCenterColor (128, 128); % -ը roomba կենտրոնի LED- ն սահմանում է նարնջագույն
փակել բոլոր %-ը փակում է մնացած բաց պատուհանները
elseif blue_mean> 175 % Եթե հայտարարությունը առաջացնում է սենյակի տարբեր գործառույթներ, եթե տեսախցիկը տեսնում է 175 -ից մեծ միջին կապույտ գույն
r.stop % կանգնում է roomba- ին
r.setLEDCenterColor (255) % -ը շրջան է դնում կարմիր գույնի
r.setLEDDigits (); % մաքրել էկրանը
f = սպասման վահանակ (0, '*ՄՈCOՏՔԻ ՀՈESSՅՍԸ' '); % -ը ստեղծում է հաղորդագրության բեռնման սպասման տող
r.setLEDDigits ('ՆԱՅԵԼ'); % -ը LED էկրանը դնում է «LOOK» ելքի վրա
դադար (0.5) %Համառոտ Դադարեցվել տեղեկատվության ընթերցումը
r.setLEDDigits ('WATR'); % -ը LED էկրանը դնում է «WATR» ելքի վրա
դադար (0.5)
սպասասեղան (.33, f, '*ՄՈCOՏՔԻ ՈESSԵՐՁ*'); %-ը ստեղծում է սպասման տողի աճ
r.setLEDDigits ('ՆԱՅԵԼ');
դադար (0.5)
r.setLEDDigits ('WATR');
դադար (0.5)
սպասասեղան (.67, f, '*ՄՈCOՏՔԻ ՈESSԵՐՁ*'); % -ը ստեղծում է սպասման տողի աճ
r.setLEDDigits ('ՆԱՅԵԼ');
դադար (0.5)
r.setLEDDigits ('WATR');
սպասասեղան (1, զ, '*ՄՈCOՏՔԻ ՀՈESSՅՍԸ'); %-ը լրացնում է սպասասեղանը
դադար (1)
փակել (զ) %փակում է սպասասեղանը
r.setLEDDigits (); % մաքրում է LED էկրանը
փակել բոլորը %Փակում է բոլոր նախորդ պատուհանները
առանցքներ («Գույն», «ոչ», «XColor», «ոչ», «YColor», «ոչ») % Մաքրում է առանցքների և գծապատկերի գծապատկերի պատուհանը
y = 0.5; % -ը սահմանում է տեքստի y- դիրքը գծապատկերման պատուհանում
x = 0,06; % -ը սահմանում է տեքստի x- դիրքը գծապատկերման պատուհանում
վերնագիր ('MARS ROOMBA- ից', 'fontsize', 32) % Ավելացնում է վերնագիր գծագրման պատուհանում
quadeqtxt = 'Գտնված ջուր'; % «Quadeqtxt» փոփոխականը դնում է 0 ելքի վրա
տեքստ (x, y, quadeqtxt, 'interpreter', 'latex', 'fontsize', 36); % -ը ցուցադրում է քառակուսի տեքստը գծագրման պատուհանում
r.moveDistance (-0.2, 0.2) %-ը շրջում է սենյակը 0.2 մ
r.turnAngle (180, 0.5) %-ը հնարավորինս արագ պտտում է սենյակը 180 աստիճանով
r.setLEDCenterColor (128, 128); % -ը roomba կենտրոնի LED- ն սահմանում է նարնջագույն
փակել բոլոր %-ը փակում է մնացած բաց պատուհանները
end %ավարտվում է 'red_mean' if հայտարարությունը
վերջ %ավարտում է «հեղուկները», եթե հայտարարությունը
end % -ը փակում է անվերջ, իսկ loop- ը
end % ավարտում է գործառույթը 'LiquidCheck'
Քայլ 4: Գործարկեք ծածկագիրը
MATLAB կոդը պատճենելուց և տեղադրելուց հետո դուք պետք է միանաք Roomba- ին: Երբ Roomba- ն միացված է, դուք պետք է անվանեք r փոփոխականը: Ֆունկցիաներն օգտագործում են r փոփոխականը Roomba- ին անդրադառնալիս, ուստի Roomba- ն պետք է սահմանվի որպես r փոփոխական: Կոդը գործարկելուց հետո Roomba- ն պետք է աշխատի ըստ ցուցումների:
Խորհուրդ ենք տալիս:
Ձեր սենյակը վերածեք Mars Rover- ի ՝ 5 քայլ
Ձեր Roomba- ն վերածելով Mars Rover- ի
Robot Project UTK 2017: 3 քայլ
Robot Project UTK 2017. Առաքելություն. Մեր ինժեներների թիմը վարձվել է Froogle- ի կողմից, որը բաց կոդով տեխնոլոգիաների զարգացման ոչ առևտրային հիմնադրամ է, մշակելու համար նորարական Մարդկային օժանդակող Mars Rover- ը:-Out թիմեր " rover " սա մի սենյակ է, որը մենք կոդավորեցինք ՝ մի շարք
Mars Rover- ը օգտագործելով Raspberry Pi: 5 քայլ
Mars Rover- ը ՝ օգտագործելով Raspberry Pi- ն: Ես նաև ուզում եմ ինչ -որ բան ուսումնասիրել ՝ նստելով իմ նոութբուքի վրա: Այսպիսով, ես հիմա հասկացա, որ դա պատրաստելու ճիշտ ժամանակն է և
Mars Roomba: 6 քայլ
Mars Roomba. Այս հրահանգը կառաջնորդի ձեզ Raspberry Pi- ի կողմից վերահսկվող Roomba վակուումային բոտը գործարկելու ուղղություններով: Օպերացիոն համակարգը, որը մենք օգտագործելու ենք, MATLAB- ի միջոցով է
UTK EF 230 MarsRoomba Project Fall 2018: 5 քայլ
UTK EF 230 MarsRoomba Project Fall 2018. Ներկայումս մարսագնացները օգտագործվում են տարբեր մեթոդների միջոցով տվյալների հավաքման համար Մարսի մակերևույթի վրա ՝ վերջնականապես ավարտելով մանրէաբանական կյանքի մոլորակի հնարավորությունների մասին ավելին իմանալը: Ռովերները հիմնականում օգտագործում են լուսանկարչության և հողի վերլուծության գործիքներ տվյալների գրաֆիկի համար