Jakich technologii używają w SpaceX
SpaceX zrobił AMA w serwisie reddit (Ask Me Anything) odnośnie tego, jakich technologii używa ta prywatna firma w USA, która powoli przejmuje tamtejszy przemysł kosmiczny.
Napiszę tutaj szybkie streszczenie, aby zwyczajnie nie lać wody, bo pewnie tego byście właśnie chcieli. Chętni mogą wejść na serwis reddit i przeczytać odpowiedzi zespołu, który robił to AMA, natomiast dla czytelników mojego serwisu mam szybkie techniczne streszczenie. Postaram się po prostu zawrzeć najważniejsze informacje, pryznajmniej według mnie, bez zbędnych komentarzy.
- Do oprogramowania odpowiedzialnego za kwestie lotów używają C/C++
- Do obsługi UI używają HTML, JavaScript, CSS oraz Chromium (tu trochę zgaduję: prawdopodobnie za interfejs robi electron lub coś na jego wzór/przeróbka)
- Do testowania, automatyzacji i wszelkiego rodzaju tooli jest używany Python
- Używają swojej dystrybucji Linux z patchem
CONFIG_PREEMPT_RT
, prawdopodobnie w celu wymuszenia pewnego stopnia determinizmu.
- SpaceX zwraca uwagę na latency w swoim sofcie, m.in. przez unikanie alokacji na heap (stercie). Języki programowania, które najlepiej to “wspierają” to właśnie C, C++, ale także np. Rust (nie jest używany)
- W rakietach/statkach SpaceX jest dużo komputerów zbudowanych dla jednego konkretnego celu - single responsibility, które działają w synchronizacji czasowej z innymi (za pomocą znanych praktyk + jakichś ich własnych). Praktycznie wszystko może być wyrażone w kontrolnej pętli czasu rzeczywistego na zasadzie: przeczytaj dane z sensorów, wykonaj decyzję na podstawie tych danych i poprzednich danych
- Wiele komputerów/systemów/czujników jest zwielokrotnionych - ze względu na promieniowanie w wyższych warstwach atmosfery i w przestrzeni kosmicznej, nieznane błędy z tego tytułu są spodziewane dlatego się systemy zwielokrotnia, aby mieć drugą, trzecią, czwartą “opinię” o sytuacji, itp. Plus dochodzą restrykcyjne testy z naciskiem “by coś się zepsuło”.
- Wśród edytorów tekstu/kodu przeważa VSCode
- Oprogramowanie sterujące jest w większości przypadków jednowątkowe dla uniknięcia wielu problemów związanych z synchronizacją. Nie oznacza to, że wszystko dzieje się jednowątkowo - to oprogramowanie działa na instancjach z Linuksem, a w systemie w tym samym czasie sporo się dzieje.
- Oczywiście nie podają żadnych dodatkowych informacji na temat algorytmów odpowiedzialnych za lądowanie np. w F9, co jest zrozumiałe z wielu względów.
- Rusta tam nie ma, podobnie jak ML (nazywana popularnie i błędnie sztuczną inteligencją). Nie oznacza to, że np. w przyszłości te technologie do SpaceX nie zawitają.