>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C-plus-plus

Jak uruchamiać kod na orbicie dzięki frameworkowi NASA

Wyobraź sobie pisanie oprogramowania dla urządzenia znajdującego się setki kilometrów nad Ziemią. Nie masz możliwości naciśnięcia przycisku Reset, podejścia z debuggerem ani odłączenia i ponownego podłączenia kabla. Każdy błąd zarządzania pamięcią lub nieobsługiwany wyjątek zamienia drogi satelita w kawałek kosmicznych śmieci. To właśnie dla tego środowiska inżynierowie z Jet Propulsion Laboratory (JPL) stworzyli F´ (F Prime).



Czym jest ten projekt

F´ to framework oparty na komponentach do tworzenia oprogramowania lotniczego. Mówiąc prościej, to gotowy zestaw wzorców architektonicznych i narzędzi dla systemów wbudowanych. NASA wykorzystuje go w swoich misjach — na przykład ten kod sterował helikopterem Ingenuity na Marsie.

Główną cechą projektu nie jest żadna magiczna biblioteka, ale podejście. Zamiast pisać monolityczny kod sterujący wszystkim, budujesz system z izolowanych bloków konstrukcyjnych. Jest to krytyczne, gdy musisz zagwarantować, że awaria modułu zbierania telemetrii nie pociągnie za sobą systemu orientacji statku kosmicznego.

Jak działa rozwój

Cały proces w F´ kręci się wokół typowania i generowania kodu. Opisujesz komponenty i ich interfejsy w specjalnym języku modelowania (FPP), a framework zajmuje się rutyną: tworzeniem kolejek komunikatów, zarządzaniem wątkami i łączeniem modułów.

Jasny podział komponentów

Każdy komponent w systemie jest autonomiczny. Komunikuje się ze światem zewnętrznym tylko przez typowane porty. To podobne do mikrousług, ale w jednym pliku binarnym i z rygorystycznymi wymaganiami czasu rzeczywistego. Możesz testować jeden czujnik lub algorytm w całkowitej izolacji bez uruchamiania całego firmware.

Generowanie kodu i C++

Framework jest napisany w C++. Otrzymujesz nie tylko czysty język, ale także warstwę abstrakcji zapewniającą podstawowe prymitywy: obsługę wątków, kolejki i muteksy. Jednocześnie większość boilerplate'u jest generowana automatycznie z twoich opisów. Musisz tylko zaimplementować logikę biznesową wewnątrz wirtualnych metod.

Narzędzia do testowania

Kosmos nie wybacza błędów, więc F´ zawiera potężny stos testowy. Istnieją narzędzia do testów jednostkowych i integracyjnych. Pakiet zawiera GDS (Ground Data System) — zasadniczo mini centrum kontroli misji, które uruchamiasz na swoim laptopie. Przez nie możesz wysyłać polecenia do urządzenia i przeglądać telemetrię w czasie rzeczywistym.

Szczegóły techniczne

Aby rozpocząć, potrzebujesz tylko Linuxa, macOS lub Windows z WSL. Zależności obejmują Pythona 3.10 dla toolchaina i kompilator C++ (GCC lub Clang).

Instalacja wygląda standardowo dla nowoczesnych narzędzi:

pip install fprime-bootstrap
fprime-bootstrap project

Po tym otrzymujesz strukturę projektu gotową do zbudowania dla twojej platformy docelowej. Co ciekawe, framework świetnie działa z Raspberry Pi. To czyni go dostępnym nie tylko dla inżynierów NASA, ale także dla entuzjastów robotyki lub twórców małych satelitów (CubeSats).

Gdzie to można zastosować

Oczywiście nie piszemy oprogramowania dla łazików marsjańskich każdego dnia. Ale zasady architektoniczne F´ są przydatne wszędzie tam, gdzie liczy się wysoka niezawodność:

  1. Automatyka przemysłowa. Jeśli twój kontroler steruje obrabiarką, nieoczekiwany segfault może prowadzić do uszkodzenia sprzętu.
  2. Drony. Quadkoptery i autonomiczne roboty stają przed tymi samymi problemami co satelity: ograniczone zasoby, wymagania czasu rzeczywistego i potrzeba odzyskiwania się po awariach.
  3. Inteligentny dom. Dla krytycznych systemów jak alarmy przeciwpożarowe czy wykrywanie wycieków, podejście oparte na komponentach zapewnia przewidywalne zachowanie.

Czy warto spróbować

F´ nie jest projektem dla początkujących. Jeśli jesteś przyzwyczajony do lekkich skryptów w Pythonie, bariera wejścia może wydawać się wysoka. Musisz rozumieć zasady C++, być zaznajomiony z systemami wbudowanymi i być gotowy na czytanie dokumentacji.

Z drugiej strony, to rzadka okazja, żeby zajrzeć "pod maskę" prawdziwej technologii kosmicznej. Projekt ma doskonałą dokumentację, krok po kroku samouczek "Hello World" i aktywną społeczność na GitHub Discussions. Jeśli czujesz się ograniczony zwykłymi bibliotekami Arduino i chcesz nauczyć się budować naprawdę niezawodne systemy, F´ to świetny punkt wejścia do profesjonalnego rozwoju oprogramowania wbudowanego.

Oczywiście, do prostego migania diodą LED, to przesada. Ale jeśli twoim zadaniem jest stworzenie urządzenia, które musi działać bez awarii przez lata w trybie autonomicznym, doświadczenie NASA zdecydowanie się przyda. Przynajmniej powinieneś przestudiować ich podejście do architektury portów i topologii komponentów — to znacząco zmienia sposób, w jaki postrzegasz organizację kodu.

Powiązane projekty