ROBOWORKS Robofleet MULTIAGENT-ALGORITMER
Specifikationer
- Produktnamn: ROBOWORKS
- Version: 20240501
- Förberedd av: Wayne Liu & Janette Lin
- Datum: 1 maj 2024
Produktinformation
ROBOWORKS är ett multiagentsystem som möjliggör implementering av olika algoritmer för robotkoordination och kommunikation.
Vanliga frågor
F: Vad ska jag göra om roboten inte kan ansluta automatiskt till Wifi?
S: Om roboten misslyckas med att ansluta automatiskt, försök att koppla ur och koppla in nätverkskortet igen och försök att ansluta igen.
SAMMANFATTNING
Det här dokumentet förklarar huvudsakligen användningen av funktionspaketet för formation av flera robotar som heter wheeltec_multi.
Detta dokument är uppdelat i fyra delar:
- Den första delen handlar främst om introduktionen av multirobotformningsmetoden;
- den andra delen beskriver huvudsakligen ROS-multimaskinkommunikationsinställningarna, inklusive ROS-konstruktionsmultimaskinkommunikation och de problem som kan uppstå i processen med ROS-kommunikation;
- den tredje delen beskriver huvudsakligen operationsstegen för multi-maskin tidssynkronisering;
- den fjärde delen förklarar den specifika användningen av funktionspaketet för flermaskinsformation.
Syftet med det här dokumentet är en introduktion till robotsystem med flera agenter och gör det möjligt för användare att snabbt starta bildningsprojektet för flera robotar.
INTRODUKTION TILL MULTIAGENT-ALGORITMER
Algoritmer för bildning av flera agenter
Detta ROS-paket presenterar ett typiskt problem med multi-agenter i kollaborativ kontroll under en formationskörning. Denna handledning lägger en grund för framtida utveckling av detta ämne. Formationskontrollalgoritmen hänvisar till en algoritm som styr flera agenter för att bilda en specifik formation för att utföra en uppgift. Samarbete hänvisar till samarbetet mellan flera agenter som använder en viss begränsningsrelation för att slutföra en uppgift. Ta formationen med flera robotar som ett exampsamverkan innebär att flera robotar bildar en önskad formation tillsammans. Dess väsen är ett visst matematiskt förhållande som är tillfredsställt mellan positionerna för varje robot. Formationsmetoder är huvudsakligen uppdelade i centraliserad formationskontroll och distribuerad formationskontroll. Centraliserade formationskontrollmetoder inkluderar huvudsakligen den virtuella strukturmetoden, den grafiska teorimetoden och den modellprediktiva metoden. Distribuerade formationskontrollmetoder inkluderar huvudsakligen en ledare-följarmetod, en beteendebaserad metod och en virtuell strukturmetod.
Detta ROS-paket tillämpar leader-follower-metoden i den distribuerade formationskontrollmetoden för att köra multi-robot formation drive. En robot i formationen är utsedd som ledare, och andra robotar är utsedda som slavar för att följa ledaren. Algoritmen använder den ledande robotens rörelsebana för att ställa in koordinaterna som ska spåras av följande robotar med en viss riktning och hastighet. Genom att korrigera positionsavvikelserna från spårningskoordinaterna kommer följarna så småningom att reducera avvikelsen mellan följaren och de förväntade spårningskoordinaterna till noll för att uppnå målen för formationsdrevet. På så sätt är algoritmen relativt mindre komplicerad.
Algoritmer för undvikande av hinder
En vanlig algoritm för undvikande av hinder är den artificiella potentialfältmetoden. Robotens rörelse i en fysisk miljö betraktas som en rörelse i ett virtuellt artificiellt kraftfält. Det närmaste hindret identifieras av LiDAR. Hindret tillhandahåller ett repulsiv kraftfält för att generera repulsion till roboten och målpunkten tillhandahåller ett gravitationsfält för att generera gravitationskraft till roboten. På detta sätt styr den robotens rörelse under den kombinerade verkan av avstötning och attraktion.
Detta ROS-paket är en förbättring baserad på den artificiella potentiella fältmetoden. För det första beräknar bildningsalgoritmen den linjära och vinkelhastigheten för slavföljaren. Sedan ökar eller minskar den linjär- och vinkelhastigheten enligt kraven för undvikande av hinder. När avståndet mellan slavföljaren och hindret är närmare, är avstötningskraften från hindret till slavföljaren större. Samtidigt är förändringen av den linjära hastigheten och vinkelhastighetsvariationerna större. När hindret är närmare slavföljarens främre del, blir avstötningen av hindret mot slavföljaren större (det främre repulsionen är störst och sidoavstötningen är minst). Som ett resultat är variationerna av den linjära hastigheten och vinkelhastigheten större. Genom metoden för artificiell potentialfält förbättrar den en lösning när en robot kan sluta svara framför ett hinder. Detta tjänar syftet att bättre undvika hinder.
MULTI-AGENT KOMMUNIKATIONSINSTÄLLNING
Multi-agent kommunikation är ett av nyckelstegen för att slutföra en multi-robot formation. När de relativa positionerna för flera robotar är okända behöver robotarna dela varandras information genom kommunikation för att underlätta upprättandet av förbindelser. ROS-distribuerad arkitektur och nätverkskommunikation är mycket kraftfull. Det är inte bara bekvämt för kommunikation mellan processer utan också för kommunikation mellan olika enheter. Genom nätverkskommunikation kan alla noder köras på vilken dator som helst. Huvuduppgifterna som databehandling slutförs på värdsidan. Slavmaskinerna ansvarar för att ta emot miljödata som samlats in av olika sensorer. Värden här är chefen som kör masternoden i ROS. Det nuvarande kommunikationsramverket för flera agenter är genom en nodhanterare och en parameterhanterare för att hantera kommunikation mellan flera robotar.
Stegen för att ställa in kommunikation med flera agenter
- Ställ in ROS-kontroller i samma nätverk
- Det finns två sätt att ställa in Master/Slave ROS Controls under samma nätverk.
Alternativ 1:
Master Host skapar ett lokalt wifi genom att köra Master Node Manager. I allmänhet skapar en av robotarna som är utsedd som master detta wifi-nätverk. Andra robotar eller virtuella maskiner går med i detta wifi-nätverk som slavar.
Alternativ 2:
Det lokala wifi-nätverket tillhandahålls av en tredjepartsrouter som ett informationsförmedlingscenter. Alla robotar är anslutna till samma router. Routern kan även användas utan internetuppkoppling. Välj en av robotarna som master och kör masternodhanteraren. De andra robotarna är utsedda som slavar och kör masternodhanteraren från mastern.
Beslutet om vilket alternativ du ska välja beror på dina projektkrav. Om antalet robotar som behöver kommunicera inte är ett stort antal, rekommenderas alternativ 1 eftersom det sparar kostnader och är lätt att ställa in. När antalet robotar är stort rekommenderas alternativ 2. Begränsningen av datorkraften hos ROS-huvudkontrollen och begränsad inbyggd wifi-bandbredd kan lätt orsaka förseningar och nätverksstörningar. En router kan enkelt lösa dessa problem. Observera att när du utför multiagentkommunikation, om den virtuella maskinen används som en ROS-slav, måste dess nätverksläge ställas in på bryggläge.
Konfigurera Master/Slave miljövariabler
Efter att alla ROS-master är i samma nätverk måste miljövariablerna för multiagentkommunikation ställas in. Denna miljövariabel är konfigurerad i .bashrc-filen i huvudkatalogen. Kör kommandot gedit ~/.bashrc för att starta det. Observera att både masterns och slavens .bashrc-filer i multiagentkommunikation måste konfigureras. Det som behöver ändras är IP-adresserna i slutet av filen. De två raderna är ROS_MASTER_URI och ROS_HOSTNAME, som visas i figur 2-1-4. ROS_MASTER_URI och ROS_HOSTNAME för ROS-värden är båda lokala IP-adresser. ROS_MASTER_URI i ROS-slaven .bashrc-fil måste ändras till värdens IP-adress medan ROS_HOSTNAME förblir en lokal IP-adress.
ROS-kommunikation med flera maskiner är inte begränsad av ROS-versionen. I processen med multimaskinkommunikation bör man vara medveten om följande:
- ROS-slavprogrammets funktion beror på ROS-masterprogrammet för ROS-masterenheten. ROS-masterprogrammet måste startas först på masterenheten innan slavprogrammet körs på slavenheten.
- IP-adresserna för master- och slavmaskinerna i kommunikation med flera maskiner måste vara i samma nätverk. Detta betyder att IP-adressen och subnätmasken är under samma nätverk.
- ROS_HOSTNAME i miljökonfigurationsfilen .bashrc rekommenderas inte att använda localhost. Det rekommenderas att använda en specifik IP-adress.
- Om slav-IP-adressen inte är korrekt inställd kan slavenheten fortfarande komma åt ROS-mastern men kan inte mata in kontrollinformation.
- Om den virtuella maskinen deltar i multiagentkommunikationen måste dess nätverksläge ställas in på bryggläge. Statisk IP kan inte väljas för nätverksanslutningen.
- Kommunikation med flera maskiner kan inte view eller prenumerera på ämnen av meddelandedatatyp som inte finns lokalt.
- Du kan använda Little Turtle-simuleringsdemon för att verifiera om kommunikationen mellan robotarna är framgångsrik:
- a. Spring från mästaren
- rescore #launch ROS-tjänster
- rostrum turtles turtlesim_node #lansera sköldpaddors gränssnitt
- b. Spring från slaven
- kör igen turtles turtle_teleop_key #starta tangentbordskontrollnod för sköldpaddor
- a. Spring från mästaren
Om du kan manipulera sköldpaddans rörelser från tangentbordet på slaven betyder det att master/slav-kommunikationen har etablerats framgångsrikt.
Automatisk Wifi-anslutning i ROS
Procedurerna nedan förklarar hur man konfigurerar roboten för att automatiskt ansluta till värdnätverket eller routernätverket.
Automatisk Wifi-uppkoppling för Jetson Nano
- Anslut Jetson Nano via VNC-fjärrverktyget eller direkt till datorskärmen. Klicka på wifi-ikonen i det övre högra hörnet och klicka sedan på "Redigera anslutningar.."
- Klicka på +-knappen i Nätverksanslutningar:
- Under fönstret "Välj en anslutningstyp", klicka på rullgardinsmenyn och klicka på knappen "Skapa...":
- Klicka på Wifi-alternativet i kontrollpanelen. Ange Wifi-namnet för att ansluta i fälten "Anslutningsnamn" och SSID. Välj "Klient" i rullgardinsmenyn "Läge" och välj "wlan0" i rullgardinsmenyn "Enhet".
- I Kontrollpanelen klickar du på alternativet "Allmänt" och markerar "Anslut automatiskt till detta nätverk...". Ställ in anslutningsprioriteten till 1 i alternativet "Anslutningsprioritet för automatisk aktivering". Markera alternativet "Alla användare kan ansluta till detta nätverk". När alternativet är inställt på 0 i "Anslutningsprioritet för automatisk aktivering" för annat wifi betyder det att detta är det tidigare föredragna wifi-nätverket.
- Klicka på alternativet "Wi-Fi Security" i Kontrollpanelen. Välj "WPA & WPA2 Personal" i fältet "Security". Ange sedan Wifi-lösenordet i fältet "Lösenord".
Notera: Om roboten inte kan ansluta automatiskt till wifi-nätverket efter uppstart när wifi-prioriteten är inställd på 0, kan det bero på ett problem med en svag wifi-signal. För att undvika detta problem kan du välja att ta bort alla wifi-alternativ som har varit anslutna tidigare. Behåll bara det wifi-nätverk som skapats av värden eller routern. Klicka på alternativet "IPv4-inställningar" i kontrollpanelen för nätverksinställningar. Välj alternativet "Manuell" i fältet "Metod". Klicka sedan på "Lägg till", fyll i slavmaskinens IP-adress i fältet "Adress". Fyll i "24" i fältet "Netmask". Fyll i IP-nätverkssegmentet i "Gateway". Ändra de tre sista siffrorna i IP-nätverkssegmentet till "1". Huvudsyftet med detta steg är att fixa IP-adressen. Efter att detta är klart för första gången kommer IP-adressen att förbli oförändrad när du ansluter till samma WIFI senare.
När alla inställningar är konfigurerade, klicka på "spara" för att spara inställningarna. Efter att lagringen har lyckats ansluter roboten automatiskt till värdens eller routerns nätverk när den slås på.
Notera:
- IP-adressen som ställs in här måste vara densamma som IP-adressen i .bashrc-filen i avsnitt 2.1.
- Masterns och varje slavs IP-adress måste vara unik.
- Master- och slav-IP-adresserna måste vara i samma nätverkssegment.
- Du måste vänta på att värden eller routern ska skicka ut WiFi-signal innan slavroboten kan slås på och automatiskt ansluta till WiFi-nätverket.
- Efter att inställningen har konfigurerats, om roboten inte kan ansluta automatiskt till WiFi när den slås på, anslut och koppla ur nätverkskortet och försök ansluta igen.
Automatisk Wifi-uppkoppling för Raspberry Pi
Proceduren för Raspberry Pi är densamma som Jetson Nano.
Automatisk Wifi-anslutningsinställning för Jetson TX1
Inställningen i Jetson TX1 är nästan densamma som i Jetson Nano med ett undantag. Jetson TX1 bör välja enheten för "wlan1" i "Device" i nätverksinställningarnas kontrollpanel.
INSTÄLLNING AV SYNKRONISERING AV MULTIAGENT
I projektet för att bilda multi-agent är inställningen för multi-agent tidssynkronisering ett avgörande steg. Under bildningsprocessen kommer många problem att orsakas på grund av den asynkrona systemtiden för varje robot. Multi-agent tidssynkronisering är uppdelad i två situationer, nämligen situationen där både master- och slavroboten är anslutna till nätverket och situationen där båda är bortkopplade från nätverket.
Lyckad master/slav nätverksanslutning
Efter att multiagentkommunikationen har konfigurerats, om master- och slavmaskinerna framgångsrikt kan ansluta till nätverket, kommer de automatiskt att synkronisera nätverkstiden. I detta fall krävs inga ytterligare åtgärder för att uppnå tidssynkronisering.
Felsökning av nätverksavbrott
Efter att multi-agentkommunikationen har konfigurerats, om master- och slavenheterna inte lyckas ansluta till nätverket, är det nödvändigt att manuellt synkronisera tiden. Vi kommer att använda datumkommandot för att slutföra tidsinställningen.
Installera först terminatorverktyget. Från terminatorverktyget, använd fönsterdelningsverktyget för att placera styrterminalerna för master och slav i samma terminalfönster (högerklicka för att ställa in ett delat fönster och logga in på master- och slavmaskinerna med ssh i olika fönster) .
- sudo apt-get install terminator # Ladda ner terminator för att dela terminalfönstret
Klicka på knappen längst upp till vänster, välj alternativet [Sänd till alla]/[Sänd alla] och ange följande kommando. Använd sedan terminatorverktyget för att ställa in samma tid för master och slav.
- sudo date -s “2022-01-30 15:15:00” # Manuell tidsinställning
MULTIAGENT ROS-PAKET
ROS-paketintroduktion
Ställ in slavnamn
I funktionspaketet wheeltec_multi är det nödvändigt att ställa in ett unikt namn för varje slavrobot för att undvika fel. Till exempelample, nr 1 för slav1 och nr 2 för slav2, etc. Syftet med att sätta olika namn är att gruppera löpande noder och särskilja dem med olika namnrymder. Till exempelample, radarämnet för slav 1 är/slav1/skanning, och LiDAR-noden för slav 1 är/slav1/laser.
Ställ in slavkoordinater
Wheeltec_multi-paketet kan implementera anpassade formationer. När olika formationer krävs, ändra bara de önskade koordinaterna för slavrobotarna. Slave_x och slave_y är x- och y-koordinaterna för slaven med mastern som den ursprungliga referenspunkten. Framsidan av mastern är den positiva riktningen för x-koordinaten, och den vänstra sidan är den positiva riktningen för y-koordinaten. Efter att inställningen är klar kommer en TF-koordinatslav1 att utfärdas som den förväntade koordinaten för slaven. Om det finns en master och två slavar kan följande formation ställas in:
- Horisontell formation: Du kan ställa in koordinaterna för slaven till vänster till slave_x:0, slave_y: 0.8, och koordinaterna för slaven till höger till slave_x:0, slave_y:-0.8.
- Kolumnbildning: Koordinaterna för en slav kan sättas till: slave_x:-0.8, slave_y:0, och koordinaterna för den andra slaven kan sättas till: slave_x:-1.8, slave_y:0.
- Triangulär formation: Koordinaterna för en slav kan sättas till: slave_x:-0.8, slave_y: 0.8, och koordinaterna för den andra slaven kan sättas till: slave_x:-0.8, slave_y:-0.8.
Andra formationer kan anpassas efter behov.
Notera:
- Det rekommenderade avståndet mellan de två robotarna är satt till 0.8, och det rekommenderas att inte vara lägre än 0.6. Avståndet mellan slavarna och mastern rekommenderas att ställas in under 2.0. Ju längre bort den är från mastern, desto högre är den linjära hastigheten för slaven när mastern svänger. På grund av begränsningen av maxhastigheten kommer slavens hastighet att avvika om den inte uppfyller kraven. Robotformationen kommer att bli kaotisk.
Initiering av slavpositionen
- Slavens initiala position är som standard på de förväntade koordinaterna. Innan du kör programmet, placera bara slavroboten nära dess förväntade koordinater för att slutföra initieringen. Denna funktion implementeras av noden pose_setter i filen som heter turn_on_wheeltec_robot.launch i wheeltec_multi-paketet, som visas i figur 4-1-3.
Om användaren vill anpassa slavens initiala position behöver han eller hon bara ställa in slave_x- och slave_y-värdena som visas i figur 4-1-4 i wheeltec_slave.launch. Värdena slave_x och slave_y kommer att skickas till turn_on_wheeltec_robot.launch och tilldelas noden pose_setter. Placera bara roboten i en anpassad position innan du kör programmet.
Positionskonfiguration
I en multi-agent formation är det första problemet som ska lösas placeringen av mastern och slaven. Befälhavaren kommer att konstruera en 2D-karta först. När du har skapat och sparat kartan, kör 2D-navigeringspaketet och använd den adaptiva Monte Carlo-positioneringsalgoritmen (amcl-positionering) i 2D-navigeringspaketet för att konfigurera positioneringen av mastern. Eftersom mastern och slavarna är i samma nätverk och delar samma nodhanterare har mastern lanserat kartan från 2D-navigeringspaketet, alla slavar kan använda samma karta under samma nodhanterare. Därför behöver slaven inte skapa en karta. I wheeltec_slave.launch, kör Monte Carlo-positionering (amcl-positionering), slavarna kan konfigurera sina positioner genom att använda kartan skapad av befälhavaren.
Hur man skapar bildning och upprätthåller bildning
I processen med formationsrörelse kan masterrörelsen styras av Rviz, tangentbord, fjärrkontroll och andra metoder. Slaven beräknar sin hastighet genom slave_tf_listener-noden för att kontrollera dess rörelse och uppnå målet med formationen. Slave_tf_listener-noden begränsar slavhastigheten för att undvika överdriven hastighet genom nodberäkningen, vilket kommer att orsaka en serie effekter. Det specifika värdet kan modifieras i wheeltec_slave.launch.
De relevanta parametrarna för bildningsalgoritmen är följande:
Information om undvikande av hinder
I en multi-agent-formation kan mastern använda noden move_base för att slutföra undvikande av hinder. Initieringen av slaven använder dock inte move_base-noden. Vid denna tidpunkt måste multi_avoidance-noden anropas i slavprogrammet. Noden för undvikande av hinder är aktiverad som standard i paketet. Vid behov kan undvikande ställas in på "falskt" för att inaktivera noden för undvikande av hinder.
Några relevanta parametrar för noden för undvikande av hinder visas i figuren nedan, där safe_distance är gränsen för säkra hinder för hinder och danger_distance är gränsen för farligt hinder för hinder. När hindret är inom säkert avstånd och riskavstånd, justerar slaven sin position för att undvika hindret. När hindret är inom fara kommer slaven att köra bort från hindret.
Operationsprocedur
Ange exekveringskommandot
Förberedelser innan du börjar bilda multiagens:
- Master och slav ansluter till samma nätverk och ställer in multiagentkommunikation korrekt
- Mästaren bygger en 2D-karta i förväg och sparar den
- Mastern placeras vid startpunkten för kartan och slaven placeras nära initialiseringspositionen (standardpositionen för slavformation)
- Efter att ha loggat in på Jetson Nano/Raspberry Pi på distans, utför tidssynkronisering.
sudo datum -s "2022-04-01 15:15:00"
- Steg 1: Öppna en 2D-karta från mastern.
roslaunch turn_on_wheeltec_robot navigation.launch
- Steg 2: Kör formationsprogrammet från alla slavar.
roslaunch wheeltec_multi wheeltec_slave.launch
- Steg 3: Öppna tangentbordskontrollnoden från mastern eller använd joysticken för att fjärrstyra masterrörelsen.
starta om wheeltec_robot_rc keyboard_teleop.launch
- Steg 4: (Valfritt) Observera robotens rörelser från Rviz.
rviz
Notera:
- Var noga med att slutföra tidssynkroniseringen innan du kör programmet.
- Vid styrning av befälhavaren för en multiagentformation bör vinkelhastigheten inte vara för hög. Den rekommenderade linjära hastigheten är 0.2m/s, vinkelhastighet under 0.3rad/s. När mastern gör en sväng, ju längre slaven är från mastern, desto högre linjär hastighet krävs. På grund av gränsen för den linjära hastigheten och vinkelhastigheten i paketet, när slavbilen inte kan nå den erforderliga hastigheten, blir formationen kaotisk. Sammantaget kan den alltför höga linjära hastigheten lätt skada roboten.
- När antalet slavar är fler än en, på grund av den begränsade inbyggda wifi-bandbredden hos ROS-värden, är det lätt att orsaka betydande förseningar och frånkoppling av multiagentkommunikationen. Att använda en router kan lösa detta problem bra.
- TF-trädet för multirobotformationen (2 slavar) är: rqt_tf_tree
- Nodförhållandediagrammet för multirobotformationen (2 slavar) är: rqt_graph
Dokument/resurser
![]() |
ROBOWORKS Robofleet MULTIAGENT-ALGORITMER [pdf] Användarmanual Robofleet Multi Agent Algoritmer, Robofleet, Multi Agent Algoritmer, Agent Algoritmer, Algoritmer |