ROBOWORKS-LOGO

ROBOWORKS Robofleet MULTI-AGENT ALGORITHMS

ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-PRODUCT

Տեխնիկական պայմաններ

  • Ապրանքի անվանումը՝ ROBOWORKS
  • Տարբերակ՝ 20240501
  • Պատրաստեցին՝ Ուեյն Լյու և Ջանեթ Լին
  • Ամսաթիվ ՝ 1 թվականի մայիսի 2024-ին

Ապրանքի մասին տեղեկատվություն

ROBOWORKS-ը բազմաֆունկցիոնալ համակարգ է, որը թույլ է տալիս իրականացնել ռոբոտների համակարգման և հաղորդակցման տարբեր ալգորիթմներ:

ՀՏՀ-ներ

Հարց. Ի՞նչ պետք է անեմ, եթե ռոբոտը չի կարող ավտոմատ կերպով միանալ Wifi-ին:

Պատ. Եթե ռոբոտը չի կարողանում ավտոմատ միանալ, փորձեք անջատել և նորից միացնել ցանցային քարտը և նորից փորձեք միանալ:

ԱՄՓՈՓՈՒՄ

Այս փաստաթուղթը հիմնականում բացատրում է wheeltec_multi անունով բազմառոբոտի ձևավորման ֆունկցիայի փաթեթի օգտագործումը:

Այս փաստաթուղթը բաժանված է չորս մասի.

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

Այս փաստաթղթի նպատակը ներածություն է բազմաֆունկցիոնալ ռոբոտային համակարգերին և թույլ է տալիս օգտվողներին արագ սկսել բազմառոբոտների ձևավորման նախագիծը:

ՆԵՐԱԾՈՒԹՅՈՒՆ ԲԱԶՄԱԳՈՐԾԱԿԱՆ ԱԼԳՈՐԻԹՄՆԵՐԻՆ

Բազմագործակալների ձևավորման ալգորիթմներ

Այս ROS փաթեթը ներկայացնում է մի քանի գործակալների տիպիկ խնդիր՝ համագործակցային հսկողության մեջ՝ ձևավորման շարժման ընթացքում: Այս ձեռնարկը հիմք է դնում այս թեմայի հետագա զարգացման համար: Ձևավորման վերահսկման ալգորիթմը վերաբերում է ալգորիթմին, որը վերահսկում է բազմաթիվ գործակալներ՝ առաջադրանք կատարելու համար հատուկ կազմավորում ձևավորելու համար: Համագործակցությունը վերաբերում է մի քանի գործակալների միջև համագործակցությանը, որոնք օգտագործում են որոշակի սահմանափակող հարաբերություններ՝ առաջադրանքն ավարտելու համար: Վերցրեք բազմառոբոտների ձևավորման շարժիչը որպես նախկինampLe, համագործակցությունը նշանակում է, որ մի քանի ռոբոտներ միասին կազմում են ցանկալի կազմավորում: Դրա էությունը որոշակի մաթեմատիկական հարաբերություն է, որը բավարարվում է յուրաքանչյուր ռոբոտի դիրքերի միջև: Ձևավորման մեթոդները հիմնականում բաժանվում են ձևավորման կենտրոնացված կառավարման և բաշխված ձևավորման կառավարման: Կենտրոնացված ձևավորման կառավարման մեթոդները հիմնականում ներառում են վիրտուալ կառուցվածքի մեթոդը, գրաֆիկական տեսության մեթոդը և մոդելի կանխատեսման մեթոդը: Բաշխված ձևավորման վերահսկման մեթոդները հիմնականում ներառում են առաջնորդ-հետևորդ մեթոդ, վարքագծի վրա հիմնված մեթոդ և վիրտուալ կառուցվածքի մեթոդ:
Այս ROS փաթեթը կիրառում է առաջնորդ-հետևորդ մեթոդը բաշխված կազմավորումների կառավարման մեթոդում՝ մի քանի ռոբոտների ձևավորման սկավառակը գործարկելու համար: Ձևավորման մեկ ռոբոտը նշանակված է որպես առաջնորդ, իսկ մյուս ռոբոտները նշանակված են որպես ստրուկներ, որոնք պետք է հետևեն առաջնորդին: Ալգորիթմն օգտագործում է առաջատար ռոբոտի շարժման հետագիծը՝ սահմանելու կոորդինատները, որոնք պետք է հետևեն հետևյալ ռոբոտներին որոշակի ուղղությամբ և արագությամբ։ Ուղղելով դիրքի շեղումները հետևող կոորդինատներից, հետևորդները ի վերջո կնվազեցնեն հետևորդի և սպասվող հետևման կոորդինատների միջև շեղումը մինչև զրոյի՝ ձևավորման մղման նպատակներին հասնելու համար: Այս կերպ ալգորիթմը համեմատաբար ավելի քիչ բարդ է:

Խոչընդոտներից խուսափելու ալգորիթմներ

Խոչընդոտներից խուսափելու ընդհանուր ալգորիթմը արհեստական ​​պոտենցիալ դաշտի մեթոդն է: Ռոբոտի շարժումը ֆիզիկական միջավայրում դիտվում է որպես շարժում վիրտուալ արհեստական ​​ուժային դաշտում: Մոտակա խոչընդոտը նույնականացվում է LiDAR-ի կողմից: Խոչընդոտն ապահովում է վանող ուժի դաշտ՝ ռոբոտին վանում առաջացնելու համար, իսկ թիրախային կետը՝ գրավիտացիոն դաշտ՝ ռոբոտին գրավիտացիոն ուժ առաջացնելու համար: Այս կերպ այն վերահսկում է ռոբոտի շարժումը վանման և ձգողականության համակցված գործողության ներքո։
Այս ROS փաթեթը բարելավում է՝ հիմնված արհեստական ​​ներուժի դաշտի մեթոդի վրա: Նախ, ձևավորման ալգորիթմը հաշվարկում է Slave-ի հետևորդի գծային և անկյունային արագությունը: Այնուհետև այն մեծացնում կամ նվազեցնում է գծային և անկյունային արագությունը՝ ըստ խոչընդոտներից խուսափելու պահանջների։ Երբ Slave-ի հետևորդի և խոչընդոտի միջև հեռավորությունը ավելի մոտ է, խոչընդոտի վանող ուժն ավելի մեծ է Slave-ի հետևորդին: Մինչդեռ գծային արագության փոփոխությունը և անկյունային արագության տատանումները ավելի մեծ են։ Երբ խոչընդոտը մոտենում է Slave-ի հետևորդի առջևին, Slave-ի հետևորդին ուղղված խոչընդոտի վանումն ավելի մեծ է դառնում (առջևի վանումն ամենամեծն է, իսկ կողայինը՝ ամենափոքրը): Արդյունքում գծային արագության և անկյունային արագության տատանումները ավելի մեծ են։ Արհեստական ​​պոտենցիալ դաշտի մեթոդի միջոցով այն բարելավում է լուծումը, երբ ռոբոտը կարող է դադարեցնել արձագանքը խոչընդոտի առջև: Սա ծառայում է ավելի լավ խոչընդոտներից խուսափելու նպատակին:

ԲԱԶՄԱԳՈՐԾԱԿԱՆ ԿԱՊԻ ԿԱՐԳԱՎՈՐՈՒՄ

Բազմագործակալական հաղորդակցությունը բազմառոբոտների ձևավորումն ավարտելու հիմնական քայլերից մեկն է: Երբ մի քանի ռոբոտների հարաբերական դիրքերը անհայտ են, ռոբոտներին անհրաժեշտ է հաղորդակցության միջոցով կիսել միմյանց տեղեկատվությունը, որպեսզի հեշտացնեն կապերի հաստատումը: ROS-ով բաշխված ճարտարապետությունը և ցանցային հաղորդակցությունները շատ հզոր են: Այն հարմար է ոչ միայն միջգործընթացային հաղորդակցության, այլև տարբեր սարքերի միջև հաղորդակցության համար: Ցանցային հաղորդակցության միջոցով բոլոր հանգույցները կարող են աշխատել ցանկացած համակարգչի վրա: Հիմնական առաջադրանքները, ինչպիսիք են տվյալների մշակումը, կատարվում են հյուրընկալող կողմում: Ստրկական մեքենաները պատասխանատու են տարբեր սենսորների կողմից հավաքագրված բնապահպանական տվյալների ստացման համար: Այստեղ հյուրընկալողը մենեջերն է, որն աշխատում է Master հանգույցը ROS-ում: Ներկայիս բազմագործակալային հաղորդակցման շրջանակն իրականացվում է հանգույցների կառավարչի և պարամետրերի կառավարչի միջոցով՝ բազմաթիվ ռոբոտների միջև հաղորդակցությունը կարգավորելու համար:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (1)

Բազմագործակալական հաղորդակցությունների ստեղծման քայլերը

  • Տեղադրեք 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 հասցե:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (2)

ROS-ի բազմամեքենայական հաղորդակցությունը սահմանափակված չէ ROS-ի թողարկման տարբերակով: Բազմամեքենաների հաղորդակցության գործընթացում պետք է տեղյակ լինել հետևյալի մասին.

  1. ROS ստրուկ ծրագրի գործարկումը կախված է ROS գլխավոր սարքի ROS գլխավոր ծրագրից: ROS-ի հիմնական ծրագիրը պետք է գործարկվի սկզբում հիմնական սարքի վրա՝ նախքան slave ծրագիրը slave սարքի վրա գործարկելը:
  2. Բազմամեքենաների հաղորդակցության հիմնական և ստրուկ մեքենաների IP հասցեները պետք է լինեն նույն ցանցում: Սա նշանակում է, որ IP հասցեն և ենթացանցային դիմակը գտնվում են նույն ցանցի տակ:
  3. ROS_HOSTNAME-ը շրջակա միջավայրի կազմաձևման ֆայլում .bashrc խորհուրդ չի տրվում օգտագործել localhost-ը: Խորհուրդ է տրվում օգտագործել հատուկ IP հասցե:
  4. Այն դեպքում, երբ ստրկական IP հասցեն ճիշտ սահմանված չէ, ստրուկ սարքը դեռ կարող է մուտք գործել ROS-ի հիմնական, բայց չի կարող մուտքագրել կառավարման տեղեկատվությունը:
  5. Եթե ​​վիրտուալ մեքենան մասնակցում է բազմաֆունկցիոնալ հաղորդակցությանը, ապա դրա ցանցային ռեժիմը պետք է միացվի կամուրջ ռեժիմին: Ստատիկ IP-ն չի կարող ընտրվել ցանցային միացման համար:
  6. Բազմամեքենաների հաղորդակցությունը չի կարող view կամ բաժանորդագրվել հաղորդագրության տվյալների տիպի թեմաներին, որոնք տեղական տարածքում գոյություն չունեն:
  7. Դուք կարող եք օգտագործել Little Turtle մոդելավորման ցուցադրությունը՝ ստուգելու համար, թե արդյոք ռոբոտների միջև հաղորդակցությունը հաջող է.
    • a. Փախիր վարպետից
      • rescore #գործարկել ROS ծառայություններ
      • ամբիոն turtles turtlesim_node #launch turtles ինտերֆեյս
    • b. Փախիր ստրուկից
      • կրկնել turtles turtle_teleop_key #գործարկել ստեղնաշարի կառավարման հանգույցը կրիաների համար

Եթե ​​դուք կարող եք շահարկել կրիայի շարժումները ստեղնաշարից ստրուկի վրա, դա նշանակում է, որ վարպետ/ստրուկ հաղորդակցությունը հաջողությամբ հաստատվել է:

Ավտոմատ WiFi միացում ROS-ում

Ստորև բերված ընթացակարգերը բացատրում են, թե ինչպես կարելի է կարգավորել ռոբոտը, որպեսզի ավտոմատ կերպով միանա հյուրընկալող ցանցին կամ երթուղիչի ցանցին:

Ավտոմատ Wifi կապի կարգավորում Jetson Nano-ի համար

  1. Միացրեք Jetson Nano-ն VNC հեռակառավարման գործիքի միջոցով կամ անմիջապես համակարգչի էկրանին: Կտտացրեք վերևի աջ անկյունում գտնվող wifi պատկերակը, այնուհետև կտտացրեք «Խմբագրել կապերը…»:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (3)
  2. Կտտացրեք + կոճակը Ցանցային միացումներում.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (4)
  3. «Ընտրեք կապի տեսակը» պատուհանի տակ սեղմեք բացվող ընտրացանկը և սեղմեք «Ստեղծել…» կոճակը:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (5)
  4. Կառավարման վահանակում սեղմեք Wifi տարբերակը: Մուտքագրեք Wifi անունը՝ միանալու համար «Միացման անվանում» և SSID դաշտերում: «Ռեժիմ» բացվող ընտրացանկում ընտրեք «Հաճախորդ» և «Սարք» բացվող ընտրացանկում ընտրեք «wlan0»:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (6)
  5. Կառավարման վահանակում սեղմեք «Ընդհանուր» տարբերակը և նշեք «Ավտոմատ կերպով միանալ այս ցանցին…»: «Միացման առաջնահերթություն ավտոմատ ակտիվացման համար» տարբերակում միացման առաջնահերթությունը սահմանեք 1-ի: Նշեք «Բոլոր օգտվողները կարող են միանալ այս ցանցին» տարբերակը: Երբ այլ wifi-ի համար «Միացման առաջնահերթություն ավտոմատ ակտիվացման համար» ընտրանքը դրված է 0-ի, սա նշանակում է, որ սա նախկինում նախընտրելի wifi ցանցն է:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (7)
  6. Կառավարման վահանակում սեղմեք «Wi-Fi Security» տարբերակը: Ընտրեք «WPA & WPA2 Personal» «Անվտանգություն» դաշտում: Այնուհետև մուտքագրեք Wifi գաղտնաբառը «Գաղտնաբառ» դաշտում:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (8)

Նշում. Եթե ​​ռոբոտը չի կարող ավտոմատ կերպով միանալ wifi ցանցին բեռնումից հետո, երբ wifi-ի առաջնահերթությունը 0 է, դա կարող է պայմանավորված լինել թույլ wifi ազդանշանի խնդրով: Այս խնդրից խուսափելու համար կարող եք ջնջել նախկինում միացված wifi-ի բոլոր տարբերակները: Պահպանեք միայն հյուրընկալողի կամ երթուղիչի կողմից ստեղծված wifi ցանցը: Ցանցի կարգավորումների կառավարման վահանակում սեղմեք «IPv4 Settings» տարբերակը: Ընտրեք «Ձեռնարկ» տարբերակը «Մեթոդ» դաշտում: Այնուհետև կտտացրեք «Ավելացնել», «Հասցե» դաշտում լրացրեք ստրուկ մեքենայի IP հասցեն: «Ցանցային դիմակ» դաշտում լրացրեք «24»: Լրացրեք IP ցանցի հատվածը «Gateway»-ում: IP ցանցի հատվածի վերջին երեք թվանշանները փոխեք «1»-ի: Այս քայլի հիմնական նպատակն է ֆիքսել IP հասցեն: Առաջին անգամ ավարտվելուց հետո IP հասցեն կմնա անփոփոխ, երբ հետագայում միանաք նույն WIFI-ին:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (9)

Բոլոր պարամետրերը կազմաձևելուց հետո սեղմեք «պահպանել»՝ կարգավորումները պահպանելու համար: Պահպանումը հաջողությամբ ավարտվելուց հետո ռոբոտը ավտոմատ կերպով կմիանա հոսթի կամ երթուղիչի ցանցին, երբ այն միացված է:

Նշում.

  1. Այստեղ սահմանված IP հասցեն պետք է լինի նույնը, ինչ .bashrc ֆայլում սահմանված IP հասցեն Բաժին 2.1-ում:
  2. Վարպետի և յուրաքանչյուր ստրուկի IP հասցեն պետք է լինի եզակի:
  3. Հիմնական և ստրուկ IP հասցեները պետք է լինեն ցանցի նույն հատվածում:
  4. Դուք պետք է սպասեք, որ հյուրընկալողը կամ երթուղիչը WiFi ազդանշան ուղարկի, նախքան ստրուկ ռոբոտը միացվի և ավտոմատ կերպով միանա WiFi ցանցին:
  5. Կարգավորումը կազմաձևելուց հետո, եթե ռոբոտը չի կարող ավտոմատ կերպով միանալ WiFi-ին, երբ այն միացված է, միացրեք և անջատեք ցանցի քարտը և փորձեք նորից միանալ:

Ավտոմատ Wifi կապի կարգավորում Raspberry Pi-ի համար

Raspberry Pi-ի ընթացակարգը նույնն է, ինչ Jetson Nano-ն:

Ավտոմատ Wifi կապի կարգավորում Jetson TX1-ի համար

Կարգավորումը Jetson TX1-ում գրեթե նույնն է, ինչ Jetson Nano-ում, մի բացառությամբ Jetson TX1-ը պետք է ցանցի կարգավորումների կառավարման վահանակում ընտրի «wlan1» սարքը «Device»-ում:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (10)

ԲԱԶՄԱԳՈՐԾԱԿԱՆ ՍԻՆԽՐՈՆԻԶՄԱՆ ԿԱՐԳԱՎՈՐՈՒՄ

Բազմագործակալների ձևավորման նախագծում ժամանակի համաժամացման մի քանի գործակալների կարգավորումը վճռորոշ քայլ է: Ձևավորման գործընթացում շատ խնդիրներ կառաջանան յուրաքանչյուր ռոբոտի ասինխրոն համակարգի ժամանակի պատճառով։ Բազմագործակալների ժամանակի համաժամացումը բաժանված է երկու իրավիճակի, մասնավորապես՝ իրավիճակ, երբ և՛ վարպետ, և՛ ստրուկ ռոբոտները միացված են ցանցին, և այն իրավիճակ, երբ երկուսն էլ անջատված են ցանցից:

Հաջող Master/Slave ցանցային միացում

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

Ցանցային անջատումների անսարքությունների վերացում

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

Նախ տեղադրեք տերմինատոր գործիքը: Տերմինատորի գործիքից օգտագործեք պատուհանի բաժանման գործիքը, որպեսզի տեղադրեք հիմնական և slave-ի կառավարման տերմինալները միևնույն տերմինալային պատուհանում (սեղմեք մկնիկի աջ կոճակը՝ բաժանված պատուհան սահմանելու համար և մուտք գործեք հիմնական և ստրուկ մեքենաներ ssh-ով տարբեր պատուհաններում): .

  • sudo apt-get install terminator # Ներբեռնեք տերմինատորը՝ տերմինալի պատուհանը բաժանելու համար

Սեղմեք վերևի ձախ կողմում գտնվող կոճակը, ընտրեք [Broadcast to all]/[Broadcast all] տարբերակը և մուտքագրեք հետևյալ հրամանը. Այնուհետև օգտագործեք տերմինատոր գործիքը, որպեսզի սահմանեք նույն ժամանակը վարպետի և ստրուկի համար:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (11)

  • 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 կթողարկվի որպես ստրուկի ակնկալվող կոորդինատ: Եթե ​​կա մեկ տերը և երկու ստրուկ, կարող է սահմանվել հետևյալ կազմավորումը.

  1. Հորիզոնական ձևավորում. կարող եք ձախ կողմում ստրուկի կոորդինատները սահմանել slave_x:0, slave_y՝ 0.8, իսկ աջ կողմում գտնվող ստրուկի կոորդինատները՝ slave_x:0, slave_y:-0.8:
  2. Սյունակի ձևավորում. Մեկ ստրուկի կոորդինատները կարող են սահմանվել՝ slave_x:-0.8, slave_y:0, իսկ մյուս ստրուկի կոորդինատները կարող են սահմանվել՝ slave_x:-1.8, slave_y:0:
  3. Եռանկյունաձև ձևավորում. մի ստրուկի կոորդինատները կարող են սահմանվել՝ slave_x:-0.8, slave_y՝ 0.8, իսկ մյուս ստրուկի կոորդինատները՝ slave_x:-0.8, slave_y:-0.8:

Այլ կազմավորումները կարող են հարմարեցվել ըստ անհրաժեշտության:

Նշում:

  • Երկու ռոբոտների միջև առաջարկվող հեռավորությունը սահմանվել է 0.8, և խորհուրդ է տրվում 0.6-ից ցածր լինել: Ստրուկների և տիրոջ միջև հեռավորությունը խորհուրդ է տրվում սահմանել 2.0-ից ցածր: Որքան հեռու է տիրոջից, այնքան մեծ է ստրուկի գծային արագությունը, երբ տերը պտտվում է: Առավելագույն արագության սահմանափակման պատճառով ստրուկի արագությունը կշեղվի, եթե այն չհամապատասխանի պահանջներին: Ռոբոտի կազմավորումը կդառնա քաոսային։

Ստրկության դիրքի սկզբնավորումը

  1. Ստրուկի սկզբնական դիրքը լռելյայն գտնվում է ակնկալվող կոորդինատներում: Նախքան ծրագիրը գործարկելը, պարզապես տեղադրեք ստրուկ ռոբոտը իր ակնկալվող կոորդինատներին մոտ՝ սկզբնավորումն ավարտելու համար: Այս ֆունկցիան իրականացվում է pose_setter հանգույցի կողմից turn_on_wheeltec_robot.launch անունով ֆայլում wheeltec_multi փաթեթում, ինչպես ցույց է տրված Նկար 4-1-3-ում:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (12)

Եթե ​​օգտագործողը ցանկանում է հարմարեցնել ստրուկի սկզբնական դիրքը, ապա նա պետք է միայն սահմանի slave_x և slave_y արժեքները, ինչպես ցույց է տրված Նկար 4-1-4-ում wheeltec_slave.launch-ում: Slave_x և slave_y արժեքները կփոխանցվեն turn_on_wheeltec_robot.launch-ին և կհատկացվեն pose_setter հանգույցին: Պարզապես տեղադրեք ռոբոտը հատուկ դիրքում, նախքան ծրագիրը գործարկելը:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (13)

Դիրքի կազմաձևում

Բազմագործակալ կազմավորման մեջ առաջին խնդիրը, որը պետք է լուծվի, տիրոջ և ստրուկի դիրքավորումն է: Վարպետը նախ կկառուցի 2D քարտեզ: Քարտեզը ստեղծելուց և պահպանելուց հետո գործարկեք 2D նավիգացիոն փաթեթը և օգտագործեք Մոնտե Կառլոյի դիրքավորման հարմարվողական ալգորիթմը (amcl դիրքավորումը) 2D նավիգացիոն փաթեթում՝ հիմնականի դիրքավորումը կարգավորելու համար: Քանի որ վարպետը և ստրուկները նույն ցանցում են և կիսում են նույն հանգույցի կառավարիչը, վարպետը գործարկել է քարտեզը 2D նավիգացիոն փաթեթից, բոլոր ստրուկները կարող են օգտագործել նույն քարտեզը նույն հանգույցի կառավարչի ներքո: Հետեւաբար, ստրուկը քարտեզ ստեղծելու կարիք չունի։ Wheeltec_slave.launch-ում գործարկեք Մոնտե Կառլոյի դիրքավորումը (amcl դիրքավորում), ստրուկները կարող են կարգավորել իրենց դիրքերը՝ օգտագործելով վարպետի կողմից ստեղծված քարտեզը:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (14)

Ինչպես ստեղծել ձևավորում և պահպանել ձևավորումը

Ձևավորման շարժման գործընթացում վարպետ շարժումը կարող է կառավարվել Rviz-ի, ստեղնաշարի, հեռակառավարման և այլ մեթոդներով։ Ստրուկը հաշվարկում է իր արագությունը slave_tf_listener հանգույցի միջոցով, որպեսզի վերահսկի իր շարժումը և հասնի ձևավորման նպատակին։ Slave_tf_listener հանգույցը սահմանափակում է ստրուկի արագությունը՝ հանգույցի հաշվարկից խուսափելու համար, որը կհանգեցնի մի շարք ազդեցությունների: Հատուկ արժեքը կարող է փոփոխվել wheeltec_slave.launch-ում:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (15)

Ձևավորման ալգորիթմի համապատասխան պարամետրերը հետևյալն են. ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (16)

Խոչընդոտներից խուսափելու տեղեկատվություն

Բազմագործակալական ձևավորման դեպքում վարպետը կարող է օգտագործել move_base հանգույցը՝ խոչընդոտներից խուսափելու համար: Այնուամենայնիվ, ստրուկի սկզբնավորումը չի օգտագործում move_base հանգույցը: Այս պահին multi_avoidance հանգույցը պետք է կանչվի ստրուկ ծրագրում: Խոչընդոտներից խուսափելու հանգույցը լռելյայն միացված է փաթեթում: Անհրաժեշտության դեպքում խուսափելը կարող է սահմանվել «կեղծ»՝ խոչընդոտներից խուսափելու հանգույցն անջատելու համար: ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (17)

Խոչընդոտներից խուսափելու հանգույցի որոշ համապատասխան պարամետրեր ցուցադրված են ստորև նկարում, որտեղ safe_distance-ը խոչընդոտների անվտանգ հեռավորության սահմանն է, իսկ danger_distance-ը խոչընդոտների վտանգավոր հեռավորության սահմանն է: Երբ խոչընդոտը գտնվում է անվտանգ և վտանգավոր հեռավորության վրա, ստրուկը կարգավորում է իր դիրքը՝ խոչընդոտից խուսափելու համար: Երբ խոչընդոտը վտանգի տակ է, ստրուկը կհեռանա խոչընդոտից:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-FIG- (18)

Շահագործման կարգը

Մուտքագրեք կատարման հրամանը

Նախապատրաստական ​​աշխատանքները մինչև բազմաբնույթ գործակալների ձևավորումը սկսելը.

  • 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

Նշում. 

  1. Համոզվեք, որ ավարտեք ժամանակի համաժամացման գործողությունը նախքան ծրագիրը գործարկելը:
  2. Բազմագործակալ կազմավորման վարպետը կառավարելիս անկյունային արագությունը չպետք է չափազանց արագ լինի: Առաջարկվող գծային արագությունը 0.2 մ/վ է, անկյունային արագության աստիճանը 0.3 ռադ/վրկ-ից ցածր: Երբ վարպետը շրջադարձ է կատարում, որքան հեռու է ստրուկը տիրոջից, այնքան մեծ է գծային արագությունը: Փաթեթում գծային արագության և անկյունային արագության սահմանափակման պատճառով, երբ ստրուկ մեքենան չի կարող հասնել պահանջվող արագությանը, ձևավորումը քաոսային կլինի: Ընդհանուր առմամբ, չափազանց գծային արագությունը կարող է հեշտությամբ վնասել ռոբոտին:
  3. Երբ ստրուկների թիվը մեկից ավելի է, ROS հաղորդավարի սահմանափակ Wifi թողունակության պատճառով, հեշտ է առաջացնել զգալի ուշացումներ և անջատել բազմագործակալային հաղորդակցությունը: Երթուղիչի օգտագործումը կարող է լավ լուծել այս խնդիրը:
  4. Բազմառոբոտային կազմավորման TF ծառը (2 ստրուկ) է. rqt_tf_tree
  5. Բազմառոբոտի ձևավորման հանգույցների փոխհարաբերությունների դիագրամը (2 ստրուկ) հետևյալն է. rqt_graph.

Փաստաթղթեր / ռեսուրսներ

ROBOWORKS Robofleet MULTI-AGENT ALGORITHMS [pdf] Օգտագործողի ձեռնարկ
Robofleet Multi Agent ալգորիթմներ, Robofleet, Multi Agent ալգորիթմներ, Գործակալների ալգորիթմներ, Ալգորիթմներ

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *