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

Localino Tracks Roomba IRobot, Maps the Environment and Allows Control. 4 քայլ
Localino Tracks Roomba IRobot, Maps the Environment and Allows Control. 4 քայլ

Video: Localino Tracks Roomba IRobot, Maps the Environment and Allows Control. 4 քայլ

Video: Localino Tracks Roomba IRobot, Maps the Environment and Allows Control. 4 քայլ
Video: Grid Based Indoor Localization System 2024, Նոյեմբեր
Anonim
Image
Image

WiFi-UART կամուրջը կառուցելու համար կարող եք ստուգել այս github ռեպոն ՝

Այն գեղեցիկ հիմք ունի սկսելու համար: Համոզվեք, որ լավ եք կարդացել ուղեցույցը, քանի որ Roomba VCC- ն լիցքավորման ընթացքում ավելանում է մինչև 20 վոլտ: Եթե ավելացնեք ESP8266 առանց համապատասխան փոխարկիչի, որն աշխատում է նույնիսկ մինչև 20 Վ լարման և փոխարկվում է մինչև 3.3 Վ, ապա դուք կվնասեք ձեր ESP- ը:

Նաև համոզվեք, որ օգտագործեք մակարդակի փոխարկիչ (օրինակ ՝ լարման բաժանարարի միջոցով) 5V UART տրամաբանական մակարդակները Roomba- ից մինչև 3.3V, որոնք օգտագործվում են ESP- ի կողմից:

Մեկ այլ կարևոր մանրամասնություն այն է, որ կողպեքի փոխարկիչը պետք է ունենա 300 մԱ, բայց շատ ավելի քիչ կամ շատ ավելին (կախված բակի փոխարկիչից): Կան մի քանիսը, որոնք կարող են շատ ավելի ընթացիկ գործել, բայց առաջացնում են Roomba- ի խափանում, քանի որ գործարկման ընթացքում նրանք չափազանց մեծ հոսանք են քաշում: Մենք պարզեցինք, որ Pololu 3.3V, 300mA լարման կարգավորիչը (D24V3F3) աշխատում է պարզապես կատարյալ: Այլընտրանքային տարբերակները, որոնք ունեն 500mA / 600mA, հանգեցրել են Roomba UART ինտերֆեյսի խափանման: Հիմնականում Roomba- ն արձագանքում էր կոճակը սեղմելիս, բայց ոչ UART ինտերֆեյսի միջոցով հրահանգներին: Երբ դա տեղի ունեցավ, մենք ստիպված եղանք հեռացնել Roomba մարտկոցը և սառը վերագործարկել Roomba- ն ՝ կցված WiFi-UART կամուրջով: Այնուամենայնիվ, միայն D24V3F3- ը լավ աշխատեց:

Բացի այդ տեխնիկական մանրամասնությունից, դուք պետք է լրացուցիչ հրամաններ ավելացնեք ծածկագրին, որոնք կարող եք գտնել Roomba բաց ինտերֆեյսի բնութագրերում: Դուք պետք է ավելացնեք բոլոր հրամանները, որոնց կցանկանայիք արձագանքել ձեր roomba- ն (օրինակ ՝ հետընթաց, առաջ, արագություն և այլն):

օրինակներ arduino IDE- ում.

void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (գ); }

void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }

void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (գ); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (գ); }

եթե դուք գրում եք lua- ով, այն մի փոքր այլ տեսք ունի, ՁԱՅՆ շրջադարձի օրինակն այսպիսի տեսք կունենա.

եթե (_GET.pin == "ՁԱՅՆ") ապա տպել ('\ 137'); --VOR

tmr.delay (100);

տպել ('\ 00'); -Արագություն = 200 = 0x00C8 -> 0 և 200

tmr.delay (100);

տպել ('\ 200'); - Արագություն

tmr.delay (100);

տպել ('\ 254'); - Շառավիղ = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100);

տպել ('\ 12'); - Շրջվեք

վերջ

Համոզվեք, որ դուք պետք է շտկեք ձեր Roomba- ի բաց ինտերֆեյսի նկարագրությունը: Առկա է առնվազն երկու բաց ինտերֆեյսի բնութագիր:

Roomba 5xx շարքի համար ՝

Roomba 6xx շարքի համար ՝

Երբ դուք կառուցեք ձեր WiFi-UART կամուրջը և փորձարկեք ձեր կատարած մեծ քայլերը: Այս տեսանյութը ցույց է տալիս, որ կիրառումը և մոտեցումը գործում են: Մենք մի փոքր ծույլ էինք, վեբ ինտերֆեյսի վրա բացակայում են կառավարման մյուս բոլոր հրամանները ՝ առաջ, հետընթաց, արագություն, աջ, ձախ և այլն, բայց հրամանները կարող եք թողարկել http- ի միջոցով: Ինչևէ, դա պարզապես ապացույց է, որ Roomba- ի հեռակառավարման վահանակն աշխատում է հեշտ ապարատային և ծրագրային ապահովմամբ `օգտագործելով ESP8266- ը:

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

Քայլ 3: Կարգավորեք ձեր ներքին տեղայնացման համակարգը

Հետադարձ կապը փակելու համար մենք օգտագործում ենք ներքին տեղայնացման համակարգ: Մենք դրա համար օգտագործում ենք Localino- ն: Localino համակարգը բաղկացած է «խարիսխներից» և «պիտակներից»: Խարիսխները տեղադրված են սենյակի ներսում հաստատված վայրերում և տեղադրում են շարժվող պիտակի դիրքը (որը տեղադրված է Roomba- ի վրա): Տեղադրության վերամշակումը կատարվում է ԱՀ ծրագրում: Դա մեծ առավելություն է, քանի որ դուք կարող եք նաև վերահսկել Roomba- ն նույն համակարգչից: Localinal կայքում առկա է անվճար աղբյուրի կոդ, գրված է python- ում և կա նաև իրական ժամանակի հոսք, որն առաջարկում է պիտակի XYZ կոորդինատները: Տվյալների հոսքը հասանելի է UDP ցանցի միջոցով, բայց կարող եք նաև ավելացնել MQTT կամ որևէ այլ շքեղ իրեր, որոնք ձեզ դուր են գալիս: Եթե գիտեք Python- ը, կան բազմաթիվ գրադարաններ, որոնք օգնում են ձեզ:

Այս տեսանյութում ցուցադրվում է Roomba- ի տեղայնացումը: Հետևաբար, մենք ունենք 4 խարիսխ, որոնք տեղադրված են սենյակում ֆիքսված վայրերում, որոնք թույլ են տալիս Roomba- ի եռաչափ դիրքավորում: Ընդհանուր առմամբ, մենք կպահանջենք ընդամենը 3 խարիսխ, քանի որ Roomba- ն, հավանաբար, չի շարժվի Z առանցքի վրա, հետևաբար 2D- ը բավարար կլինի: Բայց քանի որ խարիսխները տեղակայված են AC հիմնական խցանների բարձրության վրա (որը գտնվում է գետնից մոտ 30 սմ բարձրության վրա), երկկողմանի տեղադրումը կարող է փոքր սխալներ առաջացնել դիրքում: Այսպիսով, մենք որոշեցինք ունենալ 4 խարիսխ և տեղայնացնել 3D- ում:

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

Կարգավորման դիտողություններ

Տեղադրեք Localino- ի խարիսխները սենյակի ներսում տարբեր x, y դիրքերից և դրանցից երեքը նույն z դիրքում: Տեղադրեք չորս խարիսխներից մեկը մեկ այլ սենյակում z տարբեր բարձրության վրա: Համոզվեք, որ լավ ծածկույթ կա Localino պիտակից, որը կշարժվի Roomba- ի հետ:

Բոլոր խարիսխներն ունեն եզակի խարիսխի ID, որը ցուցադրվում է Localino- ի շտրիխ կոդով և կարող է կարդալ «localino configuration» գործիքի միջոցով:

Նշեք X, Y, Z դիրքերը և խարիսխի ID- ները: Սա անհրաժեշտ է Localino Processor Software- ի համար և պետք է հարմարեցվի «localino.ini» ֆայլում ՝ «LocalinoProcessor» թղթապանակում:

Խարիսխները պետք է ուղղված լինեն վեր կամ վար Z- ով (երբ XY տարածքը ծածկված է), բայց ոչ ծածկված տարածքի ուղղությամբ: Խարիսխները չպետք է ծածկված լինեն մետաղով կամ որևէ այլ անլար ազդանշան խանգարող նյութով: Եթե դա հնարավոր չէ, ապա ցանկացած նյութի և խարիսխի միջև պետք է լինի նաև որոշակի օդային բաց:

… Ավելի շատ

Քայլ 4: Հարմարեցրեք Python ծրագրակազմը

մնացեք մեզ հետ. ավելի շատ է սպասվում:

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