Alcune settimane fa, si è svolto sul social Reddit un AMA (ask me anything) con ospiti alcuni membri del team software di SpaceX. Grazie alle loro risposte a quasi un centinaio di domande, sono emersi nuovi e preziosi dettagli sullo sviluppo dei Software per i veicoli di SpaceX, in particolare sulla nuova Crew Dragon.
Occasioni del genere sono molto rare nell’ambito aerospaziale dato che il software rappresenta una delle parti più complesse e sensibili di un veicolo spaziale. Al fine di tutelare questo ed altri elementi, negli Stati Uniti esistono da decenni un complesso di leggi chiamate “ITAR”. Queste leggi limitano l’esportazione di componenti, materiali e software sensibili per la sicurezza nazionale. Una delle dirette conseguenze di queste leggi è che nel settore aerospaziale ci sono severe restrizioni sulla divulgazione di queste informazioni tecniche molto specifiche oltre alla famosa impossibilità per i non cittadini americani di lavorare in determinati aziende/enti.
In ogni caso, le informazioni rivelate dagli ingegneri di SpaceX su Reddit sono perfettamente conformi alle leggi americane. Ovviamente, per rispondere ad alcune domande specifiche delle migliaia presenti, i membri del team di SpaceX hanno dovuto tenersi su ambiti molto generali e non entrare mai in dettagli sensibili. Questo fatto non sminuisce l’interesse delle informazioni rivelate sulla Dragon e Starlink.
Il grande assente nelle risposte di SpaceX è sicuramente il Falcon, principalmente per due motivi. Da una parte ci sono le leggi accennate precedentemente ma anche la volontà di caratterizzare l’evento sulla Dragon recentemente partita con a bordo i primi due astronauti. Infatti la maggior parte degli ingegneri presenti si occupano del software della Crew Dragon.
Crew Dragon, tra UI e simulatore
Al fine di comprendere meglio gli strumenti utilizzati da SpaceX per sviluppare il software della Dragon, è utile capire meglio le esigenze di un software di volo. Una delle problematiche più importanti nel costruire il software della Dragon è la gestione dei cosiddetti Bit Flip. Questi ultimi sono un problema causato dalle radiazioni nello spazio e sono essenzialmente il danneggiamento di uno o più bit nella memoria o CPU. In parole povere, le radiazioni possono causare un errore nei processi computazionali trasformando 0 in 1 e viceversa.
Per affrontare questo problema, SpaceX ha adottato un radiation tolerant design che sopratutto si concretizza con l’uso di più computer di volo. In particolare per la Crew Dragon, SpaceX utilizza un processore quad core di potenza comparabile a quello di uno smartphone di cinque anni fa. Non è chiaro quanti processori siano presenti su questo nuovo modello di Dragon, tuttavia da informazioni pregresse sappiamo che nella prima Dragon Cargo vi erano tre processori dual core. La funzionalità dual core non era però utilizzata per ottenere due indipendenti risultati ma per avere un totale di sei processori. Nella Crew Dragon è lecito pensare avvenga lo stesso se pur con un processore diverso e più computer.
Un alternativa al design prima citato è il radiation hardened design in cui si utilizzano componenti appositamente progettate per schermare le radiazioni. Il grosso limite di questo approccio è che le suddette componenti sono molto costose e sono programmate con linguaggi poco conosciuti, limitando così la platea di ingegneri che SpaceX può assumere.
Il linguaggio della Crew Dragon
Al fine di sviluppare il software dei propri veicoli, SpaceX utilizza prevalentemente il linguaggio C e C++ con programmazione ad oggetti. Per quest’ultimo linguaggio vengono utilizzate anche delle librerie open source e non solo quelle sviluppate internamente da SpaceX. La scelta di usare queste librerie è tuttavia strettamente limitata a quelle ritenute di ottima qualità dal team di sviluppo.
In generale, C++ è utilizzato per programmare i sistemi di controllo di tutti i veicoli SpaceX. L’utilizzo di Python è invece riservato alla creazione di strumenti di sviluppo, test e all’automazione. Purtroppo, dall’AMA non è molto chiaro il ruolo di C nell’architettura software dell’azienda californiana.
Il sistema operativo utilizzato da SpaceX è Linux con la patch PREEMPT_RT al fine di ottenere migliori prestazioni in tempo reale. Per quanto riguarda il kernel, SpaceX ha una copia proprietaria e non ha installato nessuna distribuzione di terze parti. Negli anni hanno fatto alcune modifiche al sistema, man mano che erano necessarie. L’utilizzo di Linux è comunque limitato alle applicazioni e all’interfaccia con l’hardware. Per quanto concerne i sitemi di fault management e ridondanza, SpaceX utilizzo un software sviluppato in casa.
Interfaccia Utente di nuova generazione
Un altro argomento ampiamente discusso nel corso dell’AMA è la cosiddetta UI (user interface) ossia l’interfaccia uomo macchina presente sugli schermi LCD della Dragon. Uno dei dettagli più interessanti è sicuramente l’utilizzo di chromium, ossia la base su cui poi Google ha sviluppato Chrome, ovviamente open source. Chromium è programmato con i classici HTML, Javascript e CSS e svolge la parte di rendering engine dell’UI. Un altro dettaglio è l’utilizzo di una reactive library sviluppata in azienda. Oltre ai display sono presenti dei bottoni la cui funzione è relegata alle sole emergenze qualora uno o più dei tre display indipendenti avessero malfunzionamenti.

In generale lo sviluppo dell’UI segue due criteri fondamentali per il team di SpaceX: rendere minima l’interazione tra uomo e macchina e farla il più semplice possibile. Nella fase di sviluppo sono stati effettuati anche diversi test in diverse condizioni di visibilità e vibrazioni. La scelta dell’inclinazione dei sedili non è casuale ma segue dai vari test effettuati nel simulatore.
Per meglio comprendere come i software di SpaceX siano molto collegati tra loro, un ingegnere ha affermato che la tecnologie sviluppate con gli schermi della Dragon sono già impiegate per alcuni sistemi di terra per la Starship. In futuro l’UI della Crew Dragon sarà alla base di quella di Starship.
Infine è stata rivelata anche una piccola curiosità sul simulatore di docking rilasciato da SpaceX alcune settimane fa (potete mettere alla prova le vostre abilità di dragonrider qui). Più precisamente, il simulatore presenta un codice separato rispetto a quello utilizzato sulla Dragon. Partito come un progetto divertente tra colleghi è stato infine portato a termine e rilasciato ufficialmente.
Nel prossimo articolo analizzeremo invece tutto quello che è emerso sul software del progetto Starlink. Continua a seguire Astrospace.it su Facebook e sul nostro canale Telegram per non perderti nessuno dei nostri articoli e aggiornamenti sul settore aerospaziale e dell’esplorazione dello spazio.