ROBOWORKS Robofleet MULTI-AGENT ALGORITHMS
Տեխնիկական պայմաններ
- Ապրանքի անվանումը՝ ROBOWORKS
- Տարբերակ՝ 20240501
- Պատրաստեցին՝ Ուեյն Լյու և Ջանեթ Լին
- Ամսաթիվ ՝ 1 թվականի մայիսի 2024-ին
Ապրանքի մասին տեղեկատվություն
ROBOWORKS-ը բազմաֆունկցիոնալ համակարգ է, որը թույլ է տալիս իրականացնել ռոբոտների համակարգման և հաղորդակցման տարբեր ալգորիթմներ:
ՀՏՀ-ներ
Հարց. Ի՞նչ պետք է անեմ, եթե ռոբոտը չի կարող ավտոմատ կերպով միանալ Wifi-ին:
Պատ. Եթե ռոբոտը չի կարողանում ավտոմատ միանալ, փորձեք անջատել և նորից միացնել ցանցային քարտը և նորից փորձեք միանալ:
ԱՄՓՈՓՈՒՄ
Այս փաստաթուղթը հիմնականում բացատրում է wheeltec_multi անունով բազմառոբոտի ձևավորման ֆունկցիայի փաթեթի օգտագործումը:
Այս փաստաթուղթը բաժանված է չորս մասի.
- Առաջին մասը հիմնականում վերաբերում է բազմառոբոտների ձևավորման մեթոդի ներդրմանը.
- երկրորդ մասը հիմնականում նկարագրում է ROS-ի բազմամեքենա կապի կարգավորումները, ներառյալ ROS-ի կառուցման բազմամեքենայական կապը և խնդիրները, որոնք կարող են բախվել ROS կապի գործընթացում.
- երրորդ մասը հիմնականում նկարագրում է բազմամեքենա ժամանակի համաժամացման գործառնական քայլերը.
- չորրորդ մասը բացատրում է բազմամեքենաների ձևավորման գործառույթի փաթեթի հատուկ օգտագործումը:
Այս փաստաթղթի նպատակը ներածություն է բազմաֆունկցիոնալ ռոբոտային համակարգերին և թույլ է տալիս օգտվողներին արագ սկսել բազմառոբոտների ձևավորման նախագիծը:
ՆԵՐԱԾՈՒԹՅՈՒՆ ԲԱԶՄԱԳՈՐԾԱԿԱՆ ԱԼԳՈՐԻԹՄՆԵՐԻՆ
Բազմագործակալների ձևավորման ալգորիթմներ
Այս ROS փաթեթը ներկայացնում է մի քանի գործակալների տիպիկ խնդիր՝ համագործակցային հսկողության մեջ՝ ձևավորման շարժման ընթացքում: Այս ձեռնարկը հիմք է դնում այս թեմայի հետագա զարգացման համար: Ձևավորման վերահսկման ալգորիթմը վերաբերում է ալգորիթմին, որը վերահսկում է բազմաթիվ գործակալներ՝ առաջադրանք կատարելու համար հատուկ կազմավորում ձևավորելու համար: Համագործակցությունը վերաբերում է մի քանի գործակալների միջև համագործակցությանը, որոնք օգտագործում են որոշակի սահմանափակող հարաբերություններ՝ առաջադրանքն ավարտելու համար: Վերցրեք բազմառոբոտների ձևավորման շարժիչը որպես նախկինampLe, համագործակցությունը նշանակում է, որ մի քանի ռոբոտներ միասին կազմում են ցանկալի կազմավորում: Դրա էությունը որոշակի մաթեմատիկական հարաբերություն է, որը բավարարվում է յուրաքանչյուր ռոբոտի դիրքերի միջև: Ձևավորման մեթոդները հիմնականում բաժանվում են ձևավորման կենտրոնացված կառավարման և բաշխված ձևավորման կառավարման: Կենտրոնացված ձևավորման կառավարման մեթոդները հիմնականում ներառում են վիրտուալ կառուցվածքի մեթոդը, գրաֆիկական տեսության մեթոդը և մոդելի կանխատեսման մեթոդը: Բաշխված ձևավորման վերահսկման մեթոդները հիմնականում ներառում են առաջնորդ-հետևորդ մեթոդ, վարքագծի վրա հիմնված մեթոդ և վիրտուալ կառուցվածքի մեթոդ:
Այս ROS փաթեթը կիրառում է առաջնորդ-հետևորդ մեթոդը բաշխված կազմավորումների կառավարման մեթոդում՝ մի քանի ռոբոտների ձևավորման սկավառակը գործարկելու համար: Ձևավորման մեկ ռոբոտը նշանակված է որպես առաջնորդ, իսկ մյուս ռոբոտները նշանակված են որպես ստրուկներ, որոնք պետք է հետևեն առաջնորդին: Ալգորիթմն օգտագործում է առաջատար ռոբոտի շարժման հետագիծը՝ սահմանելու կոորդինատները, որոնք պետք է հետևեն հետևյալ ռոբոտներին որոշակի ուղղությամբ և արագությամբ։ Ուղղելով դիրքի շեղումները հետևող կոորդինատներից, հետևորդները ի վերջո կնվազեցնեն հետևորդի և սպասվող հետևման կոորդինատների միջև շեղումը մինչև զրոյի՝ ձևավորման մղման նպատակներին հասնելու համար: Այս կերպ ալգորիթմը համեմատաբար ավելի քիչ բարդ է:
Խոչընդոտներից խուսափելու ալգորիթմներ
Խոչընդոտներից խուսափելու ընդհանուր ալգորիթմը արհեստական պոտենցիալ դաշտի մեթոդն է: Ռոբոտի շարժումը ֆիզիկական միջավայրում դիտվում է որպես շարժում վիրտուալ արհեստական ուժային դաշտում: Մոտակա խոչընդոտը նույնականացվում է LiDAR-ի կողմից: Խոչընդոտն ապահովում է վանող ուժի դաշտ՝ ռոբոտին վանում առաջացնելու համար, իսկ թիրախային կետը՝ գրավիտացիոն դաշտ՝ ռոբոտին գրավիտացիոն ուժ առաջացնելու համար: Այս կերպ այն վերահսկում է ռոբոտի շարժումը վանման և ձգողականության համակցված գործողության ներքո։
Այս ROS փաթեթը բարելավում է՝ հիմնված արհեստական ներուժի դաշտի մեթոդի վրա: Նախ, ձևավորման ալգորիթմը հաշվարկում է Slave-ի հետևորդի գծային և անկյունային արագությունը: Այնուհետև այն մեծացնում կամ նվազեցնում է գծային և անկյունային արագությունը՝ ըստ խոչընդոտներից խուսափելու պահանջների։ Երբ Slave-ի հետևորդի և խոչընդոտի միջև հեռավորությունը ավելի մոտ է, խոչընդոտի վանող ուժն ավելի մեծ է Slave-ի հետևորդին: Մինչդեռ գծային արագության փոփոխությունը և անկյունային արագության տատանումները ավելի մեծ են։ Երբ խոչընդոտը մոտենում է Slave-ի հետևորդի առջևին, Slave-ի հետևորդին ուղղված խոչընդոտի վանումն ավելի մեծ է դառնում (առջևի վանումն ամենամեծն է, իսկ կողայինը՝ ամենափոքրը): Արդյունքում գծային արագության և անկյունային արագության տատանումները ավելի մեծ են։ Արհեստական պոտենցիալ դաշտի մեթոդի միջոցով այն բարելավում է լուծումը, երբ ռոբոտը կարող է դադարեցնել արձագանքը խոչընդոտի առջև: Սա ծառայում է ավելի լավ խոչընդոտներից խուսափելու նպատակին:
ԲԱԶՄԱԳՈՐԾԱԿԱՆ ԿԱՊԻ ԿԱՐԳԱՎՈՐՈՒՄ
Բազմագործակալական հաղորդակցությունը բազմառոբոտների ձևավորումն ավարտելու հիմնական քայլերից մեկն է: Երբ մի քանի ռոբոտների հարաբերական դիրքերը անհայտ են, ռոբոտներին անհրաժեշտ է հաղորդակցության միջոցով կիսել միմյանց տեղեկատվությունը, որպեսզի հեշտացնեն կապերի հաստատումը: ROS-ով բաշխված ճարտարապետությունը և ցանցային հաղորդակցությունները շատ հզոր են: Այն հարմար է ոչ միայն միջգործընթացային հաղորդակցության, այլև տարբեր սարքերի միջև հաղորդակցության համար: Ցանցային հաղորդակցության միջոցով բոլոր հանգույցները կարող են աշխատել ցանկացած համակարգչի վրա: Հիմնական առաջադրանքները, ինչպիսիք են տվյալների մշակումը, կատարվում են հյուրընկալող կողմում: Ստրկական մեքենաները պատասխանատու են տարբեր սենսորների կողմից հավաքագրված բնապահպանական տվյալների ստացման համար: Այստեղ հյուրընկալողը մենեջերն է, որն աշխատում է Master հանգույցը ROS-ում: Ներկայիս բազմագործակալային հաղորդակցման շրջանակն իրականացվում է հանգույցների կառավարչի և պարամետրերի կառավարչի միջոցով՝ բազմաթիվ ռոբոտների միջև հաղորդակցությունը կարգավորելու համար:
Բազմագործակալական հաղորդակցությունների ստեղծման քայլերը
- Տեղադրեք ROS Controls-ը նույն ցանցում
- Նույն ցանցում կա Master/Slave ROS Controls-ը կարգավորելու 2 եղանակ:
Տարբերակ 1:
Master Host-ը ստեղծում է տեղական wifi՝ գործարկելով Master node manager-ը: Ընդհանրապես, ռոբոտներից մեկը, ով նշանակված է որպես վարպետ, ստեղծում է այս wifi ցանցը: Այլ ռոբոտներ կամ վիրտուալ մեքենաներ միանում են այս wifi ցանցին որպես ստրուկներ:
Ընտրանքներ 2:
Տեղական wifi ցանցը տրամադրվում է երրորդ կողմի երթուղիչի կողմից՝ որպես տեղեկատվական փոխանցման կենտրոն: Բոլոր ռոբոտները միացված են նույն երթուղիչին: Երթուղիչը կարող է օգտագործվել նաև առանց ինտերնետ կապի: Ընտրեք ռոբոտներից մեկը որպես վարպետ և գործարկեք Master node manager-ը: Մյուս ռոբոտները նշանակված են որպես ստրուկներ և ղեկավարում են հիմնական հանգույցի կառավարիչը վարպետից:
Որոշումը, թե որ տարբերակն ընտրել, կախված է ձեր նախագծի պահանջներից: Եթե շփվելու կարիք ունեցող ռոբոտների թիվը մեծ չէ, ապա առաջարկվում է Տարբերակ 1, քանի որ այն խնայում է ծախսերը և հեշտ է կարգավորել: Երբ ռոբոտների թիվը մեծ է, առաջարկվում է տարբերակ 2: ROS-ի հիմնական հսկողության հաշվողական հզորության սահմանափակումը և ներբեռնման սահմանափակ Wifi թողունակությունը կարող են հեշտությամբ առաջացնել ուշացումներ և ցանցի խափանումներ: Երթուղիչը կարող է հեշտությամբ շտկել այս խնդիրները: Խնդրում ենք նկատի ունենալ, որ բազմաֆունկցիոնալ հաղորդակցություն իրականացնելիս, եթե վիրտուալ մեքենան օգտագործվում է որպես ROS ստրուկ, ապա դրա ցանցային ռեժիմը պետք է միացվի կամուրջ ռեժիմին:
Կազմաձևեք Master/Slave միջավայրի փոփոխականները
Այն բանից հետո, երբ ROS-ի բոլոր վարպետները միևնույն ցանցում են, անհրաժեշտ է սահմանել շրջակա միջավայրի փոփոխականները բազմաֆունկցիոնալ հաղորդակցության համար: Այս միջավայրի փոփոխականը կազմաձևված է հիմնական գրացուցակի .bashrc ֆայլում: Գործարկեք gedit ~/.bashrc հրամանը՝ այն գործարկելու համար: Խնդրում ենք նկատի ունենալ, որ և՛ .bashrc ֆայլերը բազում գործակալների հաղորդակցության մեջ պետք է կարգավորվեն: Այն, ինչ պետք է փոխվի, IP հասցեներն են ֆայլի վերջում: Երկու տողերն են՝ ROS_MASTER_URI և ROS_HOSTNAME, ինչպես ցույց է տրված Նկար 2-1-4-ում: ROS հոսթի ROS_MASTER_URI-ն և ROS_HOSTNAME-ը երկուսն էլ տեղական IP-եր են: ROS_MASTER_URI ROS slave .bashrc ֆայլում պետք է փոխվի հյուրընկալողի IP հասցեի, մինչդեռ ROS_HOSTNAME-ը մնում է որպես տեղական IP հասցե:
ROS-ի բազմամեքենայական հաղորդակցությունը սահմանափակված չէ ROS-ի թողարկման տարբերակով: Բազմամեքենաների հաղորդակցության գործընթացում պետք է տեղյակ լինել հետևյալի մասին.
- ROS ստրուկ ծրագրի գործարկումը կախված է ROS գլխավոր սարքի ROS գլխավոր ծրագրից: ROS-ի հիմնական ծրագիրը պետք է գործարկվի սկզբում հիմնական սարքի վրա՝ նախքան slave ծրագիրը slave սարքի վրա գործարկելը:
- Բազմամեքենաների հաղորդակցության հիմնական և ստրուկ մեքենաների IP հասցեները պետք է լինեն նույն ցանցում: Սա նշանակում է, որ IP հասցեն և ենթացանցային դիմակը գտնվում են նույն ցանցի տակ:
- ROS_HOSTNAME-ը շրջակա միջավայրի կազմաձևման ֆայլում .bashrc խորհուրդ չի տրվում օգտագործել localhost-ը: Խորհուրդ է տրվում օգտագործել հատուկ IP հասցե:
- Այն դեպքում, երբ ստրկական IP հասցեն ճիշտ սահմանված չէ, ստրուկ սարքը դեռ կարող է մուտք գործել ROS-ի հիմնական, բայց չի կարող մուտքագրել կառավարման տեղեկատվությունը:
- Եթե վիրտուալ մեքենան մասնակցում է բազմաֆունկցիոնալ հաղորդակցությանը, ապա դրա ցանցային ռեժիմը պետք է միացվի կամուրջ ռեժիմին: Ստատիկ IP-ն չի կարող ընտրվել ցանցային միացման համար:
- Բազմամեքենաների հաղորդակցությունը չի կարող view կամ բաժանորդագրվել հաղորդագրության տվյալների տիպի թեմաներին, որոնք տեղական տարածքում գոյություն չունեն:
- Դուք կարող եք օգտագործել Little Turtle մոդելավորման ցուցադրությունը՝ ստուգելու համար, թե արդյոք ռոբոտների միջև հաղորդակցությունը հաջող է.
- a. Փախիր վարպետից
- rescore #գործարկել ROS ծառայություններ
- ամբիոն turtles turtlesim_node #launch turtles ինտերֆեյս
- b. Փախիր ստրուկից
- կրկնել turtles turtle_teleop_key #գործարկել ստեղնաշարի կառավարման հանգույցը կրիաների համար
- a. Փախիր վարպետից
Եթե դուք կարող եք շահարկել կրիայի շարժումները ստեղնաշարից ստրուկի վրա, դա նշանակում է, որ վարպետ/ստրուկ հաղորդակցությունը հաջողությամբ հաստատվել է:
Ավտոմատ WiFi միացում ROS-ում
Ստորև բերված ընթացակարգերը բացատրում են, թե ինչպես կարելի է կարգավորել ռոբոտը, որպեսզի ավտոմատ կերպով միանա հյուրընկալող ցանցին կամ երթուղիչի ցանցին:
Ավտոմատ Wifi կապի կարգավորում Jetson Nano-ի համար
- Միացրեք Jetson Nano-ն VNC հեռակառավարման գործիքի միջոցով կամ անմիջապես համակարգչի էկրանին: Կտտացրեք վերևի աջ անկյունում գտնվող wifi պատկերակը, այնուհետև կտտացրեք «Խմբագրել կապերը…»:
- Կտտացրեք + կոճակը Ցանցային միացումներում.
- «Ընտրեք կապի տեսակը» պատուհանի տակ սեղմեք բացվող ընտրացանկը և սեղմեք «Ստեղծել…» կոճակը:
- Կառավարման վահանակում սեղմեք Wifi տարբերակը: Մուտքագրեք Wifi անունը՝ միանալու համար «Միացման անվանում» և SSID դաշտերում: «Ռեժիմ» բացվող ընտրացանկում ընտրեք «Հաճախորդ» և «Սարք» բացվող ընտրացանկում ընտրեք «wlan0»:
- Կառավարման վահանակում սեղմեք «Ընդհանուր» տարբերակը և նշեք «Ավտոմատ կերպով միանալ այս ցանցին…»: «Միացման առաջնահերթություն ավտոմատ ակտիվացման համար» տարբերակում միացման առաջնահերթությունը սահմանեք 1-ի: Նշեք «Բոլոր օգտվողները կարող են միանալ այս ցանցին» տարբերակը: Երբ այլ wifi-ի համար «Միացման առաջնահերթություն ավտոմատ ակտիվացման համար» ընտրանքը դրված է 0-ի, սա նշանակում է, որ սա նախկինում նախընտրելի wifi ցանցն է:
- Կառավարման վահանակում սեղմեք «Wi-Fi Security» տարբերակը: Ընտրեք «WPA & WPA2 Personal» «Անվտանգություն» դաշտում: Այնուհետև մուտքագրեք Wifi գաղտնաբառը «Գաղտնաբառ» դաշտում:
Նշում. Եթե ռոբոտը չի կարող ավտոմատ կերպով միանալ wifi ցանցին բեռնումից հետո, երբ wifi-ի առաջնահերթությունը 0 է, դա կարող է պայմանավորված լինել թույլ wifi ազդանշանի խնդրով: Այս խնդրից խուսափելու համար կարող եք ջնջել նախկինում միացված wifi-ի բոլոր տարբերակները: Պահպանեք միայն հյուրընկալողի կամ երթուղիչի կողմից ստեղծված wifi ցանցը: Ցանցի կարգավորումների կառավարման վահանակում սեղմեք «IPv4 Settings» տարբերակը: Ընտրեք «Ձեռնարկ» տարբերակը «Մեթոդ» դաշտում: Այնուհետև կտտացրեք «Ավելացնել», «Հասցե» դաշտում լրացրեք ստրուկ մեքենայի IP հասցեն: «Ցանցային դիմակ» դաշտում լրացրեք «24»: Լրացրեք IP ցանցի հատվածը «Gateway»-ում: IP ցանցի հատվածի վերջին երեք թվանշանները փոխեք «1»-ի: Այս քայլի հիմնական նպատակն է ֆիքսել IP հասցեն: Առաջին անգամ ավարտվելուց հետո IP հասցեն կմնա անփոփոխ, երբ հետագայում միանաք նույն WIFI-ին:
Բոլոր պարամետրերը կազմաձևելուց հետո սեղմեք «պահպանել»՝ կարգավորումները պահպանելու համար: Պահպանումը հաջողությամբ ավարտվելուց հետո ռոբոտը ավտոմատ կերպով կմիանա հոսթի կամ երթուղիչի ցանցին, երբ այն միացված է:
Նշում.
- Այստեղ սահմանված IP հասցեն պետք է լինի նույնը, ինչ .bashrc ֆայլում սահմանված IP հասցեն Բաժին 2.1-ում:
- Վարպետի և յուրաքանչյուր ստրուկի IP հասցեն պետք է լինի եզակի:
- Հիմնական և ստրուկ IP հասցեները պետք է լինեն ցանցի նույն հատվածում:
- Դուք պետք է սպասեք, որ հյուրընկալողը կամ երթուղիչը WiFi ազդանշան ուղարկի, նախքան ստրուկ ռոբոտը միացվի և ավտոմատ կերպով միանա WiFi ցանցին:
- Կարգավորումը կազմաձևելուց հետո, եթե ռոբոտը չի կարող ավտոմատ կերպով միանալ WiFi-ին, երբ այն միացված է, միացրեք և անջատեք ցանցի քարտը և փորձեք նորից միանալ:
Ավտոմատ Wifi կապի կարգավորում Raspberry Pi-ի համար
Raspberry Pi-ի ընթացակարգը նույնն է, ինչ Jetson Nano-ն:
Ավտոմատ Wifi կապի կարգավորում Jetson TX1-ի համար
Կարգավորումը Jetson TX1-ում գրեթե նույնն է, ինչ Jetson Nano-ում, մի բացառությամբ Jetson TX1-ը պետք է ցանցի կարգավորումների կառավարման վահանակում ընտրի «wlan1» սարքը «Device»-ում:
ԲԱԶՄԱԳՈՐԾԱԿԱՆ ՍԻՆԽՐՈՆԻԶՄԱՆ ԿԱՐԳԱՎՈՐՈՒՄ
Բազմագործակալների ձևավորման նախագծում ժամանակի համաժամացման մի քանի գործակալների կարգավորումը վճռորոշ քայլ է: Ձևավորման գործընթացում շատ խնդիրներ կառաջանան յուրաքանչյուր ռոբոտի ասինխրոն համակարգի ժամանակի պատճառով։ Բազմագործակալների ժամանակի համաժամացումը բաժանված է երկու իրավիճակի, մասնավորապես՝ իրավիճակ, երբ և՛ վարպետ, և՛ ստրուկ ռոբոտները միացված են ցանցին, և այն իրավիճակ, երբ երկուսն էլ անջատված են ցանցից:
Հաջող Master/Slave ցանցային միացում
Բազմագենտային հաղորդակցությունը կազմաձևելուց հետո, եթե հիմնական և ստրուկ մեքենաները կարողանան հաջողությամբ միանալ ցանցին, նրանք ավտոմատ կերպով կհամաժամացնեն ցանցի ժամանակը: Այս դեպքում ժամանակի համաժամացման հասնելու համար լրացուցիչ գործողություններ չեն պահանջվում:
Ցանցային անջատումների անսարքությունների վերացում
Բազմագենտային հաղորդակցությունը կազմաձևելուց հետո, եթե հիմնական և ստրուկ սարքերը չեն կարող հաջողությամբ միանալ ցանցին, անհրաժեշտ է ձեռքով համաժամացնել ժամանակը: Մենք կօգտագործենք ամսաթիվ հրամանը՝ ժամանակի կարգավորումն ավարտելու համար:
Նախ տեղադրեք տերմինատոր գործիքը: Տերմինատորի գործիքից օգտագործեք պատուհանի բաժանման գործիքը, որպեսզի տեղադրեք հիմնական և slave-ի կառավարման տերմինալները միևնույն տերմինալային պատուհանում (սեղմեք մկնիկի աջ կոճակը՝ բաժանված պատուհան սահմանելու համար և մուտք գործեք հիմնական և ստրուկ մեքենաներ ssh-ով տարբեր պատուհաններում): .
- sudo apt-get install terminator # Ներբեռնեք տերմինատորը՝ տերմինալի պատուհանը բաժանելու համար
Սեղմեք վերևի ձախ կողմում գտնվող կոճակը, ընտրեք [Broadcast to all]/[Broadcast all] տարբերակը և մուտքագրեք հետևյալ հրամանը. Այնուհետև օգտագործեք տերմինատոր գործիքը, որպեսզի սահմանեք նույն ժամանակը վարպետի և ստրուկի համար:
- sudo date -s «2022-01-30 15:15:00» # Ձեռքով ժամանակի կարգավորում
ԲԱԶՄԱԳՈՐԾԱԿԱՆ ROS ՓԱԹԵԹ
ROS փաթեթի ներածություն
Կարգավորեք ստրուկի անունը
Wheeltec_multi ֆունկցիայի փաթեթում անհրաժեշտ է յուրաքանչյուր ստրուկ ռոբոտի համար սահմանել եզակի անուն՝ սխալներից խուսափելու համար։ Նախample, No 1 slave1-ի և No 2-ի համար slave2-ի համար և այլն: Տարբեր անուններ սահմանելու նպատակն է խմբավորել գործող հանգույցները և տարբերել դրանք տարբեր անվանատարածքներով: Նախample, ստրուկ 1-ի ռադարի թեման է/slave1/scan, իսկ ստրուկ 1-ի LiDAR հանգույցը/slave1/laser է:
Կարգավորեք ստրկական կոորդինատները
The wheeltec_multi փաթեթը կարող է իրականացնել մաքսային կազմավորումներ: Երբ տարբեր կազմավորումներ են պահանջվում, պարզապես փոփոխեք ստրուկ ռոբոտների ցանկալի կոորդինատները: Slave_x-ը և slave_y-ը ստրուկի x և y կոորդինատներն են, որի սկզբնական հղման կետը գլխավորն է: Վարպետի ճակատը x կոորդինատի դրական ուղղությունն է, իսկ ձախ կողմը՝ y կոորդինատի դրական ուղղությունը։ Կարգավորումն ավարտելուց հետո TF կոորդինատային ստրուկ1 կթողարկվի որպես ստրուկի ակնկալվող կոորդինատ: Եթե կա մեկ տերը և երկու ստրուկ, կարող է սահմանվել հետևյալ կազմավորումը.
- Հորիզոնական ձևավորում. կարող եք ձախ կողմում ստրուկի կոորդինատները սահմանել slave_x:0, slave_y՝ 0.8, իսկ աջ կողմում գտնվող ստրուկի կոորդինատները՝ slave_x:0, slave_y:-0.8:
- Սյունակի ձևավորում. Մեկ ստրուկի կոորդինատները կարող են սահմանվել՝ slave_x:-0.8, slave_y:0, իսկ մյուս ստրուկի կոորդինատները կարող են սահմանվել՝ slave_x:-1.8, slave_y:0:
- Եռանկյունաձև ձևավորում. մի ստրուկի կոորդինատները կարող են սահմանվել՝ slave_x:-0.8, slave_y՝ 0.8, իսկ մյուս ստրուկի կոորդինատները՝ slave_x:-0.8, slave_y:-0.8:
Այլ կազմավորումները կարող են հարմարեցվել ըստ անհրաժեշտության:
Նշում:
- Երկու ռոբոտների միջև առաջարկվող հեռավորությունը սահմանվել է 0.8, և խորհուրդ է տրվում 0.6-ից ցածր լինել: Ստրուկների և տիրոջ միջև հեռավորությունը խորհուրդ է տրվում սահմանել 2.0-ից ցածր: Որքան հեռու է տիրոջից, այնքան մեծ է ստրուկի գծային արագությունը, երբ տերը պտտվում է: Առավելագույն արագության սահմանափակման պատճառով ստրուկի արագությունը կշեղվի, եթե այն չհամապատասխանի պահանջներին: Ռոբոտի կազմավորումը կդառնա քաոսային։
Ստրկության դիրքի սկզբնավորումը
- Ստրուկի սկզբնական դիրքը լռելյայն գտնվում է ակնկալվող կոորդինատներում: Նախքան ծրագիրը գործարկելը, պարզապես տեղադրեք ստրուկ ռոբոտը իր ակնկալվող կոորդինատներին մոտ՝ սկզբնավորումն ավարտելու համար: Այս ֆունկցիան իրականացվում է pose_setter հանգույցի կողմից turn_on_wheeltec_robot.launch անունով ֆայլում wheeltec_multi փաթեթում, ինչպես ցույց է տրված Նկար 4-1-3-ում:
Եթե օգտագործողը ցանկանում է հարմարեցնել ստրուկի սկզբնական դիրքը, ապա նա պետք է միայն սահմանի slave_x և slave_y արժեքները, ինչպես ցույց է տրված Նկար 4-1-4-ում wheeltec_slave.launch-ում: Slave_x և slave_y արժեքները կփոխանցվեն turn_on_wheeltec_robot.launch-ին և կհատկացվեն pose_setter հանգույցին: Պարզապես տեղադրեք ռոբոտը հատուկ դիրքում, նախքան ծրագիրը գործարկելը:
Դիրքի կազմաձևում
Բազմագործակալ կազմավորման մեջ առաջին խնդիրը, որը պետք է լուծվի, տիրոջ և ստրուկի դիրքավորումն է: Վարպետը նախ կկառուցի 2D քարտեզ: Քարտեզը ստեղծելուց և պահպանելուց հետո գործարկեք 2D նավիգացիոն փաթեթը և օգտագործեք Մոնտե Կառլոյի դիրքավորման հարմարվողական ալգորիթմը (amcl դիրքավորումը) 2D նավիգացիոն փաթեթում՝ հիմնականի դիրքավորումը կարգավորելու համար: Քանի որ վարպետը և ստրուկները նույն ցանցում են և կիսում են նույն հանգույցի կառավարիչը, վարպետը գործարկել է քարտեզը 2D նավիգացիոն փաթեթից, բոլոր ստրուկները կարող են օգտագործել նույն քարտեզը նույն հանգույցի կառավարչի ներքո: Հետեւաբար, ստրուկը քարտեզ ստեղծելու կարիք չունի։ Wheeltec_slave.launch-ում գործարկեք Մոնտե Կառլոյի դիրքավորումը (amcl դիրքավորում), ստրուկները կարող են կարգավորել իրենց դիրքերը՝ օգտագործելով վարպետի կողմից ստեղծված քարտեզը:
Ինչպես ստեղծել ձևավորում և պահպանել ձևավորումը
Ձևավորման շարժման գործընթացում վարպետ շարժումը կարող է կառավարվել Rviz-ի, ստեղնաշարի, հեռակառավարման և այլ մեթոդներով։ Ստրուկը հաշվարկում է իր արագությունը slave_tf_listener հանգույցի միջոցով, որպեսզի վերահսկի իր շարժումը և հասնի ձևավորման նպատակին։ Slave_tf_listener հանգույցը սահմանափակում է ստրուկի արագությունը՝ հանգույցի հաշվարկից խուսափելու համար, որը կհանգեցնի մի շարք ազդեցությունների: Հատուկ արժեքը կարող է փոփոխվել wheeltec_slave.launch-ում:
Ձևավորման ալգորիթմի համապատասխան պարամետրերը հետևյալն են.
Խոչընդոտներից խուսափելու տեղեկատվություն
Բազմագործակալական ձևավորման դեպքում վարպետը կարող է օգտագործել move_base հանգույցը՝ խոչընդոտներից խուսափելու համար: Այնուամենայնիվ, ստրուկի սկզբնավորումը չի օգտագործում move_base հանգույցը: Այս պահին multi_avoidance հանգույցը պետք է կանչվի ստրուկ ծրագրում: Խոչընդոտներից խուսափելու հանգույցը լռելյայն միացված է փաթեթում: Անհրաժեշտության դեպքում խուսափելը կարող է սահմանվել «կեղծ»՝ խոչընդոտներից խուսափելու հանգույցն անջատելու համար:
Խոչընդոտներից խուսափելու հանգույցի որոշ համապատասխան պարամետրեր ցուցադրված են ստորև նկարում, որտեղ safe_distance-ը խոչընդոտների անվտանգ հեռավորության սահմանն է, իսկ danger_distance-ը խոչընդոտների վտանգավոր հեռավորության սահմանն է: Երբ խոչընդոտը գտնվում է անվտանգ և վտանգավոր հեռավորության վրա, ստրուկը կարգավորում է իր դիրքը՝ խոչընդոտից խուսափելու համար: Երբ խոչընդոտը վտանգի տակ է, ստրուկը կհեռանա խոչընդոտից:
Շահագործման կարգը
Մուտքագրեք կատարման հրամանը
Նախապատրաստական աշխատանքները մինչև բազմաբնույթ գործակալների ձևավորումը սկսելը.
- Master-ը և slave-ը միանում են նույն ցանցին և ճիշտ կարգավորում բազմագենտային հաղորդակցությունը
- Վարպետը նախօրոք կառուցում է 2D քարտեզ և պահպանում այն
- Master-ը տեղադրվում է քարտեզի մեկնարկային կետում, իսկ ստրուկը տեղադրվում է սկզբնավորման դիրքի մոտ (ստրուկների ձևավորման լռելյայն դիրք)
- Jetson Nano/Raspberry Pi հեռակա մուտք գործելուց հետո կատարեք ժամանակի համաժամացում:
sudo date -s «2022-04-01 15:15:00»
- Քայլ 1Բացեք 2D քարտեզ վարպետից:
roslaunch turn_on_wheeltec_robot navigation.launch
- Քայլ 2Գործարկեք ձևավորման ծրագիրը բոլոր ստրուկներից:
roslaunch wheeltec_multi wheeltec_slave.launch
- Քայլ 3Բացեք ստեղնաշարի կառավարման հանգույցը վարպետից կամ օգտագործեք ջոյսթիկն՝ հիմնական շարժումը հեռակառավարելու համար:
վերագործարկել wheeltec_robot_rc keyboard_teleop.launch
- Քայլ 4: (Ըստ ցանկության) Դիտեք ռոբոտի շարժումները Rviz-ից:
rviz
Նշում.
- Համոզվեք, որ ավարտեք ժամանակի համաժամացման գործողությունը նախքան ծրագիրը գործարկելը:
- Բազմագործակալ կազմավորման վարպետը կառավարելիս անկյունային արագությունը չպետք է չափազանց արագ լինի: Առաջարկվող գծային արագությունը 0.2 մ/վ է, անկյունային արագության աստիճանը 0.3 ռադ/վրկ-ից ցածր: Երբ վարպետը շրջադարձ է կատարում, որքան հեռու է ստրուկը տիրոջից, այնքան մեծ է գծային արագությունը: Փաթեթում գծային արագության և անկյունային արագության սահմանափակման պատճառով, երբ ստրուկ մեքենան չի կարող հասնել պահանջվող արագությանը, ձևավորումը քաոսային կլինի: Ընդհանուր առմամբ, չափազանց գծային արագությունը կարող է հեշտությամբ վնասել ռոբոտին:
- Երբ ստրուկների թիվը մեկից ավելի է, ROS հաղորդավարի սահմանափակ Wifi թողունակության պատճառով, հեշտ է առաջացնել զգալի ուշացումներ և անջատել բազմագործակալային հաղորդակցությունը: Երթուղիչի օգտագործումը կարող է լավ լուծել այս խնդիրը:
- Բազմառոբոտային կազմավորման TF ծառը (2 ստրուկ) է. rqt_tf_tree
- Բազմառոբոտի ձևավորման հանգույցների փոխհարաբերությունների դիագրամը (2 ստրուկ) հետևյալն է. rqt_graph.
Փաստաթղթեր / ռեսուրսներ
![]() |
ROBOWORKS Robofleet MULTI-AGENT ALGORITHMS [pdf] Օգտագործողի ձեռնարկ Robofleet Multi Agent ալգորիթմներ, Robofleet, Multi Agent ալգորիթմներ, Գործակալների ալգորիթմներ, Ալգորիթմներ |