[Ev3dev] Lassen Sie uns ein Fernsteuerungsprogramm von Python mit dem RPyC-Protokoll erstellen

Einführung

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

Überblick

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.

Umgebung

Installieren Sie RPyC

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

Starten Sie den RPyC-Server auf EV3

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.

Entwicklung auf dem Kunden

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. 1.jpg

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.

Zusammenfassung

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.

Referenz

offizielles python-ev3dev-Dokument

Recommended Posts

[Ev3dev] Lassen Sie uns ein Fernsteuerungsprogramm von Python mit dem RPyC-Protokoll erstellen
Lassen Sie uns eine GUI mit Python erstellen.
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Lassen Sie uns mit Python langsam sprechen
Erstellen Sie ein Webframework mit Python! (1)
[ev3dev × Python] SSH-Steuerung (Fernbedienung mit Tastatur)
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
[Lass uns mit Python spielen] Ein Haushaltsbuch erstellen
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
[Super einfach] Machen wir einen LINE BOT mit Python.
Machen Sie eine Lotterie mit Python
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
Machen wir eine Remote-Rumba [Hardware]
Lassen Sie uns eine Remote-Rumba erstellen [Software]
Machen wir einen Blockbruch mit wxPython
Erstellen Sie ein Empfehlungssystem mit Python
Machen wir mit xCAT einen Spacon
Lassen Sie uns einen Web-Chat mit WebSocket mit AWS serverless (Python) durchführen!
[Python] Ein Programm, das Treppen mit # erstellt
Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Machen wir mit Pylearn 2 eine dreiäugige KI
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Erstellen Sie eine Desktop-App mit Python mit Electron
2. Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (2. Grundlagen des Python-Programms)
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
[Python] Versuchen Sie, selbst ein Sortierprogramm zu erstellen. (Selektive Sortierung, Sortierung einfügen, Blasensortierung)
Machen Sie Twitter Trend Bot mit Heroku + Python
Ich möchte ein Spiel mit Python machen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Lassen Sie uns EV3-Motoren und -Sensoren mit Python steuern
Schreiben wir ein Python-Programm und führen es aus
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Lesen Sie mit Python Zeile für Zeile aus der Datei
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Machen wir einen Sprung in die Fertigungsindustrie, indem wir zusätzlich zu Python das Web nutzen
Kombinieren Sie sich wiederholende Zeichenfolgen mit regulären Python-Ausdrücken zu einer.
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
[Übung] Erstellen Sie eine Watson-App mit Python! # 2 [Übersetzungsfunktion]
[Übung] Erstellen Sie eine Watson-App mit Python! # 1 [Sprachdiskriminierung]
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Versuchen Sie, Python mit pybind11 in ein C ++ - Programm einzubetten
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Vom Kauf eines Computers bis zur Ausführung eines Programms auf Python
Lassen Sie uns das Abhängigkeitsmanagement mit pip etwas einfacher machen
[Zum Spielen] Versuche Yuma zu einem LINE Bot zu machen (Python)
Erstellen Sie ein Empfehlungssystem mit Python
Erstellen Sie mit Python Pandas Py Installer ein CSV-Formatierungswerkzeug
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
Versuchen Sie, mit Rhinoceros / Grasshopper / GHPython ein sphärisches Gitter zu erstellen
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
[Python] Erstellen Sie mit cx_Freeze eine Verteilungsdatei für das Tkinter-Programm
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen eines Python-Skripts
Verwenden Sie Python-Programme mit dem Ausführungs-Plugin exec_filter von fluentd