Scratch für Robo TXT

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Scratch für Robo TXT

Beitrag von richard.kunze » 30 Jan 2016, 03:45

Hallo zusammen,

ich bastle seit einiger Zeit für meinen ältesten Sohn an einer Browser-basierten IDE für den Robo TXT auf Basis von Snap! (einer Scratch-Variante), und habe jetzt eine erste halbwegs vorzeigbare Version fertig. Ihr findet Sie auf Github unter https://github.com/rkunze/ft-robo-snap.

Systemvoraussetzungen sind Python, ein moderner Browser, und natürlich ein Robo TXT.

Zur Installation entweder das Repository von Github clonen oder den aktuellen Stand von https://github.com/rkunze/ft-robo-snap/ ... master.zip herunterladen und auspacken. Dann das Python-Backend mit

Code: Alles auswählen

python ./ft-robo-snap.py 192.168.7.2
starten (die IP-Adresse gegebenenfalls anpassen, wenn euer TXT nicht per USB angeschlossen ist) und schließlich http://localhost:65003/ im Browser aufrufen.

Aktuell habe ich nur ein paar grundlegende Funktionen implementiert: Ausgänge/Motoren schalten, digitale Eingänge und Zählerstände abfragen. ein simples Demo-Projekt findet ihr in der IDE unter "Examples/Robo TXT Demo".

Außerdem habe ich das Python-Backend bisher nur auf dem PC laufen gehabt und den TXT über USB angesteuert. Der eigentliche Plan ist aber, das Backend direkt auf dem TXT zu installieren (auf einer Micro-SD-Karte - für den interen Speicher dürfte das Ganze wohl ein wenig zu fett sein) und beim Einschalten automatisch zu starten. Das werde ich in den nächsten Tagen mal angehen.

Danach wird der TXT dann wohl endlich mal seiner eigentlichen Bestimmung nachgehen und einen Roboter steuern (natürlich mit Snap!). Weitere IDE-Funktionen (Abfrage der Infrarot-Eingänge, analoge Eingänge, Kamera, Positionsbestimmung über WLAN-Scan, ...) kommen dann nach Bedarf dazu - Anregungen (oder fertige Patches/Pull-Requests :-) sind natürlich immer herzlich willkommen.

Viel Spaß beim Ausprobieren,

Richard

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: Scratch für Robo TXT

Beitrag von Markus Burkhardt » 09 Feb 2016, 14:36

Hallo Richard,

ich wollte gerade deine Implementierung testen und habe dabei festgestellt, dass du noch Python 2.x verwendest. Gibt es hierfür einen speziellen Grund?

Viele Grüße
Markus

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

Re: Scratch für Robo TXT

Beitrag von richard.kunze » 10 Feb 2016, 07:54

Hallo Markus,

Das Backend soll letztendlich auf dem TXT selbst laufen, und Python 2.7 für den TXT gibt es schon fix und fertig übersetzt (unter http://ftcommunity.de/data/downloads/so ... _fttxt.zip). Ein Python 3 für den TXT hätte ich mir erst selber bauen müssen. Außerdem benutze ich ftrobopy (https://github.com/ftrobopy/ftrobopy.git) um mit dem Controller zu reden, und das hätte ich ebenfalls erst auf Python 3 umstellen müssen.

Viele Grüße,

Richard

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: Scratch für Robo TXT

Beitrag von Markus Burkhardt » 10 Feb 2016, 10:52

Hallo Richard,

danke für die schnelle und ausführliche Antwort. Sowas in der Art hatte ich mir auch schon gedacht.

Ich habe es gestern noch ein bisschen mehr getestet und ich habe es auch zum Laufen gebracht. Jedoch habe ich beim Versuch, einen Motor drehen zu lassen, den Fehler "FT Robo Error\\Output is not enabled" erhalten. Habe ich irgendetwas übersehen?

Viele Grüße
Markus

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

Re: Scratch für Robo TXT

Beitrag von richard.kunze » 10 Feb 2016, 11:42

Hallo Markus,
Markus Burkhardt hat geschrieben:Jedoch habe ich beim Versuch, einen Motor drehen zu lassen, den Fehler "FT Robo Error\\Output is not enabled" erhalten. Habe ich irgendetwas übersehen?
Hast Du den Ausgang als Motor konfiguriert? Das geht mit dem Block "aktiviere" (falls die Sprache in der IDE deutsch ist) bzw. "enable output" (IDE auf Englisch eingestellt) in der Kategorie "Variablen". Außerdem musst Du den Controller noch in den Online-Modus schalten bevor Du Steuerbefehle schicken kannst (Block "wechsle in Modus ..."/"set mode to ...", ebenfalls unter "Variables").

Generell sind die TXT-spezifischen Blöcke auf drei Kategorien verteilt: "Bewegung" für Blöcke die Outputs verändern (Motor starten, Ausgang anschalten, ...), "Fühlen" für die Abfrage von Controller-Zuständen (Eingänge, Zählerstände, Motor läuft/ist gestoppt...) und "Variablen" für Zeug, das nicht wirklich in die anderen Kategorien passt (hauptsächlich Konfiguration). Die Aufteilung ist eine Snap!-Eigenart, da landet alles unter "Variablen", was eigentlich in die (nicht vorhandene) Kategorie "Sonstiges" gehört (wie z.B. die ganzen Funktionen zum Umgang mit Listen).

Eine Übersicht über alle TXT-spezifischen Blöcke bekommst Du, indem Du in die Palette mit den Blöcken klickst (am linken Rand des Fensters), da mit "CTRL-F" die Blocksuche öffnest und dann nach "$ft" suchst. Optisch sind die TXT-spezifischen Blöcke über das rot-blaue "ft" am linken Blockrand erkennbar.

Viele Grüße,

Richard

PS: Ein Beispiel für eine simple Motorsteuerung findest Du in der mitgelieferten "FT Robo TXT Demo" unter "Projekt öffnen"/"Examples".

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

Re: Scratch für Robo TXT

Beitrag von Torsten » 10 Feb 2016, 12:15

Hallo Richard,
richard.kunze hat geschrieben: Das Backend soll letztendlich auf dem TXT selbst laufen, und Python 2.7 für den TXT gibt es schon fix und fertig übersetzt (unter http://ftcommunity.de/data/downloads/so ... _fttxt.zip). Ein Python 3 für den TXT hätte ich mir erst selber bauen müssen. Außerdem benutze ich ftrobopy (https://github.com/ftrobopy/ftrobopy.git) um mit dem Controller zu reden, und das hätte ich ebenfalls erst auf Python 3 umstellen müssen.
Richard
ich habe vor einigen Tagen die Version 0.6 von ftrobopy im Download der ftcommunity zur Verfügung gestellt (https://www.ftcommunity.de/data/downloa ... y_v0_6.zip). Diese Version unterstützt sowohl Python 2.7 als auch Python 3.x. Da Python 3.5 jedoch selbst in einer Minimalinstallation (ca. 22 MB) deutlich mehr Speicherplatz benötigt als Python 2.7 (ca. 2MB) und eine Standard-Installation von Python 3.5 auf dem TXT sogar mehr als 150 MB Speicherplatz gross ist, habe ich das Python 3.5 Paket für den TXT bisher nicht online gestellt.
Ich selbst setze Python 3.5 zusammen mit "iPython-Notebook" (Browseroberfläche für Python) schon seit einiger Zeit auf dem TXT ein (auf einer 8 GB SD-Karte). Damit kann der TXT mit jedem beliebigen Web-Browser und Betriebssystem angesteuert und programmiert werden. Die "iPython-Notebook"-Software startet mein TXT beim Hochfahren automatisch.

Viele Grüße
Torsten

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: Scratch für Robo TXT

Beitrag von Markus Burkhardt » 10 Feb 2016, 13:39

Hallo Richard,

komischerweise habe unter Variablen keine Blöcke (in Bewegung und Fühlen habe ich jedoch die entsprechenden ft-Blöcke). Auch die Suche liefert keinerlei ft-Blöcke. Wenn ich versuche, das Beispiel zu öffnen, bekomme ich die Fehlermeldung: "Load failed: TypeError: input is undefined".

Viele Grüße
Markus

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

Re: Scratch für Robo TXT

Beitrag von richard.kunze » 10 Feb 2016, 13:59

Hallo Markus,
Markus Burkhardt hat geschrieben:komischerweise habe unter Variablen keine Blöcke (in Bewegung und Fühlen habe ich jedoch die entsprechenden ft-Blöcke).


Seltsam. Eigentlich sollte es da fünf ft-Blöcke geben. Bei mir sind sie auch da, direkt unter "Make a block".
Markus Burkhardt hat geschrieben: Auch die Suche liefert keinerlei ft-Blöcke.
Wenn ich versuche, das Beispiel zu öffnen, bekomme ich die Fehlermeldung: "Load failed: TypeError: input is undefined".
Das konnte ich eben hier auch nachstellen, das scheint zu passieren wenn in den lokalen Einstellungen keine Sprache gesetzt ist.

Workaround: Stell die Sprache mal auf Deutsch um - danach hat bei mir sowohl die Blocksuche als auch das Laden des Beispielprojekts funktioniert.

Ich schau mal was das Problem ohne Spracheinstellungen ist und repariere das.

Markus Burkhardt
Beiträge: 171
Registriert: 12 Jan 2016, 09:13

Re: Scratch für Robo TXT

Beitrag von Markus Burkhardt » 10 Feb 2016, 15:49

Hallo Richard,

vielen Dank für deine Hilfestellung. Sobald ich die Spracheinstellungen auf deutsch geändert hatte, sind die Variablen aufgetaucht und auch das Beispiel konnte geladen werden. Jetzt funktioniert alles prima. :D

Ich kann dir nur ein Lob aussprechen. Das sieht echt schon sehr gut aus. Ich tobe mich mal ein bisschen aus.

Viele Grüße
Markus

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

Re: Scratch für Robo TXT

Beitrag von richard.kunze » 10 Feb 2016, 17:10

Hallo Markus,

die neueste Version auf Github läuft jetzt auch ohne den Workaround mit der Spracheinstellung.

Danke fürs Testen,

Richard

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

Re: Scratch für Robo TXT

Beitrag von richard.kunze » 10 Feb 2016, 17:38

Hallo Torsten,
Torsten hat geschrieben:ich habe vor einigen Tagen die Version 0.6 von ftrobopy im Download der ftcommunity zur Verfügung gestellt (https://www.ftcommunity.de/data/downloa ... y_v0_6.zip). Diese Version unterstützt sowohl Python 2.7 als auch Python 3.x.
Ich habe die neueste Version von Github als Basis genommen - das ist definitiv älter.

Kannst Du die aktuelle Version auch nochmal auf Github (oder irgendein anderes öffentlich zugängliches Git-Repository) stellen? Das würde es mir leichter machen, die neueste Version auf in ft-robo-snap einzubinden. Außerdem hab ich noch ein paar Änderungen an ftrobopy gemacht - zum Teil Bugfixes, zum Teil neue Funktionen, die ich für den Webservice brauche (z.B. ein optiononaler Callback, der aufgerufen wird wenn der Controller neue Daten hat). Mit einem Git-Repository als Basis kann ich die Dir auch als sauberes, kommentiertes Patchset (oder als Pull-Request auf Github) zurückspielen :-)

Viele Grüße,

Richard

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

Re: Scratch für Robo TXT

Beitrag von Torsten » 12 Feb 2016, 18:48

Hallo Richard,
richard.kunze hat geschrieben:Kannst Du die aktuelle Version auch nochmal auf Github (oder irgendein anderes öffentlich zugängliches Git-Repository) stellen? Das würde es mir leichter machen, die neueste Version auf in ft-robo-snap einzubinden. Außerdem hab ich noch ein paar Änderungen an ftrobopy gemacht - zum Teil Bugfixes, zum Teil neue Funktionen, die ich für den Webservice brauche (z.B. ein optiononaler Callback, der aufgerufen wird wenn der Controller neue Daten hat). Mit einem Git-Repository als Basis kann ich die Dir auch als sauberes, kommentiertes Patchset (oder als Pull-Request auf Github) zurückspielen :-)
Ich habe heute das ftrobopy Git-Repository unter https://github.com/ftrobopy mal ein bisschen gepflegt und alles auf den neuesten Stand gebracht. ftrobopy verwendet ab Version 0.6 Threads zur Kommunikation mit dem TXT. Ich hoffe, es gibt keine allzu größeren Probleme, bei der Einbindung in Scratch/Snap. Ich bin leider bisher nicht dazu gekommen mir Dein Scratch für den TXT anzuschauen (hole ich aber bestimmt bald nach). Für Anregungen und Verbesserungsvorschläge bin ich natürlich immer offen und für Bugfixes dankbar.

Viele Grüße
Torsten

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

Re: Scratch für Robo TXT

Beitrag von richard.kunze » 13 Feb 2016, 00:18

Hallo Torsten,

so, ich hab meine Änderungen jetzt mal halbwegs sauber auf Basis der neuesten Version von ftrobopy zusammengestellt und Dir auf Github als Pull-Request geschickt (https://github.com/ftrobopy/ftrobopy/pull/1). Schau mal drüber was Du davon brauchen kannst.

Die weitere Diskussion dazu machen wir denke ich am besten dann auf Github.

Viele Grüße,

Richard

Antworten