Robot Operating System



Похожие документы
Architetture Informatiche. Dal Mainframe al Personal Computer

Architetture Informatiche. Dal Mainframe al Personal Computer

Il Software. Il software del PC. Il BIOS

Setup e installazione

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

Comunicazione tra Processi

Introduzione alle applicazioni di rete

B.P.S. Business Process Server ALLEGATO C10

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

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

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

GUIDA A ROS COMPONENTI PRINCIPALI

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

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

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

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Servizio Amazon SNS

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Software di base. Corso di Fondamenti di Informatica

Dispensa di Informatica I.1

Studio Prof. Versione 2

La tecnologia a supporto della corretta codifica della Scheda di Dimissione Ospedaliera

Il Sistema Operativo

ZFIDELITY - ZSE Software & Engineering Pag.1 / 11

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

Introduzione al Linguaggio C

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

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

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

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

GUIDA UTENTE MONEY TRANSFER MANAGER

Lezione 1 Introduzione

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

Introduzione all uso di Eclipse

Tutorial KISSsoft: versione di prova e fasi iniziali

Il web server Apache Lezione n. 3. Introduzione

InitZero s.r.l. Via P. Calamandrei, Arezzo

Il Web Server e il protocollo HTTP

PORTALE CLIENTI Manuale utente

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Hardware delle reti LAN

Versione 2.0. Manuale d uso. Software per la gestione. degli applicativi Bticino. TiManager 03/07-01 PC

Tecniche di progettazione e sviluppo di applicazioni mobile

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione a Dev-C++

Technical Document Release Version 3.0. Product Sheet. MediaNews Play. Studio Playout in PCR

L APP PER IPHONE E ANDROID

Dynamic 07 -Software per la lettura ottica e data capture. G.Q.S. Srl Global Quality Service Via Bernini, 5/7 Corsico (MILANO)

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

MyPostman. Progetto di messaggistica istantanea Invio messaggi ai tuoi contatti attraverso Google Cloud Messaging

EXPLOit Content Management Data Base per documenti SGML/XML

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

SERVIZIO TELEMATICO ENTRATEL. Applicazione Autentica-Apri Multifile

Eventuali applicazioni future

Il Sistema Operativo (1)

IRSplit. Istruzioni d uso 07/10-01 PC

Architetture Applicative

Registratori di Cassa

Mac Application Manager 1.3 (SOLO PER TIGER)

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Sommario. 1. Cos è SecureDrive Caratteristiche Privacy dei dati: SecureVault... 4

Ingegneria del Software 1: Eclipse

E.S.B. Enterprise Service Bus ALLEGATO C11

Xerox Device Agent, XDA-Lite. Guida all installazione rapida

SOMMARIO Introduzione Caratteristiche generali della piattaforma Amministrazione degli utenti 5

TERMINALE. Creazione e gestione di una postazione terminale di Eureka

CLUSTER COKA. Macchine e Risorse

ALL FOR SCAN Versione Twain Manuale Utente. Versione 2.0A00. Luccarelli Srl

Introduzione alla Virtualizzazione

Ministero del Lavoro e delle Politiche Sociali

Amministrazione Trasparente

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Esercizio 2. Client e server comunicano attraverso socket TCP

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

L i n u B e s t a Mario Di Raimondo

Architettura di un sistema operativo

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

La Skills Card relativa alle certificazioni Nuova ECDL è svincolata dalla singola certificazione.

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

Manuale d uso [Rev.1 del 07/08/2015] Manutenzione impianti termici Ver [05/01/2015]

Vittorio Veneto,

Guida rapida all uso di Moodle per gli studenti

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

GUIDA UTENTE BILLIARDS COUNTER (Vers )

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Intel One Boot Flash Update Utility Guida dell utente

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

SERVICE MANAGER. Architettura Client-Server e Web based di Servizi Specializzati per la Gestione di Periferiche e Connettività

Corso di Informatica

Istruzioni per l installazione

Транскрипт:

Robot Operating System Lezione 1 A cura di: Jonathan Cacace 1

Outline Lezione 1: Introduzione; Architettura ROS; Protocolli di comunicazione; Concetti base; Primi passi. Lezione 2: ROS Stage; 2

Introduzione ROS: meta sistema operativo per la programmazione dei robot. ROS: è un framework di programmazione che mette a disposizione strumenti e librerie per aiutare gli sviluppatori software nello sviluppo di applicazioni robotiche. (www.ros.org) Inizialmente sviluppato per la piattaforma robotica PR2 3

Introduzione ROS: meta sistema operativo per la programmazione dei robot. 4

Introduzione ROS: meta sistema operativo per la programmazione dei robot. 5

Introduzione ROS: meta sistema operativo per la programmazione dei robot. 6

Introduzione ROS: meta sistema operativo per la programmazione dei robot. 7

Introduzione ROS: meta sistema operativo per la programmazione dei robot. Insieme di pacchetti software; Architettura distribuita in cui è possibile gestire in maniera asincrona un insieme di moduli software; Open-source rilasciato sotto licenza BSD; Permette lo sviluppo di moduli software in linguaggi: C++ e Python. Comunità molto vasta = supporto per il problem solving e sviluppo frequente di nuovi pacchetti 8

ROS ROS è disponibile per diverse distribuzioni Linux (consigliato Ubuntu), disponibile anche per OsX e Windows (Sperimentali). Applicazioni Moduli software sviluppati dall utente o software riutilizzato. Librerie Main Librerie per l utilizzo di sistemi hardware esterni (kinect) o software standalone (pcl, opencv, software di simulazione ). Livello trasparente all utente funzionalità principali del framwork (strumenti di compilazione, ROS API, comunicazione tra moduli software, ). 9

ROS Architettura: rosnode rosnode roscore rosnode roscore: master coordination node. 10

ROS Architettura: roscore Orchestra i nodi ad esso connessi gestendone l esecuzione parallela e la comunicazione tra questi. rosnode Codice sviluppato dall utente, o pacchetto software fornito da ROS. roscore: master coordination node. 11

Filosofia Output message rosnode Input message roscore: master coordination node. 12

Filosofia Modularità: rosnode Un nodo identifica un particolare modulo del sistema, la possibilità di gestire l interoperabilità tra i vari nodi attraverso dei semplici messaggi permette la creazione di un codice con basso accoppiamento. roscore: master coordination node. 13

Librerie e pacchetti software ROS mette a disposizione un vasto numero di pacchetti software già disponibili in versioni stand alone. Utilizzare le versioni disponibili per ROS aiuta lo sviluppatore e contribuisce alla creazione di un codice portabile. Es. openni (librerie per l utilizzo della kinect in sistemi Linux) Soluzione 1: 1. Installazione autonoma delle librerie openni; 2. Interfacciamento della propria applicazione con le librerie openni; 3. Inclusione del codice per la gestione (avvio, image capture, ) della kinect; 4. Utilizzo dei dati ottenuti dalla kinect. 14

Librerie e pacchetti software ROS mette a disposizione un vasto numero di pacchetti software già disponibili in versioni stand alone. Utilizzare le versioni disponibili per ROS aiuta lo sviluppatore e contribuisce alla creazione di un codice portabile. Es. openni (librerie per l utilizzo della kinect in sistemi Linux) Soluzione 2: ROS 1. Download del pacchetto openni offerto da ros (www.ros.org); 2. Avvio del modulo (rosnode) ROS per la gestione della kinect; 3. Utilizzo dei dati ottenuti dalla kinect forniti dal modulo ROS. 15

Librerie e pacchetti software ROS mette a disposizione un vasto numero di pacchetti software già disponibili in versioni stand alone. Utilizzare le versioni disponibili per ROS aiuta lo sviluppatore e contribuisce alla creazione di un codice portabile. Es. openni (librerie per l utilizzo della kinect in sistemi Linux) Soluzione 2: ROS A differenza della Soluzione 1, il codice sviluppato dall utente potrà essere eseguito facilmente compilato ed eseguito su tutte le macchine che dispongono di una propria versione di ROS, senza necessità installare librerie necessarie al suo funzionamento. 16

Librerie e pacchetti software ROS mette a disposizione un vasto numero di pacchetti software già disponibili in versioni stand alone. Utilizzare le versioni disponibili per ROS aiuta lo sviluppatore e contribuisce alla creazione di un codice portabile. Data_request() Codice Utente Data sensor ( 3d sensor, RGB camera, IR camera, Audio) 17

Trasparenza Librerie e pacchetti software ROS mette a disposizione un vasto numero di pacchetti software già disponibili in versioni stand alone. Utilizzare le versioni disponibili per ROS aiuta lo sviluppatore e contribuisce alla creazione di un codice portabile. Data_request() Data sensor Codice Utente Modulo ROS Data_sensor 18

Librerie e pacchetti software Popular package: Simulazione: Navigazione: SLAM: Percezione: Simulatori di ambienti 2D/3D (Stage / Gazebo). Odometria, flusso sensoriale, pose estimation Simultanea localizzazione e mapping. point cloud processing (PCL), opencv Permettono l astrazione di dispositivi hardware a basso livello: Joystick; GPS; Controller; Laser e sonar; 19

Protocolli di comunicazione La comunicazione rappresenta uno degli elementi più significativi del sistema ROS. La possibilità di permettere un facile scambio di messaggi tra i nodi rende possibile la creazione di un programma multi-threading tralasciando le problematiche relative alla politica di sincronizzazione e comunicazione tra i vari processi. Comunicazione: 1. Publish/subscribe: modalità di comunicazione asincrona in broadcasting; 2. Service: modalità di comunicazione sincrona, secondo la semantica request / reply. 20

Protocolli di comunicazione Publish / subscribe: Scrittura di un messaggio su di un topic messo a disposizione dal roscore. Tutti i nodi che desiderano ricevere il messaggio possono richiederlo al roscore. Service: Un nodo invia una richiesta a tutti i nodi in grado di soddisfarla. Da questi nodi riceverà una risposta. 21

Protocolli di comunicazione Pubslih / subscribe: Scrittura di un messaggio su di un topic messo a disposizione dal roscore. Tutti i nodi che desiderano ricevere il messaggio possono richiederlo al roscore. rosnode publish Topic («name») subscribe subscribe subscribe rosnode rosnode rosnode 22

Perché ROS??? 24

Concetti base File system: Package: contengono librerie, eseguibili, codice sorgente Stack: contiene diversi package. 25

Concetti base File system: Package: contengono librerie, eseguibili, codice sorgente Stack: contiene diversi package. Comandi: rospack: permette di ricevere informazioni sui package; rosstack: permette di ricevere informazioni sugli stack; roscd: apre la directory contenente i package; roscreate-pkg [package_name]: crea un package; 26

Concetti base Nodi ROS: In ROS, un nodo non è altro che un eseguibile (generato da un insieme di codici sorgente) che fa parte di un package. Un nodo ROS utilizza la librerie dedicate per comunicare con gli altri nodi, e con il core. Può leggere o pubblicare su un topic e fornire o richiedere servizi. Comandi: NB: anche il roscore, è da considerare come un nodo. roscore: avvia il nodo che rappresenta il core di ROS; rosnode: fornisce informazioni riguardo i nodi; rosrun: manda in esecuzione un nodo; 27

Nodi ROS (Attributi di un nodo): Concetti base ros::nodehandle nodehandle: è un oggetto che permette di gestire tutte le attività legate al nodo in cui è dichiarato. Attraverso il nodehandle è possibile, ad esempio, registrarsi ai topic per leggere o pubblicare, accedere al parameter server. Callback: è un metodo definito dall utente che viene eseguito parallelamente al nodo in cui è dichiarato attraverso la generazione di un nuovo thread. I callback solitamente sono sempre in attesa e si attivano quando si attiva il nodo e non terminano fino alla fine dell esecuzione. Solitamente i callback vengono utilizzati per gestire la comunicazione attraverso i topic o i service. 28

Concetti base Altri comandi utili: rostopic: permette di visualizzare informazioni sui topic attivi. rostopic list: ritorna la lista dei topic attivi; rostopic info [nome_topic]: ritorna il tipo di messaggio pubblicato sul topic; rostopic echo [nome_topic]: mostra i messaggi inviati al topic. rxgrpah: fornisce una rappresentazione grafica dei nodi attivi assieme ai messaggi che questi si scambiano. 29

Altri comandi utili: Concetti base rxgrpah: fornisce una rappresentazione grafica dei nodi attivi assieme ai messaggi che questi si scambiano. 30

Primi passi: creare un nodo (1/4) Un nodo ROS fa sempre parte di un pakage. Per creare un nuovo package, spostarsi all interno della directory desiderata ed utilizzare il seguente comando: $ roscreate-pkg [nome pacchetto] Es. $ rocreate-pkg tutoral Dopo aver creato un package è possibile utilizzare i comandi: roscd [nome pacchetto]: per spostarsi all interno della directory del package. 31

Primi passi: creare un nodo (2/4) Main.h: ros.h: librerie per l utilizzo delle funzioni di ros. 32

Primi passi: creare un nodo (3/4) Main.cpp: ros::init presentazione del nodo al roscore. 33

Primi passi: creare un nodo (3/4) CMakeList: 34

Primi passi: creare un nodo (3/4) CMakeList: Per compilare il pacchetto creato, spostarsi all interno della direcotry del pacchetto (è possibile utilizzare roscd) ed esgeuire il comando: $ rosmake 35

Primi passi: creare un nodo (4/4) rosnode: Dopo aver compilato il pacchetto (senza errori!!) è possibile mandare il nodo in esecuzione: Prima di tutto è necessario avviare il core: $ roscore In un altro terminale invece è necessario avviare il nodo: $ rosrun [nome package] [nome nodo] Es. $ rosrun tutorial main 36

Primi passi: [topic] creare un publisher Creazione di un nodo ros che pubblica continuamente su un Topic con nome publisher dei dati di tipo Std_msgs::String. rosnode Std_msgs::String Topic publisher 37

Primi passi: [topic] creare un publisher Pubslisher.h: NodeHande: oggetto per l accesso agli attributi e ai metodi per la gestione del nodo. 38

Primi passi: [topic] creare un publisher Pubslisher.h: Publisher: oggetto per l accesso ai metodi di pubblicazione. 39

Primi passi: [topic] creare un publisher Pubslisher.cpp: advertise<message Type>: Creazione di un topic su cui possono essere scritti messaggi di tipo «Message Type» 40

Primi passi: [topic] creare un publisher Pubslisher.cpp: publish: Metodo per pubblicare su topic. 41

Primi passi: [topic] creare un publisher Dopo aver creato e mandato in esecuzione (come visto in precedenza) un nodo pubblica su un topic, è possibile monitorare lo stato di quel topic attraverso il comando rostopic: $ rostopic list: Lista dei topic creati sul rosnode $ rostopic info Nome Topic : Informazioni sul topic (tipi di dati pubblicabili); $ rostopic echo Nome Topic : Monitoring dell attività di publishing sul topic. 42

Primi passi: [topic] creare un publisher Rostopic list: rostopic echo /publisher: 43

Primi passi: [topic] creare un subscriber Subscriber.h: sub: oggetto per l accesso ai metodi per la gestione del nodo in sottoscrizione. 44

Primi passi: [topic] creare un subscriber Subscriber.h: Dichiarazione di un callback 45

Primi passi: [topic] creare un subscriber Subscriber.cpp: subscribe: Metodo per la sottoscrizione ad un topic 46

Primi passi: [topic] creare un subscriber Subscriber.cpp: 47

Primi passi: [topic] creare un subscriber Subscriber.cpp: spin: Permette ai callback di restare in vita anche dopo la terminazione del «codice» 48

Primi passi: [topic] creare un subscriber output: 49

Server.h: (Somma di due interi) Primi passi: Service service: Metodo per la gestione delle chiamate a servizio. 50

Server.h: (Somma di due interi) Primi passi: Service Dichiarazione metodo per la gestione delle chiamate service in ingresso. 51

Server.h: (Somma di due interi) Primi passi: Service Include della definizione del messaggio da inviare al service. AddTwoInts.h è la definizione del messaggio utilizzato nel service. Il path di questo tipo di messaggi è package/srv/addtwoints.srv 52

Primi passi: Service AddTwoInts.srv: (Somma di due interi) AddTwoInts.h è la definizione del messaggio utilizzato nel service. Il path di questo tipo di messaggi è package/srv/addtwoints.srv 53

Primi passi: Service Server.cpp: (Somma di due interi) advertiseservice: Presentazione al core del servizio offerto!! 54

Primi passi: Service Server.cpp: (Somma di due interi) add: Metodo per la gestione del servizio 55

Primi passi: Service Server.cpp: (Somma di due interi) 56

Client.h: (Somma di due interi) Primi passi: Service client: Oggetto per la gestione delle richieste Service. 57

Primi passi: Service Client.cpp: (Somma di due interi) serviceclient(«message to Send») 58

Primi passi: Service Client.cpp: (Somma di due interi) Creazione del messaggio da inviare al gestore del servizio richiesto 59

Primi passi: Service Client.cpp: (Somma di due interi).call: chiamata del servizio 60

Primi passi: Service Client: Server: 61

Wiki http://www.ros.org/wiki/ http://www.ros.org/wiki/ros/installation http://www.ros.org/wiki/ros/tutorials 62