Seite 1 von 2

TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 30 Jun 2015, 00:03
von Torsten
Hallo,

ich habe mit Hilfe der kürzlich von Fischertechnik erschienenen Dokumentation
(TXT-C-Programming-Expert-Kit) ein kleines (noch rudimentäres) Python-Modul
geschrieben, mit dem man den TXT im Online-Betrieb von jedem Rechner aus
ansteuern kann, auf dem Python unterstützt wird. Dazu gehört z.B. Mac OS X,
Linux, der Raspberry Pi mit Raspbian OS und viele weitere Systeme.
Unter Windows sollte es mit einer entsprechenden Python-Version auch funktionieren,
dort habe ich es allerdings nicht getestet.
Die Kameraunterstützung habe ich bisher noch nicht eingebaut, kommt aber noch.

Mit Hilfe der von Fischertechnik bereitgestellten toolchain lässt sich ausserdem ein
Python-Interpreter für den TXT erzeugen, mit dem Python Programme dann auch direkt
auf dem TXT ausgeführt werden können. Damit funktioniert dann auch der Download-Betrieb.
Da der Python-Interpreter recht gross ist (ca. 21 MB) habe ich ihn auf eine 8 GB micro SD-Karte
kopiert, die wunderbar im TXT läuft (formatiert mit ext2) und sich auch automatisch mounten läßt.

Hier ist ein kleines Python Beispielprogramm, das die Verwendung des Moduls demonstriert:

import ftrobopy

txt=ftrobopy.ftrobopy('192.168.7.2', 65000) # USB-Kabel
# txt=ftrobopy.ftrobopy('127.0.0.1', 65000) # lokal im Online-Betrieb mit Python auf dem TXT

Motor1 = txt.motor(1)
Motor1.setSpeed(512)
Motor1.setDistance(100)

Taster1 = txt.input(1)

while not Motor1.finished():
txt.update()
if Taster1.state() == 1: # z.B. zur Kollisionserkennung
Motor1.stop()

Bei Interesse kann ich das Modul zum Download zur Verfügung stellen (die Dokumentation
ist allerdings zur Zeit noch recht dürftig). Ich habe es mit der Version 4.1.6 und 4.1.8 erfolgreich
getestet. Gibt es hier im Fischertechnik-Forum einen Upload-Bereich in den ich das Modul
hochladen könnte ? (Ich habe keinen gefunden)

Viele Grüße
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 30 Jun 2015, 07:17
von H.A.R.R.Y.
Hallo Torsten,

hier im Forum gibt es keinen Uploadbereich, dafür müßtest Du dann bitte mal auf der Hauptseite http://www.ftcommunity.de/ in den Downloadbereich gehen.

Mein Vorschlag dazu: Bitte ergänze die Dokumentation noch und dann stelle Deine Datei über die oben angegebene Ecke der ft-community zur Verfügung. Möglicherweise ist es sinnvoll hier eine neue Unterkategorie "Python" anzulegen?

Für den community-Bereich mußt Du Dich extra registrieren, es darf aber gerne das gleiche Login wie hier im Forum verwendet werden; das macht die Sache auch einfacher für eine Kontaktaufnahme.

Grüße
H.A.R.R.Y.

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 30 Jun 2015, 11:48
von schnaggels
Hi Torsten,

super Sache, das würde ich mir auch gern näher ansehen.
Eilt aber nicht, die Zeit für Hobbies wird leider immer weniger...

Danke,
Thomas

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 30 Jun 2015, 16:27
von hvn
Hi Torsten,

I'm looking forward to seeing your uploads, as I'm using both Python and C++. For the RoboInterface I'm using the Python API from defiant which is for online use only. Your effort is a welcome addition, so thank you.

hvn

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 03 Jul 2015, 09:22
von dominik
Hi Torsten,

das klingt fantastisch. Ich wäre an der Lib auch sehr interessiert. Gibt es schon einen Download link?

Viele Grüße,
Dominik

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 07 Jul 2015, 23:41
von Torsten
Hallo,

Ich habe das Python Modul mit einer ausführlichen Dokumentation inzwischen im Download-Bereich der ftcommunity hochgeladen. Es kann auf allen Plattformen genutzt werden, auf denen Python und POSIX-Sockets existieren. Dazu gehören z.B. Linux und Mac OS X. Das Modul ist auf jeden Fall noch ausbaufähig. Ich bin offen für Vorschläge.
(Kamera-Unterstützung habe ich zwar auch schon eingebaut, sie funktioniert aber noch nicht richtig. Da muss ich erst noch herausfinden, woran das liegt.)

Ausserdem habe ich auch einen nativen Python2.7 Interpreter für den TXT hochgeladen, mit dem man Python-Programme auch im Downloadmodus auf dem TXT ausführen kann. Ich habe die Binaries mit Hilfe der toolchain von fischertechnik erstellt. Eine kleine Anleitung ist auch dabei. Bei der Installation ist jedoch Vorsicht geboten. Sie sollte nur von erfahrenen Linux Usern durchgeführt werden.

Viele Grüße
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 08 Jul 2015, 11:29
von Grau
Hallo Torsten,
in welchen Bereich hat du die Daten geladen ?
Unter Software habe ich sie nicht gefunden.
Gruß Grau

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 08 Jul 2015, 11:35
von H.A.R.R.Y.
Hallo zusammen,

nach dem Upload muß das noch einer der Admins freischalten. Das kann ein paar Tage dauern.

Grüße
H.A.R.R.Y.

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 12 Jul 2015, 11:51
von Masked
Moin,
sorry, ich habs erst jetzt gesehen. Ist freigeschaltet.
Grüße,
Martin

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 15 Jul 2015, 17:19
von Grau
Hallo Torsten,
erstmal danke für die Implementierung von Python für den TXT.
Ich habe leider Probleme mit den Python Programmen.
Ich habe meine Versuche angehängt.
Woran kann es liegen das der TXT keine Befehle erkennt?
Gruß Grau

TXT Version 4.1.8

Auf Debian:

Test1:
Python 2.7.9 (default, Mar 1 2015, 18:22:53)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ftrobopy
>>> txt = ftrobopy.ftTXT('192.168.7.2', 65000)
>>> name, version = txt.queryStatus()
WARNING: ResponseID 0x0 of queryStatus command does not match

Test2
Python 2.7.9 (default, Mar 1 2015, 18:22:53)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ftrobopy
>>> txt = ftrobopy.ftrobopy('192.168.7.2', 65000)
Connected to TX2013 version 0x4010800
>>> name, version = txt.queryStatus()
WARNING: ResponseID 0x0 of queryStatus command does not match
>>> Motor1=txt.motor(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ftrobopy.py", line 1255, in motor
self.updateConfig()
File "ftrobopy.py", line 353, in updateConfig
res = self._sock.send(buf)
socket.error: [Errno 32] Broken pipe

Auf TXT:

Test 3:
$ LD_LIBRARY_PATH=/opt/knobloch/lib /opt/knobloch/python2.7
Python 2.7.6 (default, Jun 9 2015, 22:28:03)
[GCC 4.9.1 20140505 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ftrobopy
>>> txt = ftrobopy.ftTXT('192.168.7.2', 65000)
>>> name, version = txt.queryStatus()
WARNING: ResponseID 0x0 of queryStatus command does not match

Test 4:
$ LD_LIBRARY_PATH=/opt/knobloch/lib /opt/knobloch/python2.7
Python 2.7.6 (default, Jun 9 2015, 22:28:03)
[GCC 4.9.1 20140505 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ftrobopy
>>> txt = ftrobopy.ftrobopy('192.168.7.2', 65000)
Connected to TX2013 version 0x4010800
>>> name, version = txt.queryStatus()
WARNING: ResponseID 0x0 of queryStatus command does not match

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 16 Jul 2015, 23:42
von Torsten
Hallo Grau,

wie ich sehe, verwendest Du ftrobopy im interaktiven Python-Modus. Dies ist derzeit nicht vorgesehen. Zur Erklärung:

- Nach dem Öffnen eines Sockets zum TXT (z.B. mit txt=ftrobopy.ftrobopy('192.168.7.2', 65000)) erwartet das Programm "TxtControlMain", das automatisch bei jedem Einschalten des TXT auf diesem gestartet wird, ca. alle 2 Sekunden einen Befehl.
- Falls der zeitliche Abstand zwischen 2 Befehlen zu gross wird, schliesst TxtControlMain den Socket automatisch wieder und weitere Befehle werden abgelehnt
- Im interaktiven Python-Modus muss man also recht schnell tippen ;-) !

Deshalb ist ftrobopy derzeit nur im nicht-interaktiven Python-Modus sinnvoll verwendbar, indem du Python den gewünschten Programmnamen als Parameter übergibst: z.B. python deinprogramm.py

Noch eine Bemerkung:

Wenn man in einem Python-Programm warten möchte, verwendet man typischerweise time.sleep(Anzahl_Sekunden). ftrobopy stellt zum Warten die Methode txt.sleep(Anzahl_Sekunden) bereit. Diese Methode wartet auch aber sendet währenddessen in kurzen Zeitabständen einen Dummy-Befehl an den TXT, um das automatische Schliessen des Sockets zu verhindern.

Viele Grüße
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 27 Jul 2015, 15:05
von Grau
Hallo Torsten,
Danke !!
Jetzt geht es super.
Ich hoffe du erweiters dir Lib noch um den Bereich Kamera.
Gruß Grau
:D

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 28 Jul 2015, 18:30
von Torsten
Hallo Grau,

Prima ! :-)

Ich habe "ftrobopy" inzwischen auch auf Thread basierte Kommunikation mit dem TXT umgestellt. Dadurch kann es jetzt auch im interaktiven Python-Modus verwendet werden (d.h. jedes Kommando, das man auf der Python-Konsole eintippt, wird sofort umgesetzt).

Die Kameraunterstützung gestaltet sich etwas schwieriger:
Die in ROBO Pro eingebauten Kamera-Sensorfelder (Farberkenner, Linienerkenner, Ballerkenner, Bewegungserkenner und Aussparung) stehen auch nur in ROBO Pro zur Verfügung und ich sehe derzeit keine Möglichkeit, diese von ausserhalb (sprich Python) anzusprechen. Ich habe deshalb begonnen, eigene Sensorfelder mit äquivalenter Funktionalität zu programmieren. Aus Geschwindigkeitsgründen muss dieses Python-Modul (ich habe es "ftcameracv" genannt) jedoch in C implementiert werden. Das ist an sich kein Problem, allerdings wird die Installation etwas komplizierter, da es für jede Zielplattform (Mac OS X, Ubuntu, Raspbian, ...) eigens kompiliert werden muss.
Die Sensorfelder Farberkenner und Bewegungserkenner funktionieren bereits, als nächstes kümmere ich mich um den Ballerkenner und den Linienerkenner. Mein Ziel ist es, den Fußball-Roboter aus dem TXT Discovery Set komplett in Python implementieren zu können. Da ich im Moment jedoch sehr beschäftigt bin, wird das noch ein bisschen dauern.

Viele Grüße
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 02 Sep 2015, 16:30
von NooN
Hallo Torsten,
Torsten hat geschrieben: Ich habe "ftrobopy" inzwischen auch auf Thread basierte Kommunikation mit dem TXT umgestellt. Dadurch kann es jetzt auch im interaktiven Python-Modus verwendet werden (d.h. jedes Kommando, das man auf der Python-Konsole eintippt, wird sofort umgesetzt).
Ich habe gestern Nacht an deinem Code gehackt um die Camera anzubinden bzw zu Bilder übertragen.
Der Code ist aber noch nicht Thread basiert. Kannst du deinen aktuellen Code ablegen oder z.B. auf github legen?

Das wäre super.

Gruß
NooN

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 14 Sep 2015, 23:31
von Torsten
Hallo NooN,
NooN hat geschrieben: Ich habe gestern Nacht an deinem Code gehackt um die Camera anzubinden bzw zu Bilder übertragen.
Der Code ist aber noch nicht Thread basiert. Kannst du deinen aktuellen Code ablegen oder z.B. auf github legen?
ich habe eine aktuelle Version meines Codes auf github gelegt:
git clone http://github.com/ftrobopy/ftrobopy
(oder als ZIP-Datei https://github.com/ftrobopy/ftrobopy/archive/master.zip )

Die Dokumentation ist noch etwas dürftig, aber ich hoffe, dass ich bald die Zeit finde, ein Tutorial zu schreiben.

Viele Grüße
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 01 Okt 2015, 16:09
von hvn
Hi Torsten,

I have a few questions:
- The ftrobopy that can be downloaded: is this what should be put on the microSD card with Ext2 format ?
- You state that after inserting the card and boot the TXT, the card should be automatically mounted. This doesn't seem to happen since no extra device is loaded after booting the TXT. What could be wrong ?

Thank you for your efforts on Python !

OK, I found where I went wrong. It works fine in Download mode.

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 03 Okt 2015, 10:10
von Torsten
Hi hvn,
hvn hat geschrieben: - The ftrobopy that can be downloaded: is this what should be put on the microSD card with Ext2 format ?
No, it is not necessary to put it on a microSD card. It does work fine by just copying the python2.7 folder and the ftrobopy.py into the home directory (or a subfolder thereof) of the ROBOPro user on your TXT interface (e.g. using "scp r").
hvn hat geschrieben: - You state that after inserting the card and boot the TXT, the card should be automatically mounted. This doesn't seem to happen since no extra device is loaded after booting the TXT. What could be wrong ?
The SD card is by default not mounted automatically at power on of the TXT. You have to add the line:
/dev/mmcblk0p1 /mnt ext2 rw,noatime 0 1
at the end of the file: /etc/fstab on your TXT (you need root permissions for that). Be careful to not screw up this file ! Else it may happen that the TXT doesn't boot up any more and you have to return it to fischertechnik to get a new firmware.

Best,
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 05 Okt 2015, 14:35
von hvn
Hi Torsten,

In your example software you use a sonar (ultrasound). I don't have a sonar for the TXT yet, but searching for one on d-edition and fischerfriendsman only show RoboInterface and TX versions. I assume I should use a TX version sonar ?

Thanks,

hvn

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 05 Okt 2015, 22:27
von Torsten
Hi hvn,
hvn hat geschrieben:
In your example software you use a sonar (ultrasound). I don't have a sonar for the TXT yet, but searching for one on d-edition and fischerfriendsman only show RoboInterface and TX versions. I assume I should use a TX version sonar ?
yes, this is correct. The TX and the TXT both use the TX sonar. There is no special sonar version for the TXT.

Best,
Torsten

Re: TXT mit Python im Online und im Download-Betrieb steuern

Verfasst: 22 Okt 2015, 20:09
von hvn
Hi Torsten,

Can you tell me how to connect the sonar to the TXT ?

hvn