NXT + EV3: Liste der verfügbaren Programmiersprachen

Allgemeines und oft gestellte Fragen (z.B. Baukästen, Anleitungen, Projekte...)

Moderator: Moderatoren

Benutzeravatar
chrimo
Moderator
Moderator
Beiträge: 933
Registriert: 23. Okt 2006 18:59
Wohnort: Sauensiek (Niedersachsen, Krs.Stade)

NXT + EV3: Liste der verfügbaren Programmiersprachen

Beitragvon chrimo » 17. Jan 2007 02:01

Moin,

NXT-Software Übersicht:
http://www.teamhassenplug.org/NXT/NXTSoftware.html
http://www.roberta-home.de/de/was-bietet-roberta/roberta-reihe/vergleich-programmiersprachen-lego-mindstorms-nxt (edit HaWe: url ungültig)
http://www.botmag.com/articles/10-31-07_NXT.shtml (edit HaWe: url ungültig oder verändert)
das ist doch schon eine riesige Auswahl, oder ?

NXC :
BricxCC Website: http://bricxcc.sourceforge.net/
http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_tutorial.pdf
http://lukas.internet-freaks.net/nxt.php

pbLua :
http://www.hempeldesigngroup.com/lego/p
http://www.lua.org/manual/5.1/

leJOS NXJ :
Java/LeJos Website: http://lejos.sourceforge.net/

Bye
Chrimo
HaWe hat geschrieben:edit: die Botmag- und die Roberta-Übersicht scheinen nicht mehr online zu sein.

Bei der botmag-Übersicht wird RobotC fälschlich als "C" bezeichnet, tatsächlich ist es nur C-ähnlich (wie NXC).
Außerdem berücksichtigt es nur die alte-Lego-FW-Version (ver. 1.0x für NXT-G 1.x und alte NXC- und NBC-Versionen).
Ab FW 2.0 beherrscht die FW (samt NXT-G und NXC, NBC) auch Fließkomma-Arithmetik (u.v.a.m.)
Cave: der botmag-Artikel ist von Dick Swan verfasst, dem RobotC-Entwickler (daher bestehen hier sicherlich "Interessenkonflikte")


Auch die Roberta-Übersicht ist teilw. unvollständig und teilw. falsch oder überholt.
Es fehlt als Sprache nxtOSEK (C/C++, weit stärker verbreitet als das GNAT-Basic-Derivat).
NXT-G 2.0 hat Fließkomma und trigonom. Funktionen, also genau wie Labview Education oder NXC.
NXC beherrscht alle Eigenschaften von NXT-G (z.B. Datalogging, ggf. durch eigene Dateioperationen).
Switch/Case-Anweisung ist nichts anderes als eine kaskadierte if-else if - Anweisung und verdient keine eigene Zeile als Kriterium.
Ein wichtiges Kriterium fehlt aber, nämlich Rekursionen (nur Lejos mit Java, nxtOSEK mit C/C++, seit ca. 2011 auch bei RobotC).
RCX-Kompatibel ist keine der Sprachen, allerdings gibt es unter identischer IDE verschiedene Compiler:
NQC unter BricxCC-IDE (Vorgänger von NXC) für den RCX
und unter der RobotC-IDE gab es auch einen eigenen RCX-Compiler (wird aber ab 3.x nicht mehr unterstützt
sowie Java/LeJos für den RCX (wird auch nicht mehr supported)
(bearbeitet von HaWe)
Zuletzt geändert von chrimo am 25. Mär 2007 17:25, insgesamt 3-mal geändert.
+++ath+++
NO CARRIER

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

NXT + EV3: Liste der verfügbaren Programmiersprachen

Beitragvon HaWe » 26. Dez 2011 18:44

Ergänzung zu NXT:

mit der Lego-NXT-Firmware laufen:
NXT-G, Labview Education, Robolab, NXC (nur Grundfunktionen wie NXT-G)
mit der Lego-abwärtskompatiblen Enhanced Firmware (von John Hansen) laufen ebenfalls:
NXT-G, Labview Education, Robolab, NXC (auch erheblich erweiterte Funktionen)

nicht mit der NXT-Firmware , sondern mit einer eigenen laufen
LeJos, RobotC, pbLua, nxtOSEK

die NXT-NXT-Bluetooth Verbindung erlaubt 4 NXTs (1 Master+3 Slaves) bei den Lego-fw-basierten Sprachen
NXT-G, Labview Education, Robolab, NXC
aber nur 2 NXTs (1 Master + 1 Slave) bei RobotC
Allerdings gibt es nur extrem schlechte Verbindungsprotokolle für eine BT-Vernetzung (für alle Sprachen, etwas besser evtl. für leJOS und Labview) und sie sind, wenn sie überhaupt funktionieren, extrem langsam.

Welche Text-Programmierung soll man nun für den NXT oder den EV3 nehmen ?

- tja, das ist die Gretchenfrage. Wer die Wahl hat....
Hier mal dieses Thema aus meiner ganz persönlichen Perspektive...:

  • NXC bietet den einfachsten Einstieg für den NXT, bietet eine super-einfache Installation und eine super-praktische IDE (BricxCC), erfordert i.G. aber den Austausch der FW gegen eine andere (aber immerhin Lego-kompatible - sie nennt sich "enhanced Firmware" =EFW), auch wenn behauptet wird, dass man sie nicht immer unbedingt austauschen muss. NXC hat sehr einfache API-Befehle, aber leider keine Rekursionen, und hat aber auch einige Macken, die auf den Entwickler zurückgehen, und bei denen er sich leider nie eines Besseren hat belehren lassen.
    Ansonsten - super schneller Zugang für Anfänger, sehr einfach und - meist - intuitiv begreifbar, es gibt Anleitungen und Tutorials dazu hier im Forum (unter Text-Programmierung). NXC ist quasi die direkte Adaptierung der Bildersprache von Lego auf eine Text-Sprache und fußt auf den in der Lego-FW tief verwurzelten Roboter-Steuer-Funktionen (die auch manchmal recht verquer sind).
    NXC hat oftmals die langsamste Programmausführungsgeschwindigkeit (neben NXT-G) - Ausnahme: Array-Operationen, hier ist es unglaublich schnell.
  • Java - tja, Java.... was soll ich sagen....
    Java (für NXT + EV3: leJOS, auch teilw. NXJ genannt) ist seeehr mächtig mit irrsinnig vielen Bibliotheken für alles und jedes, aber alles und jedes dieser Methoden ist auch verkapselt in eigenen Objekten und Roboter-Klassen, und wenn du eine Methode aus der einen und eine aus einer anderen brauchst und eine dritte und vierte aus einer dritten .... dann musst du die Roboter-Klassen irgendwie zusammen kriegen und erweitern (new...implements...extends...usw usw - bin da aber nur ehemaliger Leidtragender, kein Spezialist). Und dann die Pfade... . Da den Überblick zu behalten...
    Auch die IDE ist nicht gerade Anfänger-tauglich, da die leJOS-Entwickler voll auf Eclipse setzen. Und an der Eclipse-Installation scheitern schon die ersten.
    Aber: die Community ist sehr groß und die Entwickler sind sehr rührig, und wenn du jemals Java verinnerlicht hast, dann läuft dein Krempel sogar auf dem EV3!
    Die Java-FW ist nicht kompatibel zur Lego-FW, man muss also für Lego-Programme wieder die Lego-FW neu laden und umgekehrt.
    Die Programmausführungsgeschwindigkeit ist je nach Operationen im Vergleich zu NXC teilw. um ein zigfaches schneller, in anderen Fällen um das zigfache langsamer als NXC, es kann also extrem von Anwendung zu Anwendung variieren (ähnlich wie bei RobotC, s.u., nur teilw. noch extremer). Auf dem EV3 ist es dank des JIT Compilers (JIT=Just-In-Time) extrem schnell, fast so schnell wie native Linux-Executables.
  • für Mono/C# gilt das gleiche wie für leJOS/Java, allerdings ist es noch bei weitem weniger ausgereift.
  • RobotC ist auch eine Option, sowohl für den NXT als auch für den EV3 (und für gefühlt ungefähr tausend weitere Robot-Plattformen), und alle haben hier dieselbe Basis-API.
    Aber: Es ist kommerziell und kostet also Geld (nicht nur die Anschaffung, sondern auch die jährlichen Upgrade-Lizenzen), und es hat oftmals Bugs, die einfach nicht beseitigt werden von den Entwicklern. Ich habe den Eindruck, dass man besser bedient wäre, wenn sie sich nur auf Mindstorms konzentrieren würden statt auf die tausend anderen Plattformen auch noch. Ich bin an diesen Bugs früher schon teilweise schier verzweifelt.
    Und: die API ist IMO oftmals mit ihrem Array-Wahn und ihren überkomplizierten Commando/Keyword--Namen, die alleine schon fast eine ganze Textzeile füllen, alles andere als intuitiv. Andererseits werden oft "echte" C-Syntax bzw. Keywords/Kommandos nicht unterstützt sondern heißen irgendwie anders und haben die Parameter irgendwo anders als "original-C".
    Allerdings: FLL und FTC erlauben soweit ich weiß ausschließlich RobotC als Text-Programmiersprache neben der Original-Lego-Bildersprache. Mit dem Nachteil, dass RobotC wohl auch besonders für diese Zielgruppe angepasst wird (und sich aus diesem User-Topf überwiegend finanziert), alle Wünsche von Ottonormalbenutzern rangieren da ganz unten auf der Prioritäten-Liste.
    Die RobotC -FW ist ebenfalls nicht kompatibel zur Lego-FW, man muss also auch hier für Lego-Programme wieder die Lego-FW neu laden und umgekehrt.
    RobotC ist in vielen Funktionen 2-5x so schnell wie NXC, in anderen (wschl aber nur ein dicker BUG!!!) aber nur 30 mal langsamer.
  • nxtOSEK ist schon eine andere Liga - sehr schnell, sehr mächtig, aber mit einem echten C-Compiler, der einem schon einiges für die Bedienung und Programmierung abverlangt - und die Community ist extrem klein, die ursprünglichen Entwickler supporten hier rein gar nichts mehr. ABER: wir haben hier einen begeisterten nxtOSEK-Anhänger im Forum - Martin Aumair (Martin0x5E)!
    Trotzdem eher was für Fortgeschrittene, denn man muss viele Standardfunktionen von Grund auf selber schreiben. Auch wenn man natürlich auf Martins umfangreiche Libraries zurückgreifen kann.
    nxtOSEK ist in der Lage, seine FW automatisch auf die Lego-FW oben drauf zu laden, man muss also nicht unbedingt immer neu die FW wechseln.
    nxtOSEK/C ist durchschnittlich 20x so schnell wie NXC
  • für gpp C/C++ für den EV3 gilt ähnliches wie für nxtOSEK für den NXT: irrsinnig schnell, allerdings echtes embedded C - trotzdem deutlich leichter zu installieren und zu händeln als nxtOSEK, da es vom sehr praktischen BricxCC unterstützt wird (selbe IDE wie NXC).
    Allerdings ist die API unvollständig: es ist zwar schon viel verfügbar (Display, Motore, Buttons, Sound) - aber gerade die sehr entscheidende Sensor-API fehlt. Damit ist es leider komplett unbrauchbar für normale User (Profis können allerdings die ziemlich verhunzte Lego-Modulschnittstelle lms2012.h auch direkt anzapfen, gehen tut das schon...)
  • ganz neu verfügbar ist EV3-Basic, anfängertauglich, läuft auf Basis der Lego-Firmware (DaVinci Linux OS plus Virtuelle Maschine (VM==Bytecode-Interpreter)) und verwendet direkt deren Funktionen: viewtopic.php?f=25&t=8587
    Auf Github ist ein Installer verfügbar und inzwichen auch Hilfefunktionen auf deutsch und englisch. Im Augenblick wäre es meine erste Empfehlung für Schrift-Programmier-Anfänger.
  • schon länger veröffentlicht, aber noch im Aufbau ist ev3-dev. Es ist streng genommen "nur" ein Debian-Linux-Betriebssystem, Debian bringt aber automatisch ein paar Programmier-Features mit (z.B. Python). Entfernt vergleichbar ist es mit Raspbian für den Raspberry Pi. Sicher nicht Anfänger-tauglich, ich selber bin bereits mehrfach bei der Installation gescheitert, bevor es überhaupt los gehen konnte. Eine einfache IDE für C samt API ist aber auch nicht vorhanden - wahrscheinlich müsste man hier Monster wie Eclipse bemühen. ev3dev wird auch von deren Entwicklern ausdrücklich NICHT für Anfänger empfohlen.



Ergänzung 2 - Text-Programmierung des EV3:


EV3-Basic
: http://www.mindstormsforum.de/viewtopic.php?f=25&t=8587
http://www.legoengineering.com/introducing-ev3-basic/
https://sites.google.com/site/ev3basic/

BricxCC GCC (C/C++) :
(unvollständig, von J.Hansen nicht mehr weiter entwickelt)
http://bricxcc.sourceforge.net/test_releases/readme_1st.txt

C4ev3 ("C for EV3") :
http://c4ev3.github.io/

RobotC (in Entwicklung):
http://www.robotc.net/

Java/leJOS (in Entwicklung):
http://www.mindstormsforum.de/viewtopic.php?f=25&t=8250
http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.lejos.org%2Fforum&h=ATMYNlaPeMGX0AFwKmpeJ00u0kbko_sHngq8xdqcBVYooWNzFvDC_fOHKQZgEvIDfxBoNHkTu-3kzf_8AovZFCtevAGtQdHieRIkgMMAPZBoedgUgHBaJM74foEkQKNSS01tnmYKvOuzPuFoodlqVA

Mono/C# (in Entwicklung):
http://www.mindstormsforum.de/viewtopic.php?f=25&t=8254

ev3dev (in Entwicklung):
http://www.ev3dev.org/




Ergänzung 3:
Benchmark-Tests verschiedener Hardware- und Software-Plattformen:


viewtopic.php?f=71&t=8095&p=65249#p64772
viewtopic.php?f=71&t=8095&start=60#p64772
(aktualisiert, da Mindboards-Forum nicht mehr existiert)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5399
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: NXT + EV3: Liste der verfügbaren Programmiersprachen

Beitragvon HaWe » 24. Okt 2016 09:34

Update zu EV3:

hier eine ganz schöne Übersicht u.a. zu aktuellen EV3 Programmiersprachen:

Nine alternative programming languages for LEGO MINDSTORMS

http://www.legoengineering.com/alternative-programming-languages/

C4EV3 http://c4ev3.github.io/ ist hier noch nicht genannt.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

timos
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 40
Registriert: 10. Mär 2006 11:17

Re: NXT + EV3: Liste der verfügbaren Programmiersprachen

Beitragvon timos » 18. Mär 2017 07:53

Hallo zusammen,

In der Liste fehlt noch die Programmiersprache NEPO (New Easy Programming Online). Mit dieser lassen sich NXT und EV3 programmieren:
https://lab.open-roberta.org

[url]https://mp-devel.iais.fraunhofer.de/wiki/display/ORInfo/Programmieren+EV3#ProgrammierenEV3-NEPO®[/url]
https://en.wikipedia.org/wiki/Open_Roberta

Viele Grüße


Zurück zu „Allgemeines zu Lego Mindstorms NXT und EV3“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 19 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss