Lok24
27.11.2016, 11:54

Mehrere EV3 koppeln

Hallo zusammen,

ich möchte mehrere EV3 zusammenarbeiten lassen.
Wie geht das?

Wenn man die über WLAN/BT koppeln?
Und dann mit nur einem LabVIEW-Programm in einem Brick steuern?

Oder alle über ein externes Programm(Laptop) steuern?
Wie werden die dann angeschlossen?
Geht das nur mit LeJOS?
Welche Programmiersprachen gibt es dafür?


Grüße

Werner



Lok24
05.12.2016, 14:44

Als Antwort auf den Beitrag von Lok24

Editiert von
Lok24
05.12.2016, 15:37

+2Re: Mehrere EV3 koppeln / leJOS

Hallo zusammen,

ich mach' hier mal die Ingrid

Was ich inzwischen verstanden habe:

- Man kann bis zu vier EV3 koppeln, indem man sie über USB-Kabel
verbindet.

- einer davon ist der Master, nur in ihn wird ein Programm geladen

- leJOS ist ein BS für den EV3, das von einer SD-Card geladen wird

- Programmierung über Java unter Zuhilfenahme der leJOS-Bibliothek
(verfügbar z.b. über Roberta)

- Entwicklungsumgebung z.B. Eclispse

Soweit alles richtig?

Was ich nicht gefunden habe ist, ob leJOS auch die Kopplung der EV3 (daisy chainig) unterstützt, vermute aber ja, da Andreas Baumgart seinen Papercube so steuert.
Was mir dabei noch nicht klar ist: wie das Dashbord funktioniert, da müsste ja das Progamm auf dem Laptop/Raspberry Pi laufen?


Grüße

Werner



Valkon , naseneis gefällt das


naseneis
06.12.2016, 11:47

Als Antwort auf den Beitrag von Lok24

Re: Mehrere EV3 koppeln / leJOS

Hallo Werner,

da hast du dir sicher ein anspruchsvollen Projekt vorgenommen und es wird hier in diesem Formum wahrscheinlich nicht viele Leute geben, die dir da weiterhelfen können. Generell wirst du also in so einem komplexen Setup viel selbst ausprobieren müssen - und einiges wird wahrscheinlich auch nicht so funktionieren wie irgendwo versprochen...

Ich habe selbst meinen (einzigen) Mindstorm Brick (EV3) vor einiger Zeit auf leJOS umgerüstet, weil ich einfach mit grafischer Programmierung alla Labview nichts anfangen kann. Ich bin dabei nach der offiziellen Anleitung auf der leJOS Homepage vorgegangen und es hat soweit auch gut funktioniert. leJOS wird nicht auf auf eine SD Karte gespielt, sondern der interne Flash des Bricks wird überschrieben - man hat also keine originale Lego Software mehr drauf. Im Bedarfsfall soll es zwar möglich sein, den Originalzustand des Bricks wiederherzustellen, ausprobiert habe ich es aber nicht.

Wie du schon richtig angedeutet hast, ein unter leJOS laufender Brick wird in Java programmiert. Die gängigste Java-Entwicklungsumgebung ist Eclipse, die sehr mächtig und umsonst ist. Nahezu alle Beispiele / HowTos die ich gesehen habe gehen davon aus, das Eclipse benutzt wird, deshalb würde ich dir raten es auch zu tun.
Mit dem leJOS Plugin für Eclipse stehen dir dann für die verschiedenen Mindstorms-Komponenten Java-Klassen zur Verfügung. Der Programmcode wird im Eclipse kompiliert und dann über USB auf den Brick gespielt. Soweit hat es auch bei mir funktioniert. Da ich aber zur Zeit kein Mindstorms-Projekt mache, haben ich an dieser Stelle meine Experimente eingestellt.

Anstelle der USB-Verbing soll die Programmierung des leJOS Bricks auch über WLAN möglich sein. Dazu muss man ein WLAN-Modul in den SD-Card Slot des Bricks stecken. Ich habe mir zwar schon so ein Modul besorgt (ist gängig und kostet keine 10 EUR), es aber noch nicht ausprobiert. Ist natürlich praktisch, drahtlos die Software ändern zu können, wenn man den Brick fest verbaut hat.

Ich habe eben mal kurz die Daisy Chain Funktionalität (PAN genannt) von leJOS-Bricks quergelesen. Erst mal handelt es sich es um ein recht neues Feature, das erst ab Version 0.9.1 zur Verfügung steht. Wenn ich es richtig verstehe, bleibt jeder Brick für sich erst einmal eigenständig und hat muss auch sein eigenes Programm haben. PAN dient dazu, dass sich die einzelnen Bricks untereinander unterhalten können, und zwar via Bluetooth oder USB (kann sein das WLAN auch funktioniert, bin mir aber nicht sicher). Dazu wird ein Brick als Master (Access Point) definiert, die anderen als Client. Wenn ich es richtig verstanden habe, kann jeder Brick auf die freien Ressourcen eines anderen Bricks zugreifen - das geht sogar soweit, dass ein Brick auf einen anderen ein Programm laden und ausführen lassen kann. Grundsätzlich sah es recht einfach aus, wenn ich mir den Beispielcode anschaue.

Ich hoffe dir ein wenig damit geholfen zu haben.

Viele Grüsse

Lothar



Lok24
06.12.2016, 12:12

Als Antwort auf den Beitrag von naseneis

Editiert von
Lok24
06.12.2016, 12:15

Re: Mehrere EV3 koppeln / leJOS

Hallo Lothar,

vielen Dank für die ausführliche Antwort.

Einiges davon möchte ich doch nochmal hinterfragen:


naseneis hat geschrieben:

Ich habe selbst meinen (einzigen) Mindstorm Brick (EV3) vor einiger Zeit auf leJOS umgerüstet, weil ich einfach mit grafischer Programmierung alla Labview nichts anfangen kann.


Zwischenfrage: ich dachte es gibt auch nichtgrafische Anwendungen jenseits von leJOS, wie z.B. robotC?

naseneis hat geschrieben:
leJOS wird nicht auf auf eine SD Karte gespielt, sondern der interne Flash des Bricks wird überschrieben - man hat also keine originale Lego Software mehr drauf.


Ich habe die Anleitung von Roberta gelesen, da steht:

"Damit stellt die leJOS-Software ein Java-Betriebssystem als Alternative zur vorinstallierten LEGO-Firmware für den EV3 dar. leJOS wird von einer bootbaren microSD- Karte gestartet, ohne dabei die auf dem EV3 vorhandene LEGO-Software zu verändern bzw. zu löschen "

http://roberta-home.de/dr...nd/RobertaBuchch5.html

naseneis hat geschrieben:

Anstelle der USB-Verbing soll die Programmierung des leJOS Bricks auch über WLAN möglich sein. Dazu muss man ein WLAN-Modul in den SD-Card Slot des Bricks stecken.


Roberta sagt:
"Die Verbindung des EV3 über WLAN benötigt ein bestehendes WLAN-Netzwerk, ist damit in der weiteren Benutzung aber komfortabler, da nicht kabelgebunden. Der EV 3 kann somit beim Überspielen eines neuen Programms über Eclipse einfach an seiner Position im Raum verbleiben. "

Lego sagt
"Die WiFi-Funktion kann zur drahtlosen Kommunikation zwischen EV3-Stein und EV3-Software dienen. Hierzu muss ein WiFi-Dongle – „Dongle für drahtlose Verbindung“ – an die USB-Buchse des Intelligenten EV3-Steins angeschlossen werden. (Dem Produkt liegt kein „Dongle für drahtlose Verbindung“ bei.)"

Also eher USB denn SD-Card-Slot?

naseneis hat geschrieben:

Ich habe eben mal kurz die Daisy Chain Funktionalität (PAN genannt) von leJOS-Bricks quergelesen. Erst mal handelt es sich es um ein recht neues Feature, das erst ab Version 0.9.1 zur Verfügung steht. Wenn ich es richtig verstehe, bleibt jeder Brick für sich erst einmal eigenständig und hat muss auch sein eigenes Programm haben. PAN dient dazu, dass sich die einzelnen Bricks untereinander unterhalten können, und zwar via Bluetooth oder USB (kann sein das WLAN auch funktioniert, bin mir aber nicht sicher). Dazu wird ein Brick als Master (Access Point) definiert, die anderen als Client


Nun, Daisy Chain bei EV 3 funktioniert nur über Kabel.
Das Programm läuft nur auf einem(!) Brick.
Via BT können zwar Bricks kommunizieren, aber es laufen 4 Programmen auf vier Bricks.

Das sind zwei völlig unterschiedliche Szenarien, so wie ich es verstehe.

Bei leJOS PAN steht, dass der zweite Brick als Client via BT angesprochen wird, oder habe ich das falsch verstanden?

Grüße

Werner



naseneis
06.12.2016, 13:45

Als Antwort auf den Beitrag von Lok24

Re: Mehrere EV3 koppeln / leJOS

Hallo Werner,

ja, es gibt natürlich auch weitere textbasierte Programmierumgebungen als leJOS, soweit ich weiss wird das von dir genannte RobotC auch bei vielen offizielen Wettbewerben eingesetzt. Zum einen ist Java eine persönliche Präferenz (ich kann aber auch C, wäre daher kein Problem), zum anderen kostet RobotC Lizenzgebühr - und zwar pro Brick.

Mit der SD-Karte und dem USB Dongle könntest du recht haben, es ist schon eine Weile her, als ich das gemacht habe. Kann sein dass man nur Bricks ohne SD-Slot flashen muss. Ich bin auf jeden Fall nach dem Tutorial auf lejos.org vorgegangen, das ist die Homepage des Projekts.

Sobald du ein alternatives Betriebssystem installiert hast, ist es ganz uninteressant was Lego sagt. Weil dann ist der Mindstorm Brick nur noch die Hardware (vergleichbar mit einem Arduino), die Funktionalität wird von der neuen Umgebung bereitgestellt. Hier ist noch eine generelle Bemerkung zu alternativen Betriebssystemen angebracht: Es ist nicht gesagt, dass alle original Lego-Sensoren mit jedem alternativen Betriebssystem funktionieren, weil dazu immer erst Treiber für das jeweilige System geschrieben werden müssen. Das gilt erst recht für 3rd-Party Sensoren, wie die von HiTechnic! Das war für mich auch ein Grund pro leJOS - es ist weit verbreitet und wird auch aktiv gepflegt und entwickelt.
Zurück zum PAN: PAN funktioniert sowohl über als Kabel als auch über BT. Im Blog über dieses Thema findest du einen Performance Vergleich zwischen beiden Kopplungsarten. leJOS begrenzt PAN auch nicht auf 4 Bricks, warum auch? Java und Labview sind 2 vollkommen unterschiedliche Ansätze. Was genau geht und was nicht kann ich dir auch nicht sagen, ich habe auch keine 2 Bricks um es auszuprobieren.

Viele Grüsse

Lothar



naseneis
06.12.2016, 13:50

Als Antwort auf den Beitrag von Lok24

Re: Mehrere EV3 koppeln / leJOS

Werner, noch eine Frage:

was für eine große Aufgabe hast du denn, dass du mehrere Mindstorms koppeln musst? Wenn du nur mehr Ports brauchst gibt es sicherlich auch Alternativen wie z.B. Porterweiterungen. leJOS unterstützt auch eine Zahl von IIC-Chips, damit kann man sicher auch was basteln.

Gruss
Lothar



Lok24
06.12.2016, 14:06

Als Antwort auf den Beitrag von naseneis

Re: Mehrere EV3 koppeln / leJOS

Hallo Lothar,

naseneis hat geschrieben:

was für eine große Aufgabe hast du denn, dass du mehrere Mindstorms koppeln musst? Wenn du nur mehr Ports brauchst gibt es sicherlich auch Alternativen wie z.B. Porterweiterungen

Die EV3-Bricks sind bereits da. Und haben auch zusammen genügend Ports. Und das Daisy-Chaining ist das was ich brauche: in einem Brick läuft ein Programm und steuert 12 Motoren.
So weit so simpel.

Allerdings brauche ich auch Befehle, die es in labVIEW nicht gibt, spezielle mehrdimensionale Arrays, vernünftiges Multithreading und – den Batteriestand!

Grüße

Werner



Lok24
06.12.2016, 14:17

Als Antwort auf den Beitrag von naseneis

Re: Mehrere EV3 koppeln / leJOS

Hallo Lothar,

naseneis hat geschrieben:

Ich bin auf jeden Fall nach dem Tutorial auf lejos.org vorgegangen, das ist die Homepage des Projekts.


Da gibt es nur Tutorials für die alten Bausteine, und da wird auch die Firmware replaced. Scheint mir völlig anders zu sein.

naseneis hat geschrieben:
Sobald du ein alternatives Betriebssystem installiert hast, ist es ganz uninteressant was Lego sagt. Weil dann ist der Mindstorm Brick nur noch die Hardware (vergleichbar mit einem Arduino), die Funktionalität wird von der neuen Umgebung bereitgestellt.


Das ist wahr, deswegen fragte ich ja auch wie man die koppelt
Mir wären 2 Kabel am liebsten - so wie bei Lego.

Grüße

Werner



naseneis
06.12.2016, 14:52

Als Antwort auf den Beitrag von Lok24

Re: Mehrere EV3 koppeln / leJOS

Permalink

1000steine-Code

BBCode

HTML


Hallo Werner,

die leJOS homepage ist schon aktuell - die von dir gewünschte Anleitung gibt es in der Sektion EV3 -> Wiki -> Installing leJOS -> Windows Installation. Dort ist alles bebildert beschrieben. (FAT32 formatierte SD Karte, es gibt ein Utility, das dort die Oracle JRE und leJOS draufkopiert, dann ins Mindstorms und fertig)

Deine Aufgabe sollte damit lösbar sein, mehrdimensionale Arrays gibt es und auch die Motorports kannst du Remote ansprechen (siehe package lejos.remote.ev3 in der API Doku). Batterie wird kein Selbstläufer: Die Klasse RMIRemoteBattery stellt nur getVoltageMiliVolt() zur Verfügung, anhand dessen müsstest du die Restkapazität berechnen / abschätzen.

Auf jeden Fall eine interessante Aufgabe! Viel Spass damit!

Lothar



Lok24
06.12.2016, 15:49

Als Antwort auf den Beitrag von naseneis

Re: Mehrere EV3 koppeln / leJOS

Hallo Lothar,

naseneis hat geschrieben:

Dort ist alles bebildert beschrieben. (FAT32 formatierte SD Karte, es gibt ein Utility, das dort die Oracle JRE und leJOS draufkopiert, dann ins Mindstorms und fertig)


Ja sicher, das geht auch alles. Leider kommt halt keine USB-Verbindung zustande.
Die Fehler werden auch im Netz beschrieben.
Liegt wohl am Windows-Build.

naseneis hat geschrieben:
Auf jeden Fall eine interessante Aufgabe! Viel Spass damit!
Den habe ich keinesfalls.
Das Ganze ist mir eher ausserordenlich zuwider.



Lok24
10.12.2016, 12:02

Als Antwort auf den Beitrag von Lok24

Editiert von
Lok24
10.12.2016, 12:28

Re: Mehrere EV3 koppeln - Zwischenstand

Hallo zusammen,

hier ein kleiner Einblick ins Labor...

leJOS ist installiert, läuft und ist via WLAN (WiFi-Dongle im USB-Slot) mit der Entwicklungsumgebung Eclipse (hier:für Java) auf dem Rechner verbunden.

Mit einem Brick.
Die Original Mindstorms-FW auf dem Brick wird nicht verändert.

Mehrere (bis 16) werden unterstützt, das nennt sich PAN.
Die Seiten habe ich gelesen, aber keine Antwort auf meine zentrale Frage gefunden, vielleicht kann mir da jemand helfen.

Bei labVIEW ist es so, dass die vier Bricks via USB gekoppelt werden, aber das Programm läuft nur in einem Brick. Das wäre mir auch lieb.

Bei PAN handelt es sich vielleicht(?) um eine verteilte Anwendung, denn da steht immer, dass die Bricks untereinander kommunizieren.
Konkret: An Brick_A hängt ein Motor, an Brick_B ein Sensor dazu.
Wie spreche ich das an?

Und außerdem kann man wohl stattdessen die ominöse API nutzen, dann läuft das Programm nur auf dem PC, die Bricks senden und empfangen nur Kommandos und Zustände?

Ich habe keine Ahnung.

Grüße

Werner



Lok24
10.12.2016, 12:05

Als Antwort auf den Beitrag von naseneis

Re: Mehrere EV3 koppeln / leJOS

Hallo Lothar,

naseneis hat geschrieben:

die leJOS homepage ist schon aktuell - die von dir gewünschte Anleitung gibt es in der Sektion EV3 -> Wiki -> Installing leJOS -> Windows Installation. Dort ist alles bebildert beschrieben. (FAT32 formatierte SD Karte, es gibt ein Utility, das dort die Oracle JRE und leJOS draufkopiert, dann ins Mindstorms und fertig)


Stimmt, passt aber alles weder zum aktuellen Java noch zum aktuellen Eclipse noch zum neusten Win X Build. Die Bilder sind allesamt veraltet.
Und wenn mal von Java 8, mal von 1.7 die Rede ist ist das eher verwirrend. Zumal die Installation nur einen Tag funktioniert, weil - natürlich - niemand ein altes Java betreiben möchte und am nächsten Tag längst ein Update stattgefunden hat.
Eine - von mir gewünschte - Anbindung über USB scheint derzeit nicht möglich.
Dass ich im 21. Jahrhundert noch in irgendwelchen Umgebungsvariablen herumstochern muss und - eben nicht dokumentierte - Pfade setzen soll scheint mir nicht recht überzeugend.

naseneis hat geschrieben:
Deine Aufgabe sollte damit lösbar sein, mehrdimensionale Arrays gibt es und auch die Motorports kannst du Remote ansprechen (siehe package lejos.remote.ev3 in der API Doku).

???? remote??? API???
siehe unten

naseneis hat geschrieben:
Batterie wird kein Selbstläufer: Die Klasse RMIRemoteBattery stellt nur getVoltageMiliVolt() zur Verfügung, anhand dessen müsstest du die Restkapazität berechnen / abschätzen.

Nein, die Kapazität ist mir egal. Ich starte mit 9V, wenn die Spannung bei z.B. 7,2V liegt wird der Robotor in einen definierten Ausgangszustand gefahren und die Batterien gewechselt.

Aber egal, auch dank Deiner Unterstützung ist jetzt alles im Lack, weiter geht es in diesem Post

Grüße

Werner



Gesamter Thread: