Romania Military

Stele verzi – SpaceX si imblanzirea dragonilor si soimilor

Deoarece:

astăzi ne vom uita la calculatoarele care se ocupă de rachetele Falcon 9 și de capsulele Dragon. Vom amâna astfel discuția despre calculatoarele de pe Saturn V, Apollo CM, Apollo LM/LEM pentru mai târziu. Informațiile prezentate nu sunt foarte actuale, nu există descrieri detaliate și la zi iar multe aspecte sunt contradictorii din cauza restricțiilor impuse de ITAR şi de păstrarea secretelor comerciale.

Prezentarea face parte din domeniul ghidare-navigație-control (engl GNCGuidance, Navigation and Control), acesta fiind acel domeniu al ingineriei care se ocupă de proiectarea sistemelor folosite petru controlul mișcării vehiculelor – automobile, nave, avioane, rachete, nave spațiale.
 

Problema

Câteva aspecte generale înainte de toate, care ne vor permite să înțelegem problema.

Ghidarea unei rachete de la lansare până la destinație (în cazul nostru Falcon 9 + Dragon din Florida până pe ISS) are mai multe etape, fiecare cu provocările sale:
– în prima parte a traiectoriei (de la lansare și până la ieșirea din atmosferă) sistemul de conrol trebuie să ia în calcul rezistența la înaintare, să nu fie depășite forțele pe care le pot suporta vehiculul și echipajul, să răspundă la evenimente externe (rafale de vânt, accidente);
– urmează apoi ieșirea din atmosferă și eventuale manevre de schimbare a traiectoriei;
– oprirea motorului primei trepte, separarea treptei întâi și eventual recuperarea ei;
– oprinderea motorului treptei a doua și eventuale corecții;
– oprirea motorului treptei a doua și repornirea sa, dacă este cazul;
– aprinderea motoarelor capsulelor pentru a ajunge la destinație;
– diverse operații de schimbare a orientării (en attitude) și de deplasare.

Iată deci doar câteva din mulțimea de operații care au fost realizate de sistemele de ghidare, navigare și control, de la începutul explorării spațiale.

Din punct de vedere al mediului, echipamentele electronice trebuie să reziste la mai multe provocări – temperaturi ridicate sau joase (de la -150 la +150 grade Celsius), radiații, accelerații, vibrații. Unele probleme au fost detaliate în două postari anterioare – Tehnologii (episodul 2): inamicii tehnologiei – accelerația și Tehnologii (episodul 3): inamicii tehnologiei – spațiul.
 

Cum (hardware)

SpaceX a ales să utilizeze componente standard, disponibile comercial (engl COTSCommercial Off-The-Shelf). Condițiile principale la alegerea sistemelor de calcul au fost:

Pe parcursul acestei expuneri vor fi folosiți cu același sens termenii calculator, sistem, sistem de calcul.

Prima informație foarte interesantă este că SpaceX folosește sisteme având procesoare Intel din familia x86, câte trei sisteme pentru fiecare operațiune unde sunt implicate sisteme de calcul. Sunt trei pentru redundanță, dar această discuție o vom avea mai târziu deoarece redundanța este asigurată prin software. Există informații care se referă la utilizarea pentru controlul diverselor elemente (ex: suprafețe de control, picioare, etc) pe prima și a doua treaptă a Falcon 9 a microcontrollerelor PowerPC.

Există informații contradictorii referitoare la sistemele care controlează motoarele (bazate pe procesoare x86 vs microcontrollere PowerPC) și număr de sisteme care este folosit la fiecare motor al primei trepte Falcon 9. Unele surse vorbesc de trei calculatoare pentru fiecare motor Merlin (deci 27 în total având o configurație redundantă), altele despre câte un calculator pentru fiecare motor (fără a detalia dacă se se referă la ansamblul format de trei sisteme redundante sau un singur sistem). De asemenea, şi alte sisteme (suprafețele de control de exemplu) au propriile calculatoare de control.

Pe lângă acestea, există încă trei sisteme care să facă operațiunile principale (navigație și ghidare), alături de supravegherea și controlul celorlalte calculatoare/microcontrollere. Avem deci o separare a funcției calculatoarelor – unele pentru control în timp ce ultimele ar fi responsabile cu navigația și deciziile referitoare la zbor – controlul traiectoriei la lansare și manevrele efectuate pentru recuperare. În oricare dintre variante ajungem la un număr de cel puțin 15 sisteme doar pentru prima treaptă.

A doua treaptă, păstrând aceleaşi principii de construcție putem presupune că ar avea trei sisteme pentru motorul Merlin Vacuum (engl orig MVac) sau unul singur și încă 3 pentru ghidare și navigație. Deci minimum 4 sisteme pentru a doua treaptă.

Capsula Dragon utilizată în programul de reaprovizionare al ISS avea același gen de calculatoare de ghidare şi navigație într-o configurație redundantă, cu 3 bucăți. Pe lângă calculatoarele de navigație există și calculatoarele de intrare-ieșire (o unitate cu 3 calculatoare), acestea comunicând cu restul componentelor capsulei (senzori și elemente controlate) folosind module (engl RIOremote input/output). Utilizarea sistemului cu module oferă flexibilitate în alegerea placilor de achiziție de date și control. Arhitectura aceasta a fost aleasă pentru un proces de producție cât mai simplu. Una din surse vorbește despre un număr de 18 unități de calcul în capsula Dragon în 2012, ceea ce ar duce numărul calculatoarelor la 54, doar în capsulă.

Calculator cu module I/O ()

O altă sursă susține că pe capsula Dragon sistemele de navigație ar rula pe procesoare ARM și nu x86.

Părerea autorului este că oriunde a fost implementată o unitate de calcul, aceasta a avut și are configurație redundantă, cu trei calculatoare. Deci 27 de calculatoare, în unități de câte trei, pentru motoarele primei trepte. Deși pare ciudată utilizarea de calculatoare dedicate pentru motoare, ei bine nu este. Aceste calculatoare interacționează direct cu motoarele, primind informații de la senzori și trimițând comenzi către diverse componente ale motorului, acestea fiind controlate direct. Și naveta spațială folosea calculatoare pentru controlul motoarelor RS-25 – este vorba despre Honeywell HDC-601, care era deja folosit de USAF din 1972. Alegerea sa a fost determinată și de compatibilitatea software cu Honeywell DDP 516, deci exista disponibil și un mediu de dezvoltare.

RS-25 și HDC-601 (NASA)

Ca o observație de final, NASA nu a avut și nu are în cerințe ca procesoarele să fie rezistente la radiații (engl radiation hardened / RadHard), ci ca sistemele să funcționeze fără probleme, fiind luate în calcul condițiile cu care au de-a face. Pentru Dragon, SpaceX a trebuit să realizeze o analiză a mediului, efectele sale asupra capsulei și să prezinte modul în care vor reacționa/se vor comporta sistemele Dragon și SpaceX.
 

Cum (software)

Calculatoarele sunt ca oamenii: fără software se aseamănă cu jandarmii – doar niște obiecte contondente fără nici o utilitate reală; software-ul le face să își realizeze scopul. Să aruncăm deci o privire și la software-ul care rulează pe sistemele Falcon 9/Dragon și să vedem cum funcționează ele.

În primul rând, sistemul de operare de pe zburătoare: este, bineînțeles, Linux. Informațiile detaliate sunt oarecum contadictorii. Textul în original, publicat în 2012 în Aviation Week, este: There are actually six computers. They operate in pairs, so there are three computer units, each of which have two computers checking on each other. care se traduce De fapt sunt șase calculatoare. Ele funcționează în perechi, deci sunt trei unități de calcul, fiecare cu câte două calculatoare care se verifică reciproc..

Ce ar putea însemna aceasta? Că o unitate de calcul este de fapt un procesor cu două nuclee (engl dual core) sau o unitate de calcul sunt de fapt două calculatoare diferite?

Mai departe, unele informații vorbesc despre rularea unei instanțe de Linux pe un nucleu (deci o unitate de calcul rulează de fapt două sisteme de operare Linux) și în fiecare instanță software-ul SpaceX. Dar mai pot exista și alte variante. Paractic avem următoarele opțiuni:
– un singur sistem de operare rulează pe ambele nuclee și acesta are două instanțe ale software-ului GNC al SpaceX, fiecare instanță rulând pe câte un nucleu;
– două kerneluri Linux cu modificări majore, fiecare rulând pe câte un nucleu și fiecare kernel Linux rulează câte un software GNC al SpaceX;
– două mașini virtuale Linux, fiecare pe câte un nucleu al procesorului, în fiecare mașină virtuală rulând o instanță a softwareului GNC al SpaceX;
– două calculatoare distincte, în același modul formează o unitate de calcul; fiecare calculator rulează un sistem Linux și o instanță a softwareului GNC al SpaceX.

Cum funcționează sistemul? Cele două instanțe ale software-ului GNC fac calcule pe baza algoritmulilor implementați şi rezultă o comandă. Un supervizor compară cele două rezultate şi dacă sunt identice, comanda este trimisă pentru execuție. Dacă cele două rezultate sunt diferite, nu este trimisă nici o comandă.

Pentru a executa o comandă (de exemplu schimbarea orientării suprafețelor de control), microcontrollerul care se ocupă de acea activitate (orientarea suprafețelor de control în cazul nostru) trebuie să primească de la toate cele 3 sisteme aceeași comandă. Dacă una dintre comenzile primite diferă, atunci microcontrollerul va executa comanda primită de la celelalte două. În cazul în care toate sunt diferite se va păstra ultima stare sau o va alege pe cea de la sistemul considerat cel mai sigur. Dacă erorile primite de la unul dintre sisteme persistă, atunci acesta va fi trecut în modul defect. Acest model de redundanță (aceeași comandă primită de 3 ori) este folosit și de Airbus la sistemele fly-by-wire de pe avioanele sale. A fost aleasă de SpaceX pentru a nu cheltui sume exorbitante cu procesoarele și sistemele rezistente la radiații.

Poate exista – pentru capsula Dragon – situația în care calculatoarele au erori din cauza radiațiilor. În cazul în care în mod constant un calculator de navigație nu returnează rezultate corecte, acesta este repornit și copiază conținutul memoriei (datele utilizate pentru calcule) de pe unul din cele funcționale. Se va alătura apoi celor funcționale. În cazul unei erori care ar face ca toate cele 3 calculatoare de navigație să dea comenzi greșite, acestea pot fi oprite, de la sol fiind trimise comenzi prin unul din sistemele de comunicații (direct sau prin satelit) care ajung la calculatoarele de control, acestea executând direct operațiunile.

Din punct de vedere al cantității, estimarea în 2012 era la câteva sute de mii linii de cod sursă (între 100 k și 500 k conform SpaceX) pentru fiecare dintre vehicule. Andocarea Dragon la ISS a fost o provocare majoră necesitând scrierea unei bune părți de cod nou pentru capsula Dragon. Dar estimarea efortului depus pentru scrierea codului sursă doar cantitativ, după numărul de linii, este greșită. Vorba lui Bill Gates: este ca și cum ai estima gradul până la care a fost construit un avion strict pe baza masei sale.

Software-ul scris pentru Falcon 9 și Dragon este scris în C++. Evident, driverele (și alte componente software apropiate de sistemul de operare) sunt scrise în C. În 2016 exista informația că interfața cu utilizatorul este dezvoltată folosind browserul Chromium și JavaScript. Fiecare display este independent, cu propriul sistem de calcul, putând fi rebootat dacă este nevoie. De asemenea, există și opțiunea de a utiliza butoanele de sub display-uri pentru control, în cazul în care touchscreen-ul are probleme.

UI Dragon (NASA)

Sistemele aflate la sol (engl Mission Control) rulează sistemul de operare Windows cu aplicații scrise folosind LabView.

LabVIew (NASA/SpaceX)

Un alt pachet software folosit de SpaceX este Matlab.
 

Cum (dezvoltare și testare)

Una din surse vorbește despre faptul că dezvoltatorii SpaceX fac dezvoltarea și testarea pe birou, direct pe calculatoare reale gata de zbor. Costul redus al acestor sisteme le permite această abordare. I just walked around the factory this morning, just in the office area alone, and we have over 40 of the flight computers sitting on people’s desks. And if they were hard-to-come-by items, we wouldn’t have that many computers.

Ritmul de dezvoltare a fost incredibil până să se ajungă la versiunea curentă de Falcon 9. În 2013 deja se ajunsese la generația a treia de calculatoare de navigație.

Pe lângă acest mod de dezvoltare, există practic un întreg sistem care simulează o rachetă aflat la dispoziția dezvoltatorilor – o rachetă într-o cameră. Se poate realiza astfel testarea completă:
– dacă noii algoritmi funcționează corect
– dacă parametrii unei misiuni sunt corecți
– diverse erori sau situații neprevăzute (ex: oprirea unui motor, erori de calcul, erori de control, oprirea de calculatoare în timpul funcționării)

Inginerii sunt încurajați să adauge colectare de date în orice punct unde cred că ar fi de folos. Logurile sunt colectate și analizate automat, putând fi generate alarme în funcție de aceste valori. Acestea sunt stocate, alături de programele care rulau. Dacă o rachetă are o problemă, aceasta poate fi investigată, duplicându-se exact datele de intrare pentru a o putea rezolva. Mai mult, codul este testat automat pe racheta simulată.

Nu este folosit cod generat automat (de exemplu de Matlab).

Din punct de vedere al timpului cât rulează software-ul, Dragon oferă mult mai multe oportunități pentru rularea pe termen lung față de Falcon 9 (ore sau zile față de 10 minute). Evident, există posibilitatea de a rezolva erori și când vehiculul este în zbor. O situație problematică cu care s-a confruntat Dragon la începuturi a fost atunci când nu a putut andoca din cauza iluminării. Soluția a fost actualizarea software-ului capsulei, în zbor.
 

Cine

Echipa de dezvoltare pentru sistemele software ale vehiculelor avea în 2013 35 de dezvoltatori iar echipa de dezvoltare pentru sistemele de suport pentru misiune 9 dezvoltatori. Absolvenți de facultăți de inginerie (calculatoare, electronică), fizică, matematică sau chiar ingineri autodidacți.

Chiar astăzi am găsit disponibilă pe Glassdoor o poziție de dezvoltator software pentru sisteme Linux embedded la SpaceX (în Hawthorne, California). Cel mai probabil pentru a întreține acest software și a dezvolta componente noi. Despre ce este vorba?

Senior Software Engineer (Embedded Linux Software)
$88K-$149K

As a flight software engineer on the Embedded Linux Software team, you will be designing, developing, and testing software that is used to launch and operate SpaceX flight systems. You will engage with other SpaceX engineers to discover the needs of the mission and code highly reliable software that turns the mission into a reality. You will be responsible for the complete life-cycle of the software you create.

Aerospace experience is not required to be successful here – rather we look for smart, motivated, collaborative engineers who love solving problems and want to make an impact on a super inspiring mission

RESPONSIBILITIES:
– Develop highly reliable and available software systems
– Board bring-up of next-generation avionics computers
– Develop prototypes to prove out key design concepts and quantify technical constraints
– Write high quality structured bare metal and Linux-based software for embedded processors (e.g. ARM, PowerPC, x86, etc.)

BASIC QUALIFICATIONS:
– Bachelor’s degree in computer science, engineering, math, or science discipline and 4+ years of experience in systems-level C (kernels, device drivers, hypervisors) OR 6+ years of experience in systems-level C (kernels, device drivers, hypervisors)

PREFERRED SKILLS AND EXPERIENCE:
– Experience writing Linux kernel code for real-time systems
– Fluency in POSIX shell script and Python
– Have shipped embedded software in high volume products or real-time products that require high reliability and fault tolerance
– Significant understanding of embedded software principles and ability to contribute in design sessions
– Thorough knowledge of systems, computer architecture, software development, networks, and electronics
– Strong skills in debugging, performance optimization and unit testing
– Effective collaboration as a team member and in large code bases
– Creative approach to problem solving and exceptional analytical skills
– Ability to work effectively in a dynamic environment with changing needs and requirements
– Ability to work independently and in a team, take initiative, and communicate effectively

ADDITIONAL REQUIREMENTS:
– Willing to work extended hours and weekends when needed

 

Iulian

 

Surse:
1. Reddit ( https://www.reddit.com/r/spacex/comments/3y95y4/what_kind_of_embedded_systems_hardware_cpu_rtos/ )
2. Reddit ( https://www.reddit.com/r/spacex/comments/2y14y4/engineer_the_future_session_with_jinnah_hosein_vp/ )
3. Reddit AMA ( https://www.reddit.com/r/IAmA/comments/1853ap/we_are_spacex_software_engineers_we_launch/ )
4. StackXchange ( https://space.stackexchange.com/questions/9243/what-computer-and-software-is-used-by-the-falcon-9 )
5. Ycombinator news ( https://news.ycombinator.com/item?id=23368109 )
6. Aviation Week, Dragon’s „Radiation-Tolerant” Design, 2012-11-18
7. The space shuttle main engine controllers ( https://history.nasa.gov/computers/Ch4-7.html#:~:text=The%20computer%20chosen%20for%20the,a%20development%20environment%20was%20available. )
8. Test Harness ( http://en.wikipedia.org/wiki/Test_harness )
9. The Actor Model ( https://www.brianstorti.com/the-actor-model/ )

Exit mobile version