ROBOWORKS Robofleet Orin Nano x3 ROS Robot
RIEPILOGO
Questo documento spiega principalmente l'utilizzo del pacchetto di funzioni di formazione multi-robot denominato wheeltec_multi.
Questo documento è diviso in quattro parti:
- La prima parte riguarda principalmente l'introduzione del metodo di formazione multi-robot;
- la seconda parte descrive principalmente le impostazioni di comunicazione multi-macchina ROS, inclusa la costruzione ROS della comunicazione multi-macchina e i problemi che possono essere incontrati nel processo di comunicazione ROS;
- la terza parte descrive principalmente le fasi operative della sincronizzazione temporale di più macchine;
- la quarta parte espone l'utilizzo specifico del pacchetto funzioni di formazione multimacchina.
Lo scopo di questo documento è un'introduzione al sistema robotico multi-agente e consente all'utente di avviare rapidamente il progetto di formazione multi-robot.
INTRODUZIONE AGLI ALGORITMI MULTI-AGENTE
Algoritmi di formazione multi-agente
Questo pacchetto ROS presenta un tipico problema di multi-agenti nel controllo collaborativo durante un'unità di formazione. Questo tutorial getta le basi per lo sviluppo futuro di questo argomento. L'algoritmo di controllo della formazione si riferisce a un algoritmo che controlla più agenti per formare una formazione specifica per eseguire un'attività. La collaborazione si riferisce alla cooperazione tra più agenti che utilizzano una determinata relazione di vincolo per completare un'attività. Prendi come esempio il viaggio in formazione multi-robotample, collaborazione significa che più robot formano insieme la formazione desiderata. La sua essenza è che viene soddisfatta una certa relazione matematica tra le posizioni di ciascun robot. I metodi di formazione sono principalmente suddivisi in controllo centralizzato della formazione e controllo distribuito della formazione. I metodi di controllo centralizzato della formazione includono principalmente il metodo della struttura virtuale, il metodo della teoria grafica e il metodo predittivo del modello. I metodi di controllo della formazione distribuita includono principalmente il metodo leader-seguace, il metodo basato sul comportamento e il metodo della struttura virtuale.
Questo pacchetto ROS applica il metodo leader-follower nel metodo di controllo della formazione distribuito per eseguire l'unità di formazione multi-robot. Un robot nella formazione è designato come leader e gli altri robot sono designati come schiavi per seguire il leader. L'algoritmo utilizza la traiettoria di movimento del robot principale per impostare le coordinate che devono essere tracciate dai robot successivi con determinate direzioni e velocità. Correggendo le deviazioni di posizione dalle coordinate di tracciamento, i follower alla fine ridurranno a zero la deviazione tra il follower e le coordinate di tracciamento previste per raggiungere gli obiettivi della guida in formazione. In questo modo l’algoritmo è relativamente meno complicato.
Algoritmi di evitamento degli ostacoli
Un algoritmo comune per evitare gli ostacoli è il metodo del campo del potenziale artificiale. Il movimento del robot in un ambiente fisico è considerato come un movimento in un campo di forza artificiale virtuale. L'ostacolo più vicino è identificato da LiDAR. L'ostacolo fornisce un campo di forza repulsivo per generare repulsione verso il robot e il punto target fornisce un campo gravitazionale per generare forza gravitazionale verso il robot. In questo modo controlla il movimento del robot sotto l'azione combinata di repulsione e attrazione.
Questo pacchetto ROS è un miglioramento basato sul metodo del campo del potenziale artificiale. Innanzitutto, l'algoritmo di formazione calcola la velocità lineare e angolare dello Slave follower. Quindi aumenta o diminuisce la velocità lineare e angolare in base ai requisiti per evitare l'ostacolo. Quando la distanza tra l'inseguitore Slave e l'ostacolo è più vicina, la forza di repulsione dell'ostacolo verso l'inseguitore Slave è maggiore. Nel frattempo il cambiamento della velocità lineare e le variazioni della velocità angolare sono maggiori. Quando l'ostacolo è più vicino alla parte anteriore dell'inseguitore Slave, la repulsione dell'ostacolo verso l'inseguitore Slave diventa maggiore (la repulsione frontale è la più grande e la repulsione laterale è la più piccola). Di conseguenza, le variazioni della velocità lineare e della velocità angolare sono maggiori. Attraverso il metodo del campo del potenziale artificiale, migliora una soluzione
quando un robot potrebbe smettere di rispondere davanti a un ostacolo. Questo ha lo scopo di evitare meglio gli ostacoli.
IMPOSTAZIONE DELLA COMUNICAZIONE MULTI-AGENTE
La comunicazione multi-agente è uno dei passaggi chiave per completare una formazione multi-robot. Quando le posizioni relative di più robot sono sconosciute, i robot devono condividere le informazioni reciproche attraverso la comunicazione per facilitare la creazione di connessioni. L'architettura distribuita ROS e le comunicazioni di rete sono molto potenti. Non è solo conveniente per la comunicazione tra processi, ma anche per la comunicazione tra diversi dispositivi. Attraverso la comunicazione di rete, tutti i nodi possono funzionare su qualsiasi computer. Le attività principali, come l'elaborazione dei dati, vengono completate dal lato host. Le macchine slave hanno il compito di ricevere i dati ambientali raccolti da vari sensori. L'host qui è il manager che esegue il nodo Master in ROS. L'attuale framework di comunicazione multi-agente prevede un gestore di nodi e un gestore di parametri per gestire le comunicazioni tra più robot.
I passaggi per impostare le comunicazioni multi-agente
Configura i controlli ROS nella stessa rete
Esistono 2 modi per impostare i controlli ROS Master/Slave nella stessa rete.
Opzione 1:
L'host principale crea un Wi-Fi locale eseguendo il gestore del nodo principale. Generalmente, uno dei robot designati come master crea questa rete Wi-Fi. Altri robot o macchine virtuali si uniscono a questa rete Wi-Fi come schiavi.
Opzioni 2:
La rete Wi-Fi locale è fornita da un router di terze parti come centro di trasmissione delle informazioni. Tutti i robot sono collegati allo stesso router. Il router può essere utilizzato anche senza connessione Internet. Seleziona uno dei robot come master ed esegui il gestore del nodo Master. Gli altri robot sono designati come slave ed eseguono il gestore del nodo master dal master.
La decisione su quale opzione scegliere dipende dai requisiti del progetto. Se il numero di robot che devono comunicare non è elevato, si consiglia l'Opzione 1 poiché consente di risparmiare sui costi ed è facile da configurare. Quando il numero di robot è elevato, si consiglia l'Opzione 2. Il vincolo sulla potenza di calcolo del controllo master ROS e la limitata larghezza di banda Wi-Fi integrata possono facilmente causare ritardi e interruzioni della rete. Un router può facilmente risolvere questi problemi.
Tieni presente che quando si esegue una comunicazione multi-agente, se la macchina virtuale viene utilizzata come slave ROS, la sua modalità di rete deve essere impostata su modalità bridge.
Configurare le variabili di ambiente Master/Slave
Dopo che tutti i master ROS si trovano tutti nella stessa rete, è necessario impostare le variabili di ambiente per la comunicazione multi-agente. Questa variabile d'ambiente è configurata nel file .bashrc file nella directory principale. Esegui il comando gedit ~/.bashrc per avviarlo. Tieni presente che sia il file .bashrc fileÈ necessario configurare i collegamenti del master e dello slave nella comunicazione multi-agente. Ciò che deve essere modificato sono gli indirizzi IP alla fine del file file. Le due righe di sono ROS_MASTER_URI e ROS_HOSTNAME, come mostrato nella Figura 2-1-4. ROS_MASTER_URI e ROS_HOSTNAME dell'host ROS sono entrambi IP locali. Il ROS_MASTER_URI nello slave ROS .bashrc file deve essere modificato nell'indirizzo IP dell'host mentre ROS_HOSTNAME rimane come indirizzo IP locale.
La comunicazione tra più macchine ROS non è vincolata dalla versione di rilascio di ROS. Nel processo di comunicazione tra più macchine, è necessario essere consapevoli di quanto segue:
- Il funzionamento del programma ROS slave dipende dal programma ROS master del dispositivo ROS master.
Il programma master ROS deve essere avviato innanzitutto sul dispositivo master prima di eseguire il programma slave sul dispositivo slave. - Gli indirizzi IP delle macchine master e slave nella comunicazione tra più macchine devono trovarsi nella stessa rete. Ciò significa che l'indirizzo IP e la maschera di sottorete si trovano nella stessa rete.
- ROS_HOSTNAME nella configurazione dell'ambiente file Non è consigliabile utilizzare .bashrc localhost. Si consiglia di utilizzare un indirizzo IP specifico.
- Nel caso in cui l'indirizzo IP dello slave non sia impostato correttamente, il dispositivo slave può comunque accedere al master ROS ma non può immettere informazioni di controllo.
- Se la macchina virtuale partecipa alla comunicazione multi-agente, la sua modalità di rete deve essere impostata su modalità bridge. Non è possibile selezionare l'IP statico per la connessione di rete.
- La comunicazione tra più macchine non può view oppure iscriversi ad argomenti con tipo di dati messaggio che non esistono localmente.
- Puoi utilizzare la demo della simulazione Little Turtle per verificare se la comunicazione tra i robot ha successo:
a. Scappa dal maestro
roscore #lancia i servizi ROS
rosrun Turtlesim Turtlesim_node #avvia l'interfaccia Turtlesim
b. Scappa dallo schiavo
rosrun Turtlesim Turtle_teleop_key #avvia il nodo di controllo da tastiera per Turtlesim
Se riesci a manipolare i movimenti della tartaruga dalla tastiera dello slave, significa che la comunicazione master/slave è stata stabilita con successo.
Connessione Wifi automatica in ROS
Le procedure seguenti spiegano come configurare il robot per connettersi automaticamente alla rete host o alla rete del router.
Configurazione automatica della connessione Wi-Fi per Jetson Nano
- Connetti Jetson Nano tramite lo strumento remoto VNC o direttamente allo schermo del computer. Fare clic sull'icona Wi-Fi nell'angolo in alto a destra, quindi fare clic su "Modifica connessioni...".
- Fare clic sul pulsante + in Connessioni di rete:
- Nella finestra "Scegli un tipo di connessione", fai clic sul menu a discesa e fai clic sul pulsante "Crea...":
- Nel Pannello di controllo, fai clic sull'opzione Wifi. Inserisci il nome Wi-Fi per connetterti nei campi "Nome connessione" e SSID. Seleziona "Client" nel menu a discesa "Modalità" e seleziona "wlan0" nel menu a discesa "Dispositivo".
- Nel Pannello di controllo, fai clic sull'opzione "Generale" e seleziona "Connetti automaticamente a questa rete...". Impostare la priorità di connessione su 1 nell'opzione "Priorità di connessione per l'attivazione automatica". Seleziona l'opzione "Tutti gli utenti possono connettersi a questa rete". Quando l'opzione è impostata su 0 in “Priorità di connessione per l'attivazione automatica” per un'altra rete Wi-Fi, significa che questa è la rete Wi-Fi preferita in passato.
- Fare clic sull'opzione "Sicurezza Wi-Fi" nel Pannello di controllo. Seleziona "WPA e WPA2 Personal" nel campo "Sicurezza". Quindi inserisci la password Wifi
Nota:
Se il robot non riesce a connettersi automaticamente alla rete Wi-Fi dopo l'avvio quando la priorità Wi-Fi è impostata su 0, potrebbe essere causato da un problema di segnale Wi-Fi debole. Per evitare questo problema, puoi scegliere di eliminare tutte le opzioni Wi-Fi che sono state connesse in passato. Conserva solo la rete Wi-Fi creata dall'host o dal router.
Fai clic sull'opzione "Impostazioni IPv4" nel pannello di controllo delle impostazioni di rete. Seleziona l'opzione "Manuale" nel campo "Metodo". Quindi fare clic su "Aggiungi", inserire l'indirizzo IP della macchina slave nel campo "Indirizzo". Compila "24" nel campo "Netmask". Compila il segmento di rete IP in “Gateway”. Cambiare le ultime tre cifre del segmento di rete IP in “1”. Lo scopo principale di questo passaggio è correggere l'indirizzo IP. Dopo aver completato questa operazione per la prima volta, l'indirizzo IP rimarrà invariato quando ci si connetterà successivamente allo stesso WIFI.
Dopo aver configurato tutte le impostazioni, fare clic su "Salva" per salvare le impostazioni. Una volta che il salvataggio è andato a buon fine, il robot si connetterà automaticamente alla rete dell'host o del router quando viene acceso.
Nota:
- L'indirizzo IP impostato qui deve essere lo stesso dell'indirizzo IP impostato nel file .bashrc file nella sezione 2.1.
- L'indirizzo IP del master e di ogni slave deve essere univoco.
- Gli indirizzi IP master e slave devono trovarsi nello stesso segmento di rete.
- È necessario attendere che l'host o il router invii il segnale WiFi prima che il robot slave possa essere acceso e connettersi automaticamente alla rete WiFi.
- Dopo aver configurato l'impostazione, se il robot non riesce a connettersi automaticamente al WiFi quando è acceso, collega e scollega la scheda di rete e riprova a connetterti.
Configurazione automatica della connessione Wi-Fi per Raspberry Pi
La procedura per Raspberry Pi è la stessa di Jetson Nano.
Configurazione automatica della connessione Wi-Fi per Jetson TX1
La configurazione in Jetson TX1 è quasi la stessa di Jetson Nano con l'eccezione che Jetson TX1 deve selezionare il dispositivo "wlan1" in "Dispositivo" nel pannello di controllo delle impostazioni di rete.
IMPOSTAZIONE DELLA SINCRONIZZAZIONE MULTI-AGENTE
Nel progetto di formazione multi-agente, l'impostazione della sincronizzazione temporale del multi-agente è un passaggio cruciale. Nel processo di formazione, verranno causati molti problemi a causa del tempo di sistema asincrono di ciascun robot. La sincronizzazione temporale multi-agente è divisa in due situazioni, ovvero la situazione in cui sia il robot master che quello slave sono connessi alla rete e la situazione in cui entrambi sono disconnessi dalla rete.
Connessione di rete master/slave riuscita
Dopo aver configurato la comunicazione multi-agente, se le macchine master e slave riescono a connettersi correttamente alla rete, sincronizzeranno automaticamente l'ora della rete. In questo caso non sono necessarie ulteriori azioni per ottenere la sincronizzazione dell'ora.
Risoluzione dei problemi di disconnessione della rete
Dopo aver configurato la comunicazione multi-agente, se i dispositivi master e slave non riescono a connettersi correttamente alla rete, è necessario sincronizzare manualmente l'ora. Utilizzeremo il comando date per completare l'impostazione dell'ora.
Innanzitutto, installa lo strumento terminatore. Dallo strumento terminatore, utilizzare lo strumento di suddivisione della finestra per posizionare i terminali di controllo del master e dello slave nella stessa finestra del terminale (fare clic con il pulsante destro del mouse per impostare una finestra divisa e accedere alle macchine master e slave tramite ssh in finestre diverse) .
sudo apt-get install terminator # Scarica terminator per dividere la finestra del terminale
Fare clic sul pulsante in alto a sinistra, selezionare l'opzione [Trasmetti a tutti]/[Trasmetti a tutti], inserisci il seguente comando. Quindi utilizzare lo strumento terminatore per impostare la stessa ora per master e slave.
sudo date -s “2022-01-30 15:15:00” # Impostazione manuale dell'ora
PACCHETTO ROS MULTI-AGENTE
Introduzione al pacchetto ROS
Imposta il nome dello schiavo
Nel pacchetto wheeltec_multi function, è necessario impostare un nome univoco per ciascun robot slave per evitare errori. Per esample, N. 1 per slave1 e N. 2 per slave2 ecc.
Lo scopo di impostare nomi diversi è raggruppare i nodi in esecuzione e distinguerli in base a spazi dei nomi diversi. Per esample, l'argomento radar dello slave 1 è: /slave1/scan e il nodo LiDAR dello slave 1 è: /slave1/laser.
Imposta le coordinate dello slave
Il pacchetto wheeltec_multi può implementare formazioni personalizzate. Quando sono necessarie formazioni diverse, basta modificare le coordinate desiderate dei robot schiavi. Slave_x e slave_y sono le coordinate xey dello slave con il master come punto di riferimento originale. La parte anteriore del master è la direzione positiva della coordinata x, mentre il lato sinistro è la direzione positiva della coordinata y. Una volta completata l'impostazione, verrà emessa una coordinata TF slave1 come coordinata prevista dello slave.
Se sono presenti un master e due slave è possibile impostare la seguente formazione:
- Formazione orizzontale: è possibile impostare le coordinate dello slave a sinistra su: slave_x:0, slave_y: 0.8 e le coordinate dello slave a destra su: slave_x:0, slave_y:-0.8.
- Formazione delle colonne: le coordinate di uno slave possono essere impostate su: slave_x:-0.8, slave_y:0 e le coordinate dell'altro slave possono essere impostate su: slave_x:-1.8, slave_y:0.
- Formazione triangolare: le coordinate di uno slave possono essere impostate su: slave_x:-0.8, slave_y: 0.8 e le coordinate dell'altro slave possono essere impostate su: slave_x:-0.8, slave_y:-0.8.
Altre formazioni possono essere personalizzate secondo necessità.
Nota
La distanza consigliata tra i due robot è impostata su 0.8 e si consiglia di non essere inferiore a 0.6. Si consiglia di impostare la distanza tra gli slave e il master al di sotto di 2.0. Più è lontano dal master, maggiore è la velocità lineare dello slave quando il master gira. A causa della limitazione della velocità massima, la velocità dello slave varierà se non soddisfa i requisiti. La formazione dei robot diventerà caotica.
Inizializzazione della posizione slave
Per impostazione predefinita, la posizione iniziale dello slave corrisponde alle coordinate previste. Prima di eseguire il programma, è sufficiente posizionare il robot slave vicino alle coordinate previste per completare l'inizializzazione.
Questa funzione è implementata dal nodo pose_setter nel file file denominato turn_on_wheeltec_robot.launch nel pacchetto wheeltec_multi, come mostrato nella Figura 4-1-3.
Se l'utente desidera personalizzare la posizione iniziale dello slave, deve solo impostare i valori slave_x e slave_y come mostrato nella Figura 4-1-4 in wheeltec_slave.launch. I valori slave_x e slave_y verranno passati a turn_on_wheeltec_robot.launch e assegnati al nodo pose_setter. Basta posizionare il robot in una posizione personalizzata prima di eseguire il programma.
Configurazione della posizione
In una formazione multi-agente il primo problema da risolvere è il posizionamento del master e dello slave. Il master costruirà prima una mappa 2D. Dopo aver creato e salvato la mappa, eseguire il pacchetto di navigazione 2D e utilizzare l'algoritmo di posizionamento adattivo Monte Carlo (posizionamento amcl) nel pacchetto di navigazione 2D per configurare il posizionamento del master.
Poiché il master e gli slave sono nella stessa rete e condividono lo stesso gestore dei nodi, il master ha lanciato la mappa dal pacchetto di navigazione 2D, tutti gli slave possono utilizzare la stessa mappa sotto lo stesso gestore dei nodi. Pertanto, lo slave non ha bisogno di creare una mappa. In wheeltec_slave.launch, esegui il posizionamento Monte Carlo (posizionamento amcl), gli slave possono configurare le loro posizioni utilizzando la mappa creata dal master.
Come creare formazione e mantenere la formazione
Nel processo di movimento della formazione, il movimento principale può essere controllato da Rviz, tastiera, telecomando e altri metodi. Lo slave calcola la sua velocità attraverso il nodo slave_tf_listener per controllarne il movimento e raggiungere l'obiettivo della formazione.
Il nodo slave_tf_listener limita la velocità dello slave per evitare una velocità eccessiva da parte del calcolo del nodo, che causerà una serie di impatti. Il valore specifico può essere modificato in wheeltec_slave.launch.
I parametri rilevanti dell’algoritmo di formazione sono i seguenti:
Elusione degli ostacoli in formazione
In una formazione multi-agente, il master può utilizzare il nodo move_base per completare l'evitamento degli ostacoli. Tuttavia, l'inizializzazione dello slave non utilizza il nodo move_base. A questo punto è necessario richiamare il nodo multi_avoidance nel programma slave. Il nodo evitamento ostacoli è abilitato di default nel pacchetto. Se necessario, l'evitamento può essere impostato su "falso" per disabilitare il nodo di evitamento degli ostacoli.
Alcuni parametri rilevanti del nodo evitamento ostacoli sono mostrati nella figura seguente, dove safe_distance è il limite della distanza di sicurezza dall'ostacolo e Danger_distance è il limite della distanza pericolosa dall'ostacolo. Quando l'ostacolo si trova all'interno della distanza_sicura e della distanza_pericolosa, lo slave regola la sua posizione per evitare l'ostacolo. Quando l'ostacolo si trova entro la distanza di pericolo, lo schiavo si allontanerà dall'ostacolo.
Procedura di funzionamento
Immettere il comando di esecuzione
Preparativi prima di iniziare la formazione multi-agente:
- Il master e lo slave si connettono alla stessa rete e configurano correttamente la comunicazione multi-agente
- Il master crea in anticipo una mappa 2D e la salva
- Il master è posizionato al punto iniziale della mappa e lo slave è posizionato vicino alla posizione di inizializzazione (la posizione predefinita di formazione dello slave)
- Dopo aver effettuato l'accesso a Jetson Nano/Raspberry Pi in remoto, eseguire la sincronizzazione dell'ora.
sudo date -s “2022-04-01 15:15:00”
Passo 1: apre la mappa 2D dal master.
roslaunch turn_on_wheeltec_robot Navigation.launch
Fase 2: Esegui il programma di formazione di tutti gli schiavi.
roslaunch wheeltec_multi wheeltec_slave.launch
Fase 3: Apri il nodo di controllo della tastiera dal master o usa il joystick per controllare a distanza il movimento del master.
roslaunch wheeltec_robot_rc tastiera_teleop.launch
Fase 4: (Opzionale) Osserva i movimenti del robot da Rviz.
rviz
Nota
- Assicurarsi di completare l'operazione di sincronizzazione dell'ora prima di eseguire il programma.
- Quando si controlla il master di una formazione multi-agente, la velocità angolare non dovrebbe essere troppo elevata. La velocità lineare consigliata è 0.2 m/s, la velocità angolare è inferiore a 0.3 rad/s. Quando il master effettua una svolta, quanto più lontano è lo slave dal master, tanto maggiore è la velocità lineare richiesta. A causa del limite di velocità lineare e angolare nel pacco, quando il vagone schiavo non riesce a raggiungere la velocità richiesta, la formazione sarà caotica. Nel complesso, l’eccessiva velocità lineare può facilmente danneggiare il robot.
- Quando il numero di slave è più di uno, a causa della limitata larghezza di banda Wi-Fi integrata dell'host ROS, è facile causare ritardi significativi e disconnessione della comunicazione multi-agente. L'uso di un router può risolvere bene questo problema.
- L'albero TF della formazione multi-robot (2 slave) è: rqt_tf_tree
- Il diagramma delle relazioni tra i nodi della formazione multi-robot (2 slave) è: rqt_graph
Documenti / Risorse
![]() |
ROBOWORKS Robofleet Orin Nano x3 ROS Robot [pdf] Manuale d'uso 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 |