EV3 Python zeitverzögerte Reaktion

NXC, C/C++, Lejos, pbLua, RobotC...

Moderator: Moderatoren

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 8. Jan 2017 20:06

Hi,

ich muß geleich zu Anfang sagen, daß ich mit Python keine Erfahrung habe. Auf der Suche nach einer textbasierten Programmiersprache bin ich auf Python gestoßen. Die Installation von ev3dev war kein hexenwerk, doch mir fällt die langsame Reaktion des EV3 auf Befehle auf. Wenn die Befehle zum Starten der Motore direkt hintereinander stehen, dann laufen sie mit einem geschätzten Zeitabstand von 1/4 Sekunde los. Das führt dann dazu, daß der EV3 eine leichte Drehung macht, bevor er losfährt. Gibt es irgendeine Möglichkeit, diese Zeitverzögerung zu umgehen, oder ist das ein prinzipielles Problem einer interpretierten Sprache?

Grüße

Technicmaster0
Schreibt super viel
Schreibt super viel
Beiträge: 373
Registriert: 22. Dez 2010 12:36
Wohnort: In Berlin rechts abbiegen
Kontaktdaten:

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Technicmaster0 » 11. Jan 2017 11:42

An sich ist EV3DEV schon ziemlich langsam. Wenn Python noch dazu kommt ist das kein Vorteil. Vielleicht gibt es aber einen Befehl, um zwei Motoren gleichzeitig anzusteuern.

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

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon HaWe » 11. Jan 2017 12:12

ist ev3dev ( i.P. ein etwas abgewandeltes Debian Linux) wirklich langsam, d.h. langsamer als das Lego Linux (TI) ?
ev3dev an sich ist ja nur ein Linux-Betriebssystem, keine Programmiersprache.
Ich hatte zumindest einmal einen Vergleich von Linux -Executables zwischen beiden Linux-Distributionen gesehen, und da haben beide etwa gleiche Ergebnisse gebracht (beide etwa 100x so schnell wie der Lego lms2012 Programm-Interpreter, wie er für X-3 oder Ev3Basic eingesetzt wird).
Wenn also etwas auf ev3dev langsam läuft, ist es sicher die darauf laufende Programmiersprache, in diesem Fall Python mit der lms2012 Schnittstelle für die Lego Hardware.
Ich weiß ziemlich sicher, dass lms2012 das gleichzeitige Starten von Motoren vorsieht, John Hansen hat es einmal in seiner C-API entsprechend implementiert, und es stimmt, das wäre hier sicher von Vorteil.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 11. Jan 2017 19:07

Tja, Schade, ich finde da nix, um beide Motoren gleichzeitig zu starten. Für C mit ev3dev scheine ich zu doof zu sein, c4ev3 und RobotC fallen aus, weil ich keine Windows-Kiste habe. Da muß ich wohl vorerst bei der grafischen Oberfläche bleiben.

Trotzdem Danke für die Antworten.

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

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon HaWe » 12. Jan 2017 11:12

nee, für C (per ev3dev oder per c4ev3) bist du sicher nicht zu doof, die sind nur alle extrem schlecht dokumentiert, es gibt keine Tutorials und erst recht keinen Fundus an zahlreichen, dringend nötigen Programmbeispielen, die man als Vorbild verwenden könnte.
Ich habe auch nicht mehr weiterprobiert und bin dadurch bei Arduino gelandet, da funktioniert es wenigstens auf Anhieb.
Auf dem Rasperry Pi (ebenfalls Linux) gibt es aber auch keine breite C-Unterstützung, das meiste ist ebenfalls nur Python, und für die Pi-Lego-Shields von u.a. von Mindsensors (Pistorms etc.) gibt es ebenfalls nur Python-Unterstützung.
Und alle haben einen gegenüber Standard-Raspbian Jessie einen veränderten device tree, so dass noch nicht einmal die C-API- Libs von wiringPi drauf laufen, was nmM ganz wichtig wäre für eine C-Programmierung gerade für Anfänger.
Von daher hast du sicher mit Python die besten Aussichten, eventuell frag halt auch im ev3dev-Forum nach, da sind ja auch alle Entwickler vertreten (Ralph Hempel, David Lechner u.a.)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 13. Jan 2017 09:20

Hi,

kannst Du zum Thema Arduino und EV3/NXT noch ein bißchen mehr sagen? Das würde mich schon interessieren. Welchen Arduino verwendest Du, ist der auch per WLAN erreichbar? Ich habe zwar ein Windows 10 in einer virtuellen Maschine laufen, aber die Verbindung zu den EV3/NXT per Bluetooth ist ein Krampf, weil sie immer erst nach dem dritten Versuch funktioniert. WLAN dagegen funktioniert ohne zu mucken.

Grüße und Danke schonmal

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

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon HaWe » 13. Jan 2017 10:41

mit dem EV3 hatte ich nie richtig viel Erfolg, was mit der IMO völlig verkorksten HW + FW zusammenhängt, die auch völlig inkompatibel ist zu Industriestandards: UART komplett unmöglich, i2c immerhin extrem abgespeckt mit Arduino AVRs und absolut problematischen pullups; mit EV3Basic habe ich aber eine Kommunikation zum Arduino Mega hinbekommen.
viewtopic.php?f=25&t=8673&p=67709#p67709

Leider komplett gescheitert bin ich mit meinen Arduino Dues, kA was da nicht funzt, ich habe es aufgegeben. Die AVRs (Mega, Uno) sind mir aber zu schmalbrüstig, nur die Dues wären für mich interessant gewesen.

Beim NXT sieht es anders aus, da der nicht diese bekloppte Autodetection hat und die Ports daher definierter zugreifbar sind, und weil NXC zum Programmieren verfügbar ist, wenngleich aber auch nur mit erheblichen Einschränkungen für Standardequipment - aber es funktioniert da sowohl mit Arduino AVRs (Mega) als auch mit ARMs (Due):
viewtopic.php?f=70&t=8624#p67235

Zu EV3 und EV3Basic muss ich sagen: Leider sind die EV3Basic / SmallBasic Möglichkeiten etwas zu limitiert für meine Begriffe, doch ev3dev als OS ist keine Option für mich: der EV3 lässt sich nicht lokal in C programmieren, da kein HDMI TFT anzuschließen ist, und per USB-Interface konnte ich es nicht zum Laufen kriegen (EV3 wird nicht erkannt, ndis Treiberkonflikte) ssh/puTTY für remote-Zugriffe kommt für mich nicht in Frage, und Eclipse als IDE kommt mir nicht auf meinen Computer. Auch die Linux-Dokus und sonstige Tutorials sind mir bei weitem zu dürftig für ev3dev, und auch die Community ist recht mager: nichts für Linux- und embedded-C-Anfänger.

aber das nur als kurzer Abriss, da es jetzt recht OT wird, ansonsten weitere Dinge besser in einem gesonderten Topic!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 13. Jan 2017 10:52

OK, und Danke erstmal. Ich dachte bei meiner Frage allerdings mehr an die EV3-/NX-Shields, also Arduino als Ersatz für die LEGO-Controller. OT-Beiträge sind doch erstmal kein Problem, solange ich der Threadersteller bin, oder?

Grüße

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

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon HaWe » 13. Jan 2017 10:57

ach so - da habe ich gar kein persönlichen Erfahrungen ich habe nur was drüber auf den entspr. Hersteller-Websites gelesen - und nach einer persönlichen Anfrage an Mindsensors die Antwort, dass keine C-APIs verfügbar und auch nicht geplant sind.
Zum OT hast du grundsätzlich schon recht, aber es soll ja auch für andere Leser übersichtlich bleiben, wenn themenspezifische Beiträge gesucht werden, sonst erinnert man sich grob, mal was gelesen zu haben, aber man findet keinen passenden Topic-Titel mehr. Und die Forums-Suchmaschine ist leider unter aller Kritik.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 13. Jan 2017 11:01

Gut - oder auch nicht gut - ich werde mich mal selbst auf die Suche machen. Vielleicht hat sich mittlerweile irgendetwas an APIs getan.

Grüße und Danke

Technicmaster0
Schreibt super viel
Schreibt super viel
Beiträge: 373
Registriert: 22. Dez 2010 12:36
Wohnort: In Berlin rechts abbiegen
Kontaktdaten:

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Technicmaster0 » 13. Jan 2017 12:13

Ich habe zumindest den Eindruck, dass das GUI von EV3DEV deutlich langsamer als das von der offiziellen Firmware reagiert. Speedtests habe ich aber nicht durchgeführt.
Als Alternative zu Python/EV3DEV gibts ja auch noch die LeJOS Firmware (Java) und die MonoBrick Firmware (C#). Beide müssten mit Linux kompatibel sein und einige Beispiele haben.
Zu den restlichen meiner Meinung nach subjektiven Aussagen von HaWe sage ich mal nichts.

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 13. Jan 2017 12:26

Ich habe mir auch schon LeJOS und Monobrick angesehen. Nun ja, bei Objektorientierter Programmierung habe ich immer noch ein Brett vor dem Kopf ;-) Mit C auf dem Arduino muß ich mich eh beschäftigen, weil ich mir einen Colorduino zulegen möchte. Daher habe ich in der Wahl der Programmiersprachen eingeschränkt. Python ginge noch, wenn ich statt der Arduino-Shields auf Brick Pi gehen würde. Aber das muß erst alles noch reifen.

Jetzt gerade kurvt mein EV3 mit EV3 Basic umher, weil der EV3Explorer auch WiFi beherrscht. Ich habe allerdings keine Linuxrechner hier, sondern Äpfel.

Grüße

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

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon HaWe » 13. Jan 2017 15:02

jaaaaa .... die GUI zum Programmieren und der Layer zum Ausführen sind ntl selber nur zusätzlich ausgeführte Programme, die im ev3dev Linux user space laufen. Aber das sind eben Zusatz-Programme und Module, nicht das ev3dev selber.
Aber zu Python: das ist doch auch OOP, nur eben einfacher zu handhaben.
Das gleiche gilt übrigens auch für das Arduino C++.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
Sunny Spider
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 25
Registriert: 14. Mai 2013 19:56

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon Sunny Spider » 13. Jan 2017 16:39

Mag ja sein, daß Python und Arduino C++ auch zu OOP gehören. Aber für jemanden, der bisher nur mit NXC Programme geschrieben hat, finde ich den Schritt zu C++, C# oder Java ganz schön groß. Wenn ich ein Programm in C# ansehe, dann verstehe ich erstmal nur Bahnhof, desgleichen bei den anderen. RobotC mag ich einfach nicht, das ist einfach nur Bauchgefühl. Außerdem unterstützt die Firmware von RobotC den kleinen WLAN-Stick von Edimax nicht, der mit der Original-Firmware von LEGO mittlerweile funktioniert. Wie schon egsagt, den Arduino kann man in C programmieren und wenn ich mich beim Colorduino damit anfreunden kann, dann werde ich den LEGO-Brick durch einen Arduino mit passendem shield ersetzen. Mittlerweile scheint Mindsensors eine vernünftige Dokumentation der API zu haben. Ich habe das aber nur überflogen.

Deshalb meine Suche nach einer Möglichkeit, den EV3 in C zu programmieren.

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

Re: EV3 Python zeitverzögerte Reaktion

Beitragvon HaWe » 13. Jan 2017 16:49

Mag ja sein, daß Python und Arduino C++ auch zu OOP gehören. Aber für jemanden, der bisher nur mit NXC Programme geschrieben hat, finde ich den Schritt zu C++, C# oder Java ganz schön groß. Wenn ich ein Programm in C# ansehe, dann verstehe ich erstmal nur Bahnhof, desgleichen bei den anderen.

Da gebe ich dir 100%ig Recht.

Zum Arduino: achte auf die Typen.
wenigstens einen Arduino Mega (AVR, 16MHz, 8kB RAM), besser einen Due (ARM Cortex M3, 84 kHz, 92kB RAM)
Die kleinen Unos und Nanos haben nur etwa 2kB RAM, davon braucht schon ein SPI Display 1/4 für sich.

Aber Colorduino ist ja nur ein Matrix-Display-Controller, den man an einem Arduino etc. anschließen kann. Der Colorduino scheint zumindest Mega-compatibel (AVR mit 5V) zu sein, ob er auch Due-kompatibel ist (ARM mit 3,3V) weiß ich allerdins nicht.
Auch der NXT läuft übrigens mit 5V (eingebauter Steuer-AVR), der EV3 dagegen mit 3,3V (ARM).

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


Zurück zu „textbasierte Programmiersoftware“

Wer ist online?

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

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss