Gruppo TIM
Gruppo TIM

La nostra visione ESG

ESG vision

Crediamo che la trasformazione digitale sia la chiave per lo sviluppo sociale ed economico del nostro Paese e per la tutela del nostro territorio. Approfondisci

ROS come Framework per la robotica

ROS (Robot Operating System) [6] è un set di librerie software e tools open-source, che consente di realizzare applicazioni per i robot e il mondo della robotica. ROS Si basa su tre pilastri fondamentali:

  • una grossa comunità in crescita, costituita da ricercatori universitari, sviluppatori SW e robot vendors;
  • supportato da una moltitudine di robot, dal 2009 è diventato uno standard de-facto per lo sviluppo di applicazioni robotiche;
  • Integrazione con librerie esterne, fra le quali citiamo:
    • Gazebo: ambiente di simulazione dei robot (dinamica, cinematica e visuale);
    • OpenCV: algoritmi per grafica e visione in generale;
    • PointCloudLibrary: algoritmi per la gestione del mondo 3D e interfaccia con sensori di percezione (ad esempio kinect);
    • MoveIt: manipolazione (bracci robotici) e algoritmi di motion planning.

ROS è essenzialmente un middleware fra i robot e le applicazioni, consente allo sviluppatore di costruire applicazioni in linguaggio python e C++, che nel sistema ROS prendono il nome di nodi. I nodi sfruttano tre meccanismi di comunicazione inter-processo per interfacciarsi fra loro:

  • publish-subscribe: un nodo pubblica un messaggio (topic) gli altri si sottoscrivono a quel messaggio;
  • request-response: un nodo serve le richieste di nodi client, formalizzate con messaggi opportunamente strutturati;
  • action: come per il paradigma precedente, un nodo serve le richieste di nodi client, però, prima di fornire il risultato finale, fornisce i risultati intermedi (feedback).

I meccanismi sopra descritti sono abilitati da una libreria (rosrpc) che implementa un bus dati custom. Dal 2010 ad oggi, son state rilasciate 13 distribuzioni di ROS, l’ultima “noetic” è del 2020.
Nel 2013 prende anche vita ROS-Industrial [7], un progetto open source che estende le capacità avanzate del software ROS alle classiche applicazioni industriali.
Da almeno quattro anni, ROS sta evolvendo verso la versione 2.0. Il paradigma di comunicazione inter-processo di ROS 2.0 è rimasto inalterato, le differenze sostanziali con la versione precedente riguardano essenzialmente:

  • sostituzione del bus dati custom con il middleware Data Distribution Service (DDS): non implementa più il concetto del “single master” (roscore), le risorse (nodi, topic, service, action, param) allocate su macchine diverse, sono «discoverable» (automaticamente) nella stessa LAN;
  • maggiore flessibilità su definizione QoS per ottimizzare le performance di rete;
  • refactoring della suite comandi e delle librerie ROS;
  • redesign del concetto di nodelet, visto come component;
  • real-time programming by design;
  • aggiunto meccanismo di chiave pubblica-chiave privata per scambio messaggi fra nodi, poiché intrinseco nel middleware DDS.

Dopo una serie di versioni beta, ormai in EOL, ROS 2.0 è oggi rilasciato in versione stabile, l’ultima è “galactic” [8].

 

roberto1.antonini@telecomitalia.it