Obiettivi di progettazione del sistema ROS
Con il rapido progresso e la crescente complessità della robotica, la richiesta di riutilizzabilità e modularità del codice è diventata sempre più urgente. Alcuni sistemi di robotica open-source hanno faticato a soddisfare adeguatamente queste esigenze. Nel 2007, Willow Garage ha rilasciato il sistema operativo open-source Robot Operating System (ROS), che ha rapidamente scatenato un'ondata di apprendimento e adozione all'interno della comunità di ricerca sulla robotica.
The ROS system originated from a collaboration between a 2007 project at Stanford University’s Artificial Intelligence Laboratory and Willow Garage’s Personal Robots Program. After 2008, development was led by Willow Garage. With the remarkable feats of early ROS robots like the PR2—such as folding clothes, plugging in devices, and preparing breakfast—ROS gained increasing attention. Willow Garage expressed its ambition to leverage open-source development to transform PR2 into a “universal” robot.
PR2 came with a hefty price tag, retailing for $400,000 in 2011. It is now primarily used for research. Equipped with two arms, each featuring seven joints, PR2’s end effectors are grasping grippers. Mobility is provided by four wheels mounted on its base. High-resolution cameras, laser rangefinders, inertial measurement units, tactile sensors, and other advanced sensing equipment are mounted on the PR2’s head, chest, elbows, and grippers. Two 8-core computers at the base serve as the control and communication hub for the robot’s hardware. Both computers run Ubuntu and ROS.
Obiettivi di progettazione di ROS
ROS è open-source e funge da sistema operativo secondario per i robot. Fornisce funzioni simili a quelle di un sistema operativo, tra cui l'astrazione dell'hardware, la gestione dei driver di basso livello, l'esecuzione di funzioni condivise, la messaggistica tra programmi e la gestione dei pacchetti. Offre inoltre strumenti e librerie per l'acquisizione, la costruzione, la scrittura e l'esecuzione di programmi collaborativi multi-robot. ROS è open-source e funge da sistema operativo di back-end, o sistema operativo secondario, per i robot. Fornisce funzioni simili a quelle di un sistema operativo, tra cui l'astrazione dell'hardware, la gestione dei driver di basso livello, l'esecuzione di funzioni condivise, la messaggistica tra programmi e la gestione dei pacchetti. Offre inoltre programmi di utilità e librerie per l'acquisizione, la costruzione, la scrittura e l'esecuzione di programmi collaborativi multi-robot.
Caratteristiche principali del ROS
L'architettura di runtime ROS è un quadro di elaborazione che utilizza i moduli di comunicazione ROS per stabilire connessioni di rete peer-to-peer liberamente accoppiate tra i moduli. Implementa diversi tipi di comunicazione, tra cui la comunicazione sincrona RPC (Remote Procedure Call) basata sui servizi, la comunicazione asincrona del flusso di dati basata su argomenti e la memorizzazione dei dati sul server dei parametri. Tuttavia, ROS stesso non possiede intrinsecamente capacità in tempo reale.
Le caratteristiche principali dei ROS possono essere riassunte come segue:
-
Progettazione Peer-to-Peer
Un sistema che utilizza ROS consiste in una serie di processi che esistono su più host distinti e comunicano durante il funzionamento attraverso una topologia peer-to-peer. Anche se i framework software basati su server centrali possono ottenere i vantaggi degli ambienti multi-processo e multi-host, questi framework incontrano problemi con il server dati centrale quando i computer sono connessi attraverso reti diverse. Un sistema che utilizza ROS consiste in una serie di processi che esistono su più host diversi e che comunicano durante il funzionamento attraverso una topologia peer-to-peer. Sebbene i framework software basati su un server centrale possano ottenere i vantaggi degli ambienti multi-processo e multi-host, in questi framework sorgono problemi con il server dati centrale quando i computer sono connessi tramite reti diverse.
-
Supporto multilingue
Quando scrivono codice, molti programmatori tendono a preferire determinati linguaggi di programmazione. Queste preferenze derivano da fattori quali la quantità di tempo trascorso a programmare in ciascun linguaggio, l'efficacia del debug, la sintassi, l'efficienza di esecuzione e varie considerazioni tecniche e culturali. Per affrontare questi problemi, abbiamo progettato ROS come un framework neutrale dal punto di vista linguistico. ROS ora supporta numerosi linguaggi diversi, tra cui C++, Python, Octave e LISP, e include anche diverse implementazioni di interfacce per altri linguaggi.
L'unicità di ROS si manifesta principalmente nel livello di comunicazione dei messaggi piuttosto che nei livelli più profondi. Le connessioni e le configurazioni end-to-end sono implementate utilizzando il meccanismo XML-RPC, che comprende anche implementazioni ben documentate per la maggior parte dei principali linguaggi di programmazione. Vogliamo che ROS sia implementato in modo più naturale in vari linguaggi, allineandosi alle rispettive convenzioni di sintassi, piuttosto che fornire interfacce basate su C per altri linguaggi. Tuttavia, in alcuni casi, è conveniente sfruttare le librerie esistenti per incapsulare il supporto a nuovi linguaggi. Ad esempio, il client Octave è implementato utilizzando una libreria wrapper in C++.
To support cross-language development, ROS employs a simple, language-agnostic interface definition language (IDL) to describe message exchanges between modules. The IDL uses concise text to define each message’s structure and allows message composition. For example, the following diagram illustrates a point message described using IDL:
I generatori di codice per ogni lingua producono i corrispondenti file di codice nativo. Durante la trasmissione e la ricezione dei messaggi, ROS compila ed esegue automaticamente questi file in parallelo. Ciò consente di risparmiare molto tempo di programmazione e di ridurre gli errori: un file IDL di tre righe si espande automaticamente in 137 righe di codice C++, 96 righe di codice Python, 81 righe di codice Lisp e 99 righe di codice Octave. Poiché i messaggi sono generati automaticamente da semplici file di testo, è possibile enumerare facilmente nuovi tipi di messaggi. Al momento della stesura del presente documento, le librerie di codice basate su ROS contengono oltre quattrocento tipi di messaggi. Questi messaggi trasmettono i dati dei sensori, consentendo agli oggetti di rilevare l'ambiente circostante.
Il risultato finale è una gestione dei messaggi indipendente dalla lingua, che consente di mescolare e abbinare liberamente più lingue.
-
Razionalizzazione e integrazione
La maggior parte dei progetti esistenti di ingegneria del software robotico contiene driver e algoritmi che possono essere riutilizzati al di fuori del progetto. Purtroppo, per vari motivi, gli strati intermedi della maggior parte del codice sono eccessivamente disordinati, rendendo difficile estrarre le loro funzionalità e applicarle al di là della prototipazione.
Per contrastare questa tendenza, incoraggiamo l'evoluzione graduale di tutti i driver e gli algoritmi in librerie autonome indipendenti dalle dipendenze di ROS. I sistemi costruiti da ROS sono caratterizzati dalla modularità, dove il codice di ogni modulo può essere compilato separatamente. Lo strumento CMake utilizzato per la compilazione facilita il concetto di minimalismo. ROS incapsula essenzialmente il codice complesso all'interno delle librerie, creando solo piccole applicazioni per dimostrare la funzionalità delle librerie. Ciò consente di trasferire e riutilizzare codice semplice al di là della prototipazione. Come nuovo vantaggio, i test unitari diventano significativamente più facili quando il codice è distribuito tra le librerie. Un singolo programma di test può verificare più funzionalità all'interno di una libreria.
ROS sfrutta il codice di numerosi progetti open-source esistenti. Ad esempio, prende in prestito il codice dei driver, del controllo del movimento e della simulazione dal progetto Player; gli algoritmi di visione da OpenCV; gli algoritmi di pianificazione da OpenRAVE e molti altri. In ogni caso, ROS fornisce diverse opzioni di configurazione e facilita la comunicazione dei dati tra i componenti software applicando wrapper e modifiche minime. ROS si evolve continuamente grazie alla manutenzione della comunità, incorporando nel suo codice sorgente gli aggiornamenti di altre librerie software e le patch delle applicazioni.
-
Toolkit completo
Per gestire la complessa struttura software di ROS, abbiamo utilizzato numerose utility per compilare ed eseguire diversi componenti di ROS, progettandoli come un kernel piuttosto che costruire un enorme ambiente di sviluppo e runtime. Questi strumenti gestiscono diversi compiti, come l'organizzazione delle strutture del codice sorgente, il recupero e l'impostazione dei parametri di configurazione, la visualizzazione delle connessioni topologiche end-to-end, la misurazione dell'utilizzo della larghezza di banda, la rappresentazione vivida dei dati informativi e la generazione automatica della documentazione. Anche se abbiamo testato servizi fondamentali come l'orologio globale e il registratore per i moduli controller, puntiamo ancora a modularizzare tutto il codice. Riteniamo che l'eventuale perdita di efficienza sia di gran lunga compensata dai vantaggi della stabilità e della riduzione della complessità di gestione.
-
Gratuito e open-source
Tutto il codice sorgente di ROS è rilasciato pubblicamente. Riteniamo che ciò promuoverà inevitabilmente il debugging a tutti i livelli del software ROS e la correzione continua degli errori. Sebbene software non open-source come Microsoft Robotics Studio e Webots possiedano molti attributi lodevoli, riteniamo che una piattaforma open-source rimanga insostituibile. Ciò è particolarmente vero quando hardware e software a tutti i livelli sono progettati e sottoposti a debug in contemporanea. Tutto il codice sorgente di ROS è rilasciato pubblicamente. Riteniamo che questo favorirà inevitabilmente il debugging a tutti i livelli del software ROS e la correzione continua degli errori. Sebbene anche software non open-source come Microsoft Robotics Studio e Webots possiedano molti attributi lodevoli, riteniamo che una piattaforma open-source sia insostituibile. Ciò è particolarmente vero quando l'hardware e il software a tutti i livelli sono progettati e sottoposti a debug simultaneamente.
Robot rappresentativi di ROS tipici sul mercato
I robot rappresentativi che utilizzano ROS sul mercato dimostrano come questo framework open-source supporti diverse applicazioni. Ad esempio, robot mobili such as TurtleBot and Husarion ROS bot are widely used for education and research; service robots like Fetch and PR2 highlight advanced manipulation and navigation capabilities; while industrial platforms such as Clearpath’s Husky demonstrate ROS integration in rugged environments. These examples reflect the flexibility and scalability of ROS in both academic and commercial robotics.
Di seguito sono elencati i robot ROS quadrupedi, i robot ROS su ruote e i robot ROS cingolati.
Best Quadruped Robots Powered by ROS
| Nome Copmay | Paese | Immagine del robot | Applicazione | Sito ufficiale |
| Unitree Robotics | Cina | ![]() |
istruzione, ricerca e compiti industriali | https://www.unitree.com/go2 |
| Boston Dynamics | STATI UNITI D'AMERICA | ![]() |
Ispezione industriale | https://bostondynamics.com/products/spot/ |
I 5 migliori robot su ruote che utilizzano ROS
| Nome Copmay | Paese | Immagine del robot | Scaricamento | Sito ufficiale |
| MiR | Danimarca | ![]() |
600 kg | https://www.mobile-industrial-robots.com |
| Robotnik Robot | Spagna | ![]() |
150 kg | https://bostondynamics.com/products/spot/ |
| Robotnik | Spagna | ![]() |
250 kg | |
| Clearpath Robotics | Canada | ![]() |
100 kg | https://clearpathrobotics.com |
| Robot Fdata | Cina | ![]() |
1000KG | https://www. fdatabot.com |
Best Tracked Robots with ROS Integration
| Nome Copmay | Paese | Immagine del robot | Applicazione | Sito ufficiale |
| Superdroid
Robot |
Canada | ![]() |
Robot tattico Robot tattico | https://www.superdroidrobots.com/store/tracked-robots |








