Benvenuto a ROS 2.0
Lo avevo provato qualche tempo fa, quando era ancora alla seconda release alpha, e poi mi sono disinteressato al progetto e l'ho seguito da molto lontano. Ma finalmente, all'inizio di quest'anno, la prima release stabile, ROS Ardent Apalone e io ho finalmente la possibilità di metterci le mani sopra!
Aspetta un momento, di cosa si parla? Non eravamo a ROS Lunar?
Immagino che molti che non seguono assiduamente il mondo ROS stiano iniziando a farsi un po' di domande, perciò andiamo con ordine.
ROS nasce storicamente con un ben preciso obiettivo: Fare Ricerca sulla Robotica, o meglio, abilitare e semplificare la ricerca della robotica di servizio. La prima versione di ROS è nata quindi con l'università in testa, non l'industria, ed il progetto si è poi evoluto a partire da una base che aveva in mente questo obiettivo.
Probabilmente gli stessi ideatori originali di ROS non immaginavano quello che ROS sarebbe diventato e cosa avrebbe rappresentato: un progetto di dimensioni planetarie che esce dal mondo puramente universitario e approda nel mondo industriale, dove standard di funzionamento, robustezza e sicurezza sono necesssari. Contemporaneamente, l'evoluzione della ricerca, il crescente interesse e l'enorme community di Robot Developers creatasi intorno a ROS hanno dato vita a nuovi casi d'uso, e ROS ha iniziato a mostrare i primi segni di immaturità. Le critiche su ROS fioccano, e sono più o meno le seguenti:
- non è Robusto
- non è Real Time
- è complesso da apprendere
- non usa protocolli e pattern adeguati
- è un casino quando lavori con più di due robot
- è basato su Python 2
- ecc.
E sono tutte critiche giustissime, che anche io, da sviluppatore ed entusiasta del progetto, noto ogni giorno.
Nel tempo, la community si è data da fare, e sono uscite varie patch che tentavano di risolvere i vari limiti che ROS ha:
- Serve creare interfacce web per i robot? Inventiamo ROSBridge.
- Serve far comuncare ROS con microcontrollori? Inventiamo ROSSerial.
- Serve far lavorare insieme 20 robot ma evitare che se il master perde la connessione si rompa tutto? Inventiamo Robot In Concert.
Ad un certo punto, ci si è resi conto che era necessario un profondo ripensamento alla base di ROS, e è quindi nato ROS 2.0, che non è altro che una completa reimplementazione di ROS, partendo dalle stesse basi del progetto originale ma includendo le nuove tecnologie, i nuovi casi d'uso e dandogli un taglio più molto più robusto e industriale. Trovate qui un interessante articolo che spiega nel dettaglio le motivazioni.
Guardate che bella l'architettura :D
ROS 2.0 Ardent Apalone, primi test. Ha senso migrare?
ROS 2.0 è in fare di sviluppo da circa 2 anni e mezzo, e finalmente, come detto sopra, è stata rilasciata la prima release stabile.
Ed io non ho perso tempo per installarla.
Iniziano ad esserci dentro un po' di chicche e carinerie varie:
- Nativo su Python 3.0 (finally)
- Supporto a molti linguaggi di programmazione, anche se la base è ancora C++ e Python
- Linux RT
- eccetera
Al momento mi sono limitato a leggere la doc e iniziare ad installarlo sul mio PC (nel momento in cui scrivo sto aspettando il download dei vari pacchetti). Ecco alcune cose che ho capito..
Al momento, ROS 2 include solo quello che in ROS è chiamato core, cioè l'insieme dei funzionamenti base che abilitano la comunicazione e la gestione dei pacchetti. Da ora in avanti seguirà la parte di migrazione e sapremo probabilmente solo tra qualche mese se sarà approvato ed utilizzato dalla community (la forza di ROS è la community, non ROS in se).
Ancora quindi non ha troppo senso iniziare a guardarlo, ma certamente io lo farò per interesse e per divertimento. Se il progetto prenderà veramente il posto per cui è nato, cioè una naturale evoluzione del ROS originale, è sicuramente un'ottimo momento per iniziare a contribuirci!
:D
Video
Vi lascio con un video in cui spiego cosa ne penso e le prime impressioni a caldo dopo averlo provato!
Le repo citate nel video sono le seguenti: