In diesem Artikel wird davon ausgegangen, dass Sie ev3dev auf Ihrem EV3 installiert haben und über eine SSH-Verbindung verfügen. Wenn Sie die Umgebung nicht erstellt haben, lesen Sie bitte diesen Artikel.
mindstorm-Lass uns EV3 unter Linux steuern! Ev3dev OS und SSH-Verbindung installieren
RPyC (Remote Python Call) ist ein Protokoll zum Remote-Aufruf von Python. Mit RPyC können Sie Python, das auf EV3 installiert ist, einfach über ein Python-Programm auf Ihrem Desktop-PC (Client-Seite) aufrufen und verwenden. Bisher war es erforderlich, eine Verbindung zu SSH herzustellen und Python-Programme remote zu bearbeiten und auszuführen. Mit RPyC können Sie jedoch auf dem Client frei entwickeln, indem Sie einfach einen RPyC-Server auf EV3 einrichten. Es ist.
Installieren Sie zunächst die RPyC-Bibliothek von Python auf der Remote-Seite (EV3) und der Client-Seite (Desktop-PC usw.).
robot@ev3dev:~$ sudo easy_install rpyc
Searching for rpyc
Reading https://pypi.python.org/simple/rpyc/
Best match: rpyc 3.3.0
Downloading https://pypi.python.org/packages/c5/b0/5425118bf8f209ebc863425acb37f49f71c7577dffbfaeaf0d80722e57c5/rpyc-3.3.0.zip#md5=f60bb91b46851be45363cd72e078e6ba
Processing rpyc-3.3.0.zip
Writing /tmp/easy_install-MDBKzw/rpyc-3.3.0/setup.cfg
Running rpyc-3.3.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-MDBKzw/rpyc-3.3.0/egg-dist-tmp-_uJbLx
Adding rpyc 3.3.0 to easy-install.pth file
Installing rpyc_registry.py script to /usr/local/bin
Installing rpyc_classic.py script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/rpyc-3.3.0-py2.7.egg
Processing dependencies for rpyc
Searching for plumbum
Reading https://pypi.python.org/simple/plumbum/
Best match: plumbum 1.6.3
Downloading https://pypi.python.org/packages/50/15/f26f60e1bb82aabed7ff86f3fd2976784047f9a291c63ac9019086a69559/plumbum-1.6.3.tar.gz#md5=e0c588ba9271711fae3beb8c0511e8a9
Processing plumbum-1.6.3.tar.gz
Writing /tmp/easy_install-hcpumS/plumbum-1.6.3/setup.cfg
Running plumbum-1.6.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-hcpumS/plumbum-1.6.3/egg-dist-tmp-GirT6d
zip_safe flag not set; analyzing archive contents...
plumbum.__init__: module references __file__
plumbum.__init__: module references __path__
Adding plumbum 1.6.3 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/plumbum-1.6.3-py2.7.egg
Finished processing dependencies for rpyc
Erstellen Sie zunächst die folgende Shell-Skriptdatei
rpyc_server.sh
#!/bin/bash
python `which rpyc_classic.py`
Ausführungsberechtigung erteilen
robot@ev3dev:~$ chmod +x rpyc_server.sh
Serverstart
robot@ev3dev:~$ ./rpyc_server.sh
INFO:SLAVE/18812:server started on [0.0.0.0]:18812
Der Rest kann auf Kundenseite frei entwickelt werden.
Als Beispiel erstellen wir ein Programm, in dem sich der Motor dreht, während Sie den Berührungssensor drücken. Schließen Sie den Motor an Port A und den Berührungssensor an Port 1 an.
Erstellen Sie das folgende Programm auf der Clientseite.
rpyc_client.py
import rpyc
conn = rpyc.classic.connect('ev3dev') #Geben Sie den EV3-Hostnamen oder die IP-Adresse an
ev3 = conn.modules['ev3dev.ev3'] #Remote ev3dev.Ev3 importieren
m = ev3.LargeMotor('outA')
ts = ev3.TouchSensor('in1')
m.run_forever(speed_sp=300)
#Drehen Sie den Motor, während der Berührungssensor gedrückt wird
while True:
if ts.value() == 0:
m.stop(stop_action="hold")
else:
m.run_forever(speed_sp=300)
Durch die Verwendung der rpyc-Bibliothek auf diese Weise ist es möglich, das Modul auf der Remote-Seite von der Client-Seite aus zu betreiben.
Lass es uns laufen.
client@user:~$ python rpyc_client.py
Ein solches Protokoll wird auf der Remote-Seite angezeigt.
robot@ev3dev:~$ ./rpyc_server.sh
INFO:SLAVE/18812:server started on [0.0.0.0]:18812
INFO:SLAVE/18812:accepted 192.168.2.209:56985
INFO:SLAVE/18812:welcome [192.168.2.209]:56985
192.168.2.209 ist die IP-Adresse auf der Clientseite. Sie können sehen, dass die Verbindung korrekt ist.
Als ich den Berührungssensor drückte, drehte sich auch der Motor.
Ich hatte den Eindruck, dass das RPyC-Protokoll ziemlich leicht ist und wenig Kommunikationsverzögerung aufweist. Es ist ziemlich einfach, ein Programm lokal zu entwickeln.
offizielles python-ev3dev-Dokument
Recommended Posts