GUIDA A ROS COMPONENTI PRINCIPALI



Похожие документы
Mini-Guida (incompleta) a ROS (

Robot Operating System

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Capitolo 4 Pianificazione e Sviluppo di Web Part

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Manuale Utente MyFastPage

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Istruzioni per l uso della Guida. Icone utilizzate in questa Guida. Istruzioni per l uso della Guida. Software di backup LaCie Guida per l utente

MANUALE PARCELLA FACILE PLUS INDICE

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

DevC++ vers Manuale d uso

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Registratori di Cassa

Corso di Alfabetizzazione Informatica

ISTRUZIONI XCODE. Autore: Luca Florio (luca.florio<at>polimi.it)

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

GateManager. 1 Indice. tecnico@gate-manager.it

Corso basi di dati Installazione e gestione di PWS

Come usare P-touch Transfer Manager

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Manuale per la configurazione di AziendaSoft in rete

MODEM USB MDC525UP Guida Rapida LINUX

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

StartUp programmazione C++ con EVC4 1. SVILUPPO APPLICAZIONI VISUAL C++...2

Introduzione. Installare EMAS Logo Generator

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

ARCHIVIA PLUS - ARCHIFILE

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Manuale Utente. Add-On Flusso ACN ULSS 18 Rovigo

Manuale LiveBox WEB ADMIN.

Appunti di Informatica 1

Application Server per sviluppare applicazioni Java Enterprise

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

FPf per Windows 3.1. Guida all uso

Product Shipping Cost Guida d'installazione ed Utilizzo

1. Il Client Skype for Business

Tutorial KISSsoft: versione di prova e fasi iniziali

Mac Application Manager 1.3 (SOLO PER TIGER)

Manuale LiveBox WEB ADMIN.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at] .

Tecniche di progettazione e sviluppo di applicazioni mobile

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).

Licenza per sito Manuale dell amministratore

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Guida Rapida all uso del License Manager di ROCKEY4Smart (V )

progecad NLM Guida all uso Rel. 10.2

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

PRODUZIONE PAGELLE IN FORMATO PDF

Guida alla registrazione on-line di un DataLogger

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Manuale Utente. Gestione Richieste supporto Data Warehouse. Della Ragioneria Generale dello Stato. Versione 1.0. Roma, Ottobre 2015

ICARO Terminal Server per Aprile

Sistema GEFO. Guida all utilizzo Presentazione delle domande

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

Programma di configurazione di reti NetWare

Aprire, preparare un documento da utilizzare come documento principale per una stampa unione.

DURC Client 4 - Guida configurazione Firma Digitale. DURC Client 4.1.7

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Introduzione al Linguaggio C

registrare in modo sistematico i pericoli nell azienda e ottenere una panoramica dei pericoli

Eclipse - Nozioni Base

Lezione 10: Librerie e compilazione separata

Punto Print Il programma per stampare. Documentazione Tecnica

Come gestire le directory con R

Configurazione di Outlook Express

Cliens Redigo Versione Aggiornamento al manuale.

Installazione dell'adattatore di IBM SPSS Modeler Server

Dropbox. Quando qualcuno ci invita a condivide con noi una cartella, veniamo avvisati via mail.

Abilitazione e uso del protocollo EtherTalk

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Modello per la compilazione della scheda progetto SK_3.1.xls (da utilizzarsi per la presentazione di progetti di attività formative)

File Server Resource Manager (FSRM)

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

manuale utente per Viabizzuno online

VISUALFLEET Software Overview

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

Tale attività non è descritta in questa dispensa

Software di parcellazione per commercialisti Ver [10/09/2015] Manuale d uso [del 10/09/2015]

1.1 Installare un nuovo Client di Concept ed eseguire il primo avvio

SOMMARIO... 3 INTRODUZIONE...

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

GUIDA STUDENTI HOMEPAGE DEI CORSI ON-LINE

REGISTRO DELLE IMPRESE

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

PROTOCOLLO INFORMATICO. Soluzioni gestionali integrate per la Pubblica Amministrazione Architettura client/server

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

AMICO 2.1 INSTALLAZIONE 2 PRIMO AVVIO DI AMICO 2.1 6

PaperPort 11 comprende molte nuove e utili funzioni che consentono di gestire i documenti.

Транскрипт:

GUIDA A ROS Irene Maria Gironacci INTRODUZIONE COS'È ROS ROS è un sistema per il controllo di componenti robotici da PC. Un sistema ROS è costituito da un numero indipendente di nodi, ognuno dei quali comunica con gli altri nodi usando un modello di messaggistica basato su pubblicazione e iscrizione. Esempio: Arduino pubblica messaggi su un topic, un laptop si iscrive al topic, e un cellulare Android comanda i motori. Esempio: Abbiamo una telecamera su un robot e vogliamo vedere le immagini da un laptop. Viene creato un nodo CameraNode che si occupa della comunicazione con la telecamera, un nodo di ProcessingNode sul robot che si occupa di processare i dati dell'immagine, e un nodo DisplayNode sul laptop che si occupa di visualizare su un monitor il video. All' inizio tutti i nodi si iscrivono al master. I VANTAGGI DI ROS In ROS i nodi possono non risiedere sullo stesso sistema e non appartenere alla stessa architettura. ROS è flessibile e adattabile alle esigenze dell'utente. E' open source. COMPONENTI PRINCIPALI package: sono unità per organizzare il codice ROS. Contengono nodi eseguibili di ROS, librerie, datasets, file di configurazione e altro. Repository: è una collezione di packages che condividono un comune sistema VCS stack: è un insieme di packages che forniscono una funzione di alto livello (per es. una libreria) nodo: è un eseguibile che può pubblicare su un topic o iscriversi ad un topic topic: è un contenitore di messaggi pubblicati da uno o più nodi e a cui possono iscriversi altri nodi. messaggi: tipo di dato usato dai nodi per pubblicare informazioni nel topic servizi: sono messaggi di tipo client-server che si aspettano una risposta dopo un dato inviato CONCETTI GENERALI DI ROS ROS è strutturato intorno ad un nodo master. Il nodo master consente a tutti gli altri componenti software (i nodi) di comunicare fra loro. In questo modo non si deve necessariamente imporre di inviare dei dati sensoriali ad un computer all'indirizzo 127.0.0.1, ma si può semplicemente dire al nodo 1 di inviare un messaggio al nodo 2. Nell'esempio della telecamera, il nodo CameraNode appena riceve alcuni dati dalla telecamera li pubblicherà su un topic chiamato per esempio /image_data e il nodo ProcessingNode che il nodo DisplayNode si iscriveranno al topic /image_data per ricevere tali dati.

ROS_PACKAGE_PATH E' un ambiente di variabili che consente di aggiungere package ROS al proprio ambiente di lavoro. Per visualizzare la lista dei package ROS si ricorre al comando echo come nel Listato 1.1: in questo listato viene visualizzata una lista delle directory dove risiedono i package ROS separati da colonne (i due punti). Si possono aggiungere ulteriori directory inserendo una colonna (' : ' ) e di seguito un path aggiuntivo $ echo $ROS_PACKAGE_PATH $ echo $ROS_PACKAGE_PATH /home/style/groovy_workspace:/home/style/groovy_workspace/cv_bridge: /home/style/groovy_workspace/sandbox:/opt/ros/groovy/share:/opt/ros/groovy/stacks Listato 1.1 ROS_PACKAGE_PATH..continua 2. INSTALLAZIONE..continua 3...continua 4. STRUMENTI Per i vari esempi verrà usato il package uvc_camera, con un esempio di uso generico (font di colore nero e stile normale), specifico ( font di colore nero e stile corsivo) e l'output ottenuto (font di colore rosso e stile corsivo) Rospack Questo strumento consente di ottenere informazioni sui package. utilizzo. $ rospack find [package_name] Nel Listato 4.1 è mostrato un codice di

$rospack find uvc_camera /opt/ros/groovy/stacks/camera_umd/uvc_camera Listato 4.1 rospack Roscd Permette di cambiare directory (equivalente al comando cd nei sistemi operativi ubuntu), trovando i package ROS presenti all'interno delle directory elencate in ROS_PACKAGE_PATH. $ roscd [ locationname [/subdir] ] $roscd uvc_camera style@stylehp:/opt/ros/groovy/stacks/camera_umd/uvc_camera$ Listato 4.2 roscd E' possibile inoltre consultare un file di log di una directory ROS attraverso il comando roscd log, come mostrato nel Listato 4.3 $ roscd log $roscd log Pwd Visualizza il contenuto della cartella $ pwd Listato 4.3 roscd log $pwd /opt/ros/groovy/stacks/camera_umd/uvc_camera Listato 4.4 pwd creazione package: roscreate-pkg Tutti i package ROS sono costituiti dai seguenti file in genere: manifest.xml, CMakeList.txt, mainpage.dox, Makefile. Quando si utilizza il comando roscreate-pkg vengono generati questi file, insieme alle dipendenze specificate nel comando. Prima di tutto si va nella propria workspace (generalmente in ~/groovy_workspace/sandbox) attraverso il comando cd (Listato 4.1) o roscd (Listato 4.2) e successivamente si prosegue digitando il comando nel Listato 4.3. cd ~/groovy_workspace/sandbox roscd cd sandbox Listato 4.5 Listato 4.6 $ roscreate-pkg [package_name] [depend1] [depend2] [dependn] $roscreate-pkg package_test std_msgs uvc_camera $roscreate-pkg package_test_2 Created package directory /home/style/groovy_workspace/sandbox/package_test

Created package file /home/style/groovy_workspace/sandbox/package_test/makefile Created package file /home/style/groovy_workspace/sandbox/package_test/manifest.xml Created package file /home/style/groovy_workspace/sandbox/package_test/cmakelists.txt Created package file /home/style/groovy_workspace/sandbox/package_test/mainpage.dox Please edit package_test/manifest.xml and mainpage.dox to finish creating your package Listato 4.7 roscreate-pkg Ricerca di un package Digitando il comando rospack profile è possibile assicurarsi che ROS ha individuato il nostro nuovo package (Listato 4.4). $ rospack profile $ rospack find [nome_package] $ rospack profile $ rospack find package_test Visualizzazione dipendenze di un package $ rospack depends1 [nome_package] Listato 4.8 Listato 4.9 Modifica dipendenze di un package Per modificare le dipendenze bisogna aprire il file manifest.xml e modificarlo. $ roscd [nome_package] $ cat manifest.xml $ roscd package_test $ cat manifest.xml Listato 4.10 building packages Per il build dei packages si utilizza il comando rosmake, equivalente al comando make. $ rosmake [package] $ rosmake package_test [ ] [ rosmake ] Results: [ rosmake ] Built 21 packages with 0 failures. Listato 4.11 Nodi ROS Un nodo è un file eseguibile all'interno di un pacchetto ROS. I nodi ROS usano una libreria (ROS client library) per comunicare con altri nodi, attraverso il linguaggio C++ (roscpp) o Python (rospy). I nodi ROS possono: a) pubblicare su un topic / iscriversi a un topic b) fornire / usare servizi. $ sudo apt-get install ros-groovy-ros-tutorials Listato 4.12 installing tutorials Comunicazione fra nodi: roscore E' una collezione di nodi e programmi necessari ad un sistema basato su ROS. Per garantire la comunicazione fra nodi è necessario eseguire sempre Roscore attraverso il comando roscore.

Questo comando farà partire: ROS master, un ROS parameter server, un nodo per il logging rosout. $ roscore Listato 4.13 roscore Visualizzare informazioni di un nodo: rosnode E' uno strumento per visualizzare informazioni riguardanti un nodo che sta attualmente eseguendo. $ rosnode list /rosout $ rosnode info /rosout Listato 4.14 rosnode list Listato 4.15 rosnode info Esecuzione di un nodo: rosrun E' uno strumento che consente di usare il nome di package per eseguire un nodo all' interno di un package (senza conoscere il percorso del package). $ rosrun [package_name] [node_name] $ rosrun turtlesim turtlesim_node $ rosnode ping [node_name] $ rosnode ping turtlesim...continua 5. Listato 4.16 rosrun Listato 4.17 rosnode ping 6. BUILD Il build può essere effettuato in due modi: attraverso catkin o attraveso rosbuild. Di seguito verrà analizzato rosbuild. BUILD FILES Con rosbuild, un package deve avere un file manifest.xml e un Makefile. Tipicamente ha anche un file CMakeList.txt usato dal Makefile. Nel file CMakeList.txt viene inserito il build e i passi della generazione, nel Makefile vengono dichiarate le dipendenze, mentre nel file manifest.xml sono dichiarate attributi per l'esportazione. manifest.xml E' un file XML che rappresenta la descrizione di un package (ne definisce le proprietà), quali per esempio il nome, il numero della versione, l'autore, e le sue dipendenze da altri packages. La sua struttura base è costituita dal tag package presente nel Listato 6.1. <!-- Questa è la struttura base --> Altri tag generalmente presenti in questo file sono: vedere nel Listato 6.2 Listato 6.1 name, version, description, mantainer, license, come è possibile

<!-- Questa è la struttura base con altre informazioni--> <name> foo_core </name> <version> 1.2.4 </version> <description> This package provides foo capability. </description> <maintainer email="irenemaria.gironacci@studenti.unipr.it"> <license> BSD </license> Irene Maria Gironacci </maintainer> Listato 6.2 Oltre alle informazioni base sono presenti, come già mensionato, le dipendenze da altri pacchetti (vedi Listato 6.3). si possono avere diversi tipi di dipendenze: dipendenze di build: specifica i packages necessari per fare il buid del package corrente (Listato 6.4) dipendenze per l'esecuzione: speficia i packages necessari per eseguire il codice del package corrente (Listato 6.5) strumenti per le dipendenze di build: specifica gli strumenti di sistema che sono necessari al package corrente per fare il build (Listato 6.6) dipendenze di test: specifica dipendenze aggiuntive per dei test (Listato 6.7) <!-- Questa è la struttura base con altre informazioni e le dipendenze--> <name> foo_core </name> <version> 1.2.4 </version> <description> This package provides foo capability. </description> <maintainer email="irenemaria.gironacci@studenti.unipr.it"> Irene Maria Gironacci </maintainer> <license> BSD </license> <depend package="std_msgs"/> <depend package="roscpp"/> <depend package="cv_bridge"/> <depend package="image_transport"/> Listato 6.3 <!-- Questa è la struttura base --> <build_depend> <!-- inserire qui le dipendenze --> </build_depend> <!-- Questa è la struttura base --> <run_depend> <!-- inserire qui le dipendenze --> </run_depend> <!-- Questa è la struttura base --> Listato 6.4 Listato 6.5

<buildtool_depend> <!-- inserire qui le dipendenze --> </buildtool_depend> <!-- Questa è la struttura base --> <test_depend> <!-- inserire qui le dipendenze --> </test_depend> Si possono anche inserire dei metapackage.. Listato 6.6 Listato 6.7 CMakeList.txt continua

7. APPLICAZIONI 7.1 pubblicazione / iscrizione - creazione package: $ roscreate-pkg ros_tutorial std_msgs rospy roscpp Listato 7.1 - build package: $ rosmake ros_tutorial Listato 7.2 - Creazione del nodo pubblicante (talker): aprire un file di testo, nominarlo talker.cpp e salvarlo all'interno di ros_tutorial/src #include "ros/ros.h" #include "std_msgs/string.h" #include <sstream> int main (int argc, char **argv){ ros::init(argc, argv, "talker"); ros::nodehandle n; ros::publisher chatter_pub = n.advertise <std_msgs::string>("chatter",1000); ros::rate loop_rate(10); int count = 0; while (ros::ok()){ std_msgs::string msg; std::stringstream ss; ss << "hello world" << count; msg.data = ss.str(); ROS_INFO("%s",msg.data.c_str()); chatter_pub.publish(msg); ros::spinonce(); loop_rate.sleep(); ++count; } return 0; } Listato 7.3 Nodo Ascoltatore (Listener): aprire un file di testo, nominarlo Listener.cpp e salvarlo all'interno della directory ros_tutorial/src #include "ros/ros.h" #include "std_msgs/string.h" void chattercallback(const std_msgs::string::constptr& msg){ ROS_INFO("I heard: [%s]", msg->data.c_str()); } int main(int argc, char **argv){ ros::init(argc, argv, "listener"); ros::nodehandle n; ros::subscriber sub = n.subscribe("chatter", 1000, chattercallback); ros::spin(); return 0; } Listato 7.4 $ rosmake ros_tutorial

Avvio del roscore dal terminale: $ roscore Listato 7.5 Listato 7.6 Avvio del nodo talker da un nuovo terminale: $ rosrun ros_tutorial talker Figura 7.1 Listato 7.7 Avvio del nodo listener da un nuovo terminale: $ rosrun ros_tutorial listener Figura 7.2 Listato 7.8 Figura 7.3

LISTA COMANDI TOPIC Mostrare la lista dei topic $ rostopic list Mostrare il contenuto di un topic $ rostopic echo NomeTopic Mostrare informazioni di un topic $ rostopic info NomeTopic NODI Mostrare la lista dei nodi in esecuzione $ rosnode list Mostrare informazioni di un nodo $ rosnode info NomeNodo Esecuzione di un nodo $ rosrun NomePacchetto NomeNodo name:= NomeNodoAlternativo Vedere quali nodi sono attivi e come interagiscono fra loro $ rxgraph Verifica della connettività di un nodo $ rosnode ping NomeNodo PACKAGES Conoscere le dipendenze di un pacchetto $ rospack depends Creazione di un package con le varie dipendenze $ roscreate-pkg NomePacchetto Dipendenza1 Dipendenza2 DipendenzaN Compilazione di un package $ rosdep install NomePackage MASTER Avvio del processo Master $ roscore REFERENCES [1] http://wiki.ros.org/cppstyleguide