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

Կառուցեք ձեր սեփական Turtlebot ռոբոտը: 7 քայլ
Կառուցեք ձեր սեփական Turtlebot ռոբոտը: 7 քայլ

Video: Կառուցեք ձեր սեփական Turtlebot ռոբոտը: 7 քայլ

Video: Կառուցեք ձեր սեփական Turtlebot ռոբոտը: 7 քայլ
Video: Կառուցեք ձեր սեփական բիզնեսը։ Բիզնեսի հաջողության յոթ սկզբունքները 2024, Հուլիսի
Anonim
Կառուցեք ձեր սեփական Turtlebot ռոբոտը
Կառուցեք ձեր սեփական Turtlebot ռոբոտը
Կառուցեք ձեր սեփական Turtlebot ռոբոտը
Կառուցեք ձեր սեփական Turtlebot ռոբոտը
Կառուցեք ձեր սեփական Turtlebot ռոբոտը
Կառուցեք ձեր սեփական Turtlebot ռոբոտը

Խմբագրել

Softwareրագրային ապահովման և կառավարման վերաբերյալ լրացուցիչ տեղեկությունները հասանելի են այս հղումով.

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Կոդի ուղիղ հղումը հետևյալն է.

github.com/MattMgn/foxbot_core

Ինչու՞ այս նախագիծը:

Turtlebot 3 -ը կատարյալ հարթակ է էլեկտրոնիկայի, ռոբոտաշինության և նույնիսկ արհեստական ինտելեկտի մեջ խորանալու համար: Ես առաջարկում եմ ձեզ կառուցել ձեր սեփական turtlebot- ը քայլ առ քայլ մատչելի բաղադրիչներով ՝ առանց զոհաբերելու հատկություններն ու կատարումը: Մի բան նկատի ունենալով. Սկզբնական ռոբոտից լավագույնը պահելը, դրա մոդուլյարությունը, պարզությունը և բաց կոդով ինքնավար նավարկության և AI- ի փաթեթների հսկայական քանակը:

Այս նախագիծը հնարավորություն է տալիս սկսնակների համար ձեռք բերել էլեկտրոնիկայի, մեխանիկայի և համակարգչային գիտությունների հասկացություններ, իսկ ավելի փորձառուների համար ստանալ հզոր արհեստական բանականության ալգորիթմներ փորձարկելու և մշակելու հզոր հարթակ:

Ի՞նչ կբացահայտեք այս նախագծում:

Դուք պատրաստվում եք պարզել, թե որ հիմնական մեխանիկական և էլեկտրոնային մասերը պետք է պահվեն սկզբնական բոտից `ամբողջական համատեղելիությունը երաշխավորելու համար:

Կառուցման ամբողջ գործընթացը մանրամասն կլինի ՝ անցնելով 3D մասերի տպագրությունից, հավաքումից և մի քանի բաղադրիչներից, էլեկտրոնիկայի եռակցումից և ինտեգրումից մինչև վերջապես Arduino- ի ծածկագրերի կազմումը: Այս ուսանելի նյութը կավարտվի «բարև աշխարհ» օրինակով ՝ ձեզ ROS- ին ծանոթացնելու համար: Եթե ինչ -որ բան անհասկանալի է թվում, ազատ զգացեք հարց տալու:

Պարագաներ

Էլեկտրոնիկա:

1 x Single Board համակարգիչ ՝ ROS- ով աշխատելու համար, կարող է լինել Raspberry Pi կամ Jetson Nano, օրինակ

1 x Arduino PUE- ով, կարող եք նաև օգտագործել UNO կամ MEGA

1 x պրոտո-տախտակ, որը համապատասխանում է Arduino DUE- ի փին-աութին, հասանելի է այստեղ

2 x 12V DC շարժիչներ ՝ կոդավորիչներով (100 RPM տարբերակ)

1 x L298N շարժիչի վարորդ

2 x 5V կարգավորիչ

1 x մարտկոց (օրինակ ՝ 3S/4S LiPo մարտկոց)

2 x ON/OFF անջատիչ

2 x LED

2 x 470kOhm դիմադրիչներ

3 x 4 կապում JST միակցիչներ

1 x USB մալուխ (առնվազն մեկը SBC- ի և Arduino- ի միջև)

Սենսորներ:

1 x Ընթացիկ տվիչ (ըստ ցանկության)

Ազատության 1 x 9 աստիճան IMU (ըստ ցանկության)

1 x LIDAR (ըստ ցանկության)

Շասսի:

16 x Turtlebot մոդուլային ափսեներ (որոնք կարող են նաև 3D տպվել)

2 x Անիվներ 65 մմ տրամագծով (6 մմ լայնության տարբերակ)

4 x նեյլոնե բացիչներ 30 մմ (ըստ ցանկության)

20 x M3 ներդիրներ (ըստ ցանկության)

Մյուսները:

Լարերը

M2.5 և M3 պտուտակներ և ներդիրներ

3D տպիչ կամ մեկը, ով կարող է տպել դրա համար նախատեսված մասերը

Ձեռքի գայլիկոն ՝ հավաքածուի նման, նման փորվածքներով

Քայլ 1: Նկարագրություն

Նկարագրություն
Նկարագրություն
Նկարագրություն
Նկարագրություն

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

Ստորին շերտ

վերին շերտ. «բարձր մակարդակի» էլեկտրոնային համակարգով, մասնավորապես `մեկ տախտակի համակարգչով և LIDAR- ով

Այդ շերտերը կապված են տպագիր մասերի և պտուտակների հետ `կառուցվածքի ամրությունն ապահովելու համար:

Էլեկտրոնային սխեմատիկ

Սխեման կարող է մի փոքր խառնաշփոթ թվալ: Դա սխեմատիկ նկար է և չի ներկայացնում բոլոր լարերը, միակցիչները և նախատախտակը, բայց այն կարելի է կարդալ հետևյալ կերպ.

3S Litihum Ion Polymer մարտկոցը ՝ 3000 մԱ / ժ հզորությամբ, հզորացնում է առաջին միացումը, այն սնուցում է ինչպես շարժիչի կառավարման տախտակը (L298N), այնպես էլ շարժիչի կոդավորիչների և Arduino- ի առաջին 5 Վ կարգավորիչը: Այս միացումը միացված է LED- ով անջատիչի միջոցով, որը ցույց է տալիս իր ON/OFF վիճակը:

Նույն մարտկոցը սնուցում է երկրորդ միացումը, մուտքային լարումը փոխակերպվում է 5 Վ -ի, որպեսզի սնուցի մեկ տախտակի համակարգիչը: Այստեղ նույնպես միացումը միացված է անջատիչի և LED- ի միջոցով:

Լրացուցիչ սենսորներ, ինչպիսիք են LIDAR- ը կամ տեսախցիկը, կարող են անմիջապես ավելացվել Raspberry Pi- ի վրա USB- ի կամ CSI պորտի միջոցով:

Մեխանիկական դիզայն

Ռոբոտի շրջանակը բաղկացած է 16 նույնական մասերից, որոնք կազմել են 2 քառակուսի շերտ (28 սմ լայնություն): Բազմաթիվ անցքեր թույլ են տալիս տեղադրել լրացուցիչ մասեր այնտեղ, որտեղ դրա կարիքը կա և առաջարկում են ամբողջական մոդուլային դիզայն: Այս նախագծի համար ես որոշեցի ձեռք բերել TurtleBot3- ի բնօրինակ ափսեներ, բայց դրանք կարող եք նաև 3D տպել, քանի որ դրանց դիզայնը բաց կոդ է:

Քայլ 2. Շարժիչային բլոկի հավաքում

Շարժիչային բլոկի հավաքում
Շարժիչային բլոկի հավաքում
Շարժիչային բլոկի հավաքում
Շարժիչային բլոկի հավաքում
Շարժիչային բլոկի հավաքում
Շարժիչային բլոկի հավաքում

Շարժիչի պատրաստում

Առաջին քայլը յուրաքանչյուր շարժիչի շուրջ ավելացնել 1 մմ հաստությամբ փրփուր ժապավեն `թրթռանքներից և աղմուկից խուսափելու համար, երբ շարժիչը պտտվում է:

Տպագիր մասեր

Շարժիչի բռնիչը հանգեցնում է երկու մասի, որոնք շարժիչի պես բռնում են շարժիչը: 4 պտուտակ, որը ձեռք է բերվում շարժիչը բռնակի մեջ սեղմելու համար:

Յուրաքանչյուր պահիչ բաղկացած է մի քանի անցքերից, որոնք ընդունում են M3 ներդիրները, որոնք պետք է տեղադրվեն կառույցի վրա: Կան ավելի շատ անցքեր, քան իրականում անհրաժեշտ էին, լրացուցիչ անցքերն ի վերջո կարող են օգտագործվել լրացուցիչ մաս տեղադրելու համար:

3D տպիչի կարգավորումներ. Բոլոր մասերը տպվում են հետևյալ պարամետրերով

  • 0.4 մմ տրամագծով վարդակ
  • 15% նյութի լցնում
  • 0,2 մմ բարձրության շերտ

Անիվ

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

Ֆիքսացիա

Ավարտելով մեկ շարժիչ բլոկը, կրկնում ենք նախորդ գործողությունները, այնուհետև դրանք ուղղակի ամրացնում շերտի մեջ M3 պտուտակներով:

Քայլ 3: Անջատիչներ և մալուխի պատրաստում

Անջատիչներ և մալուխի պատրաստում
Անջատիչներ և մալուխի պատրաստում
Անջատիչներ և մալուխի պատրաստում
Անջատիչներ և մալուխի պատրաստում
Անջատիչներ և մալուխի պատրաստում
Անջատիչներ և մալուխի պատրաստում

Շարժիչային մալուխի պատրաստում

Սովորաբար, շարժիչ-կոդավորիչը գալիս է մալուխով, որը մի կողմից ներառում է 6 պին միակցիչ, որը միացնում է ծածկագրիչի PCB- ի հետևը, իսկ մյուս կողմից `մերկ լարերը:

Դուք հնարավորություն ունեք դրանք ուղղակիորեն զոդել ձեր նախատախտակին կամ նույնիսկ ձեր Arduino- ին, բայց ես խորհուրդ եմ տալիս փոխարենը օգտագործել կանացի կապի վերնագրեր և JST-XH միակցիչներ: Այսպիսով, դուք կարող եք դրանք միացնել/անջատել ձեր նախատախտակի վրա և հեշտացնել ձեր հավաքումը:

Խորհուրդներ. Դուք կարող եք ավելացնել լարերի շուրջ ամրացվող հյուս `ձեր լարերի շուրջը և միացվող խողովակի կտորները միակցիչների մոտ` դրանով իսկ ստանալով «մաքուր» մալուխ:

Անջատիչ և LED

Երկու հոսանքի սխեմաները միացնելու համար պատրաստեք 2 լուսադիոդային և անջատիչ մալուխներ. Սկզբում զոդեք 470kOhm ռեզիստորը LED փինից մեկի վրա, այնուհետև LED- ը կպցրեք անջատիչի քորոցից մեկին: Այստեղ նաև կարող եք օգտագործել փոքր կտորի խողովակ ՝ դիմադրությունը ներսում թաքցնելու համար: Carefulգույշ եղեք, LED- ը կպցրեք ճիշտ ուղղությամբ: Կրկնեք այս գործողությունը ՝ երկու անջատիչ/լուսադիոդային մալուխներ ստանալու համար:

Ժողով

Հավաքեք նախկինում պատրաստված մալուխները համապատասխան 3D տպված մասի վրա: Անջատիչը պահպանելու համար օգտագործեք ընկույզ, LED- ները սոսինձ չեն պահանջում, պարզապես բավականաչափ ուժ տվեք, որպեսզի այն տեղավորվի անցքի մեջ:

Քայլ 4: Էլեկտրոնային տախտակների լարերի միացում

Էլեկտրոնային տախտակների էլեկտրամոնտաժ
Էլեկտրոնային տախտակների էլեկտրամոնտաժ
Էլեկտրոնային տախտակների էլեկտրամոնտաժ
Էլեկտրոնային տախտակների էլեկտրամոնտաժ
Էլեկտրոնային տախտակների էլեկտրամոնտաժ
Էլեկտրոնային տախտակների էլեկտրամոնտաժ

Տախտակների դասավորությունը

Լարերի քանակը նվազեցնելու համար օգտագործվում է Arduino տախտակի դասավորությունը համապատասխանող նախատախտակ: Նախատախտակի վերևում L298N- ը դրված է Dupont իգական վերնագրով (Dupont- ը «Arduino like» խորագրերն են):

L298N պատրաստում

Ի սկզբանե, L298N տախտակը չի պարունակում համապատասխան Dupont արական վերնագիր, հարկավոր է տախտակի տակ ավելացնել 9 կապում տող: Դուք պետք է իրականացնեք 9 անցք 1 մմ տրամագծով փորված բիտով `գոյություն ունեցող անցքերին զուգահեռ, ինչպես տեսնում եք նկարի վրա: Այնուհետեւ կապեք 2 տողերի համապատասխան կապում զոդման նյութերով եւ կարճ լարերով:

L298N քորոց

L298N- ը բաղկացած է 2 ալիքից, որոնք թույլ են տալիս արագության և ուղղության վերահսկում.

ուղղություն 2 թվային ելքերի միջոցով, որոնք կոչվում են IN1, IN2 առաջին ալիքի համար և IN3 և IN4 երկրորդի համար

արագություն 1 թվային ելքի միջոցով ՝ առաջին ալիքի համար կոչվում է ՀԷNA, իսկ երկրորդի համար ՝ ENB

Arduino- ի հետ ես ընտրեցի հետևյալ պին-աութը.

ձախ շարժիչ `IN1 3 -ի կապում, IN2 4 -ի վրա, ENA 2 -ի վրա

աջ շարժիչ ՝ IN3 փին 5 -ի վրա, IN4 պտուտակ 6 -ի վրա, ENB կապում 7

5V կարգավորիչ

Նույնիսկ եթե l298N- ը սովորաբար ի վիճակի է ապահովել 5V, ես դեռ մի փոքր կարգավորիչ եմ ավելացնում: Այն սնուցում է Arduino- ն VIN պորտի միջոցով և շարժիչների վրա գործող երկու կոդավորիչ: Դուք կարող եք բաց թողնել այս քայլը `ուղղակիորեն օգտագործելով ներկառուցված L298N 5V կարգավորիչը:

JST միակցիչներ և կոդավորիչ ՝ անջատված

Օգտագործեք 4 կապում իգական JST-XH միակցիչի ադապտերներ, որոնցից յուրաքանչյուրը միացված է.

  • 5V կարգավորիչից
  • a Ground
  • երկու թվային մուտք

Լրացուցիչ I2C

Ինչպես երևի նկատել եք, նախատախտակի վրա կա լրացուցիչ 4 փին JST միակցիչ: Այն օգտագործվում է I2C սարքը IMU- ի նման միացնելու համար, կարող եք նույնն անել և նույնիսկ ավելացնել ձեր սեփական նավահանգիստը:

Քայլ 5. Motor Group- ը և Arduino- ն ՝ ներքևի շերտում

Motor Group- ը և Arduino- ն ՝ ներքևի շերտում
Motor Group- ը և Arduino- ն ՝ ներքևի շերտում
Motor Group- ը և Arduino- ն ՝ ներքևի շերտում
Motor Group- ը և Arduino- ն ՝ ներքևի շերտում
Motor Group- ը և Arduino- ն ՝ ներքևի շերտում
Motor Group- ը և Arduino- ն ՝ ներքևի շերտում

Շարժիչային բլոկների ամրացում

Երբ ստորին շերտը հավաքվում է 8 Turtlebot- ի ափսեների հետ, պարզապես օգտագործեք 4 M3 պտուտակներ անմիջապես ներդիրների մեջ `շարժիչային բլոկները պահպանելու համար: Այնուհետև կարող եք շարժիչի հոսանքի լարերը միացնել L298N ելքերին, իսկ նախկինում պատրաստված մալուխները `նախատախտակի JST միակցիչներին:

Էլեկտրաէներգիայի բաշխում

Էլեկտրաէներգիայի բաշխումը պարզապես իրականացվում է պատնեշի տերմինալային բլոկով: Պատնեշի մի կողմում XT60 կանացի խրոցակով մալուխը պտուտակված է ՝ LiPo մարտկոցին միանալու համար: Մյուս կողմից, մեր երկու LED/անջատիչ մալուխները, որոնք նախկինում զոդված էին, պտուտակված են: Այսպիսով, յուրաքանչյուր միացում (Motor և Arduino) կարող է միացվել իր անջատիչով և համապատասխան կանաչ LED- ով:

Մալուխների կառավարում

Շուտով դուք ստիպված կլինեք գործ ունենալ բազմաթիվ մալուխների հետ: Խառնաշփոթ կողմը նվազեցնելու համար կարող եք օգտագործել նախկինում եռաչափ տպված «սեղանը»: Սեղանի վրա պահեք ձեր էլեկտրոնային տախտակները երկկողմանի ժապավենով, իսկ սեղանի տակ թողեք, որ լարերը ազատ հոսեն:

Մարտկոցի պահպանում

Ձեր ռոբոտին վարելիս մարտկոցի արտահոսքից խուսափելու համար կարող եք պարզապես օգտագործել մազերի առաձգական ժապավեն:

Roller caster

Իրականում ոչ թե գլանափաթեթ, այլ պարզ կիսագունդ, որը ամրացված է ներքևի շերտի 4 պտուտակով: Բավական է ապահովել ռոբոտի կայունությունը:

Քայլ 6. Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում

Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում
Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում
Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում
Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում
Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում
Մեկ տախտակի համակարգիչ և սենսորներ վերին շերտում

Ո՞ր մեկ համակարգչային համակարգիչ ընտրել:

Ես կարիք չունեմ ձեզ ներկայացնել հանրահայտ Raspberry Pi- ն, դրա օգտագործման դեպքերի թիվը մեծապես գերազանցում է ռոբոտաշինության ոլորտին: Բայց կա շատ ավելի հզոր մարտահրավեր Raspberry Pi- ի համար, որը դուք կարող եք անտեսել: Իրոք, Nvidia- ի Jetson Nano- ն իր պրոցեսորից զատ տեղադրում է 128 միջուկի հզոր գրաֆիկական քարտ: Այս հատուկ գրաֆիկական քարտը մշակվել է հաշվարկային թանկարժեք առաջադրանքները արագացնելու համար, ինչպիսիք են պատկերի մշակումը կամ նյարդային ցանցի եզրակացությունը:

Այս նախագծի համար ես ընտրեցի Jetson Nano- ն, և կցված ֆայլերի մեջ կարող եք գտնել համապատասխան 3D հատվածը, բայց եթե ցանկանում եք գնալ Raspberry Pi- ի հետ, այստեղ շատ տպելի պատյաններ կան:

5V կարգավորիչ

Ինչ տախտակ էլ որոշեք բերել ձեր ռոբոտի վրա, ձեզ հարկավոր է 5 Վ կարգավորիչ: Վերջին Raspberry Pi 4 -ը պահանջում է առավելագույնը 1.25A, սակայն Jetson Nano- ն պահանջում է մինչև 3A սթրեսի դեպքում, այնպես որ ես ընտրեցի Pololu 5V 6A- ն ունենալ էներգիայի պաշար ապագա բաղադրիչների համար (տվիչներ, լույսեր, աստիճաններ …), բայց ցանկացած էժան 5V 2A պետք է անի: աշխատանքը Jetson- ն օգտագործում է 5.5 մմ DC տակառ, իսկ Pi- ն ՝ միկրո USB, բռնում համապատասխան մալուխը և այն կպցնում կարգավորիչի ելքին:

LIDAR դասավորությունը

Այստեղ օգտագործվող LIDAR- ը LDS-01- ն է, կան տարբեր այլ 2D LIDAR- ներ, որոնք կարող են օգտագործվել ինչպես RPLidar A1/A2/A3, YDLidar X4/G4 կամ նույնիսկ Hokuyo LIDAR- երը: Միակ պահանջն այն է, որ այն պետք է միացված լինի USB- ի միջոցով և տեղադրվի կառուցվածքի վերևում: Իրոք, եթե LIDAR- ը լավ կենտրոնացված չէ, SLAM ալգորիթմով ստեղծված քարտեզը կարող է տեղափոխել պատերի և խոչընդոտների գնահատված դիրքը դրանց իրական դիրքից: Նաև, եթե ռոբոտից որևէ խոչընդոտ անցնի լազերային ճառագայթը, այն կնվազեցնի հեռավորությունը և տեսադաշտը:

LIDAR տեղադրում

LIDAR- ը տեղադրված է 3D ձևով տպված մասի վրա, որը հետևում է իր ձևին, իսկ հատվածն ինքնին պահված է ուղղանկյուն ափսեի վրա (իրականում նկարի վրա նրբատախտակով, բայց կարող է նաև 3D տպվել): Այնուհետև ադապտերային մաս թույլ է տալիս անսամբլին ամրացնել վերին turtlebot ափսեի վրա `նեյլոնե բացիկներով:

Տեսախցիկը որպես լրացուցիչ սենսոր կամ LIDAR փոխարինում

Եթե դուք չեք ցանկանում չափազանց շատ գումար ծախսել LIDAR- ի վրա (որի արժեքը մոտ 100 դոլար է), գնացեք տեսախցիկի մոտ. Կան նաև SLAM ալգորիթմներ, որոնք աշխատում են միայն միատեսակ RGB տեսախցիկով: Երկու SBC- ն ընդունում են USB կամ CSI տեսախցիկ:

Ավելին, տեսախցիկը թույլ կտա գործարկել համակարգչային տեսողության և օբյեկտների հայտնաբերման սցենարներ:

Ժողով

Նախքան ռոբոտը փակելը, մալուխներն անցեք վերին ափսեի ավելի մեծ անցքերով.

  • համապատասխան մալուխը 5V կարգավորիչից դեպի ձեր SBC
  • USB մալուխը Arduino DUE- ի ծրագրավորման նավահանգստից (ամենամոտը DC տակառին) մինչև ձեր SBC USB պորտը

Այնուհետև պահեք վերին ափսեը մեկ տասնյակ պտուտակներով: Ձեր ռոբոտը այժմ պատրաստ է ծրագրավորման, ԲԱՐԻ ԿԱՐԵՎՈՐ:

Քայլ 7: Տեղափոխեք այն:

Կազմեք Arduino- ն

Բացեք ձեր նախընտրած Arduino IDE- ն և ներմուծեք ծրագրի թղթապանակը, որը կոչվում է own_turtlebot_core, այնուհետև ընտրեք ձեր տախտակը և համապատասխան նավահանգիստը, կարող եք անդրադառնալ այս հիանալի ձեռնարկին:

Կարգավորեք հիմնական պարամետրերը

Նախագիծը բաղկացած է երկու ֆայլից, և մեկը պետք է հարմարեցվի ձեր ռոբոտին: Եկեք բացենք own_turtlebot_config.h և բացահայտենք, թե որ տողերն են պահանջում մեր ուշադրությունը.

#սահմանեք ARDUINO_DUE // ** Մեկնաբանեք այս տողը, եթե ձեր պարտքը չօգտագործեք **

Պետք է օգտագործվի միայն Arduino DUE- ով, եթե ոչ ՝ մեկնաբանեք տողը:

#սահմանել RATE_CONTROLLER_KP 130.0 // ** Կարգավորել այս արժեքը **

#սահմանել RATE_CONTROLLER_KD 5000000000000.0 // ** Կարգավորել այս արժեքը ** #սահմանել RATE_CONTROLLER_KI 0.00005 // ** Կարգավորել այս արժեքը **

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

/ * Սահմանել կապում */

// շարժիչ A (աջ) const բայթ motorRightEncoderPinA = 38; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte motorRightEncoderPinB = 34; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte enMotorRight = 2; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte in1MotorRight = 4; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte in2MotorRight = 3; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB ** // շարժիչով B (ձախ) const byte motorLeftEncoderPinA = 26; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte motorLeftEncoderPinB = 30; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte enMotorLeft = 7; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte in1MotorLeft = 6; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով ** const byte in2MotorLeft = 5; // ** ՓՈՓՈԽԵԼ ՁԵՐ PIN NB- ով **

Այս բլոկը սահմանում է կապը L298N- ի և Arduino- ի միջև, պարզապես փոփոխեք քոր համարը ՝ ձերին համապատասխանելու համար: Երբ ավարտեք կազմաձևման ֆայլը, կազմեք և վերբեռնեք ծածկագիրը:

Տեղադրեք և կազմաձևեք ROS- ը

Երբ հասնեք այս քայլին, հրահանգները ճիշտ նույնն են, ինչ տրված է TurtleBot3- ի հիանալի ձեռնարկում նշվածներին, դուք պետք է մանրակրկիտ հետևեք

լավ արված TurtleBot 3 -ն այժմ ձերն է, և դուք կարող եք գործարկել առկա բոլոր փաթեթներն ու ձեռնարկները ROS- ով:

Լավ, բայց ինչ է ROS- ը:

ROS- ը նշանակում է Robots Operating System, սկզբում այն կարող է բավականին բարդ թվալ, բայց դա այդպես չէ, պարզապես պատկերացրեք ապարատային (տվիչներ և գործարկիչներ) և ծրագրային ապահովումների (նավարկության, կառավարման, համակարգչային տեսողության ալգորիթմներ) հաղորդակցության միջոց: Օրինակ, դուք կարող եք հեշտությամբ փոխանակել ձեր ընթացիկ LIDAR- ը այլ մոդելի հետ ՝ առանց կարգաբերումը խախտելու, քանի որ յուրաքանչյուր LIDAR- ը հրապարակում է նույն LaserScan հաղորդագրությունը: ROS- ը լայնորեն օգտագործվում է ռոբոտաշինության ոլորտում, Գործարկեք ձեր առաջին օրինակը

ROS- ի համար «բարև աշխարհ» համարժեքը այն է, որ ձեր ռոբոտին հեռավար աշխատեք հեռավոր համակարգչի միջոցով: Այն, ինչ ցանկանում եք անել, արագության հրամաններ ուղարկելն է, որպեսզի շարժիչները պտտվեն, հրամանները հետևում են այս խողովակին.

  • turtlebot_teleop հանգույց, որը աշխատում է հեռակա համակարգչով, հրապարակել «/cmd_vel» թեման, ներառյալ Twist հաղորդագրությունը
  • այս հաղորդագրությունը փոխանցվում է ROS հաղորդագրությունների ցանցի միջոցով դեպի SBC
  • սերիական հանգույցը թույլ է տալիս «/cmd_vel» - ը ստանալ Arduino- ում
  • Arduino- ն կարդում է հաղորդագրությունը և յուրաքանչյուր շարժիչի անկյունային արագությունը սահմանում ռոբոտի ցանկալի գծային և անկյունային արագությանը համապատասխանելու համար:

Այս գործողությունը պարզ է և կարելի է հասնել ՝ գործարկելով վերը թվարկված հրամանների տողերը: Եթե ցանկանում եք ավելի մանրամասն տեղեկատվություն, պարզապես դիտեք տեսանյութը:

[SBC]

վարդագույն

[SBC]

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

[Հեռակա համակարգիչ]

արտահանել TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Ավելի առաջ գնալու համար

Նախքան պաշտոնական բոլոր օրինակները փորձելը, դուք պետք է իմանաք վերջին բանը, ձեռնարկում ամեն անգամ, երբ դուք բախվում եք այս հրամանին.

roslaunch turtlebot3_bringup turtlebot3_robot.launch

փոխարենը պետք է գործարկեք այս հրամանը ձեր SBC- ի վրա.

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

Եվ եթե ունեք LIDAR գործարկվող համապատասխան հրամանը ձեր SBC- ում, իմ դեպքում ես վարում եմ LDS01 ստորև նշված տողով.

roslaunch hls_lfcd_lds_driver hlds_laser.launch

Եվ վերջ, դուք վերջնականապես կառուցել եք ձեր սեփական turtlebot- ը:) Դուք պատրաստ եք բացահայտել ROS- ի ֆանտաստիկ հնարավորությունները և կոդավորել տեսլականի և մեքենայական ուսուցման ալգորիթմները:

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