





























Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una panoramica dei concetti fondamentali di ros (robot operating system), un framework software per la robotica. Vengono illustrati i componenti chiave come nodi, topic, servizi e parametri, spiegando come interagiscono per consentire la comunicazione e il controllo dei robot. Il documento include anche comandi utili per la gestione dei nodi, dei topic e dei parametri in ros, fornendo esempi pratici per la pubblicazione di messaggi e l'esecuzione di servizi. Infine, vengono descritti concetti avanzati come la pianificazione della traiettoria e l'interazione con l'ambiente robotico, offrendo una guida completa per lo sviluppo di applicazioni robotiche complesse.
Tipologia: Appunti
1 / 37
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






























ROS (robot operating system) è un meta-operating system tramite il quale è possibile programmare alcuni tasks del robot (es. portare il robot da un punto A un punto B, interagire con un untente,…). Fornisce librerie e strumenti per aiutare gli sviluppatori di software a creare applicazioni robotiche. ROS si basa su un vero sistema operativo, ovvero UBUNTU. ROS è concesso in licenza con una licenza open source → ovvero che il codice scritto per un robot idealmente può andare bene su un qualsiasi altro robot, quindi il vantaggio principale è poter scrivere un codice ed utilizzarlo su tutte le piattaforme robotiche. È formato da tanti blocchi interconnessi tra loro ma che lavorano in maniera indipendente → questo permette di creare delle architetture software incrementabili a cui si possono aggiungere un po’ di blocchi per volta aumentando la capacità del robot. I robot basati su ROS li ritroviamo in tantissimi settori (aereo, marino, terreno, industriale, di servizio).
NODI : I nodi sono processi che eseguono calcoli/computazioni utilizzando utilizzando le librerie client ROS come roscpp e rospy. Sono organizzate in pacchetti. Quindi il nodo è un eseguibile che usa ROS per comunicare con altri nodi. Supponendo di avere un robot dotato di telecamera che deve riconoscere la presenza delle persone, si avrà:
Quando si programma un robot:
➢ NODI : i nodi sono unità computazionali individuali e indipendenti, quindi sono come programmi autonomi. Più nodi possono lavorare insieme per raggiungere un particolare task a un alto livello. ➢ MESSAGGI : Strutture di dati che facilitano questo tipo di comprensione tra i nodi. I tipi di messaggio possono essere una stringa semplice, un valore booleano o una struttura C personalizzata a seconda dell'applicazione. ➢ TOPIC : è l' etichetta attaccata alle informazioni inviate da un nodo ➢ ROS MASTER : ROS master fornisce un servizio look-up table per ogni componente registrato nel grafo computazionale. ROS master dispone di strumenti che consentono di vedere lo stato e le proprietà di ciascun nodo ➢ SERVIZI : I servizi ROS gestiscono la richiesta-risposta tramite chiamate di procedura remota ➢ SERVER DEI PARAMETRI : Il server dei parametri è simile a un magazzino di costanti che possono essere utilizzati da qualsiasi nodo o servizio nel grafo. I valori delle costanti possono anche essere modificati durante il runtime. Un nodo può leggere, scrivere, modificare ed eliminare i valori dei parametri dal server dei parametri. ESECIZIO 1 Assumendo di avere un robot con una telecamera, la telecamera gli permette di verificare se ci sono persone che stanno camminando nell’ambiente. Se ci sono persone lungo il percorso, il robot stima le performarce dell'andatura e le mostra sul tablet. Come sarà il grafo computazionale? Quanti nodi? Quanti topics? Una possibile soluzione -------------> ESERCIZIO 2 Assumendo di avere un robot con una telecamera, la telecamera permette al robot di trovare l’arredamento lungo il percorso (es. piante, sedie,...). Se è presente una sedia davanti al robot, il robot si ferma. Se l’ostacolo è una pianta, il robot cambia traiettoria. Come sarà il grafo computazionale? Quanti nodi e quanti topic? Servono dei servizi per raggiungere questo task?
Assumendo di avere un robot maggiordomo, quando lo chiedi, tale robot riempe un bicchiere con acqua e ti dà il bicchiere. Come sarà il grafo computazionale? Quanti nodi e quanti topic? Servono dei servizi per raggiungere questo task? ESERCIZIO 4 Assumendo di avere un robot con una telecamera, la telecamera permette al robot di vedere se ci sono delle persone che stanno camminando nell’ambiente. Se viene trovata una persona, il robot dice “ciao”. Come sarà il grafo computazionale? Quanti nodi e quanti topic? Servono dei servizi per raggiungere questo task? ESERCIZIO 5 Assumendo di avere un robot con un laser sulla base, il laser permette al robot di trovare gli ostacoli lungo il suo percorso. Considerando solo i muri, se il robot trova un muro deve ruotare di 90° e continuare a camminare. Come sarà il grafo computazionale? Quanti nodi e quanti topic? Servono dei servizi per raggiungere questo task? Unendo le due soluzioni:
Per navigare nelle cartelle utilizzando il Terminale, possiamo utilizzare i seguenti comandi
comando senza argomenti.
con questo comando al terminale torno in desktop)
ESERCIZIO : esegui il seguente task usando solo il terminal
Il software ROS è diviso in pacchetti che contengono vari tipi di programmi, immagini, dati e eventualmente tutorials. A livello software uno o + nodi sono gestiti da pacchetti. I pacchetti non contengono solo l’implementazione del nodo (e quindi il programma che deve eseguire il nodo), ma anche una serie di files, librerie organizzati al suo interno. Il PACKAGES per noi sarà una cartella, all’interno della quale c’è sicuramente il PACKAGE MANIFEST , ossia un file.xml in cui sono scritte tutte le specifiche del pacchetto (se si basa su c++, su python, ecc..). Ogni PACKAGES per l’esecuzione di un programma deve essere salvato in un workspace che in ROS prende il nome di CATKIN WORKSPACE. ➢ action : Questa cartella contiene i file delle azioni. ➢ config : Tutti i file di configurazione utilizzati in questo pacchetto ROS vengono conservati in questa cartella. Questa cartella viene creata dall'utente ed è pratica comune denominarla config per mantenere i file di configurazione al suo interno. ➢ include/package_name : Questa cartella è composta da intestazioni e librerie che dobbiamo utilizzare all'interno del pacchetto. ➢ launch : questa cartella conserva i file di avvio utilizzati per avviare uno o più nodi ROS. ➢ msg : questa cartella contiene definizioni di messaggi personalizzate. ➢ script : questa cartella conserva gli script Python eseguibili. ➢ src : questa cartella memorizza i codici sorgente C++. ➢ srv : questa cartella contiene le definizioni dei servizi (ad esempio il tipo di dati di risposta e richiesta). Presente se e solo se il pacchetto implementa un servizio ➢ CMakeLists.txt : Questo file contiene le direttive per compilare il pacchetto. ➢ package.xml : questo è il file manifesto del pacchetto di questo pacchetto.
GAZEBO = simulazione dell’ambiente virtuale 3D, visione ESTERNA del robot. Quindi Gazebo è un simultaore fisico che serve per simulare il mondo fisico. TIAGO ROBOT
Quando devo cambiare dei parametri o vedere delle caratteristiche del nodo vado nel formato XLM di ROSLaunch: Param : puoi cambiare i parametri Rosparam : per caricare un file che ha all’interno tutti i parametri
➢ rosnode : restituisce informazioni su come usare questo comando ➢ rosnode info /node_name : stampa informazioni su quel nodo ➢ rosnode kill /nome_name: termina il nodo ➢ rosnode kill - a oppure rosnode kill – all : termina tutti i nodi attivi (oppure per terminare l’esecuzione di un nodo si può digitare ctrl+c oppure chiudere il terminale ) ➢ rosnode list : permette di vedere la lista di tutti i nodi attivi COME INIZIARE UN NODO
➢ rosservice list : lista dei servizi attivi ➢ rosservice type /service_name : stampa il tipo di servizio ➢ rosservice type service_name | rossrv show : stampa il tipo di servizio e il file srv che definisce il servizio ➢ rossservice call /service_name “args” : chiama un servizio con i parametri richiesti (args) ➢ rosservice find /service_type : restituisce tutti i servizi relativi a quella tipologia di servizio che ci interessa ➢ rosservice uri /service_name : visualizza l’URI di un servizio (identifica l’indirizzp del nodo che offre un servizio) ESECUZIONE DI UN SERVIZIO (esempio con GRASP ) $ rosservice type /parallel_gripper_controller/grasp GRASP: si riferisce a un servizio che permette di chiudere le dita del gripper del robot finché non afferra qualcosa (poi blocca le dita con una fora sufficiente per tenere l’oggetto). Quindi è un servizio che fa parte del CONTROLLO DEL GRIPPER ( parallel_gripper_controller ).
Parametri= variabili accessibili e modificabili da tutti i nodi durante l’esecuzione (runtime) dei nodi stessi COMANDI PARAMETRI ➢ rosparam set /param_name valore : settare il valore del parametro (nome del parametro e accanto il valore che si vuole settare per questo parametro) ➢ rosparam get /param_name : visualizza il valore attuale del parametro. ➢ rosparam load file_name.formato namespace : carica i parametri da un file (in questo caso params.yaml) nel parameter server di ROS se dopo il file scrivo anche il namespace tutti i parametri vengono raggruppati sotto lo stesso nome ➢ rosparam dump file_name.formato namespace : salvare i parametri in un file ➢ rosparam delete /param_name : cancella il parametro ➢ rosparam list oppure rosparam get / : lista dei nomi dei parametri. Si può utilizzare anche UN’INTERFACCIA GRAFICA , che permette di selezionare i parametri e modificarli, utilizzando il comando: $ rosrun rqt_reconfigure rqt_reconfigure
il laser è un sensore che permette al robot di misurare le distanze dagli oggetti circostanti. In base alle informazioni ottenute dal laser, il robot sa quanto vicino/lontano è da questi oggetti e quindi può muoversi di conseguenza. COME LEGGERE I DATI DEL LASER
La mappa ha 2 formati: file.pgm (immagine della mappa) e file.yaml (contiene l’origine, la risoluzione e le caratteristiche della mappa)
Per selezionare un goal premo il tasto Publish Point e in basso a sx appaiono le coordinate del goal che hai selezionato.