ftrobopy und ROBOPro auf dem TXT 4.0

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Torsten » 21 Mär 2022, 16:09

Hallo,

auf https://github.com/ftrobopy/ftrobopy_server habe ich mal meine aktuellen Fortschritte eines ftrobopy Online-Servers für den TXT 4.0 hochgeladen. Da ftrobopy und ROBOPro das gleiche Kommunikationsprotokoll verwenden, kann man damit den TXT 4.0 auch mit ROBOPro (im Online-Modus) programmieren.

Der Sourcecode ist noch sehr experimentell und unstrukturiert und sollte nicht zu ernst genommen werden. Ich musste viele Dinge erst ausprobieren und "reverse engineeren". Die Code-Struktur wird sich aber noch bessern ... Da der Code aber schon nützlich ist (zumindest für mich) wollte ich Euch diesen Zwischenstand nicht vorenthalten.

Die folgenden Funktionen werden schon unterstützt:
- Inputs I1-I8
- schnelle Counter C1-C4
- Outputs O1-O8, bzw. Motoren M1-M4 (inklusive Distanz- und Synchronisierungsfähigkeit)
- Kamera-Live streaming über den Port 65001. Damit können auch alle Kamera-Funktionen (z.B. Ballerkenner, Linienerkenner, Farberkenner, ...) in ROBOPro verwendet werden

Weiterhin geplant sind:
- Unterstützung der TXT 4.0 Servo-Ausgänge durch Simulation einer Extension, bei der die Outputs O1-O3 als Servos "missbraucht" werden
- I2C online Unterstützung
- Unterstützung der fischertechnik Bluetooth BT-Remote Fernbedienung in ftrobopy und ROBOPro
- Sound-Unterstützung
- Verwendung von mehreren (alten) TXT Controllern als Extension an einem TXT 4.0-Master, verbunden über ein Wireless-Netzwerk

Weitere Ideen, die ich durchaus als realistisch umsetzbar ansehe sind:
- ftduinos, BT-Smart Controller, Raspberrys, ... als Extensions
- Der Server könnte im Prinzip auch ganz ohne TXT 4.0 eingesetzt werden, und auf einem Windows/Mac/Linux PC laufen, alle Ein-Ausgabe-Geräte wären dann nur noch Extensions und alles könnte mit ftrobopy, bzw. ROBOPro programmiert werden.

Falls Ihr noch weitere Ideen habt oder etwas wichtiges vermisst, das ich vergessen haben sollte: ich bin offen für Vorschläge.

Viele Grüße
Torsten

Benutzeravatar
PHabermehl
Beiträge: 2429
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von PHabermehl » 21 Mär 2022, 17:27

Torsten hat geschrieben:
21 Mär 2022, 16:09
...kann man damit den TXT 4.0 auch mit ROBOPro (im Online-Modus) programmieren.
Es ist so unglaublich unbeschreiblich genial... :mrgreen:

Der Torsten macht mal so nebenbei, was die fischerwerke kategorisch verweigern.

Ich hab' Ähnliches glaube ich schon mal gesagt, aber... vielen viele vielen Dank für Deine Arbeit, Torsten!

Gruß
Peter
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

Benutzeravatar
Bjoern
Beiträge: 630
Registriert: 04 Jan 2018, 12:34

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Bjoern » 21 Mär 2022, 18:30

Hallo Torsten,

da kann ich mich dem Peter nur anschließen. Habe zwar keinen TXT 4.0, aber du zeigst direkt auf, das ft einfach nur nicht will.
Ich möchte jetzt keine Diskussion was jetzt besser ist, aber der ein oder andere mag aus diversen Gründen lieber bei RoboPro bleiben.

Unterstützen deine Inputs auch schon Fotosensor, Ultraschallsensor, IR-Spurerkenner...?

Wenn du dann wirklich noch die Community Controller mit einbezihen kannst, wie auch die alten, dann hast du eine Umgebung mit totalem Mehrwert geschaffen. Denn dann wäre wirklich alles unter einem Dach vorhanden.

Einziger Haken ist dann eben die Tatsache das es nur Online geht. Siehst du da Chancen?

Wenn ich dich richtig verstehe könnte dieser Server auf einem PC laufen. Die Clients wären dann alle per WLAN angebunden? Hört sich auch erst einmal interessant an. Am Ende ist das dann aber schon ein wenig mehr als nur noch die Spielzeug Variante für 10 jährige....

Wie auch immer. Mein Respekt für die jetzige Leistung. Den Like Button gibt es ja glaube ich immer noch nicht ;)

Björn
https://gundermann-software.de/shop/
Der Shop für viele Community Projekte

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Torsten » 21 Mär 2022, 20:40

Hallo,

erstmal vielen Dank für die Blumen! :) ... das Projekt ist aber bei weitem noch nicht fertig.
Bjoern hat geschrieben:
21 Mär 2022, 18:30
Unterstützen deine Inputs auch schon Fotosensor, Ultraschallsensor, IR-Spurerkenner...?
Es sollte zwar eigentlich schon funktionieren, aufgrund eines Bugs tut es das aber noch nicht. Ich denke, in der nächsten Version wird es aber drin sein. Bzgl. der geplanten i2c-Funktionalität muss ich mir vorher erst noch genau anschauen, wie das in C++ am besten implementiert wird. Ich bin nämlich mit i2c noch recht unerfahren.
Bjoern hat geschrieben:
21 Mär 2022, 18:30
Einziger Haken ist dann eben die Tatsache das es nur Online geht. Siehst du da Chancen?
ftrobopy funktioniert bereits jetzt sowohl online als auch offline auf dem TXT 4.0. Das ist auch kein Problem, da ftrobopy nur einen Python-Interpreter benötigt, den es für jedes aktuelle Mainstream Betriebssystem gibt. Bei ROBOPro sind die Chancen erstmal recht klein. Ohne detaillierte Informationen von fischertechnik über den Aufbau der ROBOPro Download Files und Binaries ist der Reverse-Engineering-Aufwand für mich derzeit nicht machbar.
Bjoern hat geschrieben:
21 Mär 2022, 18:30
Am Ende ist das dann aber schon ein wenig mehr als nur noch die Spielzeug Variante für 10 jährige....
Aber als Spielzeug für 52 jährige ist es sehr gut geeignet ;-)

Viele Grüße
Torsten

Benutzeravatar
Bjoern
Beiträge: 630
Registriert: 04 Jan 2018, 12:34

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Bjoern » 21 Mär 2022, 23:36

Hallo Torsten,

I²C ist nicht so kompliziert. Die Frage ist nur ob du variabel sein willst und Master oder Slave spielen möchtest.
Der TXT kann nur Master, was für die normale Anwendung auch ausreichen dürfte.

Die Info von ft wirst du vermutlich nicht bekommen. Ist ja nicht in deren Sinne. Andererseits ist diese multifunktionale Unterstützung eigentlich das Argument für Nachhaltigkeit. Und wenn RoboPro Coding das bessere System ist, würde es ja jeder nutzen.....

Da ich schon mal 2 Jahre älter bin, bin ich schon zu alt dafür :D . Was aber eher mit mangelnder Zeit zu tun hat.....

Der kommende ftSwarm wäre natürlich auch noch was für dieses Ökosystem.
Kennst du die Projekte aus der Vergangenheit wo jeder einen Teil einer irgendetwas weitergeb Maschine gebaut hat?
Hier könnte man dann auf der Basis die Steuerung zentral regeln und ám Ende hast du dann evtl. ganz verschiedene Controller die von einem Server gesteuert werden. Auch ne witzige Idee.

Und wer die Blumen verdient hat, sollte diese auch bekommen.
Björn
https://gundermann-software.de/shop/
Der Shop für viele Community Projekte

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von richard.kunze » 22 Mär 2022, 00:03

Wenn ich das so lese komme ich gerade auf eine (blöde?) Idee: Wie unterschiedlich ist eigentlich das RoboPro-Online-Protokoll zu dem Protokoll, das der alte TXT intern zwischen dem Cortex-A8 (dem "Linux-Prozessor") und dem Cortex-M auf dem Treiber-Board fährt?

Wenn sich das nicht zu sehr unterscheidet: Könnte man da nicht einen (ggf. etwas modifizierten) ftrobopy_server statt an einen TCP-Socket an eine Named Pipe hängen, einen Container zusammenstöpseln der das Userland des alten TXT gut genug imitiert dass der proprietäre Firmware-Teil des alten TXT dadrauf läuft (sollte mit einem Container gehen, die CPUs im alten TXT und im TXT 4.0 sind kompatibel genug dafür), und statt der internen seriellen Schnittstelle der Firmware im Container dann die Named Pipe mit dem ftrobopy_server unterzujubeln?

Auf die Art könnte man eventuell sogar RoboPro-Offline-Programme auf dem TXT 4.0 zum laufen bekommen...

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von MasterOfGizmo » 22 Mär 2022, 09:24

richard.kunze hat geschrieben:
22 Mär 2022, 00:03
Auf die Art könnte man eventuell sogar RoboPro-Offline-Programme auf dem TXT 4.0 zum laufen bekommen...
Ich habe mal versucht, das TXTControl ("der proprietäre Firmware-Teil des alten TXT") auf dem R-Pi und auch in QEMU zum Laufen zu bekommen. Beides hat nicht soweit geklappt, dass RoboPro damit kommunizieren wollte. Das wäre sicher cool. Aber dazu fehlt meines Erachtens eine Menge Know-How u.a. darüber, was RoboPro da genau auf den TXT hinunterlädt. Sind das echte Arm-Binaries? Wenn ja was für welche? Oder irgendein Zwischencode?

Ja, man kann hoffen, dass das alles einfach so läuft, ohne dass man es verstanden hat. Aber da scheint mir die Erfolgsaussicht eher gering.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Torsten » 22 Mär 2022, 11:35

Grundsätzlich finde ich Richards Idee, alles in einen Container zu verpacken und dann "nur noch" die passenden Wrapper zu schreiben, gar nicht so schlecht, auch wenn das sicherlich nicht trivial wäre und einiges an Arbeit verlangen würde. Allerdings befürchte ich, dass wir in ein Lizenzproblem hineinlaufen, wenn wir das TXTControl-Binary auf einen anderen Rechner kopieren (z.B. einen TXT 4.0) und es dort laufen lassen. Wie MoG bereits angemerkt hat, ist TXTControl eine proprietäre Software von fischertechnik.
Ich denke, dass wir ohne Insider-Informationen über das ROBOPro Binärformat nicht sehr weit kommen und den ".rpp-Compiler" werden wir wohl kaum bekommen.

Benutzeravatar
Bjoern
Beiträge: 630
Registriert: 04 Jan 2018, 12:34

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Bjoern » 22 Mär 2022, 12:20

Hi Torsten,

wir haben doch eine Ansprechpartnerin bei ft. ClassicMan hatte den doch glaube ich mal publiziert, da er mit seinem kleinen Seilbahnprojekt ja auch Kontakte zu ft geknüpft hatte.

Fragen kostet ja nicht. Entweder bleibt ft bei der ablehnenden Haltung oder eben nicht. Das sieht man dann ja.
Das Sie es nicht verhindern können sehen Sie allerdings auch. Also entweder Blockade oder supporten. Letzteres könnte deren Marketing ja noch nutzen wie gut ft doch die Community unterstützt. Ich fürchte zwar eher das solches Marketing nicht gewünscht ist, aber wer nicht fragt hat schon gleich ein Nein.
Und wenn ft bei bestimmten Dingen die Lizenz hat, dann können Sie diese sehr wahrscheinlich auch weiter geben für genau beschriebene Dinge.

Björn
https://gundermann-software.de/shop/
Der Shop für viele Community Projekte

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von richard.kunze » 22 Mär 2022, 12:43

MasterOfGizmo hat geschrieben:
22 Mär 2022, 09:24
Ich habe mal versucht, das TXTControl ("der proprietäre Firmware-Teil des alten TXT") auf dem R-Pi und auch in QEMU zum Laufen zu bekommen. Beides hat nicht soweit geklappt, dass RoboPro damit kommunizieren wollte.
Auf dem Original-TXT in der Community-Firmware gehts (bzw. ging es als ich die aktiv entwickelt hab), von daher wäre es eventuell den Versuch wert. Ob es wirklich klappt weiß ich natürlich nicht.
MasterOfGizmo hat geschrieben:
22 Mär 2022, 09:24
Aber dazu fehlt meines Erachtens eine Menge Know-How u.a. darüber, was RoboPro da genau auf den TXT hinunterlädt. Sind das echte Arm-Binaries? Wenn ja was für welche? Oder irgendein Zwischencode?
Normale Binaries in irgendeinem gebräuchlichen Format (z.B ELF) sind es auf jeden Fall nicht. Und was auch immer es ist, ist ziemlich sensibel gegen Änderungen an der Umgebung (Ein RoboPro-Binary, das in der CFW auf den TXT gespeichert wurde lief nicht mehr, wenn man den TXT in die Standard-Firmware bootet und dasselbe Binary mit demselben TXTControl laufen lassen wollte und umgekehrt - man muss das für beide Environments getrennt übertragen). Aus dem Bauch raus würde ich raten, dass das ARM-Maschinencode (oder irgendein Zwischencode) ist, der irgendwie dynamisch in den gerade laufenden TXTControl-Prozess gelinkt wird, und TXTControl gibt RoboPro vorab die zum Übersetzen nötigen Adressen. Ziemlich sicher nichts, was man ohne TXTControl zum laufen bekommen wird (ich will das ganz ehrlich nicht mal probieren - Reverse Engineering auf dem Level ist eklig). Deshalb meine Idee, die alte TXT-Umgebung soweit zu simulieren dass TXTControl laufen mag.
Torsten hat geschrieben:
22 Mär 2022, 11:35
Allerdings befürchte ich, dass wir in ein Lizenzproblem hineinlaufen, wenn wir das TXTControl-Binary auf einen anderen Rechner kopieren (z.B. einen TXT 4.0) und es dort laufen lassen.
Das TXTControl-Binary selbst zu verteilen würde mir auch im Traum nicht einfallen (das wäre eine klare Copyrightverletzung). Aber jeder, der RoboPro hat, hat automatisch auch das dazu passende TXTControl - das ist nämlich im mit RoboPRO ausgelieferten Firmware-Update für den TXT drin...

Wenn es nur darum geht, RoboPRO-Programme auf den TXT zu portieren dürfte es wesentlich simpler sein, den RoboPRO-"Sourcecode" des Programms (das ist im wesentlichen das Diagramm in XML) in irgendwas (RoboPRO Code?) zu übersetzen was der TXT 4.0 versteht. Aber das ist halt was anderes als den TXT 4.0 mit RoboPRO zu benutzen...

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von MasterOfGizmo » 22 Mär 2022, 15:38

richard.kunze hat geschrieben:
22 Mär 2022, 12:43
Deshalb meine Idee, die alte TXT-Umgebung soweit zu simulieren dass TXTControl laufen mag.
Das hatte ich damals erfolglos versucht. Ich habe leere Bibliotheken gebaut, die das TXTControl dann reinholen sollte, damit es zumindest mal glücklich ist.
Torsten hat geschrieben:
22 Mär 2022, 11:35
Allerdings befürchte ich, dass wir in ein Lizenzproblem hineinlaufen, wenn wir das TXTControl-Binary auf einen anderen Rechner kopieren (z.B. einen TXT 4.0) und es dort laufen lassen.
Damals war eine modfizierte libsdlwidget Teil von TXTControl. Damit stand und steht fischertechnik eh in einer Lizenzverletzung. Auch wenn da keiner vor hat Stress zu machen. Sorgen, dass ihr von ft auf die Mütze bekommt, müsstet ihr m.E. nicht haben. Wenn sie damit tatsächlich vor Gericht ziehen wollen, dann würden sie sich wohl eher selbst eine blutige Nase holen. Aber da das wie Richard schon schrieb ja Teil von RoboPro ist und der Anwender RoboPro ja eh nutzen will zieht sich das bei jedem User ein Script einfach raus. Oder ihr ladet es von Github nach:
https://github.com/fischertechnik/FT-TX ... t/knobloch
richard.kunze hat geschrieben:
22 Mär 2022, 12:43
Wenn es nur darum geht, RoboPRO-Programme auf den TXT zu portieren dürfte es wesentlich simpler sein, den RoboPRO-"Sourcecode" des Programms (das ist im wesentlichen das Diagramm in XML) in irgendwas (RoboPRO Code?) zu übersetzen was der TXT 4.0 versteht. Aber das ist halt was anderes als den TXT 4.0 mit RoboPRO zu benutzen...
Ein kleiner Interpreter könnte das XML auch direkt ausführen. Aber es gibt m.E. keinen intuitven Weg, den Sourcecode statt des Binaries beim Download auf den TXT zu laden. Also bleiben nur irgendwelche manuellen Wege und damit macht der Offline-Modus dann am Ende auch keinen rechten Spass mehr.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von richard.kunze » 22 Mär 2022, 20:35

MasterOfGizmo hat geschrieben:
22 Mär 2022, 15:38
richard.kunze hat geschrieben: ↑22 Mär 2022, 12:43
Deshalb meine Idee, die alte TXT-Umgebung soweit zu simulieren dass TXTControl laufen mag.
Das hatte ich damals erfolglos versucht. Ich habe leere Bibliotheken gebaut, die das TXTControl dann reinholen sollte, damit es zumindest mal glücklich ist.
Blöde Frage: Wieso hast Du nicht einfach die Bibliotheken genommen die TXTControl auch in seiner eigentlichen Umgebung haben will? So hab ich das in der CFW gemacht, einfach ein chroot ("Container für Arme") mit dem originalen Userland, und die Teile die ich anders haben wollte (bei der CFW wars das Display, TXTControl im "Hintergrund-Modus" sollte keins haben, deshalb hats einen Fake-Framebuffer untergeschoben bekommen) dann passend da reingepfriemelt. Geht mit "echten" Containern inzwischen auch noch besser.

War auf dem TXT natürlich besonders simpel, weil da das originale Userland schon fix und fertig installiert war.
Aber so rein theoretisch sehe ich keinen Grund, warum das auf dem TXT 4.0 (oder sogar dem Raspi) nicht auch funktionieren sollte - zumindestens dann, wenn man die serielle Schnittstelle zur I/O-Platine passend simuliert bekommt (ohne würde es vielleicht laufen, wäre aber naturgemäß ziemlich nutzlos).

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von MasterOfGizmo » 22 Mär 2022, 21:02

richard.kunze hat geschrieben:
22 Mär 2022, 20:35
Blöde Frage: Wieso hast Du nicht einfach die Bibliotheken genommen die TXTControl auch in seiner eigentlichen Umgebung haben will? So
Weil ich Sachen wie die KeLib nicht haben wollte und weil ich z.B. die Zeichenbefehle an die SDL-Widgets-Lib abfangen und selbst mit Qt malen wollte etc. Einfach nur den TXT-Kram auf dem Pi laufen zu lassen war nicht mein Ziel. Ich wollte nur die RoboPro-Kommunikation und die Code-Ausführung haben und dann alles andere selbst bauen.

Das Copyright für die ganzen Sachen liegt übrigens beim RoboPro-Entwickler. Auch für die TXT-Seite. Der Knobloch hat die KeLib geliefert und der RoboPro-Entwickler hat den ganzen Rest gebaut.

Aber wenn Du irgendwas irgendwie auf dem Pi zum Laufen bekommst ist das natürlich schon die haleb Miete. Das kann man dann ja immernoch schrittweise abspecken und mit Fake-Libs beglücken.

Edit: Ich habe mir gerade meine alten Experimente angeschaut. Die Original-Libs zu verwenden habe ich wohl auch ausprobiert. Ich habe aber keine Ahnung, mehr was da nicht ging ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Torsten » 23 Mär 2022, 12:34

Hallo,
Bjoern hat geschrieben:
21 Mär 2022, 18:30
Unterstützen deine Inputs auch schon Fotosensor, Ultraschallsensor, IR-Spurerkenner...?
die ganzen Sensoren, die an die TXT 4.0 Inputs angeschlossen werden (Ultraschall, Farbsensor, NTC, IR-Spurerkenner, u.a.) funktionieren jetzt auch mit ROBOPro.

Noch ein Hinweis: der ftrobopy_server meldet sich mit der ROBOPro-Version 4.7.0. Wenn jemand eine ältere Version (z.B. 4.2.4) benötigt, ist das aber auch machbar. Ich werde einen Parameter beim Start dafür vorsehen.

Viele Grüße
Torsten

robofreak
Beiträge: 9
Registriert: 17 Dez 2016, 08:37
Wohnort: 69190 Walldorf

Startproblem ftrobopy_server und Scripte werden Online nur einmalig ausgeführt

Beitrag von robofreak » 11 Apr 2022, 14:45

Hallo, zusammemn,

habe seit einigen Wochen den TXT-4.0 und mich mit der unsäglichen FT "Entwicklungsungebung" abgemüht.
Bin nun leider erst gestern auf das tolle Projekt von Torsten gestoßen, der die schon bisher für die "alten" TXT mögliche hervorragende Python-Programmierung über ftrobopy nun auch für die Hauptfunktionen des TXT-4.0 möglich gemacht hat und sogar noch weitere Features plant.
Ich nutze das ftrobopy auf den alten TXT intensiv, mit der Umgebung von SPYDER und mit grafischer Steuerung mittels über PYQT vom PC aus.
Deshalb bin ich umso mehr begeistert, dass das von Torsten nun auch für den TXT 4.0 möglich gemacht wird und möchte mich bei ihm ausdrücklich für seine Leistung und sein Engagement bedanken.

Ich habe mich nun intensiv mit ftrobopy unter Benutzung des neuen Servers auf dem TXT ausendergesetzt und möchte kurz über meine Erfahrungen berichten bzw. über ein mir unerklärliches Problem:

Start-Probleme mit dem Server:
Nach genauer Umsetzung der Anleitung zum Start des Servers auf Github konnte ich den Server auf der Shell des TXT zunächst mal nicht starten, Fehlermeldung: "permission denied"!
Natürlich dachte ich dann, dass man root-Rechte braucht, die man ja auf dem TXTZ-4.0 bis dato nicht hat. Nach einigem Rumprobieren fiel mir dann ein, dass es evtl. an den Dateirechten liegen könnte, und das ist es auch: Man muss den Server erst "ausführbar" machen, und das gleiche gilt auch für die Datei ftrobopy_server.cpp für die Ausführung über den GUI des TXT:
Kommando "chmod +x ftrobopy_server", bzw: ftrobopy_server.cpp dann funzt's sowohl von der Shell als auch über den GUI!!
Vorschlag:
Könnte man vielleicht in die Readme aufnehmen um anderen Usern, die auch nicht solche Linux-Profis sind, viel Rätselraten und Aufwand zu ersparen..

Nachdem der Server dann lief, habe ich dann vom PC aus Spyder heraus ein erstes Programm im Online-Modus gestartet, und siehe da: Verbindung wurde korrekt mit Verbindungs-Meldung V. 4.7.0 hergestellt, Programm mit Motorsteurung lief einwandfrei durch.
Server meldet in Shell:
'socket connection to client established ...'
'got: query status'
'got: start online'

Habe für die Verbindungsherstellung übrigens die gleichen Befehle wie vor 4.0 verwendet, da ich hierzu auch nichts anderes gefunden, oder habe ich da was übersehen???
import ftrobopy--ft = ftrobopy.ftrobopy(host='192.168.8.2', port=65000)

Ich komme nämlich nun zu dem, was ich nicht hingekriegt habe:

Fehler: Programm lässt sich nur einmal starten??
Script läuft einmal problemos durch. Bei einem weiteren Start passiert jedoch einfach nichts mehr!! Bzw. wird ein print-Befehl vor der Verbindungsherstellung noch ausgeführt, nach dem Verb. Befehl passiert nichts mehr, keine Fehlermeldung, Funkstille. Verbindungsmeldung erfolgt nicht!
Hab dann versucht, den Server auf dem TXT neu zu starten, und tatsächlich: Nach Neustart des Servers läuft das Script wieder durch, aber wieder nur einmal!!, usw., usw.
Zur Sicherheit hab ich's statt mit Spyder auch mit einem anderen Editor, und zwar dem Python-Standard IDLE versucht, genau der gleiche Ablauf
Das ist doch wohl nicht gewollt? Hat jemand ähniche Erfahrungen?? Wie kann man es evtl. vermeiden? Beim "alten" ftrobopy war das kein Thema, Verbindung wurde immer neu hergestellt!


Grüße an Alle

Dietmar

;) ;) ;)

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: Startproblem ftrobopy_server und Scripte werden Online nur einmalig ausgeführt

Beitrag von Torsten » 11 Apr 2022, 22:23

Hallo Dietmar,

Du hast natürlich Recht, es sind durchaus noch ein paar Bugs in dem Server drin (ist ja auch noch alpha).
Auf jeden Fall vielen Dank für Deine Rückmeldung!

Das Problem mit dem execute-Flag war mir noch gar nicht aufgefallen, da ich immer direkt auf dem TXT compiliere und dabei das execute-Flag automatisch gesetzt wird. Ich werde das aber ins README einbauen.
robofreak hat geschrieben:
11 Apr 2022, 14:45
Habe für die Verbindungsherstellung übrigens die gleichen Befehle wie vor 4.0 verwendet, da ich hierzu auch nichts anderes gefunden, oder habe ich da was übersehen???
import ftrobopy--ft = ftrobopy.ftrobopy(host='192.168.8.2', port=65000)
Ja, die Befehle zur Verbindungsherstellung sollten gleich aussehen. ftrobopy-Scripte (genau wie ROBOPro-Programme) sollten im Prinzip ohne Änderung sowohl auf dem TXT als auch auf dem TXT 4.0 laufen.
robofreak hat geschrieben:
11 Apr 2022, 14:45
Script läuft einmal problemos durch. Bei einem weiteren Start passiert jedoch einfach nichts mehr!! Bzw. wird ein print-Befehl vor der Verbindungsherstellung noch ausgeführt, nach dem Verb. Befehl passiert nichts mehr, keine Fehlermeldung, Funkstille. Verbindungsmeldung erfolgt nicht!
Ja, das kann ich reproduzieren und das ist tatsächlich ein Bug im Zusammenspiel von ftrobopy mit dem ftrobopy_server. Das Problem tritt zwischen ROBOPro und dem ftrobopy_server nicht auf. Ich muss mir das nochmal genauer anschauen und dann sehen, ob ich das im eher ftrobopy-Code oder im ftrobopy_server-Code lösen sollte. Grundsätzlich ist die Socket-Verbindung in ftrobopy_server noch recht empfindlich gegenüber Störungen, da bin ich aber dran, ich hatte bloss in den letzten Tagen nicht allzuviel Zeit dafür.

Viele Grüße
Torsten

robofreak
Beiträge: 9
Registriert: 17 Dez 2016, 08:37
Wohnort: 69190 Walldorf

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von robofreak » 12 Apr 2022, 08:39

Hallo, Torsten,

vielen Dank für die schnelle Rückmeldung.
Freut mich, dass ich ein ganz klein wenig zur Optimierung des Projekts beittargen und dich bei deiner Arbeit unterstützen konnte.
Ich werde weiter intensiv mit dem Server arbeiten und dich über evtl. festgestellte Fehler unterrrichten.

Gruß,

Dietmar

:) :) :)

robofreak
Beiträge: 9
Registriert: 17 Dez 2016, 08:37
Wohnort: 69190 Walldorf

ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von robofreak » 30 Apr 2022, 14:42

Hallo, Torsten,

habe weiter mit dem ftrobopy-Server auf dem TXT 4.0 experimentiert.
U.a habe ich auch kurz den Server mit RoboPro getestet und kann bestätigen, was du auch geschrieben hast, dass der Server mit RoboPro anscheinend schon gut zusammenarbeitet. Man kann Scripts problemlos wiederholt starten.
Leider möchte ich aber gerade nicht mehr mit RoboPro arbeiten, sondern mit Python.

Damit habe ich auch weiter intensiv getestet. Habe mittels Neustart des Servers nach jeder Scriptänderung hierbei einige der Originalen-RoboPro-Coding-Scripts, die zur Ansteuerung des Omniwheels-Fahrzeugs meines Hightechs-Robotics Baukastens mitgeliefert wurden, in verständliches Python umgesetzt und muss sagen, außer dem bekannten Problem lief soweit alles ganz gut.
Als ich innerhalb eines Programmlaufes über Input-Eingabe von Ziffern verschiedene Subroutinen mehrfach gestartet habe, hängte sich das System allerdings nach mehrfachen Durchläufen gelegentlich einfach auf, keine Fehlermeldung, es war einfach keine weitere Zahleneingabe und somit keien weiterer Start der Subroutinen mehr möglich. Sicher auch ein Stabilitätsproblem.

Da ich den Server bekanntlich vor jedem neuen Programmlauf neu starten musste, ist mir noch folgendes aufgefallen: Der Server stürzt sporadisch bei wiederholten Starts, nie beim ersten Start, aber ab dem 2. Start, oder danach, unter Ausgabe einer Fehlermeldung ab und lässt sich nicht mehr auf dem TXT-4.0 starten. Ein Start ist erst nach einem Neustart des gesamten TXT 4.0 wieder möglich. Hab die Fehlermeldung beigefügt.

Abschließend möchte ich noch, bezugnehmend auf deine Anregung, einen Verbesserungs/Erweiterungsvorschlag hinsichtlich des Funktionsumfanges von FTROBOPY machen.
Die von dir bereits vorgeschlagenen Funtionserweiterungen finde ich sehr nützlich und wünschenswert, insbesondere was die Verknüpfungs- Möglichkeiten der TXT‘s angeht, natürlich die Servo-Ausgänge und die Steuerung über die Bluetooth-Fernbedienung, usw. .

Zusätzlich hat sich bei mir bei der Steuerung des Omniwheels-Fahrzeugs noch folgendes ergeben:
Da das Fahrzeug für jedes der 4 Antriebsräder einen Encoder-Motor hat, ergibt sich natürlich die Erfordernis, dass man z.B. alle 4 Motoren/Räder synchronisieren möchte, u.a. auch ohne dass gleichzeitig ein Distanz-Befehl aktiv ist.
Bei Robopro-Coding ist diese Möglichkeit implementiert. Der Sync-Befehl ist vom SetDistance-Befehl unabhängig und kann auf alle 4 Motoren angewendet werden. Z.B. "motor1.StartSync(motor2, motor3, motor4)"
Soweit ich es sehe, ist es derzeit in ftrobopy nur möglich 2 Motoren zu synchronisieren, indem man schreibt motor1.SetDistance(xy, syncto= motor2)
Nun könnten man das natürlich irgendwie „verschachteln“, z.B. m1 mit m2, m2 mit m3, m3 mit m4 synchronisieren., usw, aber das wäre sicher keine elegante Lösung und ich weiß auch nicht, ob das erwartungsgemäß funktionieren würde. Das Synchronisieren aller 4 Motoren mit einem Befehl wäre, wenn machbar, sicher die bessere Lösung.

Gruß,

Dietmar
Fehlermeldung_Server-Absturz.png
Fehlermeldung_Server-Absturz.png (105.59 KiB) 4124 mal betrachtet

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von MasterOfGizmo » 30 Apr 2022, 18:56

Das ist ja keine sehr aussagekräftige Fehlermeldung. Da bin ich ja sicher, dass Python intern mehr dazu zu sagen hätte. Ggf. kann Torsten da etwas mehr von ausgeben.

Aber wenn ich raten müsste, dann lautet die vollständige Fehlermeldung "bind failed, address already in use". Du könntest nach dieser Fehlermeldung Mal ein paar Minuten warten ohne zu rebooten. Mein Verdacht wäre, dass es nach einiger Zeit dann wieder klappt ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Torsten
Beiträge: 308
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ftrobopy und ROBOPro auf dem TXT 4.0

Beitrag von Torsten » 30 Apr 2022, 20:23

Ja, das ist korrekt, was MoG sagt.
Das Problem ist ein noch geöffneter Socket. Nach ca. 2 Minuten wird der vom Linux automatisch geschlossen und man kann den Server wieder starten (den Socketparamer SO_REUSEADDR habe ich leider bisher auf dem TXT 4.0 noch nicht ans Laufen bekommen).

Die nächste ftrobopy_server Version liegt schon in den Startlöchern für den "push" auf github. Die ist deutlich stabiler und der Server kann auch jetzt immer durchlaufen.

Gruß
Torsten

Antworten