Panoramica e punti chiave del sistema operativo per robot ROS

Panoramica e punti chiave del sistema operativo per robot ROS

Obiettivi di progettazione del sistema ROS

Con il rapido progresso e la crescente complessità della robotica, l’esigenza di riutilizzabilità e modularità del codice è diventata sempre più urgente. Alcuni sistemi robotici open source hanno avuto difficoltà a soddisfare adeguatamente tali esigenze. Nel 2007, Willow Garage ha rilasciato il Robot Operating System (ROS) open source, che ha rapidamente innescato un'ondata di interesse e adozione all'interno della comunità di ricerca nel campo della robotica.

Il sistema ROS è nato dalla collaborazione tra un progetto del 2007 presso il Laboratorio di Intelligenza Artificiale della Stanford University e il Programma Personal Robots di Willow Garage. Dopo il 2008, lo sviluppo è stato guidato da Willow Garage. Grazie alle straordinarie capacità dei primi robot ROS come il PR2—come piegare i vestiti, collegare dispositivi e preparare la colazione—ROS ha guadagnato sempre più attenzione. Willow Garage ha espresso l'ambizione di sfruttare lo sviluppo open-source per trasformare il PR2 in un robot "universale".

Il PR2 aveva un prezzo piuttosto elevato, venduto al dettaglio a $400.000 nel 2011. Oggi viene utilizzato principalmente per la ricerca. Dotato di due bracci, ciascuno con sette articolazioni, il PR2 è provvisto di effettori terminali a forma di pinze di presa. La mobilità è garantita da quattro ruote montate sulla base. Telecamere ad alta risoluzione, telemetri laser, unità di misura inerziale, sensori tattili e altre apparecchiature di rilevamento avanzate sono montati sulla testa, sul torace, sui gomiti e sulle pinze del PR2. Due computer a 8 core situati alla base fungono da hub di controllo e comunicazione per l’hardware del robot. Entrambi i computer utilizzano Ubuntu e ROS.

Obiettivi di progettazione di ROS

ROS è un software open source e funge da sistema operativo secondario per i robot. Fornisce funzioni simili a quelle di un sistema operativo, tra cui l’astrazione 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 creazione, la scrittura e l’esecuzione di programmi collaborativi multi-robot. ROS è un software open source e funge da sistema operativo di backend, o sistema operativo secondario, per i robot. Fornisce funzioni simili a quelle di un sistema operativo, tra cui l’astrazione 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 creazione, la scrittura e l’esecuzione di programmi collaborativi multi-robot.

Caratteristiche principali del ROS

L'architettura di runtime ROS è un framework di elaborazione che utilizza i moduli di comunicazione ROS per stabilire connessioni di rete peer-to-peer a basso accoppiamento tra i moduli. Implementa diversi tipi di comunicazione, tra cui la comunicazione RPC (Remote Procedure Call) sincrona basata su servizi, la comunicazione asincrona a flusso di dati basata su argomenti e l'archiviazione dei dati sul server dei parametri. Tuttavia, ROS di per sé non possiede intrinsecamente funzionalità in tempo reale.

Le caratteristiche principali dei ROS possono essere riassunte come segue:

  • Progettazione peer-to-peer

Un sistema che utilizza ROS è costituito da una serie di processi presenti su più host distinti che, durante il funzionamento, comunicano tra loro attraverso una topologia peer-to-peer. Sebbene anche i framework software basati su server centrali possano offrire i vantaggi degli ambienti multiprocesso e multi-host, tali framework incontrano problemi con il server centrale dei dati quando i computer sono collegati tramite reti diverse. Un sistema che utilizza ROS è costituito da una serie di processi che risiedono su più host distinti e comunicano durante il funzionamento attraverso una topologia peer-to-peer. Sebbene anche i framework software basati su un server centrale possano offrire i vantaggi degli ambienti multiprocesso e multi-host, in tali framework sorgono problemi con il server dati centrale quando i computer sono collegati tramite reti diverse.

  • Supporto multilingue

Quando scrivono codice, molti programmatori tendono a privilegiare determinati linguaggi di programmazione. Queste preferenze derivano da fattori quali il tempo dedicato alla programmazione in ciascun linguaggio, l’efficacia del debug, la sintassi, l’efficienza di esecuzione e varie considerazioni tecniche e culturali. Per affrontare queste problematiche, abbiamo progettato ROS come un framework indipendente dal linguaggio. ROS ora supporta numerosi linguaggi diversi, tra cui C++, Python, Octave e LISP, e include anche diverse implementazioni di interfaccia per altri linguaggi.

L'unicità di ROS si manifesta principalmente a livello del livello di comunicazione dei messaggi piuttosto che a livelli più profondi. Le connessioni e le configurazioni end-to-end sono implementate utilizzando il meccanismo XML-RPC, che include anche implementazioni ben documentate per la maggior parte dei principali linguaggi di programmazione. Il nostro obiettivo è che ROS venga implementato in modo più naturale nei vari linguaggi, allineandosi alle rispettive convenzioni sintattiche, piuttosto che fornire interfacce basate sul C per gli altri linguaggi. Tuttavia, in alcuni casi, è conveniente sfruttare le librerie esistenti per incapsulare il supporto per i nuovi linguaggi. Ad esempio, il client Octave è implementato utilizzando una libreria wrapper in C++.

Per supportare lo sviluppo multilinguistico, ROS utilizza un linguaggio di definizione delle interfacce (IDL) semplice e indipendente dal linguaggio di programmazione per descrivere lo scambio di messaggi tra i moduli. L’IDL utilizza un testo conciso per definire la struttura di ciascun messaggio e consente la composizione dei messaggi. Ad esempio, il diagramma seguente illustra un messaggio “point” descritto utilizzando l’IDL:

I generatori di codice per ciascun linguaggio 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 nella programmazione e riduce gli errori: il 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 vengono generati automaticamente da semplici file di testo, è possibile enumerare facilmente nuovi tipi di messaggi. Al momento della stesura di questo articolo, le librerie di codice basate su ROS conosciute 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 dal linguaggio, che consente di combinare e abbinare liberamente più linguaggi.

  • Ottimizzazione e integrazione

La maggior parte dei progetti di ingegneria del software nel campo della robotica comprende driver e algoritmi che possono essere riutilizzati al di fuori del progetto stesso. Purtroppo, per vari motivi, i livelli intermedi della maggior parte del codice sono eccessivamente disordinati, rendendo difficile estrarne le funzionalità e applicarle al di là della fase di 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 basati su ROS sono caratterizzati da modularità, in cui il codice all’interno di ciascun modulo può essere compilato separatamente. Lo strumento CMake, utilizzato per la compilazione, facilita il concetto di minimalismo. ROS essenzialmente incapsula il codice complesso all’interno delle librerie, creando solo piccole applicazioni per dimostrare le funzionalità delle librerie stesse. Ciò consente di trasferire e riutilizzare codice semplice anche al di là della fase di prototipazione. Un ulteriore vantaggio è che i test unitari diventano significativamente più semplici quando il codice è distribuito tra le librerie. Un singolo programma di test può verificare più funzionalità all’interno di una libreria.

ROS si avvale del codice proveniente da numerosi progetti open source esistenti. Ad esempio, riprende il codice relativo ai driver, al controllo del movimento e alla simulazione dal progetto Player; gli algoritmi di visione da OpenCV; gli algoritmi di pianificazione da OpenRAVE; e molti altri. In ciascun caso, ROS offre diverse opzioni di configurazione e facilita la comunicazione dei dati tra i componenti software, applicando al contempo un numero minimo di wrapper e modifiche. ROS si evolve continuamente grazie alla manutenzione da parte della comunità, incorporando nel proprio codice sorgente gli aggiornamenti provenienti da altre librerie software e le patch delle applicazioni.

  • Kit di strumenti completo

Per gestire il complesso framework software ROS, abbiamo sfruttato numerose utility per compilare ed eseguire diversi componenti ROS, progettandoli come un kernel anziché costruire un imponente ambiente di sviluppo e di esecuzione. Questi strumenti gestiscono varie attività, quali 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 chiara dei dati informativi e la generazione automatica della documentazione. Sebbene abbiamo testato servizi fondamentali come l’orologio globale e il registratore per i moduli di controllo, puntiamo comunque a modularizzare tutto il codice. Riteniamo che qualsiasi perdita di efficienza sia ampiamente compensata dai vantaggi in termini di stabilità e dalla ridotta complessità di gestione.

  • Gratuito e open source

Tutto il codice sorgente di ROS è reso pubblico. Riteniamo che ciò favorirà inevitabilmente il debug a tutti i livelli del software ROS e consentirà di correggere continuamente gli errori. Sebbene i software non open source come Microsoft Robotics Studio e Webots presentino molte caratteristiche apprezzabili, riteniamo che una piattaforma open source rimanga insostituibile. Ciò è particolarmente vero quando l’hardware e il software a tutti i livelli vengono progettati e sottoposti a debug contemporaneamente. Tutto il codice sorgente di ROS è reso pubblico. Riteniamo che ciò favorirà inevitabilmente il debug a tutti i livelli del software ROS e consentirà di correggere continuamente gli errori. Sebbene anche i software non open source come Microsoft Robotics Studio e Webots presentino molte caratteristiche apprezzabili, riteniamo che una piattaforma open source sia insostituibile. Ciò è particolarmente vero quando l’hardware e il software a tutti i livelli vengono progettati e sottoposti a debug contemporaneamente.

Robot rappresentativi dei modelli ROS più diffusi sul mercato

I robot di punta disponibili sul mercato che utilizzano ROS dimostrano come questo framework open source sia in grado di supportare una vasta gamma di applicazioni. Ad esempio, robot mobili Robot come TurtleBot e Husarion ROS sono ampiamente utilizzati nell’ambito dell’istruzione e della ricerca; i robot di servizio come Fetch e PR2 mettono in evidenza capacità avanzate di manipolazione e navigazione; mentre piattaforme industriali come Husky di Clearpath dimostrano l’integrazione di ROS in ambienti difficili. Questi esempi riflettono la flessibilità e la scalabilità di ROS sia nella robotica accademica che in quella commerciale.

Di seguito sono elencati alcuni esempi rappresentativi di robot ROS quadrupedi, robot ROS su ruote e robot ROS cingolati.

I migliori robot quadrupedi basati su ROS

Nome aziendaPaeseImmagine di un robotApplicazioneSito web ufficiale
Unitree RoboticsCinaUnitree Robotics istruzione, ricerca e attività industrialihttps://www.unitree.com/go2
Boston DynamicsStati UnitiBoston DynamicsIspezione industrialehttps://bostondynamics.com/products/spot/

I 5 migliori robot su ruote che utilizzano ROS

Nome aziendaPaeseImmagine di un robotCarico utileSito web ufficiale
MiRDanimarcaMiR Robot600 kghttps://www.mobile-industrial-robots.com
Robotnik RobotSpagnaRobotnik Automation150 kghttps://bostondynamics.com/products/spot/
RobotnikSpagnaI 5 migliori robot su ruote che utilizzano ROS250 kg
Clearpath RoboticsCanadaClearpath Robotics100 kghttps://clearpathrobotics.com
Fdata RobotCinarobot agricolo A0251000 kghttps://www. fdatabot.com

I migliori robot cingolati con integrazione ROS

Nome aziendaPaeseImmagine di un robotApplicazioneSito web ufficiale
Superdroid

Robot

CanadaSuperdroid Robot Robot tattico Robot tatticohttps://www.superdroidrobots.com/store/tracked-robots

Cerchi soluzioni robotiche su misura? Contattaci

Contattaci

Fdata è un'azienda cinese produttrice di robot mobili; siamo specializzati in soluzioni personalizzate nel settore dei robot mobili e affianchiamo i clienti in ogni fase, dall'idea alla produzione in serie.

La tua soluzione personalizzata per robot mobili inizia qui

Produttore OEM/ODM con sede in Cina — AMR, AGV, automazione dei magazzini. Dalla progettazione e ricerca e sviluppo alla consegna in tutto il mondo.

  • Oltre 10 anni di esperienza nella produzione di AMR e AGV
  • Soluzioni personalizzate implementate in oltre 50 paesi
  • Valutazione gratuita del progetto e analisi del ROI
  • Risposta da parte di un tecnico entro 24 ore
Modulo di contatto

Specialista in robotica presso FdataBot con oltre 8 anni di esperienza nel settore dei robot mobili, dei sistemi AMR/AGV, dello sviluppo di telai per robot e della personalizzazione OEM/ODM. Le sue guide aiutano gli acquirenti di tutto il mondo a valutare i fornitori, a confrontare le opzioni tecniche e a prendere decisioni di approvvigionamento più affidabili.

RICHIEDI INFORMAZIONI ORA