ROBOWORKS Robofleet MULTI-Agent ALGORITHMS
სპეციფიკაციები
- პროდუქტის დასახელება: ROBOWORKS
- ვერსია: 20240501
- მოამზადეს: Wayne Liu & Janette Lin
- თარიღი: 1 წლის 2024 მაისი
პროდუქტის ინფორმაცია
ROBOWORKS არის მრავალ აგენტიანი სისტემა, რომელიც იძლევა რობოტების კოორდინაციისა და კომუნიკაციისთვის სხვადასხვა ალგორითმის განხორციელების საშუალებას.
ხშირად დასმული კითხვები
Q: რა უნდა გავაკეთო, თუ რობოტი ავტომატურად ვერ დაუკავშირდება Wifi-ს?
პასუხი: თუ რობოტი ვერ ახერხებს ავტომატურად დაკავშირებას, სცადეთ გამორთოთ და გამორთოთ ქსელის ბარათი და სცადეთ ხელახლა დაკავშირება.
შეჯამება
ეს დოკუმენტი ძირითადად განმარტავს მრავალ რობოტის ფორმირების ფუნქციის პაკეტის გამოყენებას სახელად wheeltec_multi.
ეს დოკუმენტი დაყოფილია ოთხ ნაწილად:
- პირველი ნაწილი ძირითადად ეხება მრავალ რობოტ ფორმირების მეთოდის დანერგვას;
- მეორე ნაწილი ძირითადად აღწერს ROS-ის მრავალმანქანური კომუნიკაციის პარამეტრებს, მათ შორის ROS-ის კონსტრუქციის მრავალმანქანურ კომუნიკაციას და პრობლემებს, რომლებიც შეიძლება შეგვხვდეს ROS კომუნიკაციის პროცესში;
- მესამე ნაწილი ძირითადად აღწერს დროის მრავალმანქანიანი სინქრონიზაციის მუშაობის ეტაპებს;
- მეოთხე ნაწილი განმარტავს მრავალმანქანიანი ფორმირების ფუნქციის პაკეტის სპეციფიკურ გამოყენებას.
ამ დოკუმენტის მიზანია გაეცნოს მრავალ აგენტურ რობოტულ სისტემებს და საშუალებას აძლევს მომხმარებლებს სწრაფად დაიწყონ მრავალ რობოტის ფორმირების პროექტი.
შესავალი მრავალ აგენტის ალგორითმებში
მრავალ აგენტის ფორმირების ალგორითმები
ეს ROS პაკეტი წარმოადგენს მრავალ აგენტის ტიპურ პრობლემას თანამშრომლობით კონტროლში ფორმირების დისკის დროს. ეს გაკვეთილი საფუძველს უქმნის ამ თემის მომავალ განვითარებას. ფორმირების კონტროლის ალგორითმი ეხება ალგორითმს, რომელიც აკონტროლებს მრავალ აგენტს, რათა შექმნას კონკრეტული ფორმირება დავალების შესასრულებლად. თანამშრომლობა გულისხმობს მრავალ აგენტს შორის თანამშრომლობას, რომელიც იყენებს გარკვეული შეზღუდვის ურთიერთობას დავალების შესასრულებლად. აიღეთ მრავალ რობოტის ფორმირების დისკი, როგორც ყოფილიampთანამშრომლობა ნიშნავს, რომ მრავალი რობოტი ერთად ქმნის სასურველ ფორმირებას. მისი არსი არის გარკვეული მათემატიკური ურთიერთობა, რომელიც დაკმაყოფილებულია თითოეული რობოტის პოზიციებს შორის. ფორმირების მეთოდები ძირითადად იყოფა ფორმირების ცენტრალიზებულ კონტროლად და ფორმირების განაწილებულ კონტროლად. ფორმირების კონტროლის ცენტრალიზებული მეთოდები ძირითადად მოიცავს ვირტუალური სტრუქტურის მეთოდს, გრაფიკული თეორიის მეთოდს და მოდელის პროგნოზირების მეთოდს. განაწილებული ფორმირების კონტროლის მეთოდები ძირითადად მოიცავს ლიდერ-მიმდევრის მეთოდს, ქცევაზე დაფუძნებულ მეთოდს და ვირტუალური სტრუქტურის მეთოდს.
ეს ROS პაკეტი იყენებს ლიდერ-მიმდევრის მეთოდს განაწილებული ფორმირების კონტროლის მეთოდში მრავალ რობოტის ფორმირების დისკის შესასრულებლად. ერთი რობოტი ფორმირებაში არის დანიშნული ლიდერად, ხოლო სხვა რობოტები დანიშნულნი არიან როგორც მონები, რომლებიც მიჰყვებიან ლიდერს. ალგორითმი იყენებს წამყვანი რობოტის მოძრაობის ტრაექტორიას, რათა დაადგინოს კოორდინატები, რომლებსაც აკონტროლებენ შემდეგი რობოტები გარკვეული მიმართულებით და სიჩქარით. თვალთვალის კოორდინატებიდან პოზიციის გადახრების გამოსწორებით, მიმდევრები საბოლოოდ შეამცირებენ გადახრას მიმდევარსა და მოსალოდნელ თვალთვალის კოორდინატებს შორის ნულამდე, რათა მიაღწიონ ფორმირების დისკის მიზნებს. ამ გზით, ალგორითმი შედარებით ნაკლებად რთულია.
დაბრკოლებების თავიდან აცილების ალგორითმები
დაბრკოლებების თავიდან აცილების საერთო ალგორითმი არის ხელოვნური პოტენციალის ველის მეთოდი. რობოტის მოძრაობა ფიზიკურ გარემოში განიხილება, როგორც მოძრაობა ვირტუალური ხელოვნური ძალის ველში. უახლოესი დაბრკოლება იდენტიფიცირებულია LiDAR-ის მიერ. დაბრკოლება უზრუნველყოფს მოგერიების ძალის ველს რობოტის მოსაგერიებლად, ხოლო სამიზნე წერტილი უზრუნველყოფს გრავიტაციულ ველს რობოტისთვის გრავიტაციული ძალის შესაქმნელად. ამ გზით ის აკონტროლებს რობოტის მოძრაობას მოგერიებისა და მიზიდულობის კომბინირებული მოქმედების ქვეშ.
ეს ROS პაკეტი არის გაუმჯობესება, რომელიც დაფუძნებულია ხელოვნური პოტენციალის ველის მეთოდზე. პირველ რიგში, ფორმირების ალგორითმი ითვლის Slave მიმდევრის წრფივ და კუთხურ სიჩქარეს. შემდეგ ის ზრდის ან ამცირებს წრფივ და კუთხურ სიჩქარეს დაბრკოლებების თავიდან აცილების მოთხოვნების შესაბამისად. როდესაც მანძილი Slave-ის მიმდევარსა და დაბრკოლებას შორის უფრო ახლოს არის, დაბრკოლების მოგერიების ძალა უფრო დიდია Slave-ის მიმდევართან. იმავდროულად, წრფივი სიჩქარის ცვლილება და კუთხური სიჩქარის ცვალებადობა უფრო დიდია. როდესაც დაბრკოლება უფრო ახლოს არის Slave-ის მიმდევრის წინ, დაბრკოლების მოგერიება უფრო დიდი ხდება (წინა მოგერიება არის ყველაზე დიდი, ხოლო გვერდითი მოგერიება არის ყველაზე პატარა). შედეგად, ხაზოვანი სიჩქარისა და კუთხური სიჩქარის ვარიაციები უფრო დიდია. ხელოვნური პოტენციალის ველის მეთოდის მეშვეობით, ის აუმჯობესებს გამოსავალს, როდესაც რობოტს შეუძლია შეწყვიტოს რეაგირება დაბრკოლების წინ. ეს ემსახურება დაბრკოლებების უკეთ აცილებას.
მულტი-აგენტური კომუნიკაციის დაყენება
მრავალ აგენტური კომუნიკაცია არის ერთ-ერთი მთავარი ნაბიჯი მრავალ რობოტის ფორმირების დასასრულებლად. როდესაც მრავალი რობოტის შედარებითი პოზიციები უცნობია, რობოტებმა უნდა გაიზიარონ ერთმანეთის ინფორმაცია კომუნიკაციის საშუალებით, რათა ხელი შეუწყონ კავშირების დამყარებას. ROS-ით განაწილებული არქიტექტურა და ქსელური კომუნიკაციები ძალიან ძლიერია. ის მოსახერხებელია არა მხოლოდ პროცესთაშორისი კომუნიკაციისთვის, არამედ სხვადასხვა მოწყობილობებს შორის კომუნიკაციისთვისაც. ქსელური კომუნიკაციის საშუალებით, ყველა კვანძს შეუძლია ნებისმიერ კომპიუტერზე იმუშაოს. ძირითადი ამოცანები, როგორიცაა მონაცემთა დამუშავება, სრულდება მასპინძლის მხარეს. მონების მანქანები პასუხისმგებელნი არიან სხვადასხვა სენსორების მიერ შეგროვებული გარემოსდაცვითი მონაცემების მიღებაზე. მასპინძელი აქ არის მენეჯერი, რომელიც მართავს Master კვანძს ROS-ში. ამჟამინდელი მრავალ აგენტური კომუნიკაციის ჩარჩო არის კვანძის მენეჯერისა და პარამეტრების მენეჯერის მეშვეობით, რომელიც ამუშავებს მრავალ რობოტს შორის კომუნიკაციას.
ნაბიჯები მრავალ აგენტური კომუნიკაციების დასაყენებლად
- დააყენეთ ROS Controls იმავე ქსელში
- არსებობს Master/Slave ROS Controls-ის დაყენების 2 გზა იმავე ქსელში.
ვარიანტი 1:
Master Host ქმნის ადგილობრივ wifi-ს Master node მენეჯერის გაშვებით. ზოგადად, ერთ-ერთი რობოტი, რომელიც დანიშნულია მასტერად, ქმნის ამ wifi ქსელს. სხვა რობოტები ან ვირტუალური მანქანები უერთდებიან ამ wifi ქსელს, როგორც მონები.
პარამეტრები 2:
ადგილობრივი wifi ქსელი უზრუნველყოფილია მესამე მხარის როუტერით, როგორც ინფორმაციის სარელეო ცენტრი. ყველა რობოტი დაკავშირებულია იმავე როუტერთან. როუტერის გამოყენება შესაძლებელია ინტერნეტის გარეშეც. აირჩიეთ ერთ-ერთი რობოტი, როგორც ოსტატი და გაუშვით Master Node Manager. სხვა რობოტები დანიშნულნი არიან როგორც სლავები და მართავენ მთავარ კვანძის მენეჯერს მასტერისგან.
გადაწყვეტილება იმის შესახებ, თუ რომელი ვარიანტი აირჩიოთ, დამოკიდებულია თქვენი პროექტის მოთხოვნებზე. თუ რობოტების რაოდენობა, რომლებსაც კომუნიკაცია სჭირდებათ, დიდი რაოდენობით არ არის, რეკომენდირებულია ვარიანტი 1, რადგან ის დაზოგავს ხარჯებს და მარტივია დაყენება. როდესაც რობოტების რაოდენობა დიდი რაოდენობითაა, რეკომენდებულია ვარიანტი 2. ROS სამაგისტრო კონტროლის გამოთვლითი სიმძლავრის შეზღუდვამ და ბორტზე შეზღუდულმა Wi-Fi გამტარუნარიანობამ შეიძლება ადვილად გამოიწვიოს შეფერხებები და ქსელის შეფერხებები. როუტერს შეუძლია მარტივად მოაგვაროს ეს პრობლემები. გთხოვთ გაითვალისწინოთ, რომ მრავალ აგენტური კომუნიკაციის განხორციელებისას, თუ ვირტუალური მანქანა გამოიყენება როგორც ROS slave, მისი ქსელის რეჟიმი უნდა იყოს დაყენებული ხიდის რეჟიმში.
Master/Slave გარემოს ცვლადების კონფიგურაცია
მას შემდეგ, რაც ყველა ROS ოსტატი ერთსა და იმავე ქსელშია, საჭიროა დაყენდეს გარემოს ცვლადები მრავალ აგენტური კომუნიკაციისთვის. ეს გარემო ცვლადი კონფიგურირებულია .bashrc ფაილში მთავარ დირექტორიაში. გაუშვით gedit ~/.bashrc ბრძანება მის გასაშვებად. გთხოვთ, გაითვალისწინოთ, რომ როგორც .bashrc ფაილი master-ისა და slave-ს მრავალ აგენტურ კომუნიკაციაში კონფიგურაცია სჭირდება. რაც უნდა შეიცვალოს არის 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 slave პროგრამის მოქმედება დამოკიდებულია ROS სამაგისტრო მოწყობილობის ROS სამაგისტრო პროგრამაზე. ROS-ის სამაგისტრო პროგრამა ჯერ მთავარ მოწყობილობაზე უნდა ამოქმედდეს, სანამ slave პროგრამის შესრულებას Slave მოწყობილობაზე.
- ძირითადი და slave მანქანების IP მისამართები მრავალ მანქანურ კომუნიკაციაში უნდა იყოს იმავე ქსელში. ეს ნიშნავს, რომ IP მისამართი და ქვექსელის ნიღაბი იმავე ქსელშია.
- ROS_HOSTNAME გარემოს კონფიგურაციის ფაილში .bashrc არ არის რეკომენდებული ლოკალჰოსტის გამოყენება. რეკომენდებულია კონკრეტული IP მისამართის გამოყენება.
- იმ შემთხვევაში, თუ slave IP მისამართი არასწორად არის დაყენებული, slave მოწყობილობას მაინც შეუძლია წვდომა ROS-ის მთავარზე, მაგრამ ვერ შეიყვანს საკონტროლო ინფორმაციას.
- თუ ვირტუალური მანქანა მონაწილეობს მრავალ აგენტურ კომუნიკაციაში, მისი ქსელის რეჟიმი უნდა დაყენდეს ხიდის რეჟიმში. სტატიკური IP არ არის არჩეული ქსელის კავშირისთვის.
- მრავალმანქანიანი კომუნიკაცია არ შეიძლება view ან გამოიწერეთ შეტყობინებების მონაცემთა ტიპის თემები, რომლებიც არ არსებობს ადგილობრივად.
- თქვენ შეგიძლიათ გამოიყენოთ პატარა კუს სიმულაციის დემო ვერსია, რათა შეამოწმოთ წარმატებულია თუ არა რობოტებს შორის კომუნიკაცია:
- a. გაიქეცი ბატონისგან
- rescore #გაშვება ROS სერვისები
- ტრიბუნა Turtles turtlesim_node #გაშვება Turtles ინტერფეისი
- b. გაიქეცი მონისგან
- ხელახლა გაუშვით Turtle turtle_teleop_key #გაშვება კლავიატურის მართვის კვანძი კუებისთვის
- a. გაიქეცი ბატონისგან
თუ თქვენ შეგიძლიათ კუს მოძრაობებით მანიპულირება კლავიატურიდან მონაზე, ეს ნიშნავს, რომ ბატონი/მონა კომუნიკაცია წარმატებით დამყარდა.
ავტომატური WiFi კავშირი ROS-ში
ქვემოთ მოცემული პროცედურები განმარტავს, თუ როგორ უნდა დააკონფიგურიროთ რობოტი, რათა ავტომატურად დაუკავშირდეს მასპინძელ ქსელს ან როუტერის ქსელს.
ავტომატური WiFi კავშირის დაყენება Jetson Nano-სთვის
- შეაერთეთ Jetson Nano VNC დისტანციური ხელსაწყოს საშუალებით ან პირდაპირ კომპიუტერის ეკრანზე. დააწკაპუნეთ wifi ხატულაზე ზედა მარჯვენა კუთხეში, შემდეგ დააწკაპუნეთ "კავშირების რედაქტირება.."
- დააწკაპუნეთ ღილაკზე + ქსელის კავშირებში:
- "აირჩიე კავშირის ტიპი" ფანჯარაში, დააწკაპუნეთ ჩამოსაშლელ მენიუზე და დააჭირეთ ღილაკს "შექმნა...":
- საკონტროლო პანელში დააწკაპუნეთ Wi-Fi ოფციაზე. შეიყვანეთ Wifi სახელი დასაკავშირებლად "კავშირის სახელი" და SSID ველებში. აირჩიეთ "კლიენტი" ჩამოსაშლელ მენიუში "რეჟიმი" და აირჩიეთ "wlan0" ჩამოსაშლელ მენიუში "მოწყობილობა".
- საკონტროლო პანელში დააწკაპუნეთ "ზოგადი" ოფციაზე და შეამოწმეთ "ავტომატური დაკავშირება ამ ქსელთან ...". დააყენეთ კავშირის პრიორიტეტი 1-ზე "დაკავშირების პრიორიტეტი ავტომატური გააქტიურებისთვის". შეამოწმეთ "ყველა მომხმარებელს შეუძლია დაუკავშირდეს ამ ქსელს". როდესაც პარამეტრი დაყენებულია 0-ზე „დაკავშირების პრიორიტეტი ავტომატური გააქტიურებისთვის“ სხვა wifi-სთვის, ეს ნიშნავს, რომ ეს არის სასურველი wifi ქსელი წარსულში.
- დააწკაპუნეთ "Wi-Fi Security" პარამეტრზე საკონტროლო პანელში. აირჩიეთ "WPA & WPA2 Personal" "უსაფრთხოების" ველში. შემდეგ შეიყვანეთ Wifi პაროლი ველში "პაროლი".
შენიშვნა: თუ რობოტი ავტომატურად ვერ დაუკავშირდება wifi ქსელს ჩატვირთვის შემდეგ, როდესაც wifi პრიორიტეტი დაყენებულია 0-ზე, ეს შეიძლება გამოწვეული იყოს სუსტი wifi სიგნალის პრობლემით. ამ პრობლემის თავიდან აცილების მიზნით, შეგიძლიათ წაშალოთ Wi-Fi-ის ყველა პარამეტრი, რომელიც წარსულში იყო დაკავშირებული. შეინახეთ მხოლოდ ჰოსტის ან როუტერის მიერ შექმნილი wifi ქსელი. დააწკაპუნეთ "IPv4 პარამეტრები" ოფციაზე ქსელის პარამეტრების მართვის პანელში. აირჩიეთ "მექანიკური" ვარიანტი "მეთოდი" ველში. შემდეგ დააწკაპუნეთ "დამატებაზე", შეავსეთ Slave მანქანის IP მისამართი "Address" ველში. შეავსეთ „24“ „Netmask“ ველში. შეავსეთ IP ქსელის სეგმენტი "Gateway". შეცვალეთ IP ქსელის სეგმენტის ბოლო სამი ციფრი "1". ამ ნაბიჯის მთავარი მიზანია IP მისამართის დაფიქსირება. პირველად დასრულების შემდეგ, IP მისამართი უცვლელი დარჩება იმავე WIFI-თან დაკავშირების შემდეგ.
ყველა პარამეტრის კონფიგურაციის შემდეგ დააჭირეთ ღილაკს "შენახვა" პარამეტრების შესანახად. შენახვის წარმატებით დასრულების შემდეგ, რობოტი ავტომატურად დაუკავშირდება ჰოსტის ან როუტერის ქსელს, როდესაც ის ჩართულია.
შენიშვნა:
- აქ მითითებული IP მისამართი უნდა იყოს იგივე, რაც მითითებულია .bashrc ფაილში 2.1 განყოფილებაში.
- ოსტატისა და თითოეული სლავის IP მისამართი უნდა იყოს უნიკალური.
- ძირითადი და slave IP მისამართები უნდა იყოს იმავე ქსელის სეგმენტში.
- თქვენ უნდა დაელოდოთ მასპინძელი ან როუტერი WiFi სიგნალის გაგზავნას, სანამ სლავური რობოტი ჩაირთვება და ავტომატურად დაუკავშირდება WiFi ქსელს.
- პარამეტრის კონფიგურაციის შემდეგ, თუ რობოტი ავტომატურად ვერ დაუკავშირდება WiFi-ს, როდესაც ის ჩართულია, გთხოვთ, შეაერთოთ და გამორთოთ ქსელის ბარათი და სცადოთ ხელახლა დაკავშირება.
ავტომატური WiFi კავშირის დაყენება Raspberry Pi-სთვის
Raspberry Pi-ს პროცედურა იგივეა, რაც Jetson Nano.
ავტომატური WiFi კავშირის დაყენება Jetson TX1-ისთვის
Jetson TX1-ში დაყენება თითქმის იგივეა, რაც Jetson Nano-ში, ერთი გამონაკლისით, Jetson TX1-მა უნდა შეარჩიოს "wlan1" მოწყობილობა "მოწყობილობაში" ქსელის პარამეტრების მართვის პანელში.
მულტი-აგენტური სინქრონიზაციის დაყენება
მრავალ აგენტის ფორმირების პროექტში, მრავალაგენტიანი დროის სინქრონიზაციის პარამეტრი გადამწყვეტი ნაბიჯია. ფორმირების პროცესში ბევრი პრობლემა წარმოიქმნება თითოეული რობოტის ასინქრონული სისტემის დროის გამო. მულტი-აგენტური დროის სინქრონიზაცია იყოფა ორ სიტუაციად, კერძოდ, სიტუაცია, რომელშიც როგორც მთავარი, ასევე სლავური რობოტები დაკავშირებულია ქსელთან და სიტუაცია, რომელშიც ორივე გათიშულია ქსელიდან.
წარმატებული master/slave ქსელის კავშირი
მრავალ აგენტური კომუნიკაციის კონფიგურაციის შემდეგ, თუ ძირითადი და slave მანქანები წარმატებით დაუკავშირდებიან ქსელს, ისინი ავტომატურად მოახდენენ ქსელის დროის სინქრონიზაციას. ამ შემთხვევაში, არ არის საჭირო შემდგომი ქმედებები დროის სინქრონიზაციის მისაღწევად.
ქსელის გათიშვის პრობლემების აღმოფხვრა
მრავალ აგენტური კომუნიკაციის კონფიგურაციის შემდეგ, თუ ძირითადი და slave მოწყობილობები წარმატებით ვერ დაუკავშირდებიან ქსელს, აუცილებელია დროის ხელით სინქრონიზაცია. ჩვენ გამოვიყენებთ თარიღის ბრძანებას დროის პარამეტრის დასასრულებლად.
პირველ რიგში დააინსტალირეთ ტერმინატორის ინსტრუმენტი. ტერმინატორის ხელსაწყოდან გამოიყენეთ ფანჯრის გაყოფის ხელსაწყო, რომ მოათავსოთ მასტერისა და სლავის საკონტროლო ტერმინალები იმავე ტერმინალის ფანჯარაში (დააწკაპუნეთ მარჯვენა ღილაკით გაყოფის ფანჯრის დასაყენებლად და შედით მთავარ და სლავ მანქანებში ssh სხვადასხვა ფანჯარაში) .
- sudo apt-get install terminator # ჩამოტვირთეთ ტერმინატორი ტერმინალის ფანჯრის გასაყოფად
დააწკაპუნეთ ღილაკზე ზედა მარცხენა მხარეს, აირჩიეთ ვარიანტი [Broadcast to all]/[Broadcast all] და შეიყვანეთ შემდეგი ბრძანება. შემდეგ გამოიყენეთ ტერმინატორის ხელსაწყო, რომ დააყენოთ ერთი და იგივე დრო ოსტატისა და სლავისთვის.
- sudo date -s „2022-01-30 15:15:00“ # დროის ხელით დაყენება
MULTI-Agent ROS პაკეტი
ROS პაკეტის შესავალი
დააყენეთ მონის სახელი
wheeltec_multi ფუნქციის პაკეტში აუცილებელია თითოეული მონა რობოტისთვის უნიკალური სახელის დაყენება შეცდომების თავიდან ასაცილებლად. მაგample, No1 slave1-ისთვის და No2 slave2-ისთვის და ა.შ. სხვადასხვა სახელების დაყენების მიზანია გაშვებული კვანძების დაჯგუფება და მათი გარჩევა სხვადასხვა სახელთა სივრცით. მაგample, მონა 1-ის რადარის თემაა/slave1/scan, ხოლო მონა 1-ის LiDAR კვანძი არის/slave1/ლაზერი.
დააყენეთ მონების კოორდინატები
wheeltec_multi პაკეტს შეუძლია მორგებული ფორმირების განხორციელება. როდესაც საჭიროა სხვადასხვა ფორმირება, უბრალოდ შეცვალეთ მონა რობოტების სასურველი კოორდინატები. Slave_x და slave_y არის slave-ის x და y კოორდინატები, სადაც მთავარია, როგორც თავდაპირველი საცნობარო წერტილი. ოსტატის წინა მხარე არის x კოორდინატის დადებითი მიმართულება, ხოლო მარცხენა მხარე არის y კოორდინატის დადებითი მიმართულება. პარამეტრის დასრულების შემდეგ, TF კოორდინატის მონა 1 გაიცემა, როგორც დანის მოსალოდნელი კოორდინატი. თუ არის ერთი ბატონი და ორი მონა, შეიძლება დაყენდეს შემდეგი ფორმირება:
- ჰორიზონტალური ფორმირება: შეგიძლიათ დააყენოთ slave-ის კოორდინატები მარცხნივ slave_x:0, slave_y: 0.8, ხოლო slave-ის კოორდინატები მარჯვნივ slave_x:0, slave_y:-0.8.
- სვეტის ფორმირება: ერთი მონას კოორდინატები შეიძლება დაყენდეს: slave_x:-0.8, slave_y:0, ხოლო მეორე slave-ის კოორდინატები შეიძლება იყოს: slave_x:-1.8, slave_y:0.
- სამკუთხა ფორმირება: ერთი მონას კოორდინატები შეიძლება დაყენდეს: slave_x:-0.8, slave_y: 0.8, ხოლო მეორე slave-ის კოორდინატები შეიძლება იყოს: 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-ის საწყისი პოზიციის მორგება, მას მხოლოდ უნდა დააყენოს slave_x და slave_y მნიშვნელობები, როგორც ეს ნაჩვენებია სურათზე 4-1-4 wheeltec_slave.launch-ში. slave_x და slave_y მნიშვნელობები გადაეცემა turn_on_wheeltec_robot.launch-ს და მიენიჭება pose_setter კვანძს. უბრალოდ განათავსეთ რობოტი მორგებულ მდგომარეობაში პროგრამის გაშვებამდე.
პოზიციის კონფიგურაცია
მრავალ აგენტურ ფორმირებაში, პირველი პრობლემა, რომელიც უნდა გადაწყდეს, არის ბატონისა და მონას პოზიციონირება. ოსტატი ჯერ ააშენებს 2D რუკას. რუკის შექმნისა და შენახვის შემდეგ, გაუშვით 2D ნავიგაციის პაკეტი და გამოიყენეთ ადაპტური Monte Carlo პოზიციონირების ალგორითმი (amcl პოზიციონირება) 2D ნავიგაციის პაკეტში, რათა დააკონფიგურიროთ მასტერის პოზიციონირება. ვინაიდან მასტერი და სლავები ერთსა და იმავე ქსელში არიან და იზიარებენ ერთი და იგივე კვანძის მენეჯერს, მასტერმა გაუშვა რუკა 2D ნავიგაციის პაკეტიდან, ყველა სლავს შეუძლია გამოიყენოს ერთი და იგივე რუკა იმავე კვანძის მენეჯერის ქვეშ. ამიტომ, მონას არ სჭირდება რუკის შექმნა. wheeltec_slave.launch-ში გაუშვით Monte Carlo-ს პოზიციონირება (amcl პოზიციონირება), სლავებს შეუძლიათ თავიანთი პოზიციების კონფიგურაცია ოსტატის მიერ შექმნილი რუქის გამოყენებით.
როგორ შევქმნათ ფორმირება და შევინარჩუნოთ ფორმირება
ფორმირების მოძრაობის პროცესში სამაგისტრო მოძრაობის კონტროლი შესაძლებელია Rviz-ის, კლავიატურის, დისტანციური მართვის და სხვა მეთოდებით. მონა ითვლის თავის სიჩქარეს slave_tf_listener კვანძის მეშვეობით, რათა გააკონტროლოს მისი მოძრაობა და მიაღწიოს ფორმირების მიზანს. slave_tf_listener კვანძი ზღუდავს slave სიჩქარეს, რათა თავიდან აიცილოს გადაჭარბებული სიჩქარე კვანძის გაანგარიშებით, რაც გამოიწვევს ზემოქმედებების სერიას. სპეციფიკური მნიშვნელობა შეიძლება შეიცვალოს wheeltec_slave.launch-ში.
ფორმირების ალგორითმის შესაბამისი პარამეტრები შემდეგია:
დაბრკოლებების თავიდან აცილების ინფორმაცია
მრავალ აგენტურ ფორმირებაში მასტერს შეუძლია გამოიყენოს move_base კვანძი დაბრკოლებების თავიდან აცილების დასასრულებლად. თუმცა, მონას ინიციალიზაცია არ იყენებს move_base კვანძს. ამ ეტაპზე, multi_avoidance კვანძი უნდა გამოიძახოთ slave პროგრამაში. დაბრკოლებების თავიდან აცილების კვანძი ნაგულისხმევად ჩართულია პაკეტში. საჭიროების შემთხვევაში, თავიდან აცილება შეიძლება დაყენდეს „false“-ზე, რათა გამორთოთ დაბრკოლებების თავიდან აცილების კვანძი.
დაბრკოლებების თავიდან აცილების კვანძის ზოგიერთი შესაბამისი პარამეტრი ნაჩვენებია ქვემოთ მოცემულ სურათზე, სადაც უსაფრთხო_დისტანცია არის დაბრკოლების უსაფრთხო მანძილის ლიმიტი, ხოლო საფრთხის_დისტანცია არის დაბრკოლების სახიფათო მანძილის ზღვარი. როდესაც დაბრკოლება უსაფრთხო და საფრთხის მანძილზეა, მონა არეგულირებს თავის პოზიციას, რათა თავიდან აიცილოს დაბრკოლება. როცა დაბრკოლებას საფრთხე ემუქრება, მონა დაბრკოლებას აშორებს.
ოპერაციის პროცედურა
შეიყვანეთ შესრულების ბრძანება
მულტი-აგენტის ფორმირების დაწყებამდე მზადება:
- Master და Slave უკავშირდებიან ერთსა და იმავე ქსელს და სწორად აყენებენ მრავალ აგენტურ კომუნიკაციას
- ოსტატი წინასწარ აშენებს 2D რუკას და ინახავს მას
- ოსტატი მოთავსებულია რუკის საწყის წერტილში, ხოლო მონა მოთავსებულია ინიციალიზაციის პოზიციის მახლობლად (ნაგულისხმევი მონათა ფორმირების პოზიცია)
- Jetson Nano/Raspberry Pi-ში დისტანციურად შესვლის შემდეგ, შეასრულეთ დროის სინქრონიზაცია.
sudo date -s “2022-04-01 15:15:00”
- ნაბიჯი 1: გახსენით 2D რუკა მასტერისგან.
roslaunch turn_on_wheeltec_robot ნავიგაცია.გაშვება
- ნაბიჯი 2: გაუშვით ფორმირების პროგრამა ყველა სლავიდან.
roslaunch wheeltec_multi wheeltec_slave.გაშვება
- ნაბიჯი 3: გახსენით კლავიატურის მართვის კვანძი მასტერიდან ან გამოიყენეთ ჯოისტიკი სამაგისტრო მოძრაობის დისტანციური მართვისთვის.
ხელახლა გაშვება wheeltec_robot_rc keyboard_teleop.launch
- ნაბიჯი 4: (სურვილისამებრ) დააკვირდით რობოტის მოძრაობებს Rviz-დან.
რვიზი
შენიშვნა:
- დარწმუნდით, რომ დაასრულეთ დროის სინქრონიზაციის ოპერაცია პროგრამის შესრულებამდე.
- მრავალ აგენტური ფორმირების ოსტატის მართვისას კუთხური სიჩქარე არ უნდა იყოს ძალიან სწრაფი. რეკომენდებული ხაზოვანი სიჩქარეა 0.2 მ/წმ, კუთხური სიჩქარის ხარისხი 0.3 რადი/წმ-ზე ნაკლები. როდესაც ოსტატი ბრუნავს, რაც უფრო შორს არის მონა ბატონისგან, მით მეტია საჭირო ხაზოვანი სიჩქარე. შეფუთვაში ხაზოვანი სიჩქარისა და კუთხური სიჩქარის შეზღუდვის გამო, როდესაც სლავური მანქანა ვერ მიაღწევს საჭირო სიჩქარეს, ფორმირება იქნება ქაოტური. მთლიანობაში, გადაჭარბებულმა ხაზოვანმა სიჩქარემ შეიძლება ადვილად დააზიანოს რობოტი.
- როდესაც სლავების რაოდენობა ერთზე მეტია, ROS ჰოსტის ბორტზე შეზღუდული სიჩქარის გამო, ადვილია გამოიწვიოს მნიშვნელოვანი შეფერხებები და მრავალ აგენტური კომუნიკაციის გათიშვა. როუტერის გამოყენებამ შეიძლება კარგად მოაგვაროს ეს პრობლემა.
- მრავალ რობოტი ფორმირების TF ხე (2 მონა) არის: rqt_tf_tree
- მრავალ რობოტის ფორმირების კვანძების ურთიერთობის დიაგრამა (2 მონა) არის: rqt_graph
დოკუმენტები / რესურსები
![]() |
ROBOWORKS Robofleet MULTI-Agent ALGORITHMS [pdf] მომხმარებლის სახელმძღვანელო Robofleet Multi Agent Algorithms, Robofleet, Multi Agent Algorithms, Agent Algorithms, Algorithms |