Come si costruisce un robot ROS?
Affinché il sistema funzioni bene e per essere in grado di seguire ciò che il dispositivo farà in determinate situazioni, sono necessarie definizioni standard per ogni parte. In ROS, questi componenti sono nodi, servizi e argomenti. In breve, si crea un nodo per ogni bisogno principale. Ad esempio, il movimento è un nodo, la visione è un altro nodo e la pianificazione è un terzo nodo. I nodi contengono servizi in grado di inviare informazioni ad altri nodi e i servizi possono anche gestire richieste e risposte. Un argomento può trasmettere valori a molti altri nodi. Entrare in giro con questi termini e come dovresti usarli è la prima chiave per padroneggiare lo sviluppo di ROS2.
Emulare la navigazione con Turtlesim
Quando inizi a ROS, probabilmente comprerai un robot che cammina o rotola in casa tua. Per fare ciò, il robot deve avere una vista dell'area in cui sta navigando. Per fare ciò, puoi utilizzare un'applicazione simile a una mappa per testare il comportamento del tuo robot. I designer dietro il Turtlebot hanno escogitato un'applicazione, chiamata Turtlesim, che può farlo per te. Come per tutte le altre parti di ROS2, puoi avviare questi strumenti con un sottocomando dalla riga di comando. Quindi hai attività per diverse funzioni. La prima parte è iniziare la finestra in cui è possibile vedere la simulazione, e questo è chiamato nodo.
$ ros2 run Turtlesim Turtlesimnode
Apparirà una finestra con una tartaruga al centro. Per controllare la tartaruga con la tastiera, è necessario eseguire un secondo comando che rimane aperto e continuare a premere determinati tasti. Questo è un secondo nodo che comunica con il primo.
$ ROS2 RUN TURTLESIM TURTLEOPKEY
Ora puoi muovere la tartaruga e vedere come si muove. Puoi anche ottenere errori, come colpire il muro. Questi errori vengono visualizzati nel terminale in cui è in esecuzione la Turtlesimnode. Questo è l'uso più semplice del modulo di simulazione. Puoi anche eseguire forme date, viene fornita un quadrato e aggiungere più tartarughe. Per aggiungere più tartarughe, è possibile utilizzare il comando RQT.
Definire i servizi con RQT
Il programma RQT fornisce servizi per la simulazione. La Q sta per Qt, che è per la gestione dell'interfaccia. In questo esempio, genera una nuova tartaruga.
$ rqt
L'interfaccia RQT è un lungo elenco di servizi per la simulazione che stai eseguendo. Per creare una nuova tartaruga, scegli il menu a discesa "Spawn", dai alla tartaruga un nuovo nome e fai clic su "Chiama".«Vedrai immediatamente una nuova tartaruga accanto alla prima. Se fai clic sul menu a discesa "Spawn", vedrai anche un nuovo gruppo di voci relative alla tartaruga appena spazzata.
È inoltre possibile rimappare i comandi per eseguire la nuova tartaruga. Il comando di farlo è il seguente:
$ ros2 run Turtlesim Turtleteleopkey -Ros -Args -Remap Turtle1/Cmdvel: = Turtle2/Cmdvel
Imposta il nome "Turtle2", secondo la tua scelta precedente.
Visualizzazione avanzata con rviz
Per una visualizzazione più avanzata e 3D, usa rviz. Questo pacchetto simula tutti i nodi nel tuo design.
$ ros2 run rviz2 rviz2
Nell'interfaccia grafica, hai tre pannelli, con la vista al centro. È possibile creare ambienti utilizzando il pannello "display". Puoi aggiungere pareti, forze del vento e altre proprietà fisiche. Questo è anche dove aggiungi i tuoi robot.
Sii consapevole che prima di arrivare a questo punto, dovrai capire come utilizzare il formato URDF. Il formato Urdf definisce un robot, permettendo di impostare il corpo, le braccia, le gambe e, soprattutto, le zone di collisione. Le zone di collisione sono lì, quindi la simulazione può decidere se il robot si è scontrato.
Imparare a creare un robot in formato URDF è un grande progetto, quindi usa un codice open source esistente per sperimentare gli emulatori.
Simulare la fisica con il gazebo
In Gazebo, puoi simulare la fisica dell'ambiente che circonda il tuo robot. Gazebo è un programma di complemento che funziona bene insieme a rviz. Con Gazebo, puoi vedere cosa sta realmente accadendo; Con rviz, tieni traccia di ciò che il robot rileva. Quando il tuo software rileva un muro che non c'è, Gazebo mostrerà vuoto e Rviz mostrerà dove nel tuo codice è stato creato.
Conclusione
Simulare il robot e i suoi ambienti è necessario per trovare bug e fornire miglioramenti necessari nel funzionamento del robot prima di metterlo fuori in natura. Questo è un processo noioso che continua molto tempo dopo aver iniziato a testare il bot, sia in ambienti controllati che in vita reale. Con un'adeguata conoscenza dell'infrastruttura dei sistemi interni del tuo robot, puoi dare un senso a ciò che hai fatto bene e male. Impara rapidamente per apprezzare tutti i difetti che trovi, in quanto possono rendere il tuo sistema più robusto a lungo termine.