TXT mit Python im Online und im Download-Betrieb steuern

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Torsten
Beiträge: 310
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

TXT mit Python im Online und im Download-Betrieb steuern

Beitrag von Torsten » 30 Jun 2015, 00:03

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

Benutzeravatar
H.A.R.R.Y.
Beiträge: 1083
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

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

Beitrag von H.A.R.R.Y. » 30 Jun 2015, 07:17

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.
[42] SURVIVE - or die trying

Benutzeravatar
schnaggels
Beiträge: 389
Registriert: 31 Okt 2010, 23:14
Wohnort: Kelkheim
Kontaktdaten:

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

Beitrag von schnaggels » 30 Jun 2015, 11:48

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

hvn
Beiträge: 256
Registriert: 20 Feb 2011, 11:15

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

Beitrag von hvn » 30 Jun 2015, 16:27

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

dominik
Beiträge: 1
Registriert: 03 Jul 2015, 09:20

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

Beitrag von dominik » 03 Jul 2015, 09:22

Hi Torsten,

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

Viele Grüße,
Dominik

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

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

Beitrag von Torsten » 07 Jul 2015, 23:41

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

Grau
Beiträge: 115
Registriert: 03 Jan 2015, 17:21

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

Beitrag von Grau » 08 Jul 2015, 11:29

Hallo Torsten,
in welchen Bereich hat du die Daten geladen ?
Unter Software habe ich sie nicht gefunden.
Gruß Grau

Benutzeravatar
H.A.R.R.Y.
Beiträge: 1083
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

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

Beitrag von H.A.R.R.Y. » 08 Jul 2015, 11:35

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.
[42] SURVIVE - or die trying

Masked
Beiträge: 500
Registriert: 18 Okt 2010, 18:19

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

Beitrag von Masked » 12 Jul 2015, 11:51

Moin,
sorry, ich habs erst jetzt gesehen. Ist freigeschaltet.
Grüße,
Martin

Grau
Beiträge: 115
Registriert: 03 Jan 2015, 17:21

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

Beitrag von Grau » 15 Jul 2015, 17:19

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

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

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

Beitrag von Torsten » 16 Jul 2015, 23:42

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

Grau
Beiträge: 115
Registriert: 03 Jan 2015, 17:21

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

Beitrag von Grau » 27 Jul 2015, 15:05

Hallo Torsten,
Danke !!
Jetzt geht es super.
Ich hoffe du erweiters dir Lib noch um den Bereich Kamera.
Gruß Grau
:D

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

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

Beitrag von Torsten » 28 Jul 2015, 18:30

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

NooN
Beiträge: 8
Registriert: 22 Aug 2015, 10:41
Wohnort: Rhein-Neckar Region

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

Beitrag von NooN » 02 Sep 2015, 16:30

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

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

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

Beitrag von Torsten » 14 Sep 2015, 23:31

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

hvn
Beiträge: 256
Registriert: 20 Feb 2011, 11:15

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

Beitrag von hvn » 01 Okt 2015, 16:09

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.

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

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

Beitrag von Torsten » 03 Okt 2015, 10:10

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

hvn
Beiträge: 256
Registriert: 20 Feb 2011, 11:15

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

Beitrag von hvn » 05 Okt 2015, 14:35

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

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

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

Beitrag von Torsten » 05 Okt 2015, 22:27

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

hvn
Beiträge: 256
Registriert: 20 Feb 2011, 11:15

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

Beitrag von hvn » 22 Okt 2015, 20:09

Hi Torsten,

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

hvn

Antworten