>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
C-plus-plus

Code im Orbit ausführen mit NASAs Framework

Stellen Sie sich vor, Sie schreiben Software für ein Gerät, das sich hunderte Kilometer über der Erde befindet. Sie können weder den Reset-Knopf drücken, noch mit einem Debugger herübergehen oder ein Kabel ab- und wieder anstecken. Jeder Speicherverwaltungsfehler oder jede unbehandelte Ausnahme verwandelt einen teuren Satelliten in Weltraumschrott. Genau für diese Umgebung haben Ingenieure des Jet Propulsion Laboratory (JPL) F´ (F Prime) entwickelt.



Worum es in diesem Projekt geht

F´ ist ein komponentenorientiertes Framework für die Entwicklung von Flugsoftware. Einfach ausgedrückt, es ist ein fertiger Satz von Architekturmustern und Tools für eingebettete Systeme. Die NASA setzt es in ihren Missionen ein – zum Beispiel wurde mit diesem Code der Ingenuity-Hubschrauber auf dem Mars gesteuert.

Das Hauptmerkmal des Projekts ist keine magische Bibliothek, sondern der Ansatz. Anstatt monolithischen Code zu schreiben, der alles steuert, bauen Sie das System aus isolierten Bausteinen auf. Dies ist entscheidend, wenn Sie garantieren müssen, dass ein Fehler im Telemetrieerfassungsmodul nicht das Orientierungssystem des Raumfahrzeugs beeinträchtigt.

So funktioniert die Entwicklung

Der gesamte Prozess in F´ dreht sich um Typisierung und Codegenerierung. Sie beschreiben Komponenten und ihre Schnittstellen in einer speziellen Modellierungssprache (FPP), und das Framework übernimmt die Routineaufgaben: Erstellung von Nachrichtenwarteschlangen, Verwaltung von Threads und Verknüpfung von Modulen.

Klare Komponententrennung

Jede Komponente im System ist autonom. Sie kommuniziert mit der Außenwelt nur über typisierte Ports. Dies ähnelt Microservices, jedoch innerhalb einer einzelnen Binärdatei und mit strikten Echtzeitanforderungen. Sie können einen Sensor oder Algorithmus vollständig isoliert testen, ohne die gesamte Firmware auszuführen.

Codegenerierung und C++

Das Framework ist in C++ geschrieben. Sie erhalten nicht nur eine saubere Sprache, sondern eine Abstraktionsschicht, die grundlegende Primitive bereitstellt: Thread-Handling, Warteschlangen und Mutexe. Gleichzeitig wird der meiste Boilerplate-Code automatisch aus Ihren Beschreibungen generiert. Sie müssen nur die Geschäftslogik in virtuellen Methoden implementieren.

Testwerkzeuge

Der Weltraum verzeiht keine Fehler, daher enthält F´ einen leistungsstarken Test-Stack. Es gibt Unit-Testing-Tools und Integrationsmöglichkeiten. Das Paket enthält GDS (Ground Data System) – im Wesentlichen ein Mini-Missionskontrollzentrum, das Sie auf Ihrem Laptop ausführen. Darüber können Sie Befehle an das Gerät senden und Telemetriedaten in Echtzeit anzeigen.

Technische Details

Um zu beginnen, benötigen Sie nur Linux, macOS oder Windows mit WSL. Zu den Abhängigkeiten gehören Python 3.10 für die Toolchain und ein C++-Compiler (GCC oder Clang).

Die Installation entspricht dem Standard moderner Tools:

pip install fprime-bootstrap
fprime-bootstrap project

Danach erhalten Sie eine Projektstruktur, die bereit ist, für Ihre Zielplattform gebaut zu werden. Interessanterweise funktioniert das Framework hervorragend mit Raspberry Pi. Dies macht es nicht nur für NASA-Ingenieure zugänglich, sondern auch für Robotik-Enthusiasten oder Hersteller kleiner Satelliten (CubeSats).

Wo dies angewendet werden kann

Natürlich schreiben wir nicht jeden Tag Software für Mars-Rover. Aber F´s Architekturprinzipien sind überall dort nützlich, wo hohe Zuverlässigkeit wichtig ist:

  1. Industrieautomation. Wenn Ihr Controller eine Werkzeugmaschine steuert, kann ein unerwarteter Segmentation Fault zu Geräteschäden führen.
  2. Drohnen. Quadrocopter und autonome Roboter stehen vor denselben Problemen wie Satelliten: begrenzte Ressourcen, Echtzeitanforderungen und die Notwendigkeit, sich von Fehlern zu erholen.
  3. Smart Home. Für kritische Systeme wie Brandmelder oder Leckerkennung sorgt der Komponentenansatz für vorhersehbares Verhalten.

Lohnt es sich, es zu versuchen

F´ ist kein Projekt für Anfänger. Wenn Sie an leichte Python-Skripte gewöhnt sind, kann die Einstiegshürde hoch erscheinen. Sie müssen C++-Prinzipien verstehen, mit eingebetteten Systemen vertraut sein und bereit sein, Dokumentation zu lesen.

Andererseits ist dies eine seltene Gelegenheit, „unter die Haube

Ähnliche Projekte