Die LEGO®-Mindstorms®-Reihe erfreut sich seit etlichen Jahren großer Beliebtheit und zwar nicht erst mit dem LEGO® Mindstorms® EV3, sondern bereits mit seinem Vorgänger, dem LEGO® Mindstorms® NXT. Beide werden sehr aktiv in Schulen und Wettbewerben wie der World Robot Olympiad (WRO) und der FIRST LEGO League (FLL) eingesetzt. Wir haben insbesondere mit dem EV3 etliche Jahre Erfahrung in Kursen und Workshops und können nur bestätigen, dass es eine gute Plattform ist, um damit den Einstieg in die Konstruktion von Robotern und deren Programmierung zu wagen.

Die lange Historie zusätzlicher Programmiersprachen

Die LEGO®-Mindstorms®-Reihe ist zudem für die visuellen Programmiersprachen bekannt, die LEGO® Education in Zusammenarbeit mit National Instruments speziell dafür entwickelt hat. Beim NXT heißt die Sprache NXT-G, beim EV3 sehr ähnlich EV3-G. Das G steht in beiden Fällen für „graphical“ oder „grafisch“. Diese Sprachen sind durchaus gelungen und für den Einstieg in die Welt der Programmierung eine gute Wahl. Wer viel mit den Plattformen arbeitet und schon einiges an Erfahrung im Programmieren gesammelt hat, möchte aber häufig mächtigere Sprachen einsetzen. Damit sind in der Regel textbasierte Programmiersprachen gemeint. Beispiele dafür sind c4ev3 (Programmiersprache C), LeJOS (Programmiersprache Java) und MonoBrick (Programmiersprache C#). Bisher wurden diese von der Community zur Verfügung gestellt. Dass es Bedarf an diesen Sprachen gibt, zeigen die aktiven Communities. Vor einiger Zeit haben wir für euch daher einen eigenen Artikel erstellt, der zahlreiche Programmiersprachen und Plattformen für LEGO®-Robotik-Sets vorstellt. Wir aktualisieren diesen Artikel kontinuierlich.

Uns wundert es schon seit einigen Jahren, dass LEGO® Education nicht früher auf diesen Bedarf reagiert hat. Eine eigene textbasierte Programmiersprache zu entwickeln, wäre sicherlich keine gute Idee gewesen. Oder zumindest eine aufwändige, denn eine neue Programmiersprache zu entwickeln ist zeitaufwändig, fehleranfällig und birgt das Risiko, dass das Endresultat in der Community nicht gut ankommt bzw. nicht besser ist als bereits vorhandene Sprachen. Eine bereits existierende Programmiersprache zu unterstützen, liegt aber sehr wohl im Bereich des Möglichen.

Python für LEGO® Education Roboter

Wie wir euch bereits berichtet haben, ist LEGO® Education jetzt einen richtigen und wichtigen Schritt in diese Richtung gegangen: Der LEGO® Mindstorms® EV3 ist nun auch mit der textuellen Programmiersprache Python programmierbar und auch für den SPIKE™ Prime wurde die Plattform MicroPython als zugrunde liegendes System angekündigt, das die Programme von Benutzer*innen ausführt und die Hardware ansteuert.

In diesem Artikel schauen wir uns daher an, was MicroPython ist und worauf es basiert. Im nächsten Artikel geht es dann um die Installation und unseren ersten Eindruck. In nachfolgenden Artikeln fokussieren wir uns darauf, wie Programme für den LEGO® Mindstorms® EV3 in Python geschrieben werden können.

Was ist MicroPython?

MicroPython ist eine schlanke und effizient implementierte Version von Python 3. Enthalten ist eine kleine Untermenge der Python 3 Programmiersprache. MicroPython ist optimiert, um auf Mikrocontrollern zu laufen, die begrenzte Ressourcen besitzen was zum Beispiel Prozessorleistung und Speicher angeht. Trotzdem werden zahlreiche Features mitgeliefert, die das Entwickeln für die Plattform sehr angenehm gestalten. Dazu gehört zum Beispiel eine interaktive Eingabe, REPL genannt, Exceptions und ein Garbage Collector. Trotzdem benötigt MicroPython nur 256 KB Speicherplatz und 16 KB Arbeitsspeicher. Python ist übrigens eine bekannte Programmiersprache, die oft als erste textbasierte Sprache genutzt wird, um grundsätzliche Mechanismen des Programmierens zu lehren. Das ist ein weiterer Grund, warum wir die Wahl von Python bzw. MicroPython begrüßen.

Die genannten Features von MicroPython sind zwar weniger relevant für die Entwicklung von Programmen für den LEGO® Mindstorms® EV3 oder andere LEGO®-Plattformen, machen MicroPython aber dennoch zu einer hervorragenden Plattform, um von Benutzer*innen geschriebene Programme auszuführen. Der Quelltext von MicroPython ist Open Source, was bedeutet, dass er öffentlich zur Verfügung steht, einsehbar ist und dass die Community Änderungen daran vornehmen kann. Eine gute Voraussetzung, um in der Zukunft von vielen Personen weiterentwickelt zu werden. Aktuell ist die Plattform sehr aktiv. Die erste Version erschien im Mai 2014 – die aktuelle Version 1.10, die beim Schreiben dieses Artikels zum Download bereitstand, ist vom Januar 2019. Das spricht für viele Updates mit Fehlerbehebungen und neuen Funktionen: Ein weiterer Pluspunkt.

Um ein paar Missverständnissen vorzubeugen: MicroPython ist ein angepasstes Betriebssystem für den LEGO® Mindstorms® EV3. Es handelt sich dabei nicht um die Firmware. Diese wird komplett von LEGO® Education bereitgestellt. Zur Firmware haben wir einen gesonderten Artikel für euch erstellt. Das angepasste Betriebssystem wird auf eine microSD-Karte kopiert, sodass der EV3 davon starten kann. Der Mechanismus ähnelt einem sogenannten Dual Boot, bei dem zum Beispiel die Betriebssysteme Windows und Linux parallel auf einem PC oder Laptop installiert werden. Wenn die microSD-Karte entfernt wird, dann startet der EV3 wieder das von LEGO® Education bereitgestellte Betriebssystem, das sich direkt auf dem EV3 befindet.

Aber wozu das Ganze?

Wir bekommen recht oft die Frage gestellt, wozu andere Programmiersprachen als die von LEGO® bereitgestellten genutzt werden sollten. Für den Einstieg sind die grafischen Sprachen von LEGO® Education eine gute Wahl. Irgendwann ist aber genug Programmiererfahrung vorhanden, sodass textbasierte Programmiersprachen in den Fokus rücken. Damit können komplexere Programme mit weniger Programmzeilen erstellt werden. Wer eine textbasierte Programmiersprache beherrscht, kann dadurch also einen kleinen Vorteil gewinnen. Die Möglichkeiten der Hardware, zum Beispiel der Sensoren und Motoren, bleiben allerdings gleich. Es geht eher um die Art und Weise, wie ein Programm erstellt wird.

Weitere Gründe haben wir im Artikel zu den Programmiersprachen für LEGO®-Robotik-Sets zusammengetragen. Wie immer gilt aber: Nutzt bitte die Programmiersprache, die euch gefällt und in der ihr euch auskennt und wohlfühlt – egal ob grafisch oder textbasiert. Das ist die beste Voraussetzung, um Spaß beim Programmieren zu haben. Dann lernt ihr am meisten und habt die größten Erfolge.

Unsere erste Einschätzung

Auf den ersten Blick sieht MicroPython sehr vielversprechend aus. Die Plattform ist schon lange verfügbar, wird von vielen eingesetzt und ist damit etabliert. Uns freut es sehr, dass LEGO® Education seine LEGO®-Robotik-Sets mit diesem Schritt noch weiter öffnet und zudem auf eine bereits vorhandene Plattform wie MicroPython setzt. Bei anderen Herstellern ist es nicht ungewöhnlich, dass stattdessen eine eigene Plattform erstellt wird, obwohl das oft völlig unnötig ist und zu Inkompatibilitäten führt.

Ob MicroPython auch auf den zweiten Blick überzeugen kann, wird sich zeigen. Ebenso, ob die Community diese weitere Möglichkeit annimmt. Darüber hinaus sind wir ebenfalls gespannt, ob Python dadurch in Zukunft eine größere Rolle bei Wettbewerben spielen wird.

Wir freuen uns, dass hier eine Plattform gefördert wird, die unabhängig vom Betriebssystem zum Einsatz kommen kann. Denn sowohl MicroPython als auch die von LEGO® Education präferierte Entwicklungsumgebung Visual Studio Code sind unabhängig vom Betriebssystem. Beide laufen sowohl auf Windows als auch auf macOS und Linux – ein weiterer sehr großer Pluspunkt.

Einen genaueren Blick auf die technischen Details von MicroPython werfen wir in kommenden Artikeln wie z.B. der Installationsanleitung und in unseren Praktikums-Aufgaben.