ROBOWORKS Robofleet MULTI-AGENT ALGORITHMY
Specifikace
- Název produktu: ROBOWORKS
- Verze: 20240501
- Připravili: Wayne Liu & Janette Lin
- Datum: 1 Květen 2024
Informace o produktu
ROBOWORKS je multiagentní systém, který umožňuje implementaci různých algoritmů pro koordinaci a komunikaci robotů.
Nejčastější dotazy
Otázka: Co mám dělat, když se robot nemůže automaticky připojit k Wifi?
Odpověď: Pokud se robot automaticky nepřipojí, zkuste odpojit a znovu zapojit síťovou kartu a pokuste se znovu připojit.
SHRNUTÍ
Tento dokument vysvětluje především použití balíčku funkcí pro vytváření více robotů s názvem wheeltec_multi.
Tento dokument je rozdělen do čtyř částí:
- První část je především o představení metody formování více robotů;
- druhá část popisuje především nastavení ROS multi-machine komunikace, včetně konstrukce ROS multi-machine komunikace a problémy, které mohou nastat v procesu ROS komunikace;
- třetí část popisuje především operační kroky vícestrojové časové synchronizace;
- čtvrtá část objasňuje konkrétní použití funkčního balíčku vícestrojového formování.
Účelem tohoto dokumentu je úvod do multiagentních robotických systémů a umožňuje uživatelům rychle zahájit projekt formování více robotů.
ÚVOD DO MULTIAGENTNÍCH ALGORITHŮ
Algoritmy tvorby více agentů
Tento balíček ROS představuje typický problém multiagentů v kolaborativním řízení během formačního řízení. Tento tutoriál pokládá základ pro budoucí vývoj na toto téma. Algoritmus řízení formace odkazuje na algoritmus, který řídí více agentů za účelem vytvoření specifické formace k provedení úkolu. Spolupráce se týká spolupráce mezi více agenty pomocí určitého omezujícího vztahu k dokončení úkolu. Berte pohon formace více robotů jako exampSpolupráce znamená, že více robotů společně tvoří požadovanou formaci. Jeho podstatou je určitý matematický vztah, který je splněn mezi pozicemi každého robota. Formační metody se dělí především na centralizované řízení formace a distribuované řízení formace. Mezi centralizované metody řízení formace patří především metoda virtuální struktury, metoda grafické teorie a metoda predikce modelu. Metody řízení distribuované formace zahrnují především metodu vůdce-následovník, metodu založenou na chování a metodu virtuální struktury.
Tento balíček ROS používá metodu vůdce-následovník v metodě řízení distribuované formace k provedení pohonu formace více robotů. Jeden robot ve formaci je určen jako vůdce a ostatní roboti jsou označeni jako otroci, aby následovali vůdce. Algoritmus využívá trajektorii pohybu vedoucího robota k nastavení souřadnic, které mají sledovat následující roboti s určitým směrem a rychlostí. Korekcí polohových odchylek od sledovacích souřadnic příslušníci případně sníží odchylku mezi sledovačem a očekávanými sledovacími souřadnicemi na nulu, aby bylo dosaženo cílů formace. Tímto způsobem je algoritmus relativně méně komplikovaný.
Algoritmy vyhýbání se překážkám
Běžným algoritmem vyhýbání se překážkám je metoda pole umělého potenciálu. Pohyb robota ve fyzickém prostředí je považován za pohyb ve virtuálním poli umělé síly. Nejbližší překážka je identifikována pomocí LiDAR. Překážka poskytuje odpudivé silové pole pro generování odpuzování robota a cílový bod poskytuje gravitační pole pro generování gravitační síly na robota. Tímto způsobem řídí pohyb robota při kombinovaném působení odpuzování a přitahování.
Tento balíček ROS je vylepšením založeným na metodě pole umělého potenciálu. Za prvé, algoritmus formování vypočítá lineární a úhlovou rychlost podřízeného sledovače. Poté zvyšuje nebo snižuje lineární a úhlovou rychlost podle požadavků na vyhýbání se překážkám. Když je vzdálenost mezi Slave následovníkem a překážkou menší, odpudivá síla překážky vůči Slave následovníkovi je větší. Mezitím jsou změny lineární rychlosti a úhlové rychlosti větší. Když je překážka blíže přední straně následovníka Slave, odpuzování překážky vůči následovníkovi Slave se zvětší (přední odraz je největší a boční je nejmenší). V důsledku toho jsou variace lineární rychlosti a úhlové rychlosti větší. Prostřednictvím metody pole umělého potenciálu zlepšuje řešení, kdy by robot mohl přestat reagovat před překážkou. To slouží k lepšímu vyhýbání se překážkám.
NASTAVENÍ KOMUNIKACE MULTIAGENT
Komunikace mezi více agenty je jedním z klíčových kroků k dokončení formace více robotů. Pokud nejsou známy relativní polohy více robotů, musí si roboti navzájem sdílet informace prostřednictvím komunikace, aby se usnadnilo navázání spojení. Architektura distribuovaná ROS a síťová komunikace jsou velmi výkonné. Je vhodný nejen pro meziprocesovou komunikaci, ale také pro komunikaci mezi různými zařízeními. Prostřednictvím síťové komunikace mohou všechny uzly běžet na jakémkoli počítači. Hlavní úkoly, jako je zpracování dat, jsou dokončeny na straně hostitele. Podřízené stroje jsou zodpovědné za příjem environmentálních dat shromážděných různými senzory. Zde je hostitelem manažer, který spouští hlavní uzel v ROS. Současný komunikační rámec pro více agentů je prostřednictvím správce uzlů a správce parametrů, který zajišťuje komunikaci mezi více roboty.
Kroky k nastavení multiagentní komunikace
- Nastavte ovládací prvky ROS ve stejné síti
- Existují 2 způsoby, jak nastavit Master/Slave ROS Controls ve stejné síti.
Možnost 1:
Hlavní hostitel vytvoří místní wifi spuštěním správce uzlů Master. Obecně platí, že tuto wifi síť vytváří jeden z robotů, který je označen jako hlavní. Ostatní roboti nebo virtuální stroje se k této wifi síti připojují jako slave.
Možnosti 2:
Lokální wifi síť je poskytována routerem třetí strany jako informačním přenosovým centrem. Všichni roboti jsou připojeni ke stejnému routeru. Router lze používat i bez připojení k internetu. Vyberte jednoho z robotů jako hlavního a spusťte správce uzlů Master. Ostatní roboti jsou označeni jako slave a spouštějí správce hlavního uzlu z hlavního.
Rozhodnutí, kterou možnost zvolit, závisí na požadavcích vašeho projektu. Pokud počet robotů, které potřebují komunikovat, není velký, doporučuje se varianta 1, protože šetří náklady a snadno se nastavuje. Pokud je počet robotů velký, doporučuje se možnost 2. Omezení výpočetního výkonu hlavního řízení ROS a omezená šířka pásma Wi-Fi na desce mohou snadno způsobit zpoždění a narušení sítě. Router může tyto problémy snadno vyřešit. Vezměte prosím na vědomí, že při provádění multi-agentní komunikace, pokud je virtuální počítač používán jako slave ROS, jeho síťový režim musí být nastaven na režim mostu.
Konfigurace proměnných prostředí Master/Slave
Poté, co jsou všechny mastery ROS ve stejné síti, je třeba nastavit proměnné prostředí pro multiagentní komunikaci. Tato proměnná prostředí se konfiguruje v souboru .bashrc v hlavním adresáři. Spusťte příkaz gedit ~/.bashrc. Vezměte prosím na vědomí, že v multiagentní komunikaci je třeba nakonfigurovat soubory .bashrc hlavního i podřízeného zařízení. Co je třeba změnit, jsou IP adresy na konci souboru. Dva řádky jsou ROS_MASTER_URI a ROS_HOSTNAME, jak je znázorněno na obrázku 2-1-4. ROS_MASTER_URI a ROS_HOSTNAME hostitele ROS jsou obě lokální IP adresy. ROS_MASTER_URI v souboru .bashrc slave ROS je třeba změnit na IP adresu hostitele, zatímco ROS_HOSTNAME zůstane jako místní IP adresa.
ROS multi-machine komunikace není omezena verzí ROS. V procesu komunikace mezi více stroji je třeba si uvědomit následující:
- Činnost podřízeného programu ROS závisí na hlavním programu ROS hlavního zařízení ROS. Před spuštěním podřízeného programu na podřízeném zařízení se musí nejprve spustit hlavní program ROS na hlavním zařízení.
- IP adresy hlavních a podřízených strojů v komunikaci mezi více stroji musí být ve stejné síti. To znamená, že IP adresa a maska podsítě jsou ve stejné síti.
- ROS_HOSTNAME v konfiguračním souboru prostředí .bashrc se nedoporučuje používat localhost. Doporučuje se použít konkrétní IP adresu.
- V případě, že není podřízená IP adresa správně nastavena, podřízené zařízení má stále přístup k ROS masteru, ale nemůže zadávat řídicí informace.
- Pokud se virtuální počítač účastní multiagentní komunikace, jeho síťový režim musí být nastaven na režim mostu. Pro síťové připojení nelze vybrat statickou IP.
- Vícestrojová komunikace nemůže view nebo se přihlaste k odběru témat datového typu zpráv, která lokálně neexistují.
- Pro ověření, zda je komunikace mezi roboty úspěšná, můžete použít demo simulace Little Turtle:
- a. Uteč od mistra
- znovu skóre #spustit služby ROS
- rostrum želvy turtlesim_node #spustit rozhraní želv
- b. Uteč před otrokem
- znovu spusťte želvy turtle_teleop_key #spusťte ovládací uzel klávesnice pro želvy
- a. Uteč od mistra
Pokud můžete ovládat pohyby želvy z klávesnice na podřízeném zařízení, znamená to, že komunikace master/slave byla úspěšně navázána.
Automatické Wifi připojení v ROS
Níže uvedené postupy vysvětlují, jak nakonfigurovat robota tak, aby se automaticky připojoval k hostitelské síti nebo síti routeru.
Automatické nastavení Wifi připojení pro Jetson Nano
- Připojte Jetson Nano pomocí vzdáleného nástroje VNC nebo přímo k obrazovce počítače. Klikněte na ikonu wifi v pravém horním rohu a poté klikněte na „Upravit připojení...“.
- Klikněte na tlačítko + v části Síťová připojení:
- V okně „Vyberte typ připojení“ klikněte na rozevírací nabídku a klikněte na tlačítko „Vytvořit…“:
- V Ovládacích panelech klikněte na možnost Wifi. Do polí „Connection Name“ a SSID zadejte název Wifi pro připojení. V rozbalovací nabídce „Režim“ vyberte „Klient“ a v rozbalovací nabídce „Zařízení“ vyberte „wlan0“.
- V Ovládacích panelech klikněte na možnost „Obecné“ a zaškrtněte „Automaticky připojit k této síti…“. Nastavte prioritu připojení na 1 ve volbě „Priorita připojení pro automatickou aktivaci“. Zaškrtněte volbu „K této síti se mohou připojit všichni uživatelé“. Pokud je tato možnost nastavena na 0 v „Priorita připojení pro automatickou aktivaci“ pro jiné wi-fi, znamená to, že toto je v minulosti preferovaná wi-fi síť.
- Klikněte na možnost „Zabezpečení Wi-Fi“ v Ovládacích panelech. Vyberte „WPA & WPA2 Personal“ v poli „Security“. Poté zadejte heslo Wifi do pole „Heslo“.
Poznámka: Pokud se robot nemůže automaticky připojit k wi-fi síti po spuštění, když je wifi priorita nastavena na 0, může to být způsobeno problémem se slabým wi-fi signálem. Abyste se tomuto problému vyhnuli, můžete se rozhodnout odstranit všechny možnosti wifi, které byly v minulosti připojeny. Udržujte pouze wifi síť vytvořenou hostitelem nebo routerem. Klikněte na možnost „Nastavení IPv4“ v ovládacím panelu nastavení sítě. Vyberte možnost „Ručně“ v poli „Metoda“. Poté klikněte na „Přidat“ a do pole „Adresa“ vyplňte IP adresu podřízeného stroje. Vyplňte „24“ v poli „Maska sítě“. Vyplňte segment IP sítě v „Brána“. Změňte poslední tři číslice segmentu sítě IP na „1“. Hlavním účelem tohoto kroku je opravit IP adresu. Po prvním dokončení zůstane IP adresa při následném připojení ke stejné WIFI nezměněna.
Po nakonfigurování všech nastavení klikněte na „uložit“ pro uložení nastavení. Po úspěšném uložení se robot po zapnutí automaticky připojí k síti hostitele nebo routeru.
Poznámka:
- Zde nastavená IP adresa musí být stejná jako IP adresa nastavená v souboru .bashrc v sekci 2.1.
- IP adresa hlavního a každého podřízeného zařízení musí být jedinečná.
- IP adresy master a slave musí být ve stejném segmentu sítě.
- Než bude možné podřízeného robota zapnout a automaticky se připojit k síti WiFi, musíte počkat, až hostitel nebo router odešle signál WiFi.
- Pokud se po nakonfigurování nastavení robot nemůže automaticky připojit k WiFi, když je zapnutý, zapojte a odpojte síťovou kartu a zkuste se připojit znovu.
Automatické nastavení Wifi připojení pro Raspberry Pi
Postup pro Raspberry Pi je stejný jako u Jetson Nano.
Automatické nastavení Wifi připojení pro Jetson TX1
Nastavení v Jetson TX1 je téměř stejné jako v Jetson Nano s jednou výjimkou, Jetson TX1 by měl vybrat zařízení „wlan1“ v „Device“ v ovládacím panelu nastavení sítě.
NASTAVENÍ MULTI-AGENT SYNCHRONIZACE
V projektu multiagentní formace je nastavení synchronizace času s více agenty zásadním krokem. V procesu formování bude způsobeno mnoho problémů kvůli asynchronnímu systémovému času každého robota. Multiagentní časová synchronizace se dělí na dvě situace, a to na situaci, kdy jsou hlavní i podřízený robot připojeni k síti, a na situaci, kdy jsou oba od sítě odpojeni.
Úspěšné připojení k síti master/slave
Pokud se po nakonfigurování multiagentní komunikace mohou hlavní a podřízené stroje úspěšně připojit k síti, automaticky synchronizují síťový čas. V tomto případě nejsou nutné žádné další akce k dosažení časové synchronizace.
Odstraňování problémů s odpojením sítě
Pokud se po konfiguraci multiagentní komunikace nemohou master a slave zařízení úspěšně připojit k síti, je nutné ručně synchronizovat čas. K dokončení nastavení času použijeme příkaz datum.
Nejprve nainstalujte nástroj terminátor. Z nástroje terminátor použijte nástroj pro rozdělování oken k umístění řídicích terminálů hlavního a podřízeného do stejného okna terminálu (kliknutím pravým tlačítkem myši nastavte rozdělené okno a přihlaste se k hlavním a podřízeným strojům pomocí ssh v různých oknech) .
- sudo apt-get install terminator # Stáhněte si terminator pro rozdělení okna terminálu
Klikněte na tlačítko vlevo nahoře, vyberte možnost [Vysílat všem]/[Vysílat vše] a zadejte následující příkaz. Poté pomocí nástroje terminátor nastavte stejný čas pro master a slave.
- sudo date -s “2022-01-30 15:15:00” # Ruční nastavení času
BALENÍ MULTI-AGENT ROS
Představení balíčku ROS
Nastavte jméno otroka
V balíčku funkcí wheeltec_multi je nutné nastavit jedinečné jméno pro každého slave robota, aby se předešlo chybám. Napřample, č. 1 pro slave1 a č. 2 pro slave2 atd. Účelem nastavení různých jmen je seskupit běžící uzly a odlišit je různými jmennými prostory. Napřample, radarové téma slave 1 je/slave1/scan a uzel LiDAR slave 1 je/slave1/laser.
Nastavte slave souřadnice
Balíček wheeltec_multi může implementovat vlastní formace. Když jsou vyžadovány různé formace, stačí upravit požadované souřadnice otrokářských robotů. Slave_x a slave_y jsou souřadnice x a y slave s masterem jako původním referenčním bodem. Přední strana předlohy je kladný směr souřadnice x a levá strana je kladný směr souřadnice y. Po dokončení nastavení bude vydána TF souřadnice slave1 jako očekávaná souřadnice slave. Pokud existuje jeden hlavní a dva podřízené, lze nastavit následující formaci:
- Horizontální formace: Můžete nastavit souřadnice slave vlevo na slave_x:0, slave_y: 0.8 a souřadnice slave vpravo na slave_x:0, slave_y:-0.8.
- Vytvoření sloupce: Souřadnice jednoho slave lze nastavit na: slave_x:-0.8, slave_y:0 a souřadnice druhého slave lze nastavit na: slave_x:-1.8, slave_y:0.
- Trojúhelníková formace: Souřadnice jednoho slave lze nastavit na: slave_x:-0.8, slave_y: 0.8 a souřadnice druhého slave lze nastavit na: slave_x:-0.8, slave_y:-0.8.
Další formace lze upravit podle potřeby.
Poznámka:
- Doporučená vzdálenost mezi dvěma roboty je nastavena na 0.8 a nedoporučuje se být menší než 0.6. Vzdálenost mezi slave a masterem se doporučuje nastavit pod 2.0. Čím dále je od mastera, tím větší je lineární rychlost slave, když se master otáčí. V důsledku omezení maximální rychlosti se bude rychlost podřízeného zařízení odchylovat, pokud nebude splňovat požadavky. Robotická formace se stane chaotickou.
Inicializace pozice slave
- Výchozí poloha podřízeného zařízení je standardně na očekávaných souřadnicích. Před spuštěním programu stačí umístit podřízeného robota blízko jeho očekávaných souřadnic, aby se dokončila inicializace. Tato funkce je implementována uzlem pose_setter v souboru s názvem turn_on_wheeltec_robot.launch v balíčku wheeltec_multi, jak je znázorněno na obrázku 4-1-3.
Pokud chce uživatel upravit počáteční polohu slave, potřebuje pouze nastavit hodnoty slave_x a slave_y, jak je znázorněno na obrázku 4-1-4 v wheeltec_slave.launch. Hodnoty slave_x a slave_y budou předány turn_on_wheeltec_robot.launch a přiřazeny uzlu pose_setter. Před spuštěním programu stačí robota umístit do vlastní pozice.
Konfigurace pozice
V multiagentní formaci je prvním problémem, který je třeba vyřešit, umístění master a slave. Mistr nejprve vytvoří 2D mapu. Po vytvoření a uložení mapy spusťte balíček 2D navigace a použijte adaptivní algoritmus určování polohy Monte Carlo (polohování amcl) v balíčku 2D navigace ke konfiguraci určování polohy předlohy. Protože master a slave jsou ve stejné síti a sdílejí stejného správce uzlů, master spustil mapu z balíčku 2D navigace, všichni slave mohou používat stejnou mapu pod stejným správcem uzlů. Proto otrok nemusí vytvářet mapu. V wheeltec_slave.launch spusťte Monte Carlo positioning (amcl positioning), podřízení mohou konfigurovat své pozice pomocí mapy vytvořené masterem.
Jak vytvořit formaci a udržet formaci
V procesu pohybu formace může být hlavní pohyb ovládán pomocí Rviz, klávesnice, dálkového ovládání a dalších metod. Slave počítá svou rychlost prostřednictvím uzlu slave_tf_listener, aby řídil svůj pohyb a dosáhl cíle formace. Uzel slave_tf_listener omezuje rychlost slave, aby se při výpočtu uzlu vyhnul nadměrné rychlosti, která způsobí sérii dopadů. Konkrétní hodnotu lze upravit v wheeltec_slave.launch.
Relevantní parametry algoritmu tvorby jsou následující:
Informace o vyhýbání se překážkám
Ve formaci s více agenty může master použít uzel move_base k dokončení vyhýbání se překážkám. Inicializace podřízeného zařízení však nepoužívá uzel move_base. V tomto okamžiku je třeba v podřízeném programu zavolat uzel multi_avoidance. Uzel vyhýbání se překážkám je v balíčku standardně povolen. V případě potřeby lze vyhýbání nastavit na hodnotu „false“ a tím deaktivovat uzel vyhýbání se překážkám.
Některé relevantní parametry uzlu vyhýbání se překážkám jsou znázorněny na obrázku níže, kde safe_distance je limit bezpečné vzdálenosti od překážky a nebezpečná_vzdálenost je limit nebezpečné vzdálenosti od překážky. Když je překážka v bezpečné vzdálenosti a nebezpečné vzdálenosti, podřízený přizpůsobí svou polohu, aby se překážce vyhnul. Když je překážka v nebezpečí, otrok od překážky odjede.
Operační postup
Zadejte příkaz k provedení
Přípravy před zahájením tvorby multiagentu:
- Master a slave se připojí ke stejné síti a správně nastaví multiagentní komunikaci
- Mistr si předem sestaví 2D mapu a uloží ji
- Master je umístěn na počátečním bodě mapy a otrok je umístěn poblíž inicializační pozice (výchozí pozice formace otroka)
- Po vzdáleném přihlášení k Jetson Nano/Raspberry Pi proveďte synchronizaci času.
sudo date -s "2022-04-01 15:15:00"
- Krok 1: Otevřete 2D mapu z předlohy.
roslaunch turn_on_wheeltec_robot navigation.launch
- Krok 2: Spusťte formační program ze všech otroků.
roslaunch wheeltec_multi wheeltec_slave.launch
- Krok 3: Otevřete ovládací uzel klávesnice z hlavní jednotky nebo použijte joystick k dálkovému ovládání pohybu hlavní jednotky.
znovu spustit wheeltec_robot_rc keyboard_teleop.launch
- Krok 4: (Volitelné) Sledujte pohyby robota z Rviz.
rviz
Poznámka:
- Před spuštěním programu nezapomeňte dokončit operaci synchronizace času.
- Při ovládání master multiagentní formace by úhlová rychlost neměla být příliš vysoká. Doporučená lineární rychlost je 0.2 m/s, stupeň úhlové rychlosti pod 0.3 rad/s. Když master provádí zatáčku, čím dále je slave od mastera, tím vyšší je požadovaná lineární rychlost. Kvůli limitu lineární rychlosti a úhlové rychlosti v balíku, když otrokářský vůz nemůže dosáhnout požadované rychlosti, bude formace chaotická. Celkově může nadměrná lineární rychlost robota snadno poškodit.
- Je-li počet podřízených jednotek větší než jedna, je kvůli omezené šířce pásma Wi-Fi na desce hostitele ROS snadné způsobit značná zpoždění a odpojení multiagentní komunikace. Použití routeru může tento problém dobře vyřešit.
- Strom TF formace s více roboty (2 otroci) je: rqt_tf_tree
- Diagram vztahu uzlů multi-robotové formace (2 slave) je: rqt_graph
Dokumenty / zdroje
![]() |
ROBOWORKS Robofleet MULTI-AGENT ALGORITHMY [pdfUživatelská příručka Robofleet Multi Agent Algorithms, Robofleet, Multi Agent Algorithms, Agent Algorithms, Algorithms |