Guida Autonoma e Riconoscimento di Segnali Stradali - ALTEN Italy

Guida Autonoma e Riconoscimento di Segnali Stradali

Design ed implementazione su un veicolo in scala.

Introduzione

L’introduzione di sistemi autonomi nel campo automobilistico ha scatenato una rivoluzione destinata a ridefinire l’esperienza di guida. La ragione dietro a questa trasformazione epocale risiede nella combinazione dell’inevitabile fallibilità umana e delle tecnologie avanzate come sensori e telecamere. Infatti, come evidenziato nel rapporto sulla sicurezza stradale fornito dalla Commissione Europea, il cui grafico è riportato di seguito, il numero di incidenti fatali nel 2022 è stato di 20.600, mostrando una riduzione del 10% rispetto al 2019, mentre l’obiettivo per il 2030 è fissato a 11.400. Questa tendenza mette in luce il ruolo fondamentale giocato da questi sistemi, capaci di ridurre in modo significativo il numero di vittime sulla strada. Un ruolo centrale nel contesto dei veicoli autonomi è attribuito all’incorporazione dei Sistemi Avanzati di Assistenza alla Guida (ADAS), che rappresentano una classe di tecnologie sofisticate create per potenziare o sostituire le capacità dei conducenti umani.

Inoltre, questi sistemi non solo hanno il potenziale per migliorare le prestazioni e la sicurezza dei veicoli autonomi, ma anche per accelerare il processo di adozione su scala globale.

ADAS

In base al grado di sistemi avanzati di assistenza alla guida (ADAS) impiegati e all’automazione presente su un veicolo, è possibile definire sei livelli di veicoli autonomi: 

  • Livello 0 – Nessuna automazione: Questa categoria corrisponde alle automobili standard che non sono dotate di alcuna forma di funzionalità automatizzata. Di conseguenza, il conducente è sempre responsabile della dinamica laterale e longitudinale del veicolo. 
  • Livello 1 – Assistenza al conducente: A questo livello, l’auto è dotata di ADAS di base, ad esempio il controllo adattivo della velocità (ACC). Di conseguenza, la preponderanza delle attività di guida rimane di responsabilità diretta del conducente, anche se in situazioni particolari è disponibile una forma iniziale di assistenza.
  • Livello 2 – Automazione parziale: I veicoli appartenenti a questa categoria offrono funzionalità ADAS più avanzate, come la combinazione di controllo adattativo della velocità con il mantenimento della corsia. In questo caso, il veicolo ha la possibilità di controllare sia la velocità che lo sterzo, anche se il conducente è responsabile della supervisione del volante e dei pedali, il che significa che l’ambiente deve essere monitorato e, se necessario, controllato. 
  • Livello 3 – Automazione condizionale: Questi veicoli possono svolgere la maggior parte delle attività di guida autonomamente in condizioni particolari, come la guida in autostrada, in cui viene impiegato l’ADAS chiamato Traffic-Jam Assist. Con questo livello di automazione è possibile disimpegnarsi dal controllo attivo. Tuttavia, se richiesto dal sistema, il conducente deve essere pronto a riprendere il controllo. 
  • Livello 4 – Alta automazione: Da questo punto in poi, le auto sono in grado di operare in scenari predeterminati, come aree urbane o suburbane, con capacità di guida completamente autonome. Di conseguenza, i conducenti potrebbero non avere bisogno di verificare continuamente lo stato del veicolo ma potrebbe ancora essere necessario intervenire in circostanze rare. 
  • Livello 5 – Automazione completa: È l’ultimo e più alto livello di automazione, in cui i veicoli sono completamente autonomi e non è più richiesta l’intervento umano. La differenza sostanziale con il livello precedente sta nell’ambito di applicabilità delle attività di guida autonoma, che si estende a ogni situazione, senza alcun tipo di restrizione. Poiché non ci si aspetta alcun coinvolgimento del conducente, pedali e volante non sono necessari e, di conseguenza, non inclusi. 

Come sopra indicato, viene sottolineato il ruolo di importanza primaria svolto dagli ADAS, poiché rappresentano un passo significativo in termini di sicurezza, efficienza e sostenibilità. Infatti, ottenere un veicolo di “Livello 5” rappresenta un impegno complicato in cui questi sistemi fungono da collegamento tra le automobili tradizionali e quelle autonome. 

Obiettivi del progetto

Lo scopo di questo lavoro è stato quello di progettare e sviluppare un veicolo autonomo di livello “3”, capace di eseguire simultaneamente diverse attività gestite da un microcomputer, il Raspberry Pi 4 modello B. Per eseguire queste attività è stato necessario introdurre nel sistema un LiDAR e una telecamera. Il primo è stato impiegato per realizzare una mappatura 2D dell’ambiente in cui il veicolo era posizionato, e per rilevare ed evitare ostacoli, mentre il secondo è stato utilizzato per identificare e classificare i segnali stradali. Ogni scansione laser viene fornita a un completo algoritmo di navigazione, il cui compito è restituire due tipi di output: la velocità del veicolo e la posizione del motore servo che controlla il sistema di sterzatura del modello. Il riconoscimento dei segnali stradali è stato effettuato attraverso la sinergia di una telecamera e una Rete Neurale Convoluzionale (CNN), che è stata addestrata mediante un algoritmo che riceve un dataset di immagini e, per ogni immagine, restituisce un bounding box per l’identificazione e un’etichetta con il nome del cartello riconosciuto, insieme a una probabilità della corretta classificazione. Inoltre, la CNN è stata addestrata sia sul Raspberry Pi che in remoto su un computer, con la duplice intenzione di: ridurre la richiesta computazionale allocata al Raspberry e fornire un miglioramento offline al processo di riconoscimento aggiornando i pesi restituiti dall’algoritmo. Per raggiungere questi obiettivi, è stato sfruttato un sistema di protocollo di messaggistica al fine di fornire al veicolo la possibilità di essere periodicamente aggiornato con i nuovi pesi dell’algoritmo ( protocollo MQTT). Di conseguenza, ogni volta che il Raspberry Pi riceve queste informazioni, il processo di riconoscimento diventa più preciso, consentendo al sistema di individuare segnali in diverse condizioni di illuminazione e di usura.  

Infine, è stata realizzata una Dashboard per visualizzare, in tempo reale, gli output prodotti dall’algoritmo di riconoscimento dei cartelli stradali, attraverso uno schermo che mostra il video ottenuto dalla telecamera e per avere una verifica sullo stato di salute del Raspberry Pi, andando a controllare la tensione e la temperatura del micro-controllore stesso. 

Nell’immagine di seguito viene mostrato il veicolo finale equipaggiato con tutti i sensori e gli attuatori necessari. 

Metodologia

L’intero problema può essere suddiviso in quattro fasi principali: Raccolta dati, Localizzazione e Mappatura Simultanea (SLAM), pianificazione del percorso e riconoscimento dei segnali stradali. 

  • Raccolta dati: Consiste nel raccogliere i dati provenienti dall’ambiente, ovvero ostacoli e segnali, che la macchina sta esplorando. Questa fase viene eseguita utilizzando i due sensori montati sul veicolo: il LiDAR e la telecamera monoculare, ciò consente al veicolo di percepire gli oggetti nel suo ambiente 
  • SLAM: In questa seconda parte, all’algoritmo di Hector SLAM viene affidata sia la generazione di una mappa veritiera dell’ambiente in cui si muove l’auto sia la determinazione della sua posizione all’interno di essa. Questo rappresenta un passo molto delicato poiché una mappa di alta precisione insieme alla corretta localizzazione del veicolo consentono di avere un solido punto di partenza per la pianificazione del percorso. 
  • Pianificazione del percorso: Il vero nucleo della navigazione autonoma è in questa fase; infatti, prendendo come input le informazioni raccolte nei passaggi precedenti, insieme a una posizione iniziale e a un obiettivo finale, gli algoritmi di pianificazione globale e locale forniranno in ogni istante la posizione e l’orientamento del veicolo. Inoltre, in questa parte vengono recuperati i dati cinematici e geometrici sulla macchina dal Pianificatore Locale, che li utilizza al fine di prevenire collisioni con gli ostacoli. 
  • Riconoscimento dei segnali stradali: Infine, la combinazione delle informazioni raccolte dal sensore della telecamera insieme alla conoscenza proveniente dalla CNN precedentemente addestrata consente all’auto di vedere e riconoscere la presenza di segnali stradali. 

La figura riportata sopra mostra sia la mappa, realizzata dal veicolo, di un ufficio della sede di ALTEN a Milano sia il modello stesso all’interno di essa, cerchiato in rosso. 

Per gestire la realizzazione del sistema ADAS e la sua implementazione sul veicolo reale è stato fondamentale l’utilizzo del framework ROS (Robot Operating System) e della creazione di un pacchetto specifico, sfruttando il “navigation stack” di ROS. Infatti, come evidenziato nella figura riportata di seguito, gli input di questo stack sono: i dati dai sensori, le relazioni tra i vari sistemi di riferimento che compongono il veicolo e la destinazione desiderata. Questi elementi permettono di ottenere in output le velocità da assegnare alle ruote del veicolo ad ogni istante di tempo, per poter seguire la traiettoria individuata dalla combinazione dei pianificatori globale e locale.  

Per la gestione del riconoscimento di segnali stradali, è stato impiegato l’algoritmo YOLO ( You Only Look Once) V8n, che rappresenta lo stato dell’arte delle tecniche di object detection. Questa sezione è stata divisa in tre principali parti:

  1. La creazione di un dataset di segnali per allenare la Rete Neurale,
  2. Allenamento della stessa attraverso YOLO,
  3. Applicazione di YOLO e la visualizzazione degli ouput forniti dall’algoritmo stesso attraverso la Dashboard, mostrata nella figura seguente. 

Sviluppi futuri

Il progetto realizzato ha molteplici possibilità di sviluppo, infatti, partendo da quanto svolto, si potrebbero considerare le seguenti modifiche che consentirebbero un significativo miglioramento del prodotto finale: 

  • Selezione di un modello di veicolo geometricamente e cinematicamente più fedele ad un veicolo reale. Nello specifico, un veicolo di dimensioni maggiori ed equipaggiato con sospensioni darebbe la possibilità di sviluppare un progetto più completo e complesso, soprattutto dal punto di vista delle dinamica del veicolo. 
  • Introduzione di sensori aggiuntivi, come encoder sulle ruote o un IMU (Inertial Measurement Unit), per effettuare una sensor fusion tra i dati provenienti dai vari sensori, ottenendo una stima della posizione del veicolo e una mappatura ancora più accurata. Ciò garantirebbe una navigazione più efficiente in ambienti più complessi e ricchi di ostacoli dinamici. 
  • Implementazione di tecniche di sensor fusion tra LiDAR e telecamera, come l’EKF (Extended Kalman Filter), per unire le scansioni laser e le immagini, e garantire sia un riconoscimento dei segnali più preciso che un evitamento degli ostacoli più tempestivo, avendo a disposizione due tipologie di sensori differenti. Questo step risulterebbe cruciale anche in termini di sicurezza, dal momento che, in caso di malfunzionamento di uno dei due, l’altro sarebbe in grado di agire come backup.  
  • Associazione di ogni segnale stradale appartenente al dataset all’azione corretta che il veicolo dovrebbe svolgere in quella determinata situazione (ad esempio: il veicolo rileva un segnale di “Stop” e arresta la sua corsa, facendo opportune verifiche prima di proseguire il suo cammino). 

Tesi a cura di F. Scordo