ROS
- Detto anche: Robot Operating System, ROS 2, ROS2
- Categoria: Software & tooling › Tools & formats
- Tag: ros, ros2, middleware, robot-frameworks, software
Il middleware open source e l'ecosistema su cui si basa la maggior parte del software robotico, e la fonte di gran parte del vocabolario comune del settore.
Definizione
ROS (Robot Operating System) non è un sistema operativo. È un middleware: un insieme di librerie e convenzioni che permettono a programmi indipendenti, su una o più macchine, di trovarsi a vicenda e scambiarsi dati, più gli strumenti e l'ecosistema di pacchetti costruiti attorno.
L'idea centrale è la scomposizione. Un robot viene costruito come tanti piccoli programmi, i nodi, ognuno dei quali svolge un solo compito: leggere una telecamera, stimare la posa, pianificare un percorso, pilotare i motori. I nodi comunicano pubblicando e sottoscrivendo topic con un nome, oppure chiamando servizi e azioni di lunga durata. Poiché il trasporto è anonimo, un nodo non sa e non si cura se la telecamera dall'altra parte sia hardware reale, un simulatore o una registrazione riprodotta. È proprio questa singola proprietà a far sì che lo stesso codice di controllo giri in simulazione e sul robot, e determina la struttura di quasi tutto il software robotico moderno.
ROS 2 è la generazione attuale e una riscrittura sostanziale: ha sostituito il trasporto personalizzato originale con DDS, ha eliminato il singolo punto di guasto rappresentato dal vecchio nodo master e ha aggiunto il supporto al tempo reale e a più robot che mancava nella prima versione. I nuovi lavori dovrebbero partire da ROS 2.
Il suo significato più ampio sta nel vocabolario. URDF, i frame tf dei sistemi di coordinate, i tipi di messaggio per le nuvole di punti e il modello a nodi e topic sono nati in questo ecosistema e oggi sono usati ben oltre i suoi confini, anche da progetti che non importano nemmeno una libreria ROS. Capire ROS significa quindi non tanto conoscere un framework quanto saper leggere il linguaggio comune del settore.
Perché è importante
ROS è quanto di più vicino a una piattaforma comune abbia la robotica, e i suoi concetti si infiltrano ovunque. Molti altri termini di questo glossario, tra cui Trasformazione, SLAM, Odometria, URDF e Fusione dei sensori, si descrivono in parte con il linguaggio di ROS. Conoscerlo è ciò che permette di leggere la maggior parte dei repository di robotica, e sapere che è un middleware e non un sistema operativo è ciò che evita la prima ora di confusione.
Applicazioni principali
- Strutturare un robot come nodi indipendenti anziché come un unico programma monolitico
- Scambiare hardware simulato e reale sotto un codice di controllo invariato
- Registrare i dati dei sensori sul robot e riprodurli per il debug offline
- Riutilizzare pacchetti della comunità per navigazione, manipolazione e percezione
- Coordinare più robot su una rete condivisa
- Descrivere la geometria del robot e i sistemi di coordinate in modo portabile
In pratica
Un sistema funzionante è un grafo di nodi avviati insieme, collegati tramite i nomi dei topic e descritti da un URDF e da un albero di sistemi di coordinate. Lo sviluppo si appoggia a pochi strumenti: RViz per visualizzare ciò che il robot crede, rosbag per registrare e riprodurre dati reali dei sensori e i file di launch per avviare il grafo in modo riproducibile. In pratica, la possibilità di registrare un'esecuzione reale e riprodurla in un codice invariato è ciò che rende il debug di un robot davvero gestibile.
Idee sbagliate comuni
- ROS è un sistema operativo: è un middleware che gira sopra un sistema operativo, di solito Linux
- ROS è per natura in tempo reale: l'originale non lo era; ROS 2 rende possibile il tempo reale con l'executor e le impostazioni DDS giusti, ma non in automatico
- ROS 2 è ROS 1 con un nuovo numero di versione: è una riscrittura con un trasporto diverso e senza nodo master, e i due non interoperano senza un bridge
- Usare ROS significa usarlo per tutto: molti robot usano ROS per percezione e coordinamento, mentre l'anello di controllo in tempo reale gira su un microcontrollore
Chi dovrebbe saperlo
- Chiunque legga codice di robotica open source o vi contribuisca
- Costruttori che devono decidere come strutturare il software tra i computer di un robot
- Chiunque voglia che simulazione e hardware eseguano lo stesso identico codice di controllo
- Ingegneri che eseguono il debug di un robot a partire da esecuzioni registrate anziché da nuovi tentativi dal vivo
- Studenti che incontrano per la prima volta termini come nodo, topic, tf o URDF
Termini correlati
Progetti correlati
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- PX4 Autopilot: Open-source flight control software for drones and other unmanned vehicles
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- OpenMower: Open-source project converting commercial mowers into autonomous RTK-GPS guided robots
- PlotJuggler: Fast time-series visualization tool for ROS topics, rosbags, and robot debugging
- ROS 2: Next-gen Robot Operating System for real-time production robotics
Video
- Introduction to ROS Part 1: What is the Robot Operating System? | DigiKey: DigiKey
- What is ROS and Why use ROS to Learn Robotics?: Kevin Wood | Robotics & AI