O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Introduzione ros

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Protocollo ssh
Protocollo ssh
Carregando em…3
×

Confira estes a seguir

1 de 53 Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Introduzione ros (20)

Anúncio

Mais de Marco Buttolo (20)

Mais recentes (20)

Anúncio

Introduzione ros

  1. 1. Il sistema ROS ROS -> Robotic Operating System. Non è un sistema operativo bensì un framework per lo sviluppo di applicazioni robotiche distribuite. ROS è un prodotto open source rilasciato sotto licenza BSD. ROS contiene tutta una serie di librerie e funzioni che permettono di sviluppare applicativi in Python e C++.
  2. 2. Struttura base del ROS
  3. 3. Perché il ROS Lo sviluppo di software robusto per il controllo di un robot è un’attività che richiede il contributo di molte competenze diverse (visione artificiale, navigazione, comunicazione, controllo del moto,… solo per citarne alcune), spesso non presenti all’interno di un unico team di lavoro. Pertanto, con il passare degli anni è stato sempre più evidente il bisogno di un ambiente che consentisse lo sviluppo del software in modo collaborativo e facilmente integrabile. Il ROS mette a disposizione alcune funzionalità fondamentali per facilitare la modularità del software sviluppato, con particolare attenzione alle convenzioni e alle funzionalità tipiche dei dispositivi robotici.
  4. 4. Installazione del ROS In queste slides verrà installato il ROS Melodic (una delle tante distribuzioni del ROS) su una Raspberry PI3 Model B+ con sistema operativo Ubuntu Mate 18.04. Per prima cosa installare Ubuntu Mate su Raspberry. Successivamente entrare nella voce «SOFTWARE&UPDATES», come mostrato di seguito:
  5. 5. Installazione del ROS Selezionare tutti e 4 i repository come mostrato in figura:
  6. 6. Installazione del ROS Successivamente entrare nel terminale del sistema operativo come mostrato di seguito:
  7. 7. Installazione del ROS Per prima cosa, verificare se python è installato. Basta digitare il comando python (l’interprete) da prompt dei comandi. Se comparirà a video il prompt di Python con il simbolo >>> allora Python è installato. Successivamente, verificare che si abbiano tutti i repository del caso in locale. Per quanto riguarda i repository, in Ubuntu ci sono 4 repository di default: MAIN -> repository per software free ed opensource per sviluppatori Ubuntu UNIVERSE -> per software free ed open source per la community Ubuntu RESTRICTED -> per software sotto licenza e device drivers MULTIVERSE -> tutti i software sotto licenza
  8. 8. Installazione del ROS Per aggiungere i repository in locale digitare nel terminale: sudo add-apt-repository main sudo add-apt-repository universe sudo add-apt-repository restricted sudo add-apt-repository multiverse
  9. 9. Installazione del ROS Sempre da terminale, eseguire: sudo apt update E successivamente: sudo apt upgrade A questo punto, se tutto è andato a buon fine digitare: sudo apt-get install aptitude
  10. 10. Installazione del ROS Digitare il seguente comando per accettare software da packages.ros.org: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros- latest.list' E successivamente: sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  11. 11. Installazione del ROS A questo punto sfruttare il seguente comando per installare il ROS distribuzione Melodic: sudo apt update sudo aptitude install ros-melodic-desktop-full Se tutto è andato a buon fine è possibile passare all’installazione delle librerie ausiliarie molto importanti per il ROS. In particolare, verificare i packages disponibili: apt search ros-melodic
  12. 12. Installazione del ROS Successivamente installare le librerie riguardanti ROS e Python: sudo apt install python-rosdep python-rosinstall python- rosinstall-generator python-wstool build-essential A questo punto è possibile inizializzare il rosdep con il seguente comando: sudo rosdep init rosdep update
  13. 13. Installazione del ROS Digitare il comando: source /opt/ros/melodic/setup.bash Successivamente, installare tramite «aptitude» il seguente pacchetto: sudo aptitude install ros-melodic-roslaunch
  14. 14. Installazione del ROS Nel caso in cui ci dovessero essere dei problemi nell’installazione del ros-melodic legati ad eventuali dipendenze o quant’altro è opportuno disintallare alcune librerie Python e riprovare.
  15. 15. Funzionamento del ROS Se c’è qualche errore analizzarlo e farsi aiutare da Internet. Molto probabilmente mancano delle librerie. Può capitare anche un errore del tipo: «compilatore c++ not able to compile simple Program». In questo caso, provare provare a compilare un semplice programmino cpp con g++ e vedere se ci sono errori. Nel caso eseguire i seguenti comandi di aggiornamento: sudo apt-get install build-essential Sudo apt install software-properties-common -y sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y sudo apt-get update sudo apt-get install gcc-snapshot -y
  16. 16. Funzionamento del ROS E’ bene precisare che la struttura generale di un’applicazione può essere vista come una rete di nodi, i quali, interconnessi fra loro, scambiano messaggi all’interno di appositi bus ed accedono a servizi messi a disposizioni da altri nodi. Come primo step, una volta installato il ROS, è quello di provare qualche comando e vedere qualche semplice esempio. In particolare, usare il comando roscore, per poter avviare il ROS master node. Una volta avviato con successo è possibile iniziare a lavorare.
  17. 17. Funzionamento del ROS
  18. 18. Verifica versione ROS
  19. 19. Funzionamento del ROS La struttura di base del ROS è piuttosto semplice. Essa è una rete di nodi chiamati in modo generico ROSNODE. Il ROSCORE è il nodo Master, ossia il nodo che gestisce le comunicazioni tra i ROSNODE.
  20. 20. Funzionamento del ROS Il ROSNODE invece può essere un pacchetto fornito con il ROS o Un pacchetto scritto dal progettista del software in C++ o Python.
  21. 21. Funzionamento del ROS La comunicazione tra i vori nodi avviene tramite scambio di messaggi. Quindi, per prima cosa, creare il catkin workspace mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_init_workspace Ci sono due modi per l'organizzazione e la compilazione del proprio codice in ROS: • Catkin • rosbuild
  22. 22. Funzionamento del ROS Catkin di fatto è una raccolta di macro Cmake integrato nel ROS. Cmake è un tool open source progettato per compilare, testare e distribuire i propri pacchetti nel mondo Linux. Mentre il tool make è stato pensato per chi sviluppa in C, Cmake è stato pensato principalmente per chi sviluppa in C++. Il comando catkin_init_worskpace permette di inizializzare l’ambiente di sviluppo creando di fatto un file chiamato
  23. 23. Funzionamento del ROS Per prima cosa creiamo da zero un nostro workspace come mostrato di seguito.
  24. 24. Funzionamento del ROS Digitare il comando seguente per creare ambiente di sviluppo, debug e compilazione.
  25. 25. Funzionamento del ROS Al termine dell’operazione, se tutto è andato a buon fine si avranno le seguenti cartelle: Nella cartella src si scriverà il nostro codice.
  26. 26. Funzionamento del ROS Il file denominato CMakeLists.txt viene creato automaticamente. L’ultima istruzione server per fare in modo di attivare sempre il workspace creato quando si apre un nuovo terminale.
  27. 27. Funzionamento del ROS CMakeList.txt -> contiene direttive utili al Cmake per capire Cosa deve fare Una volta eseguito il comando catkin_make è possibile visualizzare La struttura della cartella catkin_ws costruita. Ci saranno tre sottocartelle: • Build • Src • Devel
  28. 28. Funzionamento del ROS In ROS i vari nodi possono anche non risiedere sullo stesso sistema. I componenti base di una architettura ROS sono: • Package -> sono unità di codice e possono essere di sistema o create dall’utente • Repository -> è una collezione di package che condividono lo stesso VCS • Nodo -> eseguibile che può pubblicare messaggi su un topic od iscriversi ad un topic. • Topic -> contenitore di messaggi pubblicati da uno o più nodi.
  29. 29. Funzionamento del ROS • Messaggi -> tipo di dato usato dai nodi per scambiarsi info. • Servizi -> messaggi di tipo client/server che si aspettano una risposta dopo un dato inviato.
  30. 30. Funzionamento del ROS A questo punto, si può provare a creare un package chiamato, per Comodità, MyFirstPackage nel seguente modo: catkin_create_pkg MyFirstPackage std_msgs rospy roscpp Il package creato (comando da lanciare dalla cartella SRC) del catkin workspace dipende da rospy, roscpp e std_msgs. roscpp: pacchetto di riferimento che estende il supporto alla programmazione C++; rospy: analogo del precedente per Python; std_msgs: pacchetto di comunicazione.
  31. 31. Ricapitolando… Roscore -> servizio che gestisce la comunicazione tra i vari nodi. Rosmaster -> è il ROS parameters server Importante: Se si considera per esempio un rover (robot mobile) e si desidera che i servomotori dialoghino con i sensori di distanza Allora i servomotori avranno uno script che li gestisce (è un nodo ROS) ed i sensori un altro script (un altro nodoROS). Entrambi i nodi ROS dovranno comunicare con Il nodo Master.
  32. 32. Creazione package Come mostrato di seguito vediamo come creare un nuovo package
  33. 33. Creazione package Tramite il comando catkin_create_pkg nome_pacchetto è possibile creare un package con le dipendenze specificate: • roscpp: pacchetto di riferimento che estende il supporto alla programmazione C++; • rospy: analogo del precedente per Python; • std_msgs: pacchetto di comunicazione
  34. 34. Creazione package Tramite il comando catkin_create_pkg nome_pacchetto è possibile creare un package con le dipendenze specificate: • roscpp: pacchetto di riferimento che estende il supporto alla programmazione C++; • rospy: analogo del precedente per Python; • std_msgs: pacchetto di comunicazione A questo punto ridigitare ancora catkin_make come viene mostrato nella successiva slide:
  35. 35. Creazione package
  36. 36. Creazione package I nodi, di fatto, sono dei programmi eseguiti all’interno dei nostri package. Vediamo come creare un nodo in python. Per prima cosa, i pacchetti sono l'unità principale per l'organizzazione del software in ROS. Un pacchetto può contenere processi runtime ROS ( nodi ), una libreria dipendente da ROS, set di dati, file di configurazione o qualsiasi altra cosa che sia organizzata in modo utile insieme.
  37. 37. Creazione package Il Computation Graph è il grafico che descrive la rete peer-to-peer dei processi ROS che elaborano i dati insieme. Tale rete è composta da nodi ossia processi che eseguono calcoli. Ad esempio, un nodo controlla un sensore di distanza, un nodo controlla i motori delle ruote, eccetera. Un nodo ROS viene scritto con l'uso di una libreria particolare come per esempio rospy o roscpp. I nodi comunicano tramite scambio di messaggi. Un messaggio è semplicemente una struttura dati. Sono supportati i tipi primitivi standard come, per esempio il tipo intero, booleano.
  38. 38. Creazione package Solitamente un messaggio viene pubblicato su un determinato topic. Un nodo interessato a un certo tipo di dati si iscriverà al topic appropriato. L'idea è di separare la produzione di informazioni dal suo consumo. il modello di pubblicazione / sottoscrizione è un paradigma di comunicazione molto. Quindi le tipologie di comunicazione sono: • Publish/subscribe: modalità di comunicazione asincrona in broadcasting • Service: modalità di comunicazione sincrona, secondo la semantica request / reply.
  39. 39. Creazione package • 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.
  40. 40. Creazione package • La creazione di un package avviene con il comando seguente.
  41. 41. Creazione package • Eseguire catkin_make per compilare il tutto. Una volta compilato, se non sono sorti degli errori è possibile avviare il package appena creato. • Ogni directory di un pacchetto possiede i seguenti files:
  42. 42. Creazione package roslaunch è uno strumento importante che gestisce l'avvio e l'arresto dei nodi ROS. Prende uno o più file "* .launch" come argomenti. Quindi, roslaunch utilizza i cosiddetti “launch file” che sono file XML contenenti la lista dei nodi da lanciare con i rispettivi parametri. Editare nella cartella SRC il file chiamato test.py nel seguente modo:
  43. 43. Creazione package Creare una cartella chiamata «launch» come mostrato di seguito: • All’interno della cartella appena creata, creare un file chiamato test.launch
  44. 44. Creazione package Esecuzione package: Se si desidera creare un topic e pubblicarlo si usa il seguente comando:
  45. 45. RosSerial RosSerial è un pacchetto che permette di utilizzare ROS su Arduino. La slide successiva mostra come installare ROSSerial sfruttando la versione già installata del ROS (per esempio la distribuzione Melodic).
  46. 46. RosSerial
  47. 47. RosSerial Seguire le istruzioni di installazione riportate sul sito seguente: http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup#Installing_the_Software Successivamente, dopo aver installato l’IDE Arduino, avviarlo e selezionare un esempio da ROS_LIB come mostrato di seguito:
  48. 48. RosSerial
  49. 49. RosSerial Avviare, in una schermata di terminale roscore. Verificare in un’altra schermata la lista dei topic.
  50. 50. RosSerial
  51. 51. RosSerial
  52. 52. RosSerial Riassumendo…. Si avvia il nodo master con Roscore, si avvia il programma client rosserial per la gestione/trasmissione dei messaggi, ed infine si utilizza il comando rostopic pub per inviare un messaggio di prova.

×