SpaceX: il software che ha permesso l’impresa

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.

Sala di controllo missione. Credits: www.nasa.gov

Nel precedente articolo abbiamo parlato dell’hardware che utilizza SpaceX per la realizzazione dei propri velivoli: tripla ridondanza e componenti COTS alla base di tutto. Ora mi chiedo, che tipo di software impiegano per controllare il tutto? La quantità di informazione è anche qui difficile da reperire, ma siamo in grado di ricostruire una panoramica generale.

Come l’hardware, anche il software COTS è la chiave del successo

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.
Sala di controllo missione. Credits: www.superstarfloraluk.com

Computer di bordo e hardware di volo sono il risultato di continui test e sviluppo su componenti provenienti da produttori diversi. È indispensabile, quindi, l’utilizzo di software che permettano a queste parti di dialogare. La stessa espressione “COTS” applicata al software viene usata più per riferirsi al software infrastrutturale detto middleware.

In informatica con middleware si intende un insieme di programmi informatici che fungono da intermediari tra diverse applicazioni e componenti software. Sono spesso utilizzati come supporto per sistemi distribuiti complessi con architetture multi-strato. L’integrazione dei processi e dei servizi, residenti su sistemi con tecnologie e architetture diverse, è un’altra funzione delle applicazioni middleware.

Sistema operativo e linguaggio di programmazione impiegati

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.
Credits: https://www.youtube.com/watch?v=N5faA2MZ6jY

Il sistema operativo scelto da SpaceX è Linux, che viene eseguito sui desktop degli ingegneri per il controllo dei veicoli. L’uso di Linux ovunque consente loro di semplificare il processo di sviluppo e di utilizzare i solidi strumenti che ne derivano.

Il linguaggio di programmazione utilizzato è C++ e viene impiegato per due motivi principali:

1-Permette di assumere eccellenti sviluppatori perché il linguaggio è ancora relativamente popolare.

2-SpaceX beneficia del grande ecosistema C++.

Non c’è bisogno di creare software personalizzato quando puoi utilizzare strumenti che gli sviluppatori già conoscono come GCC e GDB.

Linux non è l’unica piattaforma coinvolta: LabView, uno strumento di programmazione grafica che viene eseguito su Windows, è utilizzato per visualizzare la telemetria acquisita dal Falcon 9 o dalla capsula Dragon durante il volo. Il team a terra lo impiega per tenere sotto controllo tutti i parametri.

Tutti per uno e uno per tutti

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.
Credits: https://www.youtube.com/watch?v=N5faA2MZ6jY

SpaceX cerca di condividere il più possibile il proprio codice fra i suoi velivoli. Il vantaggio di fare questo è che la correzione di un bug in un veicolo è automaticamente portata agli altri.

Inoltre, gli ingegneri sono incoraggiati ad aggiungere metriche al maggior numero di componenti possibile. Quando i veicoli sono in uso, tutti questi log sono raccolti e analizzati da dei programmi che lanciano un messaggio di errore se qualcosa supera i limiti di sicurezza. Tutte queste metriche sono archiviate insieme al codice sorgente in esecuzione al momento. Se qualcosa va storto, SpaceX può ricreare l’ambiente esatto per riprodurre il problema e correggerlo.

SpaceX inoltre usa l’integrazione continua per testare automaticamente tutto il codice che viene scritto dagli ingegneri. Hanno persino banchi di prova con tutti i componenti di un Falcon 9 imbullonati in modo da poter simulare un volo completo per scoprire potenziali problemi.

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.
Credits: https://www.youtube.com/watch?v=N5faA2MZ6jY

Nella sala di controllo missione, SpaceX vi utilizza computer e sistemi di visualizzazione standard con software progettato per il controllo di sistemi industriali.

Sviluppatori SpaceX

Una particolarità per quanto riguarda la scelta del personale da parte di SpaceX è che gli sviluppatori di videogiochi sono solitamente adatti a essere assunti. Questo è dovuto alla loro capacità di scrivere codice che dovrà eseguire in ambienti dove la memoria e la potenza di elaborazione sono limitati. Una volta scelti i propri sviluppatori, informatici o ingegneri che siano, SpaceX li divide in gruppi che hanno delle mansioni ben precise.

Il team “Flight Software” conta circa 35 persone e sono gli incaricati di scrivere tutto il codice per le applicazioni Falcon 9, Grasshopper e Dragon e di far funzionare la piattaforma principale, anche su quei veicoli. Inoltre, scrivono anche il software di simulazione, testano il codice di volo e scrivono il software di comunicazione e analisi, distribuito nelle nostre stazioni a terra. Lavorano anche nel Controllo Missione per supportare missioni attive.

Il team “Enterprise Information Systems” costruisce i sistemi software concentrandosi sul prodotto di punta: un’applicazione web interna che utilizza tutto il personale dell’azienda. Ci sono prodotti disponibili in commercio che fanno questo ma SpaceX preferisce poter controllare ogni minimo particolare nel modo più personalizzato possibile.

Il team “Ground Software” è di circa 9 persone e si occupa principalmente di programmare in LabVIEW. Sviluppano le GUI utilizzate nel Controllo Missione e di lancio dagli ingegneri e dagli operatori per monitorare la telemetria dei veicoli e comandare il razzo, il veicolo spaziale e l’equipaggiamento di supporto dei pad. I dati vengono trasmessi ad alta larghezza di banda su un sistema altamente distribuito e sono state implementate interfacce utente complesse con requisiti rigorosi per garantire che gli operatori possano controllare e valutare i veicoli spaziali in modo tempestivo.

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.
Credits: https://www.youtube.com/watch?v=N5faA2MZ6jY

Il team “Avionics Test” collabora con i progettisti hardware avionici per scrivere il software utilizzato per testare i componenti. L’obiettivo principale è scrivere un software molto completo e robusto per poter automatizzare la ricerca di problemi con l’hardware su grandi quantità di dati.

SpaceX si sta trasformando da un’azienda di ricerca e ingegneria in un’azienda manifatturiera (che è fondamentale per il suo successo) quindi il team è in prima linea nel far sì che ciò accada. Fanno leva su C #, MVC4, EF, SQL, Javascript, Knockout, Handlebars, LESS e API REST.

Ingegneri informatici e sviluppatori hanno un ruolo cruciale nella costruzione di velivoli spaziali. Vediamo l'hardware che ha permesso a una Tesla Roadster di orbitare intorno al nostro pianeta e di addentrarsi nelle profondità del Sistema Solare.
Capsula Dragon. Credits: www.slideshare.net