ROBOWORKS Robofleet MULTI-AGENT-ALGORITMER
Spesifikasjoner
- Produktnavn: ROBOWORKS
- Versjon: 20240501
- Utarbeidet av: Wayne Liu & Janette Lin
- Dato: 1 kan 2024
Produktinformasjon
ROBOWORKS er et multi-agent system som muliggjør implementering av ulike algoritmer for robotkoordinering og kommunikasjon.
Vanlige spørsmål
Spørsmål: Hva skal jeg gjøre hvis roboten ikke automatisk kan koble til Wifi?
A: Hvis roboten ikke klarer å koble til automatisk, prøv å koble fra og koble til nettverkskortet igjen og forsøk å koble til på nytt.
SAMMENDRAG
Dette dokumentet forklarer hovedsakelig bruken av multi-robot formasjonsfunksjonspakken kalt wheeltec_multi.
Dette dokumentet er delt inn i fire deler:
- Den første delen handler hovedsakelig om introduksjonen av multirobotformasjonsmetoden;
- den andre delen beskriver hovedsakelig ROS-multimaskinkommunikasjonsinnstillingene, inkludert ROS-konstruksjonsmultimaskinkommunikasjon og problemene som kan oppstå i prosessen med ROS-kommunikasjon;
- den tredje delen beskriver hovedsakelig operasjonstrinnene for multi-maskin tidssynkronisering;
- den fjerde delen forklarer den spesifikke bruken av funksjonspakken for multi-maskin formasjon.
Formålet med dette dokumentet er en introduksjon til multi-agent robotsystemer og lar brukere starte multi-robot formasjonsprosjektet raskt.
INTRODUKSJON TIL MULTI-AGENT-ALGORITMER
Algoritmer for dannelse av flere agenter
Denne ROS-pakken presenterer et typisk problem med multi-agenter i samarbeidskontroll under en formasjonskjøring. Denne opplæringen legger et grunnlag for fremtidig utvikling av dette emnet. Formasjonskontrollalgoritmen refererer til en algoritme som kontrollerer flere agenter for å danne en spesifikk formasjon for å utføre en oppgave. Samarbeid refererer til samarbeidet mellom flere agenter som bruker et visst begrensningsforhold for å fullføre en oppgave. Ta multirobotformasjonskjøringen som en eksampSamarbeid betyr at flere roboter danner en ønsket formasjon sammen. Dens essens er et visst matematisk forhold som er tilfredsstilt mellom posisjonene til hver robot. Formasjonsmetoder er hovedsakelig delt inn i sentralisert formasjonskontroll og distribuert formasjonskontroll. Sentraliserte formasjonskontrollmetoder inkluderer hovedsakelig den virtuelle strukturmetoden, grafisk teorimetode og modellprediktiv metode. Distribuerte formasjonskontrollmetoder inkluderer hovedsakelig en leder-følgermetode, en atferdsbasert metode og en virtuell strukturmetode.
Denne ROS-pakken bruker leder-følger-metoden i den distribuerte formasjonskontrollmetoden for å utføre multirobotformasjonskjøringen. En robot i formasjonen er utpekt som leder, og andre roboter er utpekt som slaver for å følge lederen. Algoritmen bruker bevegelsesbanen til den ledende roboten til å angi koordinatene som skal spores av følgende roboter med en viss retning og hastighet. Ved å korrigere posisjonsavvikene fra sporingskoordinatene, vil følgerne til slutt redusere avviket mellom følgeren og de forventede sporingskoordinatene til null for å nå målene for formasjonskjøringen. På denne måten er algoritmen relativt mindre komplisert.
Algoritmer for å unngå hindringer
En vanlig algoritme for unngåelse av hindringer er metoden for kunstig potensialfelt. Bevegelsen av roboten i et fysisk miljø blir sett på som en bevegelse i et virtuelt kunstig kraftfelt. Den nærmeste hindringen er identifisert av LiDAR. Hindret gir et frastøtende kraftfelt for å generere frastøting til roboten, og målpunktet gir et gravitasjonsfelt for å generere gravitasjonskraft til roboten. På denne måten kontrollerer den bevegelsen til roboten under den kombinerte handlingen av frastøtning og tiltrekning.
Denne ROS-pakken er en forbedring basert på metoden for kunstig potensialfelt. For det første beregner formasjonsalgoritmen den lineære og vinkelhastigheten til slavefølgeren. Deretter øker eller reduserer den lineær- og vinkelhastigheten i henhold til kravene til å unngå hindringer. Når avstanden mellom Slavefølgeren og hindringen er nærmere, er frastøtningskraften til hindringen til Slavefølgeren større. I mellomtiden er endringen av den lineære hastigheten og vinkelhastighetsvariasjonene større. Når hindringen er nærmere fronten til Slavefølgeren, blir frastøtingen av hindringen til Slavefølgeren større (frastøtingen foran er størst og sidefrastøtningen er minst). Som et resultat er variasjonene av den lineære hastigheten og vinkelhastigheten større. Gjennom metoden for kunstig potensialfelt forbedrer den en løsning når en robot kan slutte å reagere foran en hindring. Dette tjener formålet med bedre unngåelse av hindringer.
MULTI-AGENT KOMMUNIKASJONSOPSETT
Multi-agent kommunikasjon er et av nøkkeltrinnene for å fullføre en multi-robot formasjon. Når de relative posisjonene til flere roboter er ukjente, må robotene dele hverandres informasjon gjennom kommunikasjon for å lette etableringen av forbindelser. ROS-distribuert arkitektur og nettverkskommunikasjon er veldig kraftig. Det er ikke bare praktisk for kommunikasjon mellom prosesser, men også for kommunikasjon mellom forskjellige enheter. Gjennom nettverkskommunikasjon kan alle noder kjøre på hvilken som helst datamaskin. Hovedoppgavene som databehandling utføres på vertssiden. Slavemaskinene er ansvarlige for å motta miljødata samlet inn av ulike sensorer. Verten her er lederen som kjører Master-noden i ROS. Det nåværende multi-agent kommunikasjonsrammeverket er gjennom en node manager og en parameter manager for å håndtere kommunikasjon mellom flere roboter.
Trinnene for å sette opp multi-agent kommunikasjon
- Sett opp ROS-kontroller i samme nettverk
- Det er 2 måter å sette opp Master/Slave ROS Controls under samme nettverk.
Alternativ 1:
Master Host oppretter en lokal wifi ved å kjøre Master node manager. Vanligvis oppretter en av robotene som er utpekt som master dette wifi-nettverket. Andre roboter eller virtuelle maskiner slutter seg til dette wifi-nettverket som slaver.
Alternativ 2:
Det lokale wifi-nettverket leveres av en tredjepartsruter som et informasjonsrelésenter. Alle roboter er koblet til samme ruter. Ruteren kan også brukes uten internettforbindelse. Velg en av robotene som master og kjør Master node manager. De andre robotene er utpekt som slaver og kjører master node manager fra masteren.
Beslutningen om hvilket alternativ du skal velge avhenger av prosjektkravene dine. Hvis antallet roboter som trenger å kommunisere ikke er så stort, anbefales alternativ 1 siden det sparer kostnader og er enkelt å sette opp. Når antallet roboter er stort, anbefales alternativ 2. Begrensningen på datakraften til ROS-hovedkontrollen og begrenset innebygd wifi-båndbredde kan lett forårsake forsinkelser og nettverksforstyrrelser. En ruter kan enkelt fikse disse problemene. Vær oppmerksom på at når du utfører multiagentkommunikasjon, hvis den virtuelle maskinen brukes som en ROS-slave, må nettverksmodusen settes til bromodus.
Konfigurer Master/Slave miljøvariabler
Etter at alle ROS-masterne er i samme nettverk, må miljøvariablene for multiagentkommunikasjon angis. Denne miljøvariabelen er konfigurert i .bashrc-filen i hovedkatalogen. Kjør kommandoen gedit ~/.bashrc for å starte den. Vær oppmerksom på at både .bashrc-filene til masteren og slaven i multiagentkommunikasjon må konfigureres. Det som må endres er IP-adressene på slutten av filen. De to linjene er ROS_MASTER_URI og ROS_HOSTNAME, som vist i figur 2-1-4. ROS_MASTER_URI og ROS_HOSTNAME til ROS-verten er begge lokale IP-er. ROS_MASTER_URI i ROS-slave .bashrc-filen må endres til vertens IP-adresse mens ROS_HOSTNAME forblir som en lokal IP-adresse.
ROS-multimaskinkommunikasjon er ikke begrenset av ROS-utgivelsesversjonen. I prosessen med multimaskinkommunikasjon bør man være oppmerksom på følgende:
- Driften av ROS-slaveprogrammet avhenger av ROS-masterprogrammet til ROS-masterenheten. ROS-masterprogrammet må startes først på masterenheten før det utføres slaveprogrammet på slaveenheten.
- IP-adressene til master- og slavemaskinen i multimaskinkommunikasjon må være i samme nettverk. Dette betyr at IP-adressen og subnettmasken er under samme nettverk.
- ROS_HOSTNAME i miljøkonfigurasjonsfilen .bashrc anbefales ikke å bruke localhost. Det anbefales å bruke en spesifikk IP-adresse.
- I tilfelle slave-IP-adressen ikke er riktig angitt, kan slaveenheten fortsatt få tilgang til ROS-masteren, men kan ikke legge inn kontrollinformasjon.
- Hvis den virtuelle maskinen deltar i multiagentkommunikasjonen, må nettverksmodusen settes til bromodus. Statisk IP kan ikke velges for nettverkstilkoblingen.
- Multimaskinkommunikasjon kan ikke view eller abonnere på emner av meldingsdatatype som ikke finnes lokalt.
- Du kan bruke Little Turtle-simuleringsdemoen for å verifisere om kommunikasjonen mellom robotene er vellykket:
- a. Løp fra mesteren
- rescore #launch ROS-tjenester
- rostrum turtles turtlesim_node #lanser turtles-grensesnitt
- b. Løp fra slaven
- rerun turtles turtle_teleop_key #lansering av tastaturkontrollnode for skilpadder
- a. Løp fra mesteren
Hvis du kan manipulere skilpaddebevegelsene fra tastaturet på slaven, betyr det at master/slave-kommunikasjonen har blitt etablert.
Automatisk Wifi-tilkobling i ROS
Prosedyrene nedenfor forklarer hvordan du konfigurerer roboten til automatisk å koble til vertsnettverket eller ruternettverket.
Automatisk Wifi-tilkoblingsoppsett for Jetson Nano
- Koble Jetson Nano via VNC-fjernverktøyet eller direkte til dataskjermen. Klikk på wifi-ikonet øverst til høyre og klikk deretter "Rediger tilkoblinger.."
- Klikk på +-knappen i Nettverkstilkoblinger:
- Under "Velg en tilkoblingstype"-vinduet klikker du på rullegardinmenyen og klikker på "Opprett..."-knappen:
- Klikk på Wifi-alternativet i kontrollpanelet. Skriv inn Wifi-navnet for å koble til i "Connection Name"- og SSID-feltene. Velg "Klient" i rullegardinmenyen "Modus", og velg "wlan0" i rullegardinmenyen "Enhet".
- I Kontrollpanel klikker du på "Generelt" og merker av for "Koble automatisk til dette nettverket ...". Sett tilkoblingsprioriteten til 1 i alternativet "Tilkoblingsprioritet for automatisk aktivering". Merk av for "Alle brukere kan koble til dette nettverket". Når alternativet er satt til 0 i "Tilkoblingsprioritet for automatisk aktivering" for andre wifi, betyr dette at dette er det foretrukne wifi-nettverket i fortiden.
- Klikk på alternativet "Wi-Fi Security" i kontrollpanelet. Velg "WPA & WPA2 Personal" i "Security"-feltet. Skriv deretter inn Wifi-passordet i "Passord"-feltet.
Note: Hvis roboten ikke automatisk kan koble til wifi-nettverket etter oppstart når wifi-prioriteten er satt til 0, kan det være forårsaket av et problem med et svakt wifi-signal. For å unngå dette problemet kan du velge å slette alle wifi-alternativene som har vært tilkoblet tidligere. Behold bare wifi-nettverket som er opprettet av verten eller ruteren. Klikk på alternativet "IPv4-innstillinger" i kontrollpanelet for nettverksinnstillinger. Velg alternativet "Manuell" i "Metode"-feltet. Klikk deretter "Legg til", fyll inn IP-adressen til slavemaskinen i "Adresse"-feltet. Fyll ut "24" i "Nettverksmaske"-feltet. Fyll inn IP-nettverkssegmentet i "Gateway". Endre de tre siste sifrene i IP-nettverkssegmentet til "1". Hovedformålet med dette trinnet er å fikse IP-adressen. Etter at dette er fullført for første gang, vil IP-adressen forbli uendret når du kobler til samme WIFI senere.
Etter at alle innstillingene er konfigurert, klikk "lagre" for å lagre innstillingene. Etter at lagringen er vellykket, vil roboten automatisk koble seg til nettverket til verten eller ruteren når den slås på.
Note:
- IP-adressen som er angitt her, må være den samme som IP-adressen angitt i .bashrc-filen i avsnitt 2.1.
- IP-adressen til masteren og hver slave må være unik.
- Master- og slave-IP-adressene må være i samme nettverkssegment.
- Du må vente på at verten eller ruteren sender ut WiFi-signal før slaveroboten kan slås på og kobles automatisk til WiFi-nettverket.
- Etter at innstillingen er konfigurert, hvis roboten ikke automatisk kan koble til WiFi når den er slått på, må du koble til og koble fra nettverkskortet og prøve å koble til på nytt.
Automatisk Wifi-tilkoblingsoppsett for Raspberry Pi
Prosedyren for Raspberry Pi er den samme som Jetson Nano.
Automatisk Wifi-tilkoblingsoppsett for Jetson TX1
Oppsettet i Jetson TX1 er nesten det samme som i Jetson Nano med ett unntak Jetson TX1 bør velge enheten til "wlan1" i "Enhet" i nettverksinnstillinger-kontrollpanelet.
OPPSETT FOR SYNKRONISERING AV MULTIAGENT
I multi-agent formasjonsprosjektet er multi-agent tidssynkroniseringsinnstillingen et avgjørende trinn. I prosessen med dannelsen vil det oppstå mange problemer på grunn av den asynkrone systemtiden til hver robot. Multi-agent tidssynkronisering er delt inn i to situasjoner, nemlig situasjonen der både master- og slaveroboten er koblet til nettverket og situasjonen der begge er koblet fra nettverket.
Vellykket master/slave nettverkstilkobling
Etter at multi-agent-kommunikasjonen er konfigurert, hvis master- og slave-maskinen kan koble til nettverket, vil de automatisk synkronisere nettverkstiden. I dette tilfellet er det ikke nødvendig med ytterligere handlinger for å oppnå tidssynkronisering.
Feilsøking av nettverksfrakoblinger
Etter at multi-agent-kommunikasjonen er konfigurert, hvis master- og slave-enhetene ikke kan kobles til nettverket, er det nødvendig å manuelt synkronisere tiden. Vi bruker datokommandoen for å fullføre tidsinnstillingen.
Installer først terminatorverktøyet. Fra terminatorverktøyet, bruk vindusdelingsverktøyet til å plassere kontrollterminalene til masteren og slaven i samme terminalvindu (høyreklikk for å angi et delt vindu, og logg inn på master- og slavemaskinene med ssh i forskjellige vinduer) .
- sudo apt-get install terminator # Last ned terminator for å dele terminalvinduet
Klikk på knappen øverst til venstre, velg alternativet [Kringkast til alle]/[Kringkast alle], og skriv inn følgende kommando. Bruk deretter terminatorverktøyet til å stille inn samme tid for master og slave.
- sudo date -s “2022-01-30 15:15:00” # Manuell tidsoppsett
MULTI-AGENT ROS-PAKKE
ROS-pakkeintroduksjon
Sett opp slavenavn
I funksjonspakken wheeltec_multi er det nødvendig å sette et unikt navn for hver slaverobot for å unngå feil. For eksample, nr. 1 for slave1 og nr. 2 for slave2, osv. Hensikten med å sette forskjellige navn er å gruppere kjørende noder og skille dem med forskjellige navnerom. For eksample, radar-emnet for slave 1 er/slave1/scan, og LiDAR-noden til slave 1 er/slave1/laser.
Sett opp slavekoordinater
Wheeltec_multi-pakken kan implementere tilpassede formasjoner. Når det kreves forskjellige formasjoner, er det bare å endre de ønskede koordinatene til slaverobotene. Slave_x og slave_y er x- og y-koordinatene til slaven med masteren som det opprinnelige referansepunktet. Forsiden av masteren er den positive retningen til x-koordinaten, og venstre side er den positive retningen til y-koordinaten. Etter at innstillingen er fullført, vil en TF-koordinatslave1 bli utstedt som den forventede koordinaten til slaven. Hvis det er en master og to slaver, kan følgende formasjon settes:
- Horisontal formasjon: Du kan sette koordinatene til slaven til venstre til slave_x:0, slave_y: 0.8, og koordinatene til slaven til høyre til slave_x:0, slave_y:-0.8.
- Kolonneformasjon: Koordinatene til en slave kan settes til: slave_x:-0.8, slave_y:0, og koordinatene til den andre slaven kan settes til: slave_x:-1.8, slave_y:0.
- Trekantformasjon: Koordinatene til en slave kan settes til: slave_x:-0.8, slave_y: 0.8, og koordinatene til den andre slaven kan settes til: slave_x:-0.8, slave_y:-0.8.
Andre formasjoner kan tilpasses etter behov.
Note:
- Den anbefalte avstanden mellom de to robotene er satt til 0.8, og det anbefales ikke å være lavere enn 0.6. Avstanden mellom slavene og masteren anbefales satt til under 2.0. Jo lenger den er fra masteren, desto større er den lineære hastigheten til slaven når masteren snur. På grunn av begrensning av maksimal hastighet vil hastigheten til slaven avvike dersom den ikke oppfyller kravene. Robotformasjonen vil bli kaotisk.
Initialisering av slaveposisjonen
- Startposisjonen til slaven er som standard på de forventede koordinatene. Før du kjører programmet, er det bare å plassere slaveroboten nær de forventede koordinatene for å fullføre initialiseringen. Denne funksjonen implementeres av pose_setter-noden i filen med navnet turn_on_wheeltec_robot.launch i wheeltec_multi-pakken, som vist i figur 4-1-3.
Hvis brukeren ønsker å tilpasse startposisjonen til slaven, trenger han eller hun bare å sette slave_x- og slave_y-verdiene som vist i figur 4-1-4 i wheeltec_slave.launch. Verdiene slave_x og slave_y vil bli sendt til turn_on_wheeltec_robot.launch og tilordnet pose_setter-noden. Bare plasser roboten i en tilpasset posisjon før du kjører programmet.
Posisjonskonfigurasjon
I en multi-agent formasjon er det første problemet som skal løses plasseringen av master og slave. Mesteren vil først konstruere et 2D-kart. Etter å ha opprettet og lagret kartet, kjør 2D-navigasjonspakken og bruk den adaptive Monte Carlo-posisjoneringsalgoritmen (amcl-posisjonering) i 2D-navigasjonspakken for å konfigurere posisjoneringen av masteren. Siden masteren og slavene er i samme nettverk og deler samme nodemanager, har masteren lansert kartet fra 2D-navigasjonspakken, alle slavene kan bruke samme kart under samme nodemanager. Derfor trenger ikke slaven å lage et kart. I wheeltec_slave.launch, kjør Monte Carlo-posisjonering (amcl-posisjonering), slavene kan konfigurere posisjonene sine ved å bruke kartet laget av mesteren.
Hvordan skape formasjon og opprettholde formasjon
I prosessen med formasjonsbevegelse kan masterbevegelsen styres av Rviz, tastatur, fjernkontroll og andre metoder. Slaven beregner hastigheten sin gjennom slave_tf_listener-noden for å kontrollere bevegelsen og oppnå målet med formasjonen. Slave_tf_listener-noden begrenser slavehastigheten for å unngå for høy hastighet ved nodeberegningen, noe som vil forårsake en rekke påvirkninger. Den spesifikke verdien kan endres i wheeltec_slave.launch.
De relevante parameterne for formasjonsalgoritmen er som følger:
Informasjon om unngåelse av hindringer
I en multi-agent-formasjon kan masteren bruke move_base-noden for å fullføre unngåelse av hindringer. Initialiseringen av slaven bruker imidlertid ikke move_base-noden. På dette tidspunktet må multi_avoidance-noden kalles opp i slaveprogrammet. Noden for unngåelse av hindringer er aktivert som standard i pakken. Om nødvendig kan unngåelse settes til "false" for å deaktivere noden for unngåelse av hindringer.
Noen relevante parametere for noden for unngåelse av hindringer er vist i figuren nedenfor, der safe_distance er grensen for sikker avstand for hindringer, og danger_distance er grensen for farlig avstand for hindringer. Når hindringen er innenfor sikker avstand og fareavstand, justerer slaven sin posisjon for å unngå hindringen. Når hindringen er innenfor fare, vil slaven kjøre vekk fra hindringen.
Driftsprosedyre
Skriv inn utførelseskommando
Forberedelser før du starter dannelsen av multimiddel:
- Master og slave kobler til samme nettverk og setter opp multiagentkommunikasjon riktig
- Mesteren bygger et 2D-kart på forhånd og lagrer det
- Masteren plasseres ved startpunktet på kartet, og slaven plasseres nær initialiseringsposisjonen (standard slaveformasjonsposisjon)
- Etter å ha logget på Jetson Nano/Raspberry Pi eksternt, utfør tidssynkronisering.
sudo dato -s "2022-04-01 15:15:00"
- Trinn 1: Åpne et 2D-kart fra masteren.
roslaunch turn_on_wheeltec_robot navigation.launch
- Trinn 2: Kjør formasjonsprogrammet fra alle slavene.
roslaunch wheeltec_multi wheeltec_slave.launch
- Trinn 3: Åpne tastaturkontrollnoden fra masteren eller bruk joysticken til å fjernstyre masterbevegelsen.
relansere wheeltec_robot_rc keyboard_teleop.launch
- Trinn 4: (Valgfritt) Observer robotbevegelsene fra Rviz.
rviz
Note:
- Sørg for å fullføre tidssynkroniseringsoperasjonen før du kjører programmet.
- Når du kontrollerer masteren til en multi-agent formasjon, bør vinkelhastigheten ikke være for høy. Anbefalt lineær hastighet er 0.2m/s, vinkelhastighet under 0.3rad/s. Når masteren gjør en sving, jo lenger slaven er fra masteren, desto høyere lineær hastighet kreves det. På grunn av grensen for lineær hastighet og vinkelhastighet i pakken, når slavebilen ikke kan nå den nødvendige hastigheten, vil formasjonen være kaotisk. Totalt sett kan den overdrevne lineære hastigheten lett skade roboten.
- Når antallet slaver er mer enn én, på grunn av den begrensede trådløse båndbredden til ROS-verten, er det lett å forårsake betydelige forsinkelser og frakobling av multiagentkommunikasjonen. Å bruke en ruter kan løse dette problemet godt.
- TF-treet til multirobotformasjonen (2 slaver) er: rqt_tf_tree
- Nodeforholdsdiagrammet til multirobotformasjonen (2 slaver) er: rqt_graph
Dokumenter / Ressurser
![]() |
ROBOWORKS Robofleet MULTI-AGENT-ALGORITMER [pdfBrukerhåndbok Robofleet Multi Agent Algoritmer, Robofleet, Multi Agent Algoritmer, Agent Algoritmer, Algoritmer |