Open Source Robotics

Una raccolta curata di progetti, strumenti e software di robotica open source di alta qualità per la comunità della robotica.

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

  • URDF
  • Transform
  • Coordinate Frame
  • SLAM
  • Sensor Fusion
  • Digital Twin

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

Wikipedia

  • Robot Operating System

Questo sito richiede JavaScript. Attiva JavaScript per esplorare i nostri progetti di robotica open source.