Die Namen NXT-G und EV3-G habt ihr vermutlich schon einmal gehört. Das sind die Programmiersprachen, die von LEGO® beziehungsweise LEGO® Education für die Robotik-Sets entwickelt und zur Verfügung gestellt werden. Allerdings gibt es zahlreiche weitere Sprachen, mit denen sich die Robotik-Sets von LEGO® ansteuern lassen.

Die Unterschiede könnten dabei nicht größer sein. Der wohl offensichtlichste Unterschied ist die Art der Darstellung. Die bereits genannten Sprachen NXT-G und EV3-G sind grafische Sprachen, gerne auch als visuelle Programmiersprachen bezeichnet. Daneben gibt es noch die sogenannten textbasierten Programmiersprachen. Wie der Name vermuten lässt, muss dabei ein Text eingegeben werden, um dem Computer, zum Beispiel dem LEGO® Mindstorms® EV3, Befehle in Form eines Programms zu übermitteln. Java ist so eine textuelle Sprache, mit der es möglich ist, den LEGO® Mindstorms® EV3 anzusteuern.

Es gibt eine ganze Menge verschiedener Programmiersprachen und Plattformen, um LEGO®-Robotik-Sets anzusteuern. Wir haben uns in diesem Artikel auf eine Auswahl konzentriert, da sich alle Sprachen oder Plattformen in einem einzelnen Artikel nicht vorstellen lassen. Falls euch auffällt, dass eure Lieblingssprache oder Lieblingsplattform fehlt, meldet euch gerne direkt bei uns oder hinterlasst einen Kommentar. Dann können wir die Programmiersprache oder Plattform entweder noch in den Artikel mit aufnehmen oder einen zweiten Artikel einplanen.

Warum andere Programmiersprachen?

Die Frage, die sich viele von euch jetzt vielleicht stellen, ist, warum überhaupt weitere Programmiersprachen notwendig sind? Oder ganz konkret: Warum solltest du eine andere Programmiersprache nutzen, als eine von denjenigen, die LEGO® extra für dein Robotik-Set entwickelt hat?

Das ist eine sehr gute Frage und sie wird uns häufig gestellt. Die Antwort darauf ist allerdings nicht ganz so einfach, beziehungsweise sie ist nicht eindeutig, weil es viele verschiedene Gründe gibt. Mit den Programmiersprachen von LEGO® ist nämlich sehr viel möglich. Irgendwann kommt aber vielleicht der Moment, wo ihr auf eine andere Art und Weise programmieren möchtet. Dazu schreiben wir noch mal einen gesonderten Artikel, um das deutlicher zu machen. Für den Moment reicht es aus, zu wissen, dass andere Programmiersprachen andere Vor- und Nachteile haben, als die Sprachen, die ihr aktuell vielleicht kennt. Manche Probleme oder Aufgaben lassen sich zum Beispiel mit C# oder Java besser lösen als mit EV3-G. Dann wäre ein Wechsel angebracht. Vielleicht wollt ihr euch aber auch weiterentwickeln, weil euch eine visuelle Programmiersprache nicht mehr ausreicht. In der freien Wirtschaft werden primär textbasierte Sprachen eingesetzt. Falls ihr also auch mal für andere Dinge als für Robotik-Sets Programme schreiben möchtet, ist ein guter Weg, zunächst eine textbasierte Programmiersprache für den LEGO® Mindstorms® EV3 oder für ein anderes Robotik-Set zu nutzen und anschließend zu wechseln.

Ein anderer Grund könnte vielleicht Hardware sein, die nicht von der von LEGO® zur Verfügung gestellten, visuellen Programmiersprache angesteuert werden kann. Dann wird es ebenfalls Zeit, über den Wechsel zu einer textbasierten Programmiersprache nachzudenken.

Wie ihr seht, fallen uns viele Gründe ein, warum andere Programmiersprachen für die LEGO®-Robotik-Sets existieren. Warum auch immer ihr eine oder mehrere dieser Sprachen ausprobieren wollt, wir hoffen, die Übersicht zeigt euch, was es da draußen alles gibt.

Welche Programmiersprache ist besser?

Diese Frage hören wir sehr häufig. Allerdings lässt sie sich nicht so einfach beantworten. Der Grund dafür ist, dass die verschiedenen Programmiersprachen und Plattformen sehr unterschiedliche Möglichkeiten bieten und Anforderungen haben, was dein Vorwissen betrifft. Wenn du zum Beispiel noch nie mit einer textbasierten Programmiersprache programmiert hast, sind einige Programmiersprachen eventuell zu schwierig. Aber auch das lässt sich nicht verallgemeinernd beantworten.

Daher möchten wir die Frage an dieser Stelle zunächst offenlassen. Wir kommen in weiteren Artikeln ganz sicher darauf zurück. Die Frage ist zwar schwierig zu beantworten, aber sie ist auch gleichzeitig sehr wichtig.

,Eine Auswahl bekannter Sprachen und Plattformen

Die nachfolgende Tabelle enthält zahlreiche bekannte Programmiersprachen und Plattformen. Diejenigen, die wir für wichtig halten, haben wir im weiteren Verlauf des Artikels etwas detaillierter vorgestellt. Andere Sprachen und Plattformen stehen vorerst nur in der Tabelle, um sie zu erwähnen. Wir haben sie nicht extra beschrieben, damit dieser Artikel nicht noch länger wird als er es eh schon ist. Die Auswahl ist dabei aus unserer Perspektive entstanden. Wir möchte keine Programmiersprache und keine Plattform besser oder schlechter darstellen. Alle haben ihre Berechtigung und häufig entscheidet der eigene Geschmack oder bereits vorhandenes Wissen darüber, was ausgewählt wird. Auch die Reihenfolge in der Tabelle ist beliebig.

Falls ihr eine Programmiersprache oder eine Plattform vermisst, schreibt uns gerne eine Nachricht oder hinterlasst einen Kommentar.

Nr.NameTypKompatible Robotik-SetsWeitere Informationen
1.NXT-G, EV3-G, WeDo 2.0 Programming Blocks, LEGO BoostVisuellNXT, EV3, WeDo 2.0, BoostBeschreibung unten
2.LeJOS (Java)TextuellRCX, NXT, EV3Beschreibung unten
3.MonoBrick (C#, F#, IronPython)TextuellEV3Beschreibung unten
4.c4ev3 (C)TextuellEV3Beschreibung unten
5.ev3dev (Python, JavaScript, Java, Go, C++, C, Vala)TextuellEV3Beschreibung unten
6.Scratch (ScratchX)VisuellEV3Beschreibung unten
7.NEPOVisuellNXT, EV3Beschreibung unten
8.BricxCC (Not eXactly C, Not Quite C)TextuellRCX, NXTBeschreibung unten
9.RobotaryTextuellEV3Webseite
10.EnchantingVisuellNXTWebseite
11.Next Byte CodesTextuellNXT, EV3Webseite
12.ROBOLAB für LabVIEWVisuellRCX, NXTWebseite
13.ROBOTCTextuellNXT, EV3Webseite

1. NXT-G, EV3-G, WeDo 2.0 Programming Blocks, LEGO® Boost

Kategorie: Visuelle Programmiersprache Roboter: NXT, EV3, WeDo 2.0, Boost

Die wohl bekanntesten Programmiersprachen für die LEGO®-Robotik-Sets sind sicherlich die Sprachen, die LEGO® beziehungsweise LEGO® Education selbst erstellt haben. Ganz vorne mit dabei NXT-G und EV3-G für die Robotik-Sets LEGO® Mindstorms® NXT und LEGO® Mindstorms® EV3. Das G in beiden Namen bedeutet Graphical, also die englische Bezeichnung für grafisch beziehungsweise visuell. Mit diesen beiden Programmiersprachen lassen sich der NXT oder der EV3 ansteuern.

Für den LEGO® Education WeDo 2.0 gibt es ebenfalls eine eigene Programmiersprache. Wir konnten nur den Namen Programming Blocks recherchieren. Das ist weniger ein konkreter Name für die Sprache, sondern bezeichnet eher die Gesamtheit der Blöcke, nämlich aller Programmier-Blöcke für den WeDo 2.0.

Das neuste Mitglied der LEGO®-Robotik-Sets, der LEGO® Boost, bietet ebenfalls eine eigene Programmiersprache an. Charakteristisch bei Programmiersprachen für LEGO®-Robotik-Sets ist, dass wir von „links nach rechts“ programmieren. Zumindest umgangssprachlich lässt sich das so ausdrücken. So ist es auch bei der Sprache für den LEGO® Boost. Unseres Wissens nach hat diese Sprache keinen eigenen Namen. Wenn wir da falsch liegen, sagt uns bitte direkt Bescheid oder hinterlassen einen Kommentar.

2. LeJOS (Java)

Kategorie: Textuelle Programmiersprache Roboter: RCX, NXT, EV3

LeJOS ist in der LEGO®-Robotik-Community sehr bekannt. Damit ist aber keine Programmiersprache gemeint. Vielmehr bezeichnet der Name ein Java-Betriebssystem, das auf dem LEGO® Mindstorms® RCX, NXT und EV3 läuft. Beim LEGO® Mindstorms® EV3 muss das Betriebssystem auf eine eigene microSD-Karte übertragen werden, um LeJOS zu starten. Anschließend erlaubt es dieses Betriebssystem Java-Programme zu schreiben, um diese zum Beispiel auf dem Brick auszuführen. Dadurch könnt ihr Java als Programmiersprache nutzen, um eure Roboter zu steuern.

Java ist eine objektorientierte Programmiersprache, die großflächig in der Wirtschaft zum Einsatz kommt. Java ist also nicht auf die Ansteuerung von LEGO® Robotern beschränkt, sondern wird in vielen Bereich eingesetzt.

Zu LeJOS haben wir bereits ein ausführliches Review geschrieben. Falls du mit LeJOS durchstarten möchtest, haben wir zusätzlich eine Installationsanleitung erstellt ein Tutorial mit  Praktikumsaufgaben folgt.

3. MonoBrick (C#, F#, IronPython)

Kategorie: Textuelle Programmiersprache Roboter: RCX, NXT, EV3

Ähnlich wie LeJOS ist auch MonoBrick keine Programmiersprache, sondern eine Plattform beziehungsweise ein Betriebssystem. Das Betriebssystem, das bei MonoBrick EV3-Firmware heißt, ist ein Ersatz für die originale Firmware des LEGO® Mindstorms® EV3. Die Firmware muss wie bei LeJOS auf eine microSD-Karte kopiert werden, um von dort zu starten. Anschließend steht das .NET Framework auf dem LEGO® Mindstorms® EV3 Brick zur Verfügung. Das bedeutet, dass wir Programme in den Programmiersprachen C#, F# oder IronPython erstellen können, die dann auf dem EV3-Brick laufen. Damit stehen uns drei weitere textbasierte Programmiersprachen zur Verfügung, die wir statt der visuellen Sprache EV3-G von LEGO® für unsere Programme nutzen können.

C# ist eine objektorientierte Programmiersprache, die großflächig in der Wirtschaft zum Einsatz kommt. Die Sprache wird aktiv von Microsoft entwickelt und ist nicht auf die Ansteuerung von LEGO® Robotern beschränkt, sondern wird wie Java in vielen Bereichen eingesetzt.

4. c4ev3 (C, C++)

Kategorie: Textuelle Programmiersprachen Roboter: EV3

c4ev3 bedeutet frei übersetzt „C für den EV3“. Hinter c4ev3 steht eine Projektgruppe der Hochschule Aschaffenburg, die das Codepaket im Rahmen des EVELIN Projekts erstellt hat. Die für c4ev3 zuständige Projektgruppe unter Prof. Dr.-Ing. Jörg Abke ist aktuell sehr engagiert und entwickelt c4ev3 stetig weiter. Der Clou an c4ev3 ist, dass die erstellten Programme nativ auf dem EV3 Betriebssystem laufen. Alles was du benötigt ist eine aktuelle Version von Eclipse für C/C++. Die Programmierumgebung wird durch ein c4ev3-Plugin angepasst und bekommt eine Schaltfläche, von der aus man direkt seinen Code auf den EV3 laden kann.

Zu c4ev3 haben wir bereits ein ausführliches Review geschrieben. Falls du mit c4ev3 durchstarten möchtest, haben wir zusätzlich eine Installationsanleitung und Praktikumsaufgaben erstellt.

5. ev3dev (Python, JavaScript, Java, Go, C++, C, Vala)

Kategorie: Textuelle Programmiersprachen Roboter: EV3

ev3dev ist ebenfalls eine Plattform beziehungsweise ein Betriebssystem und keine Programmiersprache. Anders als die bereits vorgestellten Systeme LeJOS und MonoBrick ist ev3dev ein allgemeineres Betriebssystem, auf dem viele verschiedene Programmiersprache zur Verfügung stehen. Mit diesen Sprachen lassen sich dann Programme für den LEGO® Mindstorms® EV3 schreiben, um den Brick zu steuern. Eine Auswahl an Programmiersprachen, die auf ev3dev laufen, sind: Python, JavaScript, Java, Go, C++ und Vala. Auf der Webseite zu ev3dev sind alle Programmiersprachen aufgelistet, die aktuell unterstützt werden.

Python ist zum Beispiel eine beliebte Lernsprache. Sie hat den Anspruch, einen gut lesbaren und knappen Programmierstil zu fördern. Wegen der klaren Syntax gilt Python als einfach zu erlernen. Trotzdem ist Python mächtig genug, um damit viele verschiedene Aufgaben zu erledigen. Wer gerade mit Python anfängt oder überlegt das zu tun, kann einen Blick auf das Projekt ev3python werfen. Dort werfen viele Ressourcen zur Verfügung gestellt, um einen guten Einstieg in Verbindung mit dem LEGO® Mindstorms® EV3 zu finden.

6. Scratch (ScratchX)

Kategorie: Visuelle Programmiersprache Roboter: EV3

Scratch funktionierte lange Zeit nicht mit dem LEGO® Mindstorms® EV3 zusammen. Mittlerweile gibt es zahlreiche Projekte und Erweiterungen, die dieses Problem beheben wollen. Eine dieser Erweiterungen nutzt ScratchX, um über Bluetooth den EV3 zu kontrollieren. Damit wird es möglich, Scratch-Programme zu erstellen, die Funktionen des EV3 nutzen.

Wir haben das Projekt bisher nicht selber ausprobiert, wollen das aber noch machen. Sobald wir wissen, wie gut die Erweiterung für Scratch funktioniert, schreiben wir einen Artikel darüber.

7. NEPO

Kategorie: Visuelle Programmiersprache Roboter: NXT, EV3

NEPO ist eine Scratch sehr ähnliche Programmiersprache, die auf der Blockly-Bibliothek basiert. Wo nötig, wurde der Blockly Sprachumfang um eigene Funktionen erweitert, die für die Programmierung von Robotern notwendig sind. NEPO ist offen gestaltet, was es erlaubt, zusätzliche NEPO-Programmierblöcke zu entwickeln oder weitere Roboter-Systeme anzubinden.

Genau das macht das Open-Roberta-Projekt sehr erfolgreich. Wer das Lab, also die Programmierumgebung, aufruft, bekommt zunächst eine Auswahl der unterstützten Systeme angezeigt. Darunter sind zum Beispiel der LEGO® Mindstorms® NXT oder EV3.

8. BricxCC (Not eXactly C, Not Quite C)

Kategorie: Textuelle Programmiersprache Roboter: RCX, NXT

BricxCC (Bricx Command Center) ist keine einzelne Programmiersprache, sondern eine integrierte Entwicklungsumgebung (IDE). Mit dieser Umgebung können Programme in den Programmiersprachen Not eXactly C (NXC) und Not Quite C (NQC) unter anderem für den LEGO Mindstorms NXT geschrieben werden. Das Programm ist Open Source (der Quelltext steht zur Verfügung) und kostenfrei. Ihr könnt die IDE daher ganz einfach herunterladen und ausprobieren.

Die beiden Programmiersprachen NXC und NQC besitzen eine C-ähnliche Syntax und bieten die Möglichkeit, sehr kurze und präzise Programme zu schreiben.

Unser Fazit

Vor allem für die Robotik-Sets aus der Mindstorms-Serie gibt es viele externe Programmiersprachen, mit denen wir Programme erstellen können. Die Auswahl ist erschlagend, weswegen wir in diesem Artikel einige Sprachen herausgepickt und kurz vorgestellt haben.

Wir selber nutzen gerne EV3-G, c4ev3, LeJOS oder MonoBrick für unsere Programme. Je nachdem, was wir gerade programmieren wollen oder für wen. Wenn wir einen Workshop leiten und die Teilnehmenden habe noch kein Vorwissen, dann nehmen wir gerne etwas visuelles, wie zum Beispiel EV3-G. Haben die Teilnehmenden schon einmal programmiert, dann darf es auch gerne etwas textuelles sein, wie LeJOS oder MonoBrick.

Was nutzt ihr für Programmiersprachen? Welche Plattform oder welche Sprache kommt bei euch zum Einsatz, wenn ihr an einem Wettbewerb teilnehmt? Schreibt uns gerne eine Nachricht oder hinterlasst einen Kommentar.