Software per robotica

Avatar photo

Esistono vari livelli di controllo del software da eseguire all’interno di tutti i robot, tranne i più semplici. Le unità di microcontrollo (MCU) e le soluzioni system-on-chip (SoC), incaricate della gestione di sensori e attuatori, di solito utilizzano un sistema operativo in tempo reale (RTOS) o un kernel.

Massimizzazione delle risorse di sistema con il multitasking RTOS

Il vantaggio di utilizzare un RTOS è il supporto multi-tasking. Esso fornisce un modo relativamente semplice per programmare numerose attività su un singolo microprocessore in modo da ottimizzare le risorse e da consentire alle funzionalità del sistema di reagire a eventi esterni. Ad esempio, l’apertura della gabbia di sicurezza deve attivare una sospensione delle attività in modo da ridurre i rischi per il robot e il personale. La semplice rimozione dell’alimentazione potrebbe essere potenzialmente rischioso. Un RTOS può attivare tutte le azioni necessarie per posizionare il robot in un stato di immobilità, garantendo che non faccia cadere alcun oggetto pesante o causi danni a cose e persone. Ad esempio, è possibile ottenere questo risultato spostandosi su un thread del software che ordina ai circuiti elettronici di alimentazione di mantenere i motori nelle posizioni predefinite.

Unitamente a software di applicazioni appositamente progettati, un RTOS può offrire una garanzia precisa della quantità di tempo richiesta per reagire a eventi critici, solitamente segnalati da un’interruzione esterna al microprocessore. Generalmente, questa fase è gestita attraverso un gestore di interruzione che può avviare un thread del software. Attraverso la programmazione preventiva basata sulla priorità, lo RTOS garantisce l’inattività più breve possibile per questo tipo di risposta nei problemi più importanti.

ROS: il sistema operativo per robot

In un robot con più microprocessori e acceleratori dell’hardware (un caso sempre più comune), ogni nodo dell’azionamento deve essere controllato da un sistema di supervisione che si occupi della pianificazione delle attività e di un comportamento di qualità elevata. Si tratta di un ruolo generalmente svolto da middleware, come i sistemi operativi robotici (ROS) in esecuzione su microprocessori ad alte prestazioni.

Oggi, un ROS è progettato per essere eseguito su un sistema operativo come Linux piuttosto che su uno a sé stante. Inoltre, i ROS non richiedono il comportamento dei RTOS dal sistema operativo sottostante, poiché eseguono attività sul lungo termine e non quelle che necessitano di tempi di risposta di microsecondi. Tuttavia, si sta lavorando per creare implementazioni ROS 2.0 per l’esecuzione su piattaforme RTOS al fine di offrire livelli di risposta maggiori.
Il middleware che compone il ROS offre una serie di servizi che includono l’astrazione dell’hardware da dispositivi di basso livello e il supporto per il passaggio dei messaggi tra i processori per abilitare le architetture multi-processore e la gestione dei pacchetti di software. In genere, i processi vengono rappresentati utilizzando grafici che collegano i nodi, per indicare dove ha luogo l’elaborazione e il metodo di comunicazione dei processi. Le implementazioni ROS sono spesso pacchetti open source che utilizzano piattaforme Linux, per facilitare la gestione delle dipendenze tra i progetti open source. In questo modo il software ROS risulta di facile accesso.

Nei ROS, i nodi sono processi o moduli software che gestiscono una o più attività correlate. Ad esempio, un nodo di elaborazione delle immagini e per telecamere può elaborare i dati visivi da uno o più sensori di immagini. Per consentire all’infrastruttura di rete di interconnettersi ai nodi (un’architettura attualmente comune nei sistemi automotive), il ROS supporta TCP/IP e UDP per la trasmissione del messaggio. I vari nodi e connessioni possono essere descritti utilizzando il formato di descrizione universale dei robot (URDF), cioè un formato file XML.

Per consentire una condivisione efficiente di comandi e dati dei sensori, il ROS utilizza un meccanismo di publish-subscribe in cui i nodi si registrano per ricevere informazioni su argomenti specifici. In questo modo, gli aggiornamenti su ciascun argomento vengono inviati a tutti i nodi registrati. Il ROS Master consente di tenere traccia di tutti i servizi e gli argomenti. È in grado di gestire la registrazione ed esegue un server di parametro per consentire ai nodi di memorizzare e recuperare i dati di configurazione comuni.

I middleware come il ROS offrono vantaggi quali il riutilizzo e la condivisione del codice. La condivisione del codice consente a tutti gli utenti di avere una base di software comune che favorisce la fase di test e l’affidabilità generale del software. Il ROS non è vincolato ai robot fisici, ma supporta anche i robot simulati.

Il ruolo della simulazione nello sviluppo della robotica

Un requisito fondamentale nella progettazione robotica è la capacità di simulazione del comportamento in un ambiente virtuale, prima dell’implementazione nell’hardware. Il simulatore consente ai programmi di robotica di essere scritti e sottoposti a debug offline, permettendo lo sviluppo di software in un ambiente privo di rischi e prevenendo il danneggiamento del robot o dell’ambiente circostante in caso di errori gravi nel programma proposto. Infine, è possibile testare la versione finale del programma su un robot vero.

La simulazione offre anche altri vantaggi. I lavori più complessi possono beneficiare della possibilità di dividere lo sviluppo in più fasi partendo da modelli semplici di alta qualità. È possibile utilizzare queste simulazioni nella fase iniziale per stabile l’attuabilità del sistema. Gli ambienti di simulazione sviluppati per la robotica sono progettati per essere compatibili con un’ampia gamma di linguaggi di programmazione e garantire uno sviluppo più semplice. Inoltre, i tempi di simulazione si riducono grazie alla possibilità di correggere gli errori nella logica di applicazione prima dell’implementazione nell’hardware quando la correzione diventa più difficile.

Esistono diversi approcci alla simulazione robotica. Tradizionalmente, la simulazione si concentrava sulla cinematica del movimento del robot per dimostrare la fattibilità e la funzionalità di percorsi e traiettorie.

Questo tipo di simulazione inserisce un robot virtuale in uno spazio 3D, mostrando il probabile movimento dei giunti nel mondo reale. Attraverso la simulazione è anche possibile determinare l’eventuale capacità del robot di sollevare e manipolare oggetti pesanti o ingombranti senza perdere la stabilità.

Alcuni simulatori di cinematica utilizzano un insieme semplificato di calcoli, concentrandosi principalmente sulle modalità di rotazione e spostamento degli oggetti, per assicurare che non urtino i bordi di gabbie di sicurezza o celle di lavoro. Altri impiegano simulazioni fisiche più complesse per misurare le sollecitazioni e altri problemi che possono influenzare le prestazioni del robot sul campo.

Simulazione delle interazioni tra robot in ambienti dinamici

I progettisti devono tenere in considerazione le possibili interazioni che si verificano quando il robot esce dagli ambienti controllati, protetto dalle gabbie di sicurezza, per entrare in aree in cui persone e altri robot si muovono liberamente. Nei progetti robotici mobili, i simulatori che si occupano del comportamento consentono ai progettisti di creare, con un certo livello di astrazione, mondi virtuali che contengono altri oggetti. Una semplice simulazione del comportamento prende in considerazione il movimento di un robot tra un insieme di oggetti fissi. Simulazioni più complesse coinvolgono l’utilizzo di più agenti mobili o avatar. Tali simulatori basati sul comportamento possono essere d’aiuto nella progettazione di applicazioni in cui è probabile che il robot affronti ambienti complessi. Collisioni e altre interazioni possono insegnargli ad affrontare meglio gli ostacoli. Le simulazioni fisiche sono importanti per stabilire se la cinematica del robot è rappresentata in modo preciso.

Selezione del motore fisico giusto per il vostro robot

Gli ambienti di simulazione, come il pacchetto open source Gazebo, sono in grado di generare dati sensore realistici che possono essere danneggiati da diversi livelli di rumore. Gazebo consente di sintonizzare la simulazione su requisiti di applicazione specifici utilizzando, ad esempio, motori fisici diversi. Durante la simulazione di ambienti caotici, viene spesso utilizzato un risolutore di coordinate massimale, come ODE o Bullet. Un risolutore basato su Featherstone, come DART o Simbody, troverà più applicazioni in sistemi articolati come robot umanoidi o robot di produzione complessi. Tutti i motori fisici sono accessibili tramite la stessa interfaccia di programmazione delle applicazioni (API).

Esistono, tuttavia, dei limiti alla simulazione. Un’applicazione può solo simulare le caratteristiche e gli eventi per i quali è stata programmata. Fattori interni o esterni non vengono rappresentati né simulati, causando possibili problemi durante il processo di trasferimento sull’hardware. Inoltre, spesso è difficile costruire scenari sufficientemente rappresentativi, soprattutto quando si tratta di valutare situazioni e comportamenti complessi. Tuttavia, l’esperienza nella trasformazione di progetti simulati in ambienti fisici può essere utilizzata in futuro per ridurre gli errori.

Di conseguenza, la simulazione resta uno degli strumenti più potenti a disposizione degli ingegneri robotici.

Total
0
Shares
Messaggio precedente

Le componenti più richieste da Molex: Soluzioni di alimentazione per applicazioni esigenti

Messaggio successivo

Salti quantici: Una Rivoluzione nella Produzione Intelligente

Pubblicazioni simili