ROBWORKS Robofleet ALGORITMI MULTI-AGENT
Specificații
- Nume produs: ROBWORKS
- Versiune: 20240501
- Pregătit de: Wayne Liu și Janette Lin
- Data: 1 Mai 2024
Informații despre produs
ROBOWORKS este un sistem multi-agent care permite implementarea diverșilor algoritmi pentru coordonarea și comunicarea roboților.
Întrebări frecvente
Î: Ce ar trebui să fac dacă robotul nu se poate conecta automat la Wifi?
R: Dacă robotul nu se conectează automat, încercați să deconectați și să reconectați placa de rețea și încercați să vă conectați din nou.
REZUMAT
Acest document explică în principal utilizarea pachetului de funcții de formare multi-roboți numit wheeltec_multi.
Acest document este împărțit în patru părți:
- Prima parte se referă în principal la introducerea metodei de formare multi-roboți;
- a doua parte descrie în principal setările de comunicare multi-mașină ROS, inclusiv comunicarea multi-mașină pentru construcția ROS și problemele care pot fi întâlnite în procesul de comunicare ROS;
- a treia parte descrie în principal etapele de operare a sincronizării timpului cu mai multe mașini;
- a patra parte expune utilizarea specifică a pachetului de funcții de formare a mai multor mașini.
Scopul acestui document este o introducere în sistemele robotice multi-agenți și permite utilizatorilor să înceapă rapid proiectul de formare multi-roboți.
INTRODUCERE ÎN ALGORITMI MULTI-AGENT
Algoritmi de formare multi-agenți
Acest pachet ROS prezintă o problemă tipică a multi-agenților în controlul colaborativ în timpul unei conduceri de formare. Acest tutorial pune bazele dezvoltării viitoare pe acest subiect. Algoritmul de control al formațiunii se referă la un algoritm care controlează mai mulți agenți pentru a forma o formațiune specifică pentru a îndeplini o sarcină. Colaborarea se referă la cooperarea între mai mulți agenți folosind o anumită relație de constrângere pentru a finaliza o sarcină. Luați unitatea de formare multi-roboți ca un exampLe, colaborarea înseamnă că mai mulți roboți formează împreună o formațiune dorită. Esența sa este o anumită relație matematică care este satisfăcută între pozițiile fiecărui robot. Metodele de formare sunt împărțite în principal în controlul formațiunilor centralizate și controlul formațiunilor distribuite. Metodele de control centralizat al formațiunii includ în principal metoda structurii virtuale, metoda teoriei grafice și metoda predictivă a modelului. Metodele de control al formației distribuite includ în principal o metodă lider-follower, o metodă bazată pe comportament și o metodă de structură virtuală.
Acest pachet ROS aplică metoda lider-follower în metoda de control al formației distribuite pentru a executa unitatea de formare multi-robot. Un robot din formație este desemnat ca lider, iar alți roboți sunt desemnați ca sclavi pentru a-l urma pe lider. Algoritmul folosește traiectoria de mișcare a robotului conducător pentru a seta coordonatele care urmează să fie urmărite de următorii roboți cu o anumită direcție și viteză. Prin corectarea abaterilor de poziție de la coordonatele de urmărire, adepții vor reduce în cele din urmă abaterea dintre urmăritor și coordonatele de urmărire așteptate la zero pentru a atinge obiectivele conducerii formației. În acest fel, algoritmul este relativ mai puțin complicat.
Algoritmi de evitare a obstacolelor
Un algoritm comun de evitare a obstacolelor este metoda câmpului potențial artificial. Mișcarea robotului într-un mediu fizic este privită ca o mișcare într-un câmp virtual de forță artificială. Cel mai apropiat obstacol este identificat de LiDAR. Obstacolul oferă un câmp de forță de respingere pentru a genera repulsie robotului, iar punctul țintă oferă un câmp gravitațional pentru a genera forță gravitațională robotului. În acest fel, controlează mișcarea robotului sub acțiunea combinată de repulsie și atracție.
Acest pachet ROS este o îmbunătățire bazată pe metoda câmpului cu potențial artificial. În primul rând, algoritmul de formare calculează viteza liniară și unghiulară a urmăritorului Slave. Apoi crește sau scade viteza liniară și unghiulară în funcție de cerințele de evitare a obstacolelor. Când distanța dintre adeptul Slave și obstacol este mai apropiată, forța de repulsie a obstacolului față de adeptul Slave este mai mare. Între timp, modificarea vitezei liniare și variațiile vitezei unghiulare sunt mai mari. Când obstacolul este mai aproape de partea din față a adeptului Slave, repulsia obstacolului față de adeptul Slave devine mai mare (repulsiunea frontală este cea mai mare și respingerea laterală este cea mai mică). Ca urmare, variațiile vitezei liniare și ale vitezei unghiulare sunt mai mari. Prin metoda câmpului potențial artificial, se îmbunătățește o soluție atunci când un robot ar putea înceta să mai răspundă în fața unui obstacol. Acest lucru servește scopului unei mai bune evitări a obstacolelor.
CONFIGURARE DE COMUNICARE MULTI-AGENT
Comunicarea multi-agenți este unul dintre pașii cheie pentru a finaliza o formație multi-robot. Atunci când pozițiile relative ale mai multor roboți sunt necunoscute, roboții trebuie să-și împărtășească informațiile unul altuia prin comunicare pentru a facilita stabilirea conexiunilor. Arhitectura distribuită prin ROS și comunicațiile de rețea sunt foarte puternice. Nu este convenabil doar pentru comunicarea între procese, ci și pentru comunicarea între diferite dispozitive. Prin comunicarea în rețea, toate nodurile pot rula pe orice computer. Principalele sarcini, cum ar fi prelucrarea datelor, sunt finalizate pe partea gazdă. Mașinile slave sunt responsabile pentru primirea datelor de mediu colectate de diverși senzori. Gazda de aici este managerul care rulează nodul Master în ROS. Cadrul actual de comunicare multi-agent este printr-un manager de noduri și un manager de parametri pentru a gestiona comunicațiile între mai mulți roboți.
Pașii pentru configurarea comunicațiilor cu mai mulți agenți
- Configurați controale ROS în aceeași rețea
- Există 2 moduri de a configura comenzile Master/Slave ROS în aceeași rețea.
Opțiunea 1:
Master Host creează o conexiune Wi-Fi locală rulând managerul nodului Master. În general, unul dintre roboții care este desemnat ca master creează această rețea wifi. Alți roboți sau mașini virtuale se alătură acestei rețele wifi ca sclavi.
Opțiuni 2:
Rețeaua wifi locală este furnizată de un router terță parte ca centru de retransmisie a informațiilor. Toți roboții sunt conectați la același router. Routerul poate fi folosit și fără conexiune la internet. Selectați unul dintre roboți ca master și rulați managerul nodului Master. Ceilalți roboți sunt desemnați ca sclavi și rulează managerul nodului master de la master.
Decizia asupra opțiunii de a alege depinde de cerințele proiectului dumneavoastră. Dacă numărul de roboți care trebuie să comunice nu este foarte mare, se recomandă Opțiunea 1, deoarece economisește costuri și este ușor de configurat. Când numărul de roboți este la o cantitate mare, se recomandă Opțiunea 2. Constrângerea puterii de calcul a controlului principal ROS și lățimea de bandă Wi-Fi limitată la bord pot cauza cu ușurință întârzieri și întreruperi în rețea. Un router poate rezolva cu ușurință aceste probleme. Vă rugăm să rețineți că atunci când efectuați o comunicare cu mai mulți agenți, dacă mașina virtuală este utilizată ca slave ROS, modul său de rețea trebuie setat la modul bridge.
Configurați variabilele de mediu Master/Slave
După ce toți maeștrii ROS sunt toți în aceeași rețea, trebuie setate variabilele de mediu pentru comunicarea multi-agent. Această variabilă de mediu este configurată în fișierul .bashrc din directorul principal. Rulați comanda gedit ~/.bashrc pentru a o lansa. Vă rugăm să rețineți că atât fișierele .bashrc ale masterului, cât și ale slavei în comunicarea multi-agent trebuie să fie configurate. Ceea ce trebuie schimbat sunt adresele IP de la sfârșitul fișierului. Cele două linii ale sunt ROS_MASTER_URI și ROS_HOSTNAME, așa cum se arată în Figura 2-1-4. ROS_MASTER_URI și ROS_HOSTNAME ale gazdei ROS sunt ambele IP-uri locale. ROS_MASTER_URI din fișierul .bashrc slave ROS trebuie schimbat la adresa IP a gazdei, în timp ce ROS_HOSTNAME rămâne ca o adresă IP locală.
Comunicarea multi-mașină ROS nu este constrânsă de versiunea de lansare a ROS. În procesul de comunicare multi-mașină, trebuie să știți următoarele:
- Funcționarea programului slave ROS depinde de programul master ROS al dispozitivului master ROS. Programul master ROS trebuie să se lanseze mai întâi pe dispozitivul principal înainte de a executa programul slave pe dispozitivul slave.
- Adresele IP ale mașinilor master și slave în comunicarea cu mai multe mașini trebuie să fie în aceeași rețea. Aceasta înseamnă că adresa IP și masca de subrețea se află sub aceeași rețea.
- ROS_HOSTNAME în fișierul de configurare a mediului .bashrc nu este recomandat să folosească localhost. Se recomandă utilizarea unei adrese IP specifice.
- În cazul în care adresa IP slave nu este setată corect, dispozitivul slave poate accesa în continuare masterul ROS, dar nu poate introduce informații de control.
- Dacă mașina virtuală participă la comunicarea multi-agent, modul său de rețea trebuie setat la modul bridge. IP static nu poate fi selectat pentru conexiunea la rețea.
- Comunicarea multi-mașină nu poate view sau abonați-vă la subiecte de tip de date mesaj care nu există la nivel local.
- Puteți folosi demonstrația de simulare Little Turtle pentru a verifica dacă comunicarea dintre roboți este de succes:
- a. Fugi de stăpân
- rescore #lansare servicii ROS
- rostrum turtles turtlesim_node #launch turtles interfață
- b. Fugi de sclav
- rerun turtles turtle_teleop_key #lansați nodul de control al tastaturii pentru broaște țestoase
- a. Fugi de stăpân
Dacă puteți manipula mișcările țestoasei de la tastatura slave, înseamnă că comunicarea master/slave a fost stabilită cu succes.
Conexiune Wifi automată în ROS
Procedurile de mai jos explică cum să configurați robotul pentru a se conecta automat la rețeaua gazdă sau la rețeaua de router.
Configurare automată a conexiunii Wifi pentru Jetson Nano
- Conectați Jetson Nano prin instrumentul de la distanță VNC sau direct la ecranul computerului. Faceți clic pe pictograma Wifi din colțul din dreapta sus, apoi faceți clic pe „Editați conexiunile..”
- Faceți clic pe butonul + din Conexiuni de rețea:
- În fereastra „Alegeți un tip de conexiune”, faceți clic pe meniul derulant și faceți clic pe butonul „Creați...”:
- În Panoul de control, faceți clic pe opțiunea Wifi. Introduceți numele Wifi pentru a vă conecta în câmpurile „Nume conexiune” și SSID. Selectați „Client” în meniul derulant „Mod” și selectați „wlan0” în meniul derulant „Dispozitiv”.
- În Panoul de control, faceți clic pe opțiunea „General” și bifați „Conectați-vă automat la această rețea...”. Setați prioritatea conexiunii la 1 în opțiunea „Prioritate conexiune pentru activare automată”. Bifați opțiunea „Toți utilizatorii se pot conecta la această rețea”. Când opțiunea este setată la 0 în „Prioritate conexiune pentru activare automată” pentru alte rețele wifi, aceasta înseamnă că aceasta este rețeaua wifi preferată în trecut.
- Faceți clic pe opțiunea „Securitate Wi-Fi” din Panoul de control. Selectați „WPA & WPA2 Personal” în câmpul „Securitate”. Apoi introduceți parola Wifi în câmpul „Parolă”.
Nota: Dacă robotul nu se poate conecta automat la rețeaua wifi după pornire când prioritatea wifi este setată la 0, aceasta poate fi cauzată de o problemă a unui semnal wifi slab. Pentru a evita această problemă, puteți alege să ștergeți toate opțiunile wifi care au fost conectate în trecut. Păstrați numai rețeaua wifi creată de gazdă sau router. Faceți clic pe opțiunea „Setări IPv4” din panoul de control al setărilor de rețea. Selectați opțiunea „Manual” în câmpul „Metodă”. Apoi faceți clic pe „Adăugați”, completați adresa IP a mașinii slave în câmpul „Adresă”. Completați „24” în câmpul „Mască de rețea”. Completați segmentul de rețea IP în „Gateway”. Schimbați ultimele trei cifre ale segmentului de rețea IP la „1”. Scopul principal al acestui pas este de a remedia adresa IP. După ce aceasta este finalizată pentru prima dată, adresa IP va rămâne neschimbată atunci când vă conectați ulterior la același WIFI.
După ce toate setările sunt configurate, faceți clic pe „salvare” pentru a salva setările. După ce salvarea este reușită, robotul se va conecta automat la rețeaua gazdei sau a routerului atunci când este pornit.
Nota:
- Adresa IP setată aici trebuie să fie aceeași cu adresa IP setată în fișierul .bashrc din Secțiunea 2.1.
- Adresa IP a masterului și a fiecărui slave trebuie să fie unică.
- Adresele IP master și slave trebuie să fie în același segment de rețea.
- Trebuie să așteptați ca gazda sau routerul să trimită semnal WiFi înainte ca robotul slave să poată fi pornit și să se conecteze automat la rețeaua WiFi.
- După ce setarea este configurată, dacă robotul nu se poate conecta automat la WiFi când este pornit, conectați și deconectați placa de rețea și încercați să vă conectați din nou.
Configurare automată a conexiunii Wifi pentru Raspberry Pi
Procedura pentru Raspberry Pi este aceeași cu Jetson Nano.
Configurare automată a conexiunii Wifi pentru Jetson TX1
Configurația în Jetson TX1 este aproape aceeași ca în Jetson Nano, cu o excepție, Jetson TX1 ar trebui să selecteze dispozitivul „wlan1” în „Dispozitiv” din panoul de control al setărilor de rețea.
INSTALARE SINCRONIZARE MULTI-AGENT
În proiectul de formare cu mai mulți agenți, setarea de sincronizare a timpului cu mai mulți agenți este un pas crucial. În procesul de formare, multe probleme vor fi cauzate din cauza timpului de sistem asincron al fiecărui robot. Sincronizarea timpului multi-agent este împărțită în două situații, și anume, situația în care atât roboții master cât și slave sunt conectați la rețea și situația în care ambii sunt deconectați de la rețea.
Conexiune reușită la rețea master/slave
După ce comunicarea multi-agent este configurată, dacă mașinile master și slave se pot conecta cu succes la rețea, acestea vor sincroniza automat ora rețelei. În acest caz, nu sunt necesare alte acțiuni pentru a realiza sincronizarea timpului.
Depanarea deconectărilor la rețea
După ce comunicarea multi-agent este configurată, dacă dispozitivele master și slave nu se pot conecta cu succes la rețea, este necesar să se sincronizeze manual ora. Vom folosi comanda date pentru a finaliza setarea orei.
Mai întâi, instalați instrumentul de terminare. Din instrumentul de terminare, utilizați instrumentul de împărțire a ferestrelor pentru a plasa terminalele de control ale masterului și slave în aceeași fereastră de terminal (faceți clic dreapta pentru a seta o fereastră împărțită și conectați-vă la mașinile master și slave prin ssh în ferestre diferite) .
- sudo apt-get install terminator # Descărcați terminator pentru a împărți fereastra terminalului
Faceți clic pe butonul din stânga sus, selectați opțiunea [Broadcast to all]/[Broadcast all] și introduceți următoarea comandă. Apoi utilizați instrumentul de terminare pentru a seta aceeași oră pentru master și slave.
- sudo date -s „2022-01-30 15:15:00” # Configurare manuală a orei
PACHET ROS MULTI-AGENT
Introducere pachet ROS
Configurați numele sclavului
În pachetul de funcții wheeltec_multi, este necesar să setați un nume unic pentru fiecare robot slave pentru a evita erorile. De example, nr. 1 pentru slave1 și nr. 2 pentru slave2, etc. Scopul setării diferitelor nume este de a grupa nodurile care rulează și de a le distinge prin spații de nume diferite. De example, subiectul radar al slave 1 este/slave1/scan, iar nodul LiDAR al slave 1 este/slave1/laser.
Configurați coordonatele slave
Pachetul wheeltec_multi poate implementa formații personalizate. Când sunt necesare formații diferite, trebuie doar să modificați coordonatele dorite ale roboților slave. Slave_x și slave_y sunt coordonatele x și y ale slave cu masterul ca punct de referință original. Partea din față a masterului este direcția pozitivă a coordonatei x, iar partea stângă este direcția pozitivă a coordonatei y. După finalizarea setării, va fi emisă o coordonată TF slave1 ca coordonată așteptată a slave. Dacă există un master și doi slave, se poate seta următoarea formație:
- Formare orizontală: Puteți seta coordonatele slave din stânga la slave_x:0, slave_y: 0.8 și coordonatele slave din dreapta la slave_x:0, slave_y:-0.8.
- Formarea coloanei: Coordonatele unui slave pot fi setate la: slave_x:-0.8, slave_y:0, iar coordonatele celuilalt slave pot fi setate la: slave_x:-1.8, slave_y:0.
- Formare triunghiulară: Coordonatele unui slave pot fi setate la: slave_x:-0.8, slave_y: 0.8, iar coordonatele celuilalt slave pot fi setate la: slave_x:-0.8, slave_y:-0.8.
Alte formațiuni pot fi personalizate după cum este necesar.
Nota:
- Distanța recomandată între cei doi roboți este setată la 0.8 și se recomandă să nu fie mai mică de 0.6. Distanța dintre slave și master se recomandă să fie setată sub 2.0. Cu cât este mai departe de master, cu atât viteza liniară a slave este mai mare atunci când masterul se rotește. Datorită limitării vitezei maxime, viteza slave va abate dacă nu îndeplinește cerințele. Formarea robotului va deveni haotică.
Inițializarea poziției slave
- Poziția inițială a slave este implicit la coordonatele așteptate. Înainte de a rula programul, plasați robotul slave aproape de coordonatele așteptate pentru a finaliza inițializarea. Această funcție este implementată de nodul pose_setter din fișierul numit turn_on_wheeltec_robot.launch din pachetul wheeltec_multi, așa cum se arată în Figura 4-1-3.
Dacă utilizatorul dorește să personalizeze poziția inițială a slave, el sau ea trebuie doar să seteze valorile slave_x și slave_y așa cum se arată în Figura 4-1-4 în wheeltec_slave.launch. Valorile slave_x și slave_y vor fi transmise turn_on_wheeltec_robot.launch și atribuite nodului pose_setter. Doar plasați robotul într-o poziție personalizată înainte de a rula programul.
Configurarea poziției
Într-o formație multi-agenți, prima problemă care trebuie rezolvată este poziționarea masterului și a sclavului. Maestrul va construi mai întâi o hartă 2D. După crearea și salvarea hărții, rulați pachetul de navigare 2D și utilizați algoritmul adaptiv de poziționare Monte Carlo (poziționare amcl) în pachetul de navigare 2D pentru a configura poziționarea masterului. Deoarece masterul și slave sunt în aceeași rețea și partajează același manager de noduri, masterul a lansat harta din pachetul de navigare 2D, toți sclavii pot folosi aceeași hartă sub același manager de noduri. Prin urmare, sclavul nu trebuie să creeze o hartă. În wheeltec_slave.launch, rulați poziționarea Monte Carlo (poziționare amcl), slavii își pot configura pozițiile folosind harta creată de master.
Cum se creează formarea și se menține formarea
În procesul de mișcare a formației, mișcarea principală poate fi controlată prin Rviz, tastatură, telecomandă și alte metode. Sclavul își calculează viteza prin nodul slave_tf_listener pentru a-și controla mișcarea și a atinge scopul formației. Nodul slave_tf_listener limitează viteza slave pentru a evita viteza excesivă prin calculul nodului, ceea ce va provoca o serie de impacturi. Valoarea specifică poate fi modificată în wheeltec_slave.launch.
Parametrii relevanți ai algoritmului de formare sunt următorii:
Informații despre evitarea obstacolelor
Într-o formație cu mai mulți agenți, comandantul poate folosi nodul move_base pentru a finaliza evitarea obstacolului. Cu toate acestea, inițializarea slave nu folosește nodul move_base. În acest moment, nodul multi_avoidance trebuie apelat în programul slave. Nodul de evitare a obstacolelor este activat implicit în pachet. Dacă este necesar, evitarea poate fi setată la „fals” pentru a dezactiva nodul de evitare a obstacolelor.
Unii parametri relevanți ai nodului de evitare a obstacolelor sunt prezentați în figura de mai jos, unde safe_distance este limita distanței de siguranță pentru obstacol și danger_distance este limita distanței periculoase pentru obstacol. Când obstacolul se află la distanța de siguranță și la distanța de pericol, slave își ajustează poziția pentru a evita obstacolul. Când obstacolul este în pericol, sclavul se va îndepărta de obstacol.
Procedura de operare
Introduceți comanda de execuție
Pregătiri înainte de începerea formării multi-agenților:
- Master și slave se conectează la aceeași rețea și configurează corect comunicarea multi-agent
- Maestrul construiește o hartă 2D în avans și o salvează
- Master-ul este plasat la punctul de pornire al hărții, iar slave-ul este plasat lângă poziția de inițializare (poziția implicită de formare a slave)
- După ce vă conectați la Jetson Nano/Raspberry Pi de la distanță, efectuați sincronizarea orei.
sudo date -s „2022-04-01 15:15:00”
- Pasul 1: Deschideți o hartă 2D de la master.
roslaunch turn_on_wheeltec_robot navigation.lansare
- Pasul 2: Rulați programul de formare de la toți sclavii.
roslaunch wheeltec_multi wheeltec_slave.lansare
- Pasul 3: Deschideți nodul de control al tastaturii de la master sau utilizați joystick-ul pentru a controla de la distanță mișcarea master.
relansați wheeltec_robot_rc keyboard_teleop.launch
- Pasul 4: (Opțional) Observați mișcările robotului de la Rviz.
rviz
Nota:
- Asigurați-vă că finalizați operația de sincronizare a orei înainte de a executa programul.
- Când controlați comandantul unei formațiuni multi-agenți, viteza unghiulară nu ar trebui să fie prea rapidă. Viteza liniară recomandată este de 0.2 m/s, gradul de viteză unghiulară sub 0.3 rad/s. Când masterul face o întoarcere, cu cât slave este mai departe de master, cu atât este necesară viteza liniară mai mare. Din cauza limitei vitezei liniare și vitezei unghiulare din pachet, atunci când mașina slave nu poate atinge viteza necesară, formarea va fi haotică. În general, viteza liniară excesivă poate deteriora cu ușurință robotul.
- Când numărul de sclavi este mai mare de unul, din cauza lățimii de bandă Wifi limitate la bord a gazdei ROS, este ușor să provocați întârzieri semnificative și deconectarea comunicării multi-agent. Folosirea unui router poate rezolva bine această problemă.
- Arborele TF al formațiunii multi-roboți (2 sclavi) este: rqt_tf_tree
- Diagrama relației nodurilor a formațiunii multi-robot (2 sclavi) este: rqt_graph
Documente/Resurse
![]() |
ROBWORKS Robofleet ALGORITMI MULTI-AGENT [pdfManual de utilizare Algoritmi Robofleet cu mai mulți agenți, Robofleet, Algoritmi cu mai mulți agenți, Algoritmi cu agenți, Algoritmi |