
Mars-Landung des Nasa-Rovers. (Bild: NASA/JPL-Caltech)
Der Mars hat Besuch: Perseverance, wie das Roboterfahrzeug der Nasa heißt, ist am Donnerstagabend nach einer 472 Millionen Kilometer langen Reise sicher auf dem roten Planeten gelandet. Die Drohne führte die komplexe Landung auf der Marsoberfläche exakt so aus, wie die Nasa das geplant hatte. Was ihr vielleicht nicht wusstet: Der zugrundeliegende Code basiert auf einem Open-Source-Framework namens F‘ (F Prime).
Geschrieben in C++ mit Testing-Tools in Python
F Prime ist ein komponentenbasiertes Framework für die Entwicklung sogenannter Embedded Software. Ursprünglich entwickelt vom Jet Propulsion Laboratory, steckt das Framework hinter dem Code mehrerer Raumfahrt-Anwendungen. Es ist auf kleine Raumfahrtsysteme wie Cubesats, Smallsats und Instrumente zugeschnitten, findet aber auch in größeren Systemen Anwendung. Geschrieben wurde das Framework größtenteils in C++, zu kleineren Teilen steckt Python dahinter. Laut Security Code Analysis Platform LGTM ist der Code des Frameworks von herausragender Qualität: Der in Python geschriebene Anteil wurde mit A++ evaluiert, der größere „C++“-Part immerhin mit A.
Das Framework besteht aus mehreren Elementen:
- Einer Architektur, die die Flight-Software in separate Komponenten mit klar definierten Interfaces zerlegt; einem „C++“-Framework, das Kernfunktionen wie Message-Queues und Threads bereitstellt;
- Modellierungswerkzeugen zur automatischen Codegenerierung und zur Spezifikation von Komponenten und Verbindungen;
- Eine wachsende Sammlung von gebrauchsfertigen Komponenten und
- Testing-Tools zur Durchführung von Unit- und Integration-Tests, die den Python-Anteil stellen.
Cmake, Git und mindestens Python 3.5 erforderlich
Die Installation des Frameworks erfordert Cmake, Git und Python 3.5 oder neuer. Die Readme des zugehörigen Repos auf GitHub empfiehlt außerdem die Installation von F Primes Python Dependencies – am besten in einer virtuellen Python-Umgebung, um Probleme auf Systemlevel zu vermeiden. Die vollständige Installationsanleitung findet ihr im Projekt unter INSTALL.md. Hier die wichtigsten Commands:
git clone https://github.com/nasa/fprime.git
cd fprime
pip install --upgrade wheel setuptools pip
pip install Fw/Python Gds/
Das Repo beinhaltet zwei Beispiel-Deployments: Eine Standardanwendung, anhand der ersichtlich wird, wie die Komponenten zusammengefügt werden sollten, und eine für den Raspberry PI. Die Standardanwendung ist mit Linux oder macOS kompatibel, sodass ihr euch auch ohne Embedded Hardware an dem Framework ausprobieren könnt. Die Raspberry-PI-Anwendung bietet Starthilfe in einem Embedded-Software-Kontext. Wenigstens eines davon solltet ihr klonen und ausführen – allein schon, um sicherzustellen, dass ihr das Framework korrekt installiert habt.
Es heißt Perseverance ;)