{"id":20677,"date":"2019-12-17T12:04:23","date_gmt":"2019-12-17T11:04:23","guid":{"rendered":"https:\/\/www.generationrobots.com\/blog\/?p=20677"},"modified":"2025-04-22T17:02:49","modified_gmt":"2025-04-22T15:02:49","slug":"ros2-cosa-cambia-rispetto-a-ros","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/it\/ros2-cosa-cambia-rispetto-a-ros\/","title":{"rendered":"Da ROS a ROS2: cosa cambia davvero?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"20677\" class=\"elementor elementor-20677\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bbbaf51 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bbbaf51\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8d7a7e6\" data-id=\"8d7a7e6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b0c70fb elementor-widget elementor-widget-text-editor\" data-id=\"b0c70fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Oggi, esistono solo due versioni del middleware ROS: ROS e ROS2. La prima versione di ROS \u00e8 talvolta chiamata ROS1. In questo articolo chiameremo la prima versione \u00ab\u00a0ROS\u00a0\u00bb e la seconda versione \u00ab\u00a0ROS2\u00a0\u00bb.\n\n<\/p><p>Riteniamo importante, per\u00f2, ricordare che ROS2 \u00e8 attualmente in fase di sviluppo. Alcuni package sono gi\u00e0 stati pubblicati, ma la maggior parte di essi non \u00e8 ancora compatibile. Inoltre, alcune funzionalit\u00e0 di ROS2 non sono ancora disponibili.\n\n<\/p><p>Vi invitiamo a restare aggiornati sulle nuove funzionalit\u00e0 di ROS2 e di provarle in vista del rilascio di una versione stabile e completa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-retour-en-arriere-qu-est-ce-que-ros\">Un passo indietro: che cos\u2019\u00e8 ROS?<\/h2>\n\n\n\n\n<p>Robot Operating System (ROS) \u00e8 un insieme di librerie software e strumenti open-source che permettono di creare applicazioni robotiche. Dai driver agli algoritmi avanzati, e ai potenti strumenti di sviluppo, ROS ha quello che serve per il vostro futuro progetto di robotica.\n\n<\/p><p>Per maggiori informazioni, la lettura del nostro precedente <a class=\"catalogue\" title=\"articolo su ROS\" href=\"\/blog\/en\/ros-robot-operating-system-2\/\"> articolo su ROS<\/a> vi dar\u00e0 una panoramica di cos&rsquo;\u00e8 ROS, dei suoi protocolli di comunicazione e degli strumenti disponibili per ottimizzare i suoi sviluppi.\n\n\n\n\n\n<\/p><p>Per testare ROS2, innanzitutto sar\u00e0 necessario installare Ubuntu (se non lo avete gi\u00e0 fatto). Attenzione all&rsquo;installazione della versione di Ubuntu, in funzione di quest&rsquo;ultima, cambier\u00e0 la distribuzione di ROS\/ROS2:\n\n\n\n\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td><strong> Versione Ubuntu <\/strong><\/td>\n<td><strong> Distribuzione ROS <\/strong><\/td>\n<td><strong> Distribuzione ROS2 <\/strong><\/td>\n<\/tr>\n<tr>\n<td>Ubuntu 16.04 &#8211; <a class=\"catalogue\" title=\"Ubuntu Xenial Installation\" href=\"https:\/\/tutorials.ubuntu.com\/tutorial\/tutorial-install-ubuntu-desktop-1604#0\" target=\"_blank\" rel=\"noopener noreferrer\"> Xenial <\/a><\/td>\n<td><a class=\"catalogue\" title=\"ROS Kinetic Installation\" href=\"http:\/\/wiki.ros.org\/kinetic\" target=\"_blank\" rel=\"noopener noreferrer\"> Kinetic <\/a><\/td>\n<td><a class=\"catalogue\" title=\"ROS2 Bouncy Installation\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Releases\/Release-Bouncy-Bolson\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Bouncy <\/a> &amp; <a class=\"catalogue\" title=\"ROS2 Crystal Installation\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Releases\/Release-Crystal-Clemmys\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Crystal <\/a><\/td>\n<\/tr>\n<tr>\n<td>Ubuntu 18.04 &#8211; <a class=\"catalogue\" title=\"Ubuntu Bionic Installation\" href=\"https:\/\/tutorials.ubuntu.com\/tutorial\/tutorial-install-ubuntu-desktop#0\" target=\"_blank\" rel=\"noopener noreferrer\"> Bionic <\/a><\/td>\n<td><a class=\"catalogue\" title=\"ROS Melodic Installation\" href=\"http:\/\/wiki.ros.org\/melodic\" target=\"_blank\" rel=\"noopener noreferrer\"> Melodic <\/a><\/td>\n<td><a class=\"catalogue\" title=\"ROS2 Crystal Installation\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Releases\/Release-Crystal-Clemmys\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Crystal <\/a> &amp; <a class=\"catalogue\" title=\"ROS2 Dashing Installation\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Releases\/Release-Dashing-Diademata\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Dashing <\/a><\/td>\n<\/tr>\n<tr>\n<td>Ubuntu 19.04 &#8211; Disco<\/td>\n<td>X<\/td>\n<td>X<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n\n<\/p><p>Nei vari link sopra presenti, troverete altri tutorial per installare <strong>ROS<\/strong>. <br \/>Se volete provare delle versioni precedenti o pi\u00f9 recenti, potrete utilizzare <strong> <a class=\"catalogue\" title=\"ROS\/ROS2 Image Docker\" href=\"https:\/\/hub.docker.com\/r\/osrf\/ros\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Docker images<\/a><\/strong>.\n\n\n\n\n\n<\/p><p>Docker ne semplifica la creazione, il deployment e l&rsquo;esecuzione delle applicazioni utilizzando <strong>container<\/strong>. Questi ultimi permettono di impacchettare un&rsquo;applicazione con le librerie e le altre <strong>dipendenze<\/strong> necessarie.\n\n\n\n\n\n<\/p><p>Docker funziona un po\u2019 come una <strong>macchina virtuale<\/strong>. Ma invece di creare un intero sistema operativo virtuale, Docker consente alle applicazioni di utilizzare lo stesso kernel Linux del sistema su cui vengono eseguite. Un container Docker esegue un\u2019immagine Docker, che \u00e8 un file composto da diversi strati di librerie e dipendenze.\n\n\n\n\n\n<\/p><p>Vi consigliamo di lavorare con le immagini Docker di ROS2 durante i vostri test, per non rischiare di compromettere l&rsquo;ambiente ROS. Una volta che il vostro computer funziona con Ubuntu e ROS \u00e8 pronto all\u2019uso, per iniziare potete andare sui <a class=\"catalogue\" title=\"ROS Tutorial\" href=\"http:\/\/wiki.ros.org\/ROS\/Tutorials\" target=\"_blank\" rel=\"noopener noreferrer\"> tutorial ROS<\/a>.\n\n\n<h2 class=\"wp-block-heading\" id=\"h-l-histoire-de-ros-pour-expliquer-ros2\">La storia di ROS per spiegare ROS2<\/h2>\n\n\n\n\n<\/p><p>L\u2019ambiente ROS \u00e8 stato sviluppato da Willow Garage per il suo robot PR2, un robot umanoide in grado di navigare autonomamente in un ambiente conosciuto. \n\n\n\n\n\n<\/p><p>In quel momento, i suoi creatori sapevano che il PR2 non sarebbe stato il solo robot sul mercato. Piuttosto che sviluppare un programma specifico per il PR2, decisero di implementare un software generico e adattabile, in modo da poterlo migliorare o modificare ulteriormente in seguito. Lavorarono quindi su un middleware, ROS, definendo livelli di astrazione utilizzabili anche per altri robot.\n\n\n\n\n\n<\/p><p>Per fare ci\u00f2, si basarono su alcune caratteristiche del robot PR2:\n\n\n\n\n<ul class=\"wp-block-list\">\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Un solo robot<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Nessuna esigenza in tempo reale<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Eccellente connettivit\u00e0 di rete<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Massima flessibilit\u00e0 (funziona ad esempio sia su basi mobili che su robot umanoidi)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n\n\n\n<\/p><p>Oggi ROS \u00e8 utilizzato non solo per robot PR2 o robot simili, ma anche su <a class=\"catalogue\" title=\"robots mobiles autonomes\" href=\"\/it\/533-robot-mobili\"> robot mobili <\/a> di qualsiasi dimensione: <a class=\"catalogue\" title=\"Humano\u00efdes et interaction homme-robot\" href=\"\/it\/545-robot-umanoidi\"> umanoidi<\/a>, <a class=\"catalogue\" title=\"Robots collaboratifs\" href=\"\/it\/213-manipolatori-e-bracci-robotici\"> bracci industriali<\/a>, <a class=\"catalogue\" title=\"Robots mobiles outdoor\" href=\"\/it\/352-robot-mobili-outdoor\"> robot mobili outdoor <\/a> e veicoli aerei.<\/p>\n\n\n\n\n\n<p><strong> In seguito, ROS \u00e8 stato adattato in altri ambiti, oltre alla comunit\u00e0 di ricerca accademica a cui era inizialmente destinato.<\/strong><\/p>\n\n\n\n\n\n<p><\/p><p>Sempre pi\u00f9 robot basati su ROS vengono proposti sul mercato da produttori specializzati, e anche le agenzie governative stanno investendo su ROS per l\u2019integrazione nei loro sistemi.<\/p>\n\n\n\n<p>Tutti questi utenti hanno per\u00f2 finito per scontrarsi con i limiti di ROS, progettato in funzione delle caratteristiche del PR2 (vedi sopra). Motivo per il quale la comunit\u00e0 ha ritenuto opportuno sviluppare una piattaforma migliore, in grado di rispondere alle nuove esigenze dei robot:<\/p>\n\n\n\n\n<ul class=\"wp-block-list\">\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Flotte di robot che collaborano tra loro<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Software integrato su piccole schede elettroniche<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Sistemi in tempo reale<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Reti instabili<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Ambienti di produzione<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n\n\n\n<p>Un&rsquo;altra ragione per integrare ROS2 \u00e8 quello di cogliere l&rsquo;opportunit\u00e0 di migliorare le API orientate agli utenti. In tal modo, sar\u00e0 possibile creare nuove API che incorporano il meglio dell\u2019esperienza maturata dalla comunit\u00e0 con le API di prima generazione.<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-pourquoi-ne-pas-juste-ameliorer-ros\">Perch\u00e9 non limitarsi a migliorare ROS?<\/h2>\n\n\n\n\n<p>I cambiamenti descritti sopra potrebbero effettivamente essere integrati nel nucleo del codice esistente. Questa opzione \u00e8 stata infatti presa in considerazione, ma data la natura invasiva dei cambiamenti, modificare l\u2019attuale sistema di ROS potrebbe causare gravi <strong>malfunzionamenti nelle applicazioni sviluppate dai numerosi membri della comunit\u00e0.<\/strong><\/p>\n\n\n\n\n\n<p>Per questo motivo, ROS non dovrebbe subire variazioni, mentre ROS2 verr\u00e0 costruito come un insieme di package che potranno essere installati in parallelo, senza interferire con ROS.<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-qui-devrait-passer-sous-ros2-des-a-present\">Chi dovrebbe passare a ROS2 fin da subito?<\/h2> \n\n\n\n\n<p><strong> Ricercatori <\/strong> A meno che la pubblicazione non riguardi le prestazioni o le funzionalit\u00e0 di ROS2, sarebbe opportuno per il momento attenersi a ROS.\n\n\n\n\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td><strong> Studenti <\/strong><\/td>\n<td>Dovranno attualmente continuare a lavorare con ROS a causa della mancanza di package compatibili e della stabilit\u00e0  complessiva. <br \/>Tra non molto, ROS2 sar\u00e0 pronto ad essere adottato su larga scala. ROS e ROS2 a loro volta condividono molteplici concetti, per questo sar\u00e0 possibile sfruttare le conoscenze acquisite quando vi sar\u00e0 il passaggio a ROS2.<\/td>\n<\/tr>\n<tr>\n<td><strong> Insegnanti <\/strong><\/td>\n<td>Al momento dovranno continuare ad insegnare ROS, restando aggiornati sulle novit\u00e0 di ROS2.\n<br \/>Tuttavia, si consiglia di familiarizzare con ROS2 almeno attraverso i vari tutorial disponibili, per essere pronti nel momento in cui sar\u00e0 rilasciata la versione definitiva di ROS2. In termini di attrezzature, la piattaforma TurtleBot 3 potrebbe rappresentare un&rsquo;opzione interessante, grazie alla sua compatibilit\u00e0 sia con ROS che con ROS2.<\/td>\n<\/tr>\n<tr>\n<td><strong> Ricercatori <\/strong><\/td>\n<td>A meno che la pubblicazione non riguardi le prestazioni o le funzionalit\u00e0 di ROS2, sarebbe opportuno per il momento attenersi a ROS.<\/td>\n<\/tr>\n<tr>\n<td><strong> Imprese <\/strong><\/td>\n<td>Dovrebbero seriamente prendere in considerazione il passaggio a ROS2 per ridurre la quantit\u00e0 di trasferimento di codice in futuro. Il progetto dovrebbe essere affidato a utenti esperti di ROS.<\/td>\n<\/tr>\n<tr>\n<td><strong> Produttori <\/strong><\/td>\n<td>\u00c8 il momento giusto per cambiare. ROS2 Dashing \u00e8 la prima versione LTS, quindi ora \u00e8 possibile iniziare a portare i driver in tutta tranquillit\u00e0.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-quelques-differences-importantes-entre-ros-et-ros2\">Quali sono le differenze importanti tra ROS e ROS2 <\/h2>\n\n\n\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td><strong> Applicazioni  <\/strong><\/td>\n<td><strong> ROS <\/strong><\/td>\n<td><strong> ROS2 <\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong> Piattaforme  <\/strong><\/td>\n<td>Testato su Ubuntu\nSupportato anche su altre versioni di Linux e su OS X<\/td>\n<td>Attualmente testato e supportato su Ubuntu Xenial, OS X El Capitan e Windows 10<\/td>\n<\/tr>\n<tr>\n<td><strong> C++ <\/strong><\/td>\n<td>C++03 \/\/ non sfrutta le funzionalit\u00e0 di C++11 nelle sue API<\/td>\n<td>Utilizza principalmente C++11\nSi \u00e8 iniziato a utilizzare C++14 e si prevede l\u2019uso di C++17<\/td>\n<\/tr>\n<tr>\n<td><strong> Python <\/strong><\/td>\n<td>Cible Python 2<\/td>\n<td>&gt;= Python 3.5<\/td>\n<\/tr>\n<tr>\n<td><strong> Middleware <\/strong><\/td>\n<td>Formato di serializzazione personalizzato (protocollo di trasporto + meccanismo di discovery centralizzato)<\/td>\n<td>Attualmente, tutte le implementazioni di questa interfaccia si basano sullo standard DDS<\/td>\n<\/tr>\n<tr>\n<td><strong> Sincronizzazione del tempo e delle durate <\/strong><\/td>\n<td>I tipi di durata e tempo sono definiti nelle librerie clienti, codificati in C++ e Python\t<\/td>\n<td>Questi tipi sono definiti come messaggi e sono quindi coerenti tra i diversi linguaggi di programmazione<\/td>\n<\/tr>\n<tr>\n<td><strong> Componenti con ciclo di vita <\/strong><\/td>\n<td>Ogni nodo ha generalmente la sua funzione principale.<\/td>\n<td>Il ciclo di vita pu\u00f2 essere utilizzato da strumenti come roslaunch per avviare in modo deterministico un sistema composto da molti componenti<\/td>\n<\/tr>\n<tr>\n<td><strong> Modello multi-thread <\/strong><\/td>\n<td>Il programmatore pu\u00f2 scegliere solo tra esecuzione single-thread o multi-thread.<\/td>\n<td>Sono disponibili modelli di esecuzione pi\u00f9 raffinati e possono essere implementati facilmente esecutori personalizzati.<\/td>\n<\/tr>\n<tr>\n<td><strong> Nodi multipli <\/strong><\/td>\n<td>Non \u00e8 possibile creare pi\u00f9 di un nodo all\u2019interno di un singolo processo.<\/td>\n<td>\u00c8 possibile creare pi\u00f9 nodi all\u2019interno dello stesso processo<\/td>\n<\/tr>\n<tr>\n<td><strong> roslaunch <\/strong><\/td>\n<td>I file roslaunch sono definiti in XML con capacit\u00e0 molto limitate.<\/td>\n<td>I file di lancio sono scritti in Python, permettendo l\u2019uso di logiche pi\u00f9 complesse come le condizioni, ecc.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-quel-dds-pour-ros2\">DDS compatibili con ROS2<\/h2>\n\n\n\n\n<\/p><p>ROS2 utilizza un DDS (Data Distribution Service) per la pubblicazione e la sottoscrizione, al posto di un gestore di messaggi personalizzato. Questo migliora le prestazioni di trasmissione con gli aggiornamenti DDS.\nPoich\u00e9 il DDS pu\u00f2 influenzare il comportamento di ROS2, sar\u00e0 necessario scegliere la versione pi\u00f9 adatta alle specifiche del proprio progetto tra i diversi DDS esistenti.<\/p>\n<p>Ecco alcune entit\u00e0 DDS:\n\n\n\n\n<ul class=\"wp-block-list\">\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>FastRTPS \/ eProsima<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Vortex OpenSplice \/ ADLINK Technology<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Connext \/ RTI<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>CoreDX \/ Twin Oaks<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Cyclone DDS \/ Eclipse<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n\n\n\n<\/p><p>Ulteriori informazioni sui DDS sono disponibili nell\u2019articolo di Rover Robotics e su ROS2 on DDS (vedi sotto).<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-gestion-des-noeuds-dans-ros2\">Gestione dei nodi in ROS2<\/h2>\n\n\n\n\n<p>Una delle caratteristiche principali introdotte in ROS2 \u00e8 la gestione del ciclo di vita dei nodi, pensata per offrire un migliore controllo dello stato del sistema ROS. \nInfatti, questa funzionalit\u00e0 permetter\u00e0 a roslaunch di assicurarsi che tutti i componenti siano stati istanziati correttamente prima di autorizzare un componente a iniziare l\u2019esecuzione del proprio comportamento.\nConsentir\u00e0 inoltre di riavviare o sostituire i nodi durante l\u2019esecuzione.\n<br \/>Si tratta di una caratteristica essenziale per la sicurezza dei robot.\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mise-en-oeuvre-de-ros2-plateforme-tutoriels\">Implementazione di ROS2 \u2013 Piattaforma\/Tutorial<\/h2>\n\n\n\n\n<\/p><p>Ogni robot e componente compatibile con ROS sar\u00e0 compatibile con ROS2 non appena saranno disponibili i driver, i package e gli SDK per le implementazioni di ROS2.<\/p>\n\n\n\n\n\n\n<p><a class=\"catalogue\" title=\"Robotis\" href=\"\/it\/81_robotis\"> Robotis <\/a> \u00e8 una delle prime aziende ad essersi lanciata in ROS2. In passato, i suoi esperti di robotica hanno sviluppato dei tutorial di qualit\u00e0 per l&rsquo;apprendimento di ROS sul primo TurtleBot.<\/p>\n\n\n\n\n\n<p>Con i <a class=\"catalogue\" title=\"Turtlebot3 Burger ROS\/ROS2\" href=\"\/it\/402707-turtlebot3-burger.html\"> TurtleBot 3 Burger <\/a> e <a class=\"catalogue\" title=\"Turtlebot3 Waffle Pi ROS\/ROS2\" href=\"\/it\/402886-turtlebot-3-waffle-pi.html\"> Turtlebot 3 Waffle Pi <\/a>, Robotis ha lavorato su un tutorial per scoprire ROS2 e implementare la navigazione dei robot:<\/p>\n\n\n\n\n<ul class=\"wp-block-list\">\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 TurtleBot3 Tutorial Installazione\" href=\"https:\/\/ros2-industrial-workshop.readthedocs.io\/en\/latest\/_source\/navigation\/ROS2-Turtlebot.html\" target=\"_blank\" rel=\"noopener noreferrer\"> TurtleBot 3 &#8211; Installazione <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 TurtleBot3 GitHub\" href=\"https:\/\/github.com\/ROBOTIS-GIT\/turtlebot3\/tree\/ros2\" target=\"_blank\" rel=\"noopener noreferrer\"> TurtleBot 3 &#8211; GitHub <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n\n\n\n<p>Robotis ha sviluppato il proprio package per il TurtleBot 3. Sul loro GitHub, hanno collegato pagine wiki e codice open source. Questo rende il TurtleBot 3 un&rsquo;ottima piattaforma per imparare a usare ROS2, sia che siate principianti sia che siate sviluppatori esperti. <\/p>\n\n\n\n\n\n<p>Se avete ancora a disposizione un TurtleBot 2, potete usare anche ROS2. Infatti, Robotics ha pubblicato una <a class=\"catalogue\" title=\"ROS2 TurtleBot2 Demo Tutorial\" href=\"https:\/\/github.com\/ros2\/turtlebot2_demo\" target=\"_blank\" rel=\"noopener noreferrer\"> dimostrazione pratica di ROS2 per TurtleBot2 <\/a>.<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-comment-migrer-depuis-ros-vers-ros2\">Come migrare da ROS a ROS2<\/h2>\n\n\n\n\n<p>Esistono due diversi tipi di migrazione dei pacchetti ROS:<\/p>\n\n\n\n\n<ul class=\"wp-block-list\">\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Migrare il codice sorgente di un pacchetto ROS esistente a ROS2 con l&rsquo;intenzione che una parte significativa del codice sorgente rimanga identica o almeno simile;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li>Implementare la stessa o simile funzionalit\u00e0 di un pacchetto ROS per ROS2, ma con l&rsquo;ipotesi che il codice sorgente risulti significativamente diverso.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n\n\n\n<p>Attualmente il primo tipo di migrazione del codice sorgente \u00e8 ancora molto poco documentato.<\/p>\n\n<p>Si consiglia di consultare questo <a class=\"catalogue\" title=\"ROS to ROS2 Migration Guide\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Contributing\/Migration-Guide\/\" target=\"_blank\" rel=\"noopener noreferrer\"> articolo <\/a> che si concentra sul secondo caso e descrive i passaggi necessari da seguire per migrare un pacchetto ROS verso ROS2. Tuttavia, non si tratta di una guida passo-passo per la migrazione, ma piuttosto di una guida per utenti esperti.<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ressources-pour-le-middleware-ros2\">Risorse per il middleware di ROS2<\/h2>\n\n\n\n\n<p>Desiderate maggiori approfondimenti?\n<br \/>Ecco alcune risorse utili per aiutarvi a fare il passo successivo!\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ressources-officielles\">Risorse Ufficiali<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Main Page\" href=\"https:\/\/index.ros.org\/doc\/ros2\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Pagina principale <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Tutorials\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Tutorials\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Tutorial <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Features Status\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Features\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Stato delle funzionalit\u00e0 <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Distribution Releases\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Releases\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Distribuzioni <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Installation\" href=\"https:\/\/index.ros.org\/doc\/ros2\/Installation\/Crystal\/Linux-Install-Binary\/\" target=\"_blank\" rel=\"noopener noreferrer\"> Installazione <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Command Line\" href=\"https:\/\/ubuntu.com\/blog\/ros-2-command-line-interface\" target=\"_blank\" rel=\"noopener noreferrer\"> Comandi <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Awesome Links\" href=\"https:\/\/github.com\/fkromer\/awesome-ros2#packages\" target=\"_blank\" rel=\"noopener noreferrer\"> Github <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 GitHub\" href=\"https:\/\/github.com\/ros2?page=2\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub di ROS2<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Benchmarking\" href=\"https:\/\/github.com\/piappl\/ros2_benchmarking\" target=\"_blank\" rel=\"noopener noreferrer\"> Benchmarking di ROS2<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 Performances\" href=\"https:\/\/github.com\/ApexAI\/performance_test\" target=\"_blank\" rel=\"noopener noreferrer\"> Test delle prestazioni di ROS2 <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"PDF ROS2 Pr\u00e9sentation\" href=\"https:\/\/www.osrfoundation.org\/wordpress2\/wp-content\/uploads\/2015\/04\/ROSCON-2014-Why-you-want-to-use-ROS-2.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"> Presentazione <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul>\n \t<li style=\"list-style-type: none;\">\n<ul>\n \t<li><a class=\"catalogue\" title=\"ROS2 DDS\" href=\"https:\/\/design.ros2.org\/articles\/ros_on_dds.html\" target=\"_blank\" rel=\"noopener noreferrer\"> ROS on DDS <\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tutoriels-pour-ros2\">Tutorial per ROS2<\/h3>\n\n\n\n\n<\/p><p>L&rsquo;azienda Rover Robotics lavora su ROS2 e ha pubblicato sul suo blog un <a class=\"catalogue\" title=\"ROS2 Tutorial Rover Robotics\" href=\"https:\/\/blog.roverrobotics.com\/navigation2-now-were-getting-somewhere\/\" target=\"_blank\" rel=\"noopener noreferrer\"> tutorial <\/a> sulle ultime novit\u00e0 per implementare la navigazione su ROS2. In questo articolo, troverete molte informazioni utili riguardanti gli ultimi malfunzionamenti di ROS2, i vantaggi e gli inconvenienti dei vari DDS, su come eseguire le dimostrazioni e altri consigli pratici. <\/p>\n<p>Potete anche consultare il <a class=\"catalogue\" title=\"ROS2 The Construct Website\" href=\"https:\/\/www.theconstructsim.com\/category\/ros2-tutorials\/\" target=\"_blank\" rel=\"noopener noreferrer\"> sito <\/a> \u00ab\u00a0The Construct\u00a0\u00bb, dove sono stati pubblicati alcuni articoli sulla configurazione di ROS2.<\/p>\n\n\n\n\n\n<p><a class=\"catalogue\" title=\"ROS2 Gazebo Tutorial\" href=\"http:\/\/gazebosim.org\/tutorials?tut=ros2_overview\" target=\"_blank\" rel=\"noopener noreferrer\"> Gazebo<\/a>, il noto ambiente di simulazione, \u00e8 disponibile su ROS2. Per ulteriori informazioni, consultare questo <a class=\"catalogue\" title=\"ROS2 Gazebo Tutorial\" href=\"https:\/\/www.infoq.com\/articles\/ros-2-gazebo-tutorial\/\" target=\"_blank\" rel=\"noopener noreferrer\"> articolo<\/a>.<\/p><p>\n\n\n\n\n\n<\/p><p>Infine, \u00e8 possibile consultare il sito <a class=\"catalogue\" title=\"ROS2 Gazebo GitHub\" href=\"https:\/\/github.com\/ros-simulation\/gazebo_ros_pkgs\/wiki\" target=\"_blank\" rel=\"noopener noreferrer\"> GitHub di Gazebo<\/a>.\n\n<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Oggi, esistono solo due versioni del middleware ROS: ROS e ROS2. La prima versione di ROS \u00e8 talvolta chiamata ROS1. In questo articolo chiameremo la prima versione \u00ab\u00a0ROS\u00a0\u00bb e la seconda versione \u00ab\u00a0ROS2\u00a0\u00bb. Riteniamo importante, per\u00f2, ricordare che ROS2 \u00e8 attualmente in fase di sviluppo. Alcuni package sono gi\u00e0 stati pubblicati, ma la maggior parte[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/it\/ros2-cosa-cambia-rispetto-a-ros\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":7000,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10698],"tags":[],"class_list":["post-20677","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-notizie-sulla-robotica"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/20677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=20677"}],"version-history":[{"count":64,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/20677\/revisions"}],"predecessor-version":[{"id":20742,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/20677\/revisions\/20742"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/7000"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=20677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=20677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=20677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}