Cet article suppose que ev3dev est installé sur votre EV3 et que vous disposez d'une connexion SSH. Si vous n'avez pas créé l'environnement, reportez-vous à cet article.
RPyC (Remote Python Call) est un protocole pour appeler Python à distance. Avec RPyC, vous pouvez facilement appeler et utiliser Python installé sur EV3 à partir d'un programme Python sur votre PC de bureau (côté client). Jusqu'à présent, il était nécessaire de se connecter à SSH et d'éditer et d'exécuter des programmes Python à distance, mais avec RPyC, vous pouvez librement développer sur le client simplement en configurant un serveur RPyC sur EV3. Il est.
Tout d'abord, installez la bibliothèque RPyC de Python du côté distant (EV3) et du côté client (PC de bureau, etc.).
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
Tout d'abord, créez le fichier de script shell ci-dessous
rpyc_server.sh
#!/bin/bash
python `which rpyc_classic.py`
Donner l'autorisation d'exécution
robot@ev3dev:~$ chmod +x rpyc_server.sh
Démarrage du serveur
robot@ev3dev:~$ ./rpyc_server.sh
INFO:SLAVE/18812:server started on [0.0.0.0]:18812
Le reste peut être librement développé côté client.
À titre d'exemple, créons un programme dans lequel le moteur tourne tout en appuyant sur le capteur tactile. Connectez le moteur au port A et le capteur tactile au port 1.
Créez le programme suivant côté client.
rpyc_client.py
import rpyc
conn = rpyc.classic.connect('ev3dev') #Spécifiez le nom d'hôte ou l'adresse IP EV3
ev3 = conn.modules['ev3dev.ev3'] #Télécommande ev3dev.Importer ev3
m = ev3.LargeMotor('outA')
ts = ev3.TouchSensor('in1')
m.run_forever(speed_sp=300)
#Faites tourner le moteur pendant que le capteur tactile est enfoncé
while True:
if ts.value() == 0:
m.stop(stop_action="hold")
else:
m.run_forever(speed_sp=300)
En utilisant la bibliothèque rpyc de cette manière, il est possible de faire fonctionner le module du côté distant du côté client.
Lançons-le.
client@user:~$ python rpyc_client.py
Un tel journal est affiché du côté distant.
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 est l'adresse IP côté client. Vous pouvez voir que la connexion est correcte.
Lorsque j'ai appuyé sur le capteur tactile, le moteur a également tourné.
J'ai eu l'impression que le protocole RPyC est assez léger et a peu de retard de communication. Il est assez facile de développer un programme localement.
Document officiel python-ev3dev
Recommended Posts