Christine, la macchina (a guida autonoma) infernale

Come forse avrai letto, a Marzo 2018 un’auto a guida autonoma di Uber ha investito una donna di 49 anni in Arizona, uccidendola


Esatto: come nei migliori (e peggiori) film di fantascienza se non horror, una macchina dotata di intelligenza artificiale apparentemente è impazzita e ha ucciso un essere umano, uno dei peggiori incubi dell’evoluzione tecnologica dell’uomo. La cosa come immagini ha creato grande scalpore e polemiche, provocando la sospensione di qualunque test su strada. 


In questo articolo, cerco di spiegarti in maniera semplice cosa è successo, di chi è precisamente la colpa (e non è quello che raccontano i giornali, neanche la stampa specializzata!), qual è l’errore di fondo e cosa c’entra un vecchio col cappello. 


Capirai perché tutto questo ha a che fare con i progetti software, con il gioco del poker e soprattutto comprenderai che, molto probabilmente, c’entri anche tu. Sì, proprio TU.


Ma andiamo con ordine. 


La corsa alla guida autonoma

Da qualche anno, una lunga serie di startup tecnologiche, di grandi colossi dell’automobile, di aziende di servizi di trasporto alternativi come Uber hanno deciso che era ora di superare i limiti della guida ad opera degli uomini (imprecisi, incapaci, stanchi se non addirittura spesso ubriachi) e che bisognava cominciare a sperimentare una guida autonoma operata da intelligenza artificiale: in poche parole dei computer molto potenti che prendono delle decisioni automatiche, analizzando la strada, gli ostacoli, gli altri veicoli e i pedoni e decidendo di accelerare, frenare e sterzare al posto del guidatore. 


Ti ricorda qualcosa? Certo… macchine a guida autonoma, robot, sistemi informatici che prendono delle decisioni autonome e, come nei migliori film di fantascienza, diventano il peggior incubo dell’uomo. Da “Spazio 1999” alla saga di Terminator, da “Christine, la macchina infernale” “Il tagliaerbe”, per passare attraverso una lunghissima serie di film, alcuni di serie B, l’uomo da sempre ha immaginato con orrore un futuro distopico in cui le macchine si ribellano e arrivano a uccidere se non addirittura a  cercare di sterminare l’umanità.


Ebbene: sembra purtroppo che questo momento sia veramente arrivato.


Ma come funzionano questi sistemi di guida autonoma? Cosa ha provocato veramente l’incidente? Ma soprattutto, come mai tutti i giornali, anche specializzati, un sacco di esperti – se non addirittura le stesse aziende che sviluppano questi sistemi – stanno commettendo degli errori di fondo talmente grossolani per cui tutte le teorie e le applicazioni pratiche delle macchine a guida autonoma su strada in realtà sono un grosso inganno se non addirittura una truffa?

Come funzionano le auto che guidano da sole

L’idea di base di per sé è abbastanza semplice: si prende una macchina di quelle moderne, la si riempie di telecamere, sensori, radar e altri sistemi di sorveglianza e di analisi della strada, la si dota di attuatori molto rapidi che azionano lo sterzo, l’acceleratore e il freno e soprattutto si crea un software molto complesso che analizza tutti questi ingressi e decide come si deve comportare la macchina, cercando di essere uguale se non addirittura meglio di un umano alla guida. Il famoso robot che svolge un compito noioso, pericoloso o comunque obsoleto che l’uomo non vuole più fare.


Ma stiamo parlando di fantascienza… o di realtà? 


Non sono poche le aziende in tutto il mondo che hanno investito anche grandissimi capitali umani e tecnologici per creare queste auto a guida autonoma… le maggiori case automobilistiche sono quasi tutte coinvolte con i loro esperimenti, ma ci sono anche grandi nomi della tecnologia come Google e Apple, oltre ad aziende come Uber che realizzano servizi trasporto tipo noleggio con conducente, tutti impegnati in questa gara contro il tempo per riuscire a realizzare per primi il sogno di ogni automobilista stanco, assonnato o che ha bevuto un po’ troppo: quello di dire alla propria macchina:


“Kitt, riportami a casa!” 

come faceva Michael Knight con la sua famosa auto super-intelligente (e pure un po’ antipatica) nel telefilm degli anni 80 “SUPERCAR”

Cosa è andato storto nell’auto di Uber (e NON un guasto)

Allora, il primo problema (e ci tornerò sopra) è che il pedone, che conduceva a mano la bicicletta, stava attraversando in un punto vietato, senza strisce pedonali, senza luci dove le auto andavano a grande velocità. Per cui, già solo questo fatto rende le cause dell’incidente sbilanciate verso quello che ti voglio far capire, ma non è finita qui.


L‘auto di Uber in realtà aveva a bordo un sistema di sicurezza, basato su radar, che aveva già identificato la povera vittima ed era già pronto ad entrare in funzione, ma che… era DISABILITATO


Esatto: il dispositivo che identifica potenziali ostacoli aveva già identificato l’ostacolo decine di metri e alcuni secondi prima dell’impatto ed era pronto a frenare in tempo per salvarla, ma non era abilitato! E come mai questa follia?


Semplice: per testare agevolmente i propri sistemi ed evitare falsi allarmi, l’azienda aveva deciso di disabilitare la frenata di emergenza e di affidare questo compito al guidatore a bordo, che con i tradizionali comandi sarebbe potuto (e dovuto!) intervenire in tempo per evitare la collisione. Anche se sembra assurdo, in realtà è perfettamente legittimo e normale… si lascia al sorvegliante umano la supervisione finale della sicurezza. 


E allora perché la persona alla guida non ha frenato in tempo


Semplice: 


perchè stava guardando… uno show al telefonino
Da quasi un’ora, la guidatrice, che era pagata 24$ all’ora per stare attenta e operativa al volante, stava seguendo una trasmissione sul telefonino, guardando solo occasionalmente la strada. E si è accorta dell’imminente impatto meno di un secondo prima, senza avere il tempo di frenare.


Quindi, tutta colpa sua? Della guidatrice di backup distratta? Andrà lei in galera? Non è la macchina posseduta, il robot impazzito, il software-killer?
Forse, ma in realtà non è neanche quello il punto. Ci sono altri fattori da considerare che adesso ti mostro, perché sembra un po’ tutto basato su aziende molto potenti e tecnologicamente avanzatissime, che mettono a disposizione i migliori esperti al mondo e le tecnologie più incredibili per raggiungere questo scopo, non riuscendo però a gestire l’imprevedibile. 


Ma in realtà c’è un grandissimo errore di fondo che quasi nessuno incredibilmente nota, se non gente come me che viene da settori ancora più delicati e critici come quello aeronautico.

 
Perché dei sistemi del genere non potranno mai funzionare, nelle condizioni al contorno attuali, a dispetto di tutti gli sforzi che stanno mettendo in piedi dei giganti dei trasporti e dell’informatica? 


Ma soprattutto, esiste già qualcosa a livello di altri mezzi di trasporto autonomi nel mondo in altri settori?

Aerei che atterrano da soli

Certo, esistono eccome dei sistemi di trasporto gestiti completamente da intelligenze artificiali e computer a guida autonoma che funzionano bene, anzi molto bene, e sono in giro da vari anni. Li analizzo brevemente per farti capire che cosa hanno in comune ma soprattutto che cosa hanno di diverso rispetto alle automobili che dovrebbero guidare da sole sulle nostre strade di tutti i giorni e perché un incidente simile non potrà mai succedere. 


Il motivo, come vedremo, è che questi altri sistemi funzionano con delle condizioni al contorno molto più restrittive di quello che giornali, esperti e grandissime aziende a livello mondiale e vorrebbero farci credere possibile per le auto.

Parliamo brevemente di uno dei primi sistemi autonomi di trasporto passeggeri che esiste da alcuni decenni e che funziona in maniera praticamente perfetta: l’atterraggio strumentale degli aerei ILS (Instrument Landing System). Ti sarà capitato, soprattutto se vivi in una città del Nord Europa, che nel periodo autunnale o invernale, atterrando in una situazione di forte nebbia, il capitano abbia chiesto a tutti i passeggeri di spegnere qualunque dispositivo elettronico perché era in corso un atterraggio strumentale e non ci dovevano essere interferenze di nessun tipo con i sistemi di bordo.


Te la faccio semplice senza andare troppo in dettaglio di aspetti tecnologici che ti puoi andare a cercare tu anche solo su Wikipedia, ma questi sistemi si basano su un continuo scambio di informazioni tra tutta una serie di sensori e di sistemi informatici che sono a bordo dell’aereo, sui satelliti visibili in quel momento dall’aereo stesso nella torre di controllo e in tutti gli altri sistemi di terra che stanno intorno all’aeroporto e in varie stazioni su tutto il territorio. In poche parole, tutto l’atterraggio strumentale si basa non soltanto sulle apparecchiature per quanto sofisticate, sul software avanzato di bordo, sui sensori e radar che sono montati sull’aereo… ma si basano su una molteplicità di apparecchiature, di computer e di apparati di comunicazione che stanno sia sull’aereo che a terra e sui satelliti. E soprattutto una serie di sistemi di controllo tramite radar e altri strumenti per essere sicuri che tutto il percorso di atterraggio, i dintorni, la pista siano liberi da interferenze, altri aerei o oggetti volanti (vedi la questione dei droni), insomma che non ci siano elementi di disturbo esterni. Questo sarà un punto fondamentale su cui torneremo più avanti.


Questi sistemi esistono dagli anni ‘60 e hanno permesso di effettuare milioni e milioni di atterraggi strumentali senza nessun incidente grave. Infatti, considera che nel 2017 non c’è stato un singolo incidente mortale di aerei da trasporto passeggeri del mondo. 

Ripetilo con me:


37 milioni di voli nel 2017, nessun incidente mortale

Con sistemi che si basano fortemente sul software e sulle comunicazioni radio per svolgere tutta una serie di compiti automatici. Evidentemente, se la probabilità di un incidente automobilistico in generale è 17.000 volte più alta rispetto a quella di un incidente aereo (esatto: l’automobile è diciassettemila volte più pericolosa dell’aereo!), qualcosa da imparare dal mondo avionico ce l’abbiamo, no? E alla fine della lettura di questo articolo ti sarà molto più chiaro perché questo è molto utile anche per te e per la tua azienda che fa software, anche se non avionico.

Treni che frenano in autonomia

Vediamo adesso un altro sistema di trasporto passeggeri altamente critico che si basa integralmente su sistemi di guida autonoma basati su computer: i treni ad Alta velocità, come l’italiano Frecciarossa che ha uno dei sistemi più avanzati al mondo per quanto riguarda la sicurezza, si basano pesantemente sulla guida strumentale, operata anche in questo caso da un mix dei sistemi di bordo e di quelli che stanno dislocati lungo la ferrovia e nelle sale di controllo delle stazioni intermedie e di quelle di partenza e arrivo.

Per avere un’idea, un treno come il Frecciarossa a pieno carico che viaggia a 300 km orari in una situazione di emergenza totale richiede almeno 4 km per fermarsi con un freno di emergenza. Hai capito bene, QUATTRO CHILOMETRI


Se il macchinista aziona la frenata rapida, il treno continua ad andare avanti e a colpire qualunque tipo di ostacolo o problema davanti a lui per 4 km prima di fermarsi. Se invece si ferma con tranquillità senza emergenza, un treno di quel tipo ci mette dai 6 agli 8 km per fermarsi completamente.

Cosa significa questo? 


Ovviamente, che il macchinista non ha nessun tipo di responsabilità e di azione per quanto riguarda le frenate di emergenza perché è talmente alta la velocità, e sono talmente lunghi gli spazi di arresto, che se anche lui vedesse ad occhio nudo un ostacolo qualche centinaio di metri più avanti, o anche un chilometro più avanti, non avrebbe nessun tipo di possibilità di fermarsi per tempo provocando quindi potenzialmente un grosso disastro ferroviario. Per questo motivo, anche qui ormai da tanti anni esistono dei sistemi di sicurezza molto avanzati tra cui il nostro ERTMS/ETCS (European Rail Traffic Management System/European Train Control System) che è un sistema di gestione, controllo e protezione del traffico ferroviario e relativo segnalamento che si basa ancora una volta su sistemi di bordo computerizzati, sensori, radar e altre cose montate sul treno, tutta una serie di transponder e altri sistemi che stando lungo la ferrovia, apparati di segnalazione e di comunicazione del treno con le stazioni più vicine nonché con quelle di partenza e arrivo. 


In poche parole, per tutto il tratto in cui un Frecciarossa tra una stazione e l’altra viaggia ad alta velocità, l’azione dei macchinisti è totalmente inutile e il treno è completamente guidato dal computer, tant’è che loro stessi mi hanno detto che potrebbero viaggiare con il vetro completamente oscurato perché tanto non cambierebbe nulla per loro.

Ma come si fa a proteggere la ferrovia ad alta velocità da problemi di interferenze esterne?

 
È molto semplice: prima di tutto non esistono cose tipo passaggi a livello che rappresenterebbero un rischio troppo alto e non gestibile in nessun modo. Allo stesso modo, le rotaie dei treni ad Alta Velocità sono protette da centinaia di km di reti difficili da scavalcare, sistemi di videosorveglianza e allarme di prossimità nel caso scavalchi qualcuno o qualche grosso animale, e sistemi avanzati che controllano che le rotaie siano perfettamente integre senza nessun tipo di interruzione o problema. Inoltre, come dicevamo, il treno continua a comunicare la propria posizione e lo stato di sicurezza con dei transponder lungo le rotaie e le stazioni per assicurarsi che non ci sia nessun tipo di pericolo.

Il vero problema dell’incidente dell’auto di Uber?

Adesso, ti è forse più chiaro perché c’è un enorme errore di fondo, non tanto quando  si progettano questi sistemi a guida autonoma di automobili ma nel momento in cui si ha la pretesa utopistica di farli circolare su strade normale di tutti i giorni? 


Strade con buche, senza segnaletica orizzontale o verticale, che si allargano o si stringono senza nessun criterio, con segnalazioni che non hanno sempre un senso o uno standard uniforme in tutto il paese, figuriamoci in paesi diversi. 


Senza poi parlare degli altri guidatori… 

persone di tutti i tipi, di tutte le età, con stili di guida completamente diversi che vanno dal giovane spericolato, al famoso vecchio col cappello di cui ho parlato all’inizio dell’articolo, alla signora che torna a casa con la spesa e via discorrendo. 

Ognuno con esperienza, abilità di guida, comportamento completamente diverso e del tutto imprevedibile. 


Per finire poi coi pedoni, che attraversano (sempre?) sulle strisce ma anche improvvisamente, altri tipi di pericoli, carichi che vengono persi dai camion o da altre automobili e via così. 


Un macello totale, completamente imprevedibile, che nessun computer al mondo potrà mai gestire in nessun modo in maniera sicura come quella di un ambiente iper-controllato, sicuro, standard come quello intorno a un aereo o un sistema ferroviario.


Il vero problema dell’auto di Uber è stato quello… 

di permettere di farla circolare nelle strade di tutti i giorni.

La soluzione per le auto a guida autonoma?

L’unico modo per avere delle macchine a guida autonoma che possono portare passeggeri senza nessun rischio per la loro incolumità quella degli altri è quella di: 


creare delle nuove strade e autostrade, con degli standard uguali in tutto il mondo o almeno in tutto il paese o insieme di Stati confinanti, perfettamente regolari e manutenute, con segnaletica orizzontale e verticale sempre perfetta, piene di sensori e transponder inseriti nell’ asfalto,  nei segnali stradali, nei guardrails che comunicano in continuazione con le auto, che individuano pericoli come perdita di carichi, incidenti, rallentamenti e via discorrendo. 


Con auto che si parlano tra di loro e si trasmettono in continuazione le informazioni raccolte dai propri sensori e quelli della rete autostradale, che comunicano con la centrale di controllo del traffico più vicina. E soprattutto barriere lungo tutto il percorso e lungo gli accessi principali che blocchino completamente l’accesso a pedoni, estranei, animali e ovviamente macchine non a guida autonoma, o che montano a bordo sistemi malfunzionanti o non aggiornati, macchine che imboccano l’autostrada nel senso sbagliato e via discorrendo. In poche parole, a chiunque non sia aggiornato e autorizzato.



Adesso, immaginiamo che in tutto questo mondo così perfetto e simile all’ambiente sicuro delle ferrovie ad alta velocità e a quello comunque simile dell’atterraggio strumentale degli aerei, in questa autostrada sicura dove ci sono solo macchine a guida autonoma, improvvisamente irrompa quello che è l’incubo delle strade di tutti i giorni… ma che in un’autostrada del genere potrebbe diventare la causa di una vera e propria tragedia: 

IL VECCHIO CON IL CAPPELLO

Ossia quella persona, quell’auto, quel sistema, quel software che non è in regola con tutta l’architettura, lo standard, la conformità di tutte le altre macchine e dell’infrastruttura autostradale e in qualche modo violando gli accessi riesce ad accedere all’autostrada intelligente e si mette in mezzo alla strada a 40 all’ora con le altre macchine a guida autonoma che gli sfrecciano intorno impazzite fino a quando il comportamento è talmente imprevedibile da fare impazzire anche questi computer e provocare incidenti mortali. 


Per cui, a maggior ragione, bisogna evitare in tutti i modi che il vecchio con il cappello possa in alcun modo individuare delle falle del sistema di accesso e irrompere violando tutti i requisiti e le caratteristiche di accesso.

Software e vecchi col cappello 

E ora vediamo che cosa c’entrano i progetti software, il poker e soprattutto cosa c’entri TU.


I progetti software sono molto simili a quello di cui hai sentito parlare finora, in quanto sono sistemi molto complessi in cui interagiscono fra di loro tutta una serie di entità, di sottosistemi, di computer che comunicano fra di loro in maniera molto complessa. Esattamente come una rete autostradale intelligente, il sistema ferroviario ad alta velocità o un aereo che fa un atterraggio strumentale. 


La stessa cura destinata alle regole, ai requisiti, all’infrastruttura, alla compatibilità, alla sicurezza degli accessi e via discorrendo deve essere messa anche in un progetto software di tutti i giorni, come quello in cui magari lavori o gestisci tu, altrimenti il rischio è che del codice non compatibile, una modifica non adeguatamente considerata nei suoi impatti, un aggiornamento di un sottosistema, il rilascio di un nuovo componente non previsto nell’infrastruttura iniziale potrebbe avere degli impatti devastanti e provocare conseguenze disastrose nel tuo software, nel tuo business e nei tuoi clienti.

In poche parole: 

DEVI PROTEGGERE IL TUO PROGETTO DAL VECCHIO COL CAPPELLO!

Cosa c’entra a questo punto il… POKER? 

Nel famoso gioco di carte, c’è una regola famosa anche se non scritta… che dice che nel momento in cui ti siedi, al tavolo c’è sempre una persona che non conosce bene le regole e che quindi può essere spennata. Ma se nel primo quarto d’ora di gioco non hai individuato chi è il pollo da spennare, c’è la grossa possibilità che sia TU.

Ok, e come mettiamo questo insieme con tutto il discorso precedente? 


È molto semplice… nell’ultimo quarto d’ora io ti ho parlato di come la progettazione di un sistema, di un’infrastruttura complessa sia piena di regole, di requisiti, di intelligenze autonome che si devono parlare tra di loro in un protocollo standard, di attori che interagiscono con il tuo sistema secondo protocolli ben precisi, di modifiche che vengono introdotte in maniera assolutamente accurata e di accessi che vengono protetti da tutte le persone, entità e processi che non sono autorizzati


In poche parole, nell’ultimo quarto d’ora ti ho parlato del potenziale vecchio con il cappello del tuo progetto software.


Ecco, allora: Se il mio discorso non ti ha fatto accendere i campanelli di allarme… 


Se non ti è venuto il sospetto di quale potrebbe essere il prossimo disastro nel tuo progetto… 


Se non immagini quale potrebbe essere la modifica non autorizzata che verrà introdotta a breve…

 
Se non sai chi sta violando i requisiti per poter interagire con il tuo sistema… 


Se c’è una porta aperta dalla quale potrebbe entrare il vecchio col cappello e mandare all’aria il tuo sistema… 


Se queste domande non ti sono balzate in mente o non riesci a darti una risposta, bene, c’è il rischio fondato che il vecchio con il che sta mettendo in pericolo il tuo progetto software… possa essere proprio TU.


Per cui forse è il caso che fai un bel respiro, rileggi con calma questo e gli altri articoli del blog e cerchi di capire come evitare questi problemi nel TUO futuro, adottando un metodo di lavoro come il M.E.D.S (Metodo per lo Sviluppo Efficiente del Software) e far atterrare il tuo progetto in totale sicurezza… come un atterraggio strumentale di un aereo.

Conclusioni

Ti è piaciuto questo articolo? Scopri la mia newsletter gratuita dove periodicamente troverai:

  • analisi dettagliate di incidenti critici (apparentemente) causati dal software
  • strategie ottimali per produrre software Safety- e Business-Critical
  • consigli su come adottare delle tecniche sicure ed efficaci nei tuoi progetti

Lascia la tua email per avere immediatamente accesso alla mia newsletter:


E sarò lieto di aiutarti a capire come tenere lontani i vecchi col cappello dal tuo progetto software…

Massimo Bombino

La tua azienda sta producendo pessimo software, bruciando prezioso budget in una spirale che presto ti manderà gambe all’aria. Te ne sei già accorto? E cosa stai facendo per evitarlo?
Tech Nerd theme designed by Siteturner