Capitolo 1 : Sistema operativo del robot
Il Robot Operating System, noto anche come ROS o ros, è una suite di middleware open-source per il calcolo robotico. Nonostante il fatto che ROS non sia un sistema operativo (OS), ma piuttosto un insieme di framework software per lo sviluppo di software robotici, offre servizi destinati a un cluster di computer eterogeneo. Questi servizi includono l'astrazione dell'hardware, il controllo dei dispositivi di basso livello, l'implementazione di funzionalità di uso comune, il passaggio di messaggi tra i processi e la gestione dei pacchetti. L'architettura a grafo viene utilizzata per rappresentare l'esecuzione di insiemi di processi basati su ROS. L'elaborazione avviene in nodi in grado di ricevere, inviare e multiplexare i dati dei sensori, il controllo, lo stato, la pianificazione, l'attuatore e altri segnali. L'architettura a grafo viene utilizzata anche per rappresentare l'architettura della rete. ROS non è un sistema operativo in tempo reale (RTOS), nonostante il fatto che la reattività e la bassa latenza siano estremamente importanti nel contesto del sistema di controllo robotico. Tuttavia, è possibile incorporare ROS con il codice utilizzato per il calcolo in tempo reale. L'assenza di supporto per i sistemi in tempo reale è stata affrontata attraverso lo sviluppo di ROS 2, che rappresenta un aggiornamento significativo dell'interfaccia di programmazione delle applicazioni (API) di ROS. ROS 2 farà uso di librerie e tecnologie contemporanee per le attività ROS di base e aggiungerà anche il supporto per il codice applicativo in tempo reale e l'hardware del sistema embedded.
Il software dell'ecosistema ROS può essere suddiviso in tre categorie, che sono le seguenti:
Come risultato del fatto di essere forniti secondo le regole della licenza BSD, gli strumenti indipendenti dal linguaggio e le librerie client primarie (C++, Python e Lisp) sono software open source che è gratuito per l'uso sia in contesti commerciali che di ricerca. La stragrande maggioranza degli altri pacchetti è concessa in licenza con una serie di diverse licenze open source. Questi pacchetti aggiuntivi sono responsabili dell'implementazione delle funzionalità e delle applicazioni che vengono spesso utilizzate. Questi includono driver hardware, modelli di robot, tipi di dati, pianificazione, percezione, localizzazione e mappatura simultanea (SLAM), strumenti di simulazione e vari algoritmi.
Le librerie client ROS primarie sono progettate per funzionare con un sistema simile a Unix. Ciò è dovuto principalmente al fatto che dipendono da set completi di applicazioni software open source. La distribuzione Ubuntu Linux è indicata come "Supportata" per alcune librerie client, mentre altri sistemi operativi, come Fedora Linux, macOS e Microsoft Windows, sono indicati come "sperimentali" e sono supportati dalla comunità. Le applicazioni basate su ROS possono ora essere create per il sistema operativo Android grazie alla libreria client nativa Java ROS nota come rosjava. Questa libreria non condivide questi vincoli con altre librerie client ROS. Inoltre, rosjava ha reso possibile l'incorporazione di ROS in un toolbox MATLAB ufficialmente supportato. Questa cassetta degli attrezzi è compatibile con Linux, macOS e Microsoft Windows. Inoltre, è stata sviluppata una libreria client JavaScript nota come roslibjs. Questa libreria consente di incorporare applicazioni in un sistema ROS utilizzando qualsiasi browser web coerente con gli standard.
L'Università di Stanford è stata il luogo in cui i componenti iniziali di quello che in seguito sarebbe diventato ROS hanno iniziato a riunirsi ad un certo punto prima del 2007. A quel tempo, il Personal Robotics Program era diretto da Eric Berger e Keenan Wyrobek, entrambi studenti di dottorato presso la Stanford University e che lavoravano nel laboratorio di robotica di Kenneth Salisbury. Mentre lavoravano sui robot per eseguire attività di manipolazione in ambienti umani, i due studenti hanno notato che molti dei loro colleghi erano ostacolati dalla natura diversificata della robotica. Ad esempio, un eccellente sviluppatore di software potrebbe non avere la conoscenza necessaria dell'hardware e qualcuno che sta sviluppando una pianificazione del percorso all'avanguardia potrebbe non sapere come eseguire la visione artificiale necessaria. Nel tentativo di trovare una soluzione a questo problema, i due studenti decisero di creare un sistema di base che servisse come base su cui altri accademici potessero costruire i propri sistemi. Secondo Eric Berger, "qualcosa che non ha fatto schifo, in tutte queste diverse dimensioni" riassume bene la situazione.
I due individui hanno mosso i primi passi verso questo sistema unificante costruendo il PR1 come prototipo hardware e poi iniziando a lavorare su un software basato su di esso. Lo hanno fatto prendendo in prestito le migliori pratiche da altri primi framework software robotici open source, in particolare switchyard, che era un sistema su cui Morgan Quigley, un altro studente di dottorato di Stanford, aveva lavorato a sostegno dello Stanford Artificial Intelligence Robot (STAIR) dello Stanford Artificial Intelligence Laboratory. Il finanziamento iniziale per un importo di cinquantamila dollari statunitensi è stato fornito da Joanna Hoffman e Alain Rossmann, che hanno facilitato la creazione del PR1. Mentre cercavano fondi per un ulteriore sviluppo, Eric Berger e Keenan Wyrobek hanno incontrato Scott Hassan, il fondatore di Willow Garage, un incubatore tecnologico che stava lavorando su un SUV autonomo e una barca autonoma solare. Entrambi questi progetti erano in fase di sviluppo. L'idea che Berger e Wyrobek avevano di un "Linux per la robotica" era condivisa da Hassan, che li invitò ad accettare un impiego presso Willow Garage. Willow Garage è stata fondata nel gennaio del 2007 e il 7 novembre dello stesso anno è stato effettuato il primo commit del codice ROS a SourceForge.
Come seguito del PR1, Willow Garage ha iniziato a lavorare sul robot PR2 e ROS doveva essere il software che sarebbe stato utilizzato per farlo funzionare. Un numero crescente di pacchetti che si integravano con ROS per creare un ecosistema software più ampio sono stati sviluppati con il contributo di più di venti diverse istituzioni. Questi contributi includevano sia il software di base che il numero crescente di pacchetti. A causa del fatto che persone al di fuori di Willow stavano contribuendo a ROS, in particolare dal progetto STAIR di Stanford, ROS è stato progettato fin dall'inizio per essere una piattaforma in grado di supportare diversi robot. Sebbene Willow Garage avesse lavorato ad altri progetti in passato, questi progetti sono stati abbandonati a favore del Personal Robotics Program. L'obiettivo principale del programma era quello di sviluppare il PR2 come piattaforma di ricerca per le istituzioni accademiche e ROS come uno stack di robotica open source che servisse come base sia per la ricerca accademica che per le startup tecnologiche. Questo era simile a come lo stack LAMP è servito come base per le startup basate sul web.
La prima delle tre pietre miliari interne di Willow Garage è stata raggiunta nel dicembre 2008 e consisteva in una navigazione continua per il PR2 per un periodo di due giorni e una distanza di pi chilometri. Poco dopo, una prima versione di ROS, nota come 0.4 Mango Tango, è stata resa disponibile al pubblico. Questo è stato seguito dalla documentazione iniziale RVIZ e dal documento iniziale sui ROS. All'inizio dell'estate è stata raggiunta la seconda pietra miliare interna, ovvero la capacità del PR2 di spostarsi sul posto di lavoro, aprire le porte e collegarsi contemporaneamente. Il lancio del sito web ROS.org è arrivato sulla scia di questo evento, che si è svolto ad agosto. Quando ROS 1.0 è stato rilasciato nel gennaio 2010, le prime lezioni sul sistema operativo sono state pubblicate a dicembre, in preparazione del suo rilascio. Si è trattato della terza pietra miliare, che consisteva nello sviluppo di una grande quantità di documentazione e tutorial per le straordinarie capacità che gli ingegneri di Willow Garage avevano prodotto nel corso dei tre anni precedenti.
Di conseguenza, Willow Garage è stata in grado di realizzare uno dei suoi obiettivi di lunga data, ovvero donare dieci robot PR2 a prestigiosi istituti di istruzione superiore. Fin dall'inizio, questo era stato uno degli obiettivi primari dei creatori, poiché credevano che il PR2 avesse il potenziale per avviare la ricerca sulla robotica in tutto il mondo. Hanno finito per assegnare undici PR2 a diverse istituzioni, tra cui l'Università di Friburgo (Germania), Robert Bosch GmbH, Georgia Institute of Technology, KU Leuven (Belgio), Massachusetts Institute of Technology (MIT), Stanford University, Technical University of Munich (Germania), University of California, Berkeley, University of Pennsylvania, University of Southern California (USC) e University of Tokyo (Giappone). Tutto questo, in combinazione con il programma di tirocinio estremamente fruttuoso offerto da Willow Garage (che Melonee Wise ha supervisionato dal 2008 al 2010), ha contribuito alla diffusione di informazioni sui ROS in tutta la comunità della robotica. ROS Box Turtle, la prima versione ufficiale della distribuzione ROS, è stata resa disponibile al pubblico il 2 marzo 2010. Questo evento ha segnato la prima volta che ROS è stata formalmente fornita con una raccolta di pacchetti versionati per l'uso da parte del pubblico. Come risultato di questi risultati, sono stati creati il primo veicolo autonomo a eseguire ROS, il primo drone a eseguire ROS e l'adattamento di ROS per Lego Mindstorms. Il robot PR2 è stato ufficialmente reso disponibile per l'acquisto da parte del grande pubblico il 9 settembre 2010, dopo che il programma PR2 Beta era in corso da un po' di...