ROBOWORKS Robofleet Orin Nano x3 ROS Robot
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 multimachine komunikace, včetně konstrukce ROS multimachine komunikace a problémy, se kterými se lze v procesu ROS komunikace setkat;
- třetí část popisuje především operační kroky vícestrojové časové synchronizace;
- čtvrtá část objasňuje konkrétní použití balíčku funkcí pro vytváření více strojů.
Účelem tohoto dokumentu je úvod do multiagentního robotického systému a umožňuje uživateli 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, že mezi pozicemi každého robota je splněn určitý matematický vztah. 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í. Opravou odchylek polohy 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ů řízení 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 umělého potenciálního pole. Pohyb robota ve fyzickém prostředí je považován za pohyb ve virtuálním umělém silovém poli. Nejbližší překážka je identifikována pomocí LiDAR. Překážka vytváří odpudivé silové pole, které robotovi generuje odpuzování, 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. Potom zvyšuje nebo snižuje lineární a úhlovou rychlost podle požadavků na vyhýbání se překážce. Když je vzdálenost mezi podřízeným sledovačem a překážkou blíže, odpudivá síla překážky k podřízenému sledovači 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í. Distribuovaná architektura 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 hlavních uzlů. Obecně platí, že jeden z robotů, který je označen jako hlavní, vytváří tuto wifi síť. Ostatní roboti nebo virtuální stroje se k této wifi síti připojují jako otroci.
Možnosti 2:
Místní 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 ovládání ROS a omezená šířka pásma Wi-Fi na palubě 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í je nakonfigurována v souboru .bashrc file v hlavním adresáři. Spusťte příkaz gedit ~/.bashrc. Vezměte prosím na vědomí, že oba soubory .bashrc fileje třeba nakonfigurovat s master a slave v multiagentní komunikaci. Co je třeba změnit, jsou IP adresy na konci file. 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 ROS slave .bashrc file 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 multimachine komunikace 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 konfiguraci prostředí file .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
roscore #spuštění služeb ROS
rosrun turtlesim turtlesim_node #spustit rozhraní turtlesim
b. Uteč před otrokem
rosrun turtlesim turtle_teleop_key #launch uzel ovládání klávesnice pro želvu
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, 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é“. Když je tato možnost nastavena na 0 v „Priorita připojení pro automatickou aktivaci“ pro jiné sítě Wi-Fi, znamená to, že toto je v minulosti preferovaná síť Wi-Fi.
- Klikněte na možnost „Zabezpečení Wi-Fi“ v Ovládacích panelech. V poli „Zabezpečení“ vyberte „WPA & WPA2 Personal“. Poté zadejte heslo Wifi
Poznámka:
Pokud se robot nemůže automaticky připojit k síti wifi po spuštění, když je priorita wifi nastavena na 0, může to být způsobeno problémem se slabým signálem wifi. Chcete-li se tomuto problému vyhnout, 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ě. V poli "Metoda" vyberte možnost "Manual". Poté klikněte na „Přidat“, do pole „Adresa“ vyplňte IP adresu podřízeného stroje. Vyplňte „24“ do pole „Maska sítě“. V „Gateway“ vyplňte segment sítě IP. 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 file 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 konfiguraci 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, že 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 situaci, kdy jsou k síti připojeni jak hlavní, tak podřízený robot, a situaci, kdy jsou oba od sítě odpojeni.
Úspěšné připojení k síti master/slave
Po nakonfigurování multiagentní komunikace, pokud se master a slave stroje úspěšně připojí 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 nakonfigurování multiagentní komunikace nemohou nadřízená a podřízená 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], 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 master a dva slave, lze nastavit následující formaci:
- Horizontální formace: Souřadnice slave na levé straně můžete nastavit na: slave_x:0, slave_y: 0.8 a souřadnice slave napravo 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 file 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 polohy
V multiagentní formaci je prvním problémem, který je třeba vyřešit, umístění master a slave. Master 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 určování polohy Monte Carlo (polohování amcl), podřízené jednotky mohou nakonfigurovat 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 vyhnul nadměrné rychlosti při výpočtu uzlu, což způsobí sérii dopadů. Konkrétní hodnotu lze upravit v wheeltec_slave.launch.
Relevantní parametry algoritmu tvorby jsou následující:
Vyhýbání se překážkám ve formaci
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čné_vzdálenosti, 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.
roslaunch 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.
- Když je počet slave větší než jeden, kvůli omezené šířce pásma wifi na desce hostitele ROS je 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 Orin Nano x3 ROS Robot [pdfUživatelská příručka Orin Nano x3, Robofleet ROS Robot, Robofleet ROS, Robot, Robofleet Orin Nano x3 ROS Robot, Robofleet Orin Nano x3, Orin Nano x3 ROS Robot, Orin Nano x3 |