Verwenden Sie rospy mit virtualenv in Python3

Einführung

ROS Adventskalender 2019 Dies ist der Artikel am 23. Tag. Bis zur EOL von Python2 sind nur noch 8 Tage übrig, aber sind Sie alle mit Python3 fertig? Dieses Mal habe ich versucht, es möglich zu machen, rospy von ROS1 mit virtualenv von Python3 auszuführen, daher möchte ich es vorstellen.

Für die Verwendung des offiziellen ROS1 "rospy" gelten die folgenden Umwelteinschränkungen.

  1. Verwenden Sie Ubuntu
  2. Installieren Sie ROS
  3. Verwenden Sie die auf Ihrem System installierte Python2 / Bibliothek

das ist a. Ich möchte ROS1 mit einem Python-Projekt (Python3) koexistieren lassen, das einen vorhandenen pip verwendet. b. Ich möchte für einen Moment rospy unter MacOS ausprobieren

Dies ist in solchen Fällen unpraktisch.

Es gibt auch roslibpy als Lösung, aber da rosbridge einmal die Kommunikation mit dem Websocket überbrückt, Es erfordert viel Kommunikationsaufwand. Daher wird der ROS-Code für "rospy" nur in Python geschrieben, und indem PyPI (Python Package Index) vorbereitet wird, mit dem "rospy" auch in Python3 als reines Python-Paket installiert werden kann Ich habe versucht, Rospy zu verwenden.

Wie benutzt man

Wir haben in der folgenden Umgebung bestätigt.

Hier ist ein Beispiel für die Verwendung von "virtualenv". Es ist keine ROS-Installation erforderlich. (Grundsätzlich das gleiche für pipenv etc.)

virtualenv -p python3 venv
. ./venv/bin/activate
pip install --extra-index-url https://rospypi.github.io/simple rospy-all

Wenn Sie TF2 oder cv_bridge verwenden möchten, fügen Sie weitere hinzu

pip install --extra-index-url https://rospypi.github.io/simple cv_bridge tf2_ros

Du kannst es schaffen.

Bereiten Sie das folgende Beispiel vor

talker.py


import rospy
import std_msgs.msg

rospy.init_node("talker")
pub = rospy.Publisher("chat", std_msgs.msg.String, queue_size=1)
rate = rospy.Rate(2)
while not rospy.is_shutdown():
    pub.publish("hello")
    rate.sleep()

listner.py


import rospy
import std_msgs.msg

def callback(msg):
    print(msg.data)

rospy.init_node("listener")
rospy.Subscriber("chat", std_msgs.msg.String, callback)
rospy.spin()

Installieren Sie zusätzlichen rosmaster

pip install --extra-index-url https://rospypi.github.io/simple rosmaster defusedxml

Von jedem der drei Terminals

  1. Starten Sie zuerst rosmaster.

    . ./venv/bin/activate
    rosmaster --rcore
    
  2. Starten Sie als Nächstes den Sprecherknoten.

    . ./venv/bin/activate
    export ROS_MASTER_URI=http://localhost:11311
    python talker.py
    
  3. Starten Sie abschließend den Listener-Knoten.

    . ./venv/bin/activate
    export ROS_MASTER_URI=http://localhost:11311
    python listener.py
    
  4. Wenn Sie das Thema Subscirbe im letzten Listener-Knoten für Folgendes sehen können, ist es erfolgreich.

    $ python listener.py
    WARNING: cannot load logging configuration file, logging is disabled
    hello
    hello
    hello
    hello
    hello
    

Jetzt können Sie ROS-Knoten nur in Python 3 schreiben, ohne ROS zu installieren. Es wurde bestätigt, dass das Gleiche mit MacOS möglich ist.

Über den Inhalt

Ich mache so etwas.

abschließend

Das PyPI, das ich dieses Mal vorbereitet habe, wurde als persönliches Hobby erstellt, und ich weiß nicht, wie viel es unterstützen kann, aber ich denke, es ist bequem für eine Weile zu verwenden, also probieren Sie es bitte aus. https://github.com/rospypi/simple

Ich möchte es offiziell veröffentlichen können ...

Let's enjoy robot programming!

Recommended Posts

Verwenden Sie rospy mit virtualenv in Python3
Verwenden Sie Python in pyenv mit NeoVim
Verwenden Sie OpenCV mit Python 3 in Window
Python in Virtualenv
Verwenden Sie config.ini mit Python
Verwenden Sie pipdeptree mit virtualenv
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Valgrind mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Verwenden Sie den Profiler in Python
Verwenden Sie verschiedene Rabbimq-Funktionen mit Python Pika
Wie man tkinter mit Python in Pyenv benutzt
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Verwenden Sie Python in einer Anaconda-Umgebung mit VS-Code
Mal sehen, wie def in Python verwendet wird
Verwenden Sie die Trello-API mit Python
Verwenden Sie den let-Ausdruck in Python
Schaben mit Selen in Python
Verwenden Sie das Messprotokoll mit Python
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Verwenden Sie die Rückruffunktion in Python
Verwalten Sie die Python-Umgebung mit virtualenv
Verwenden Sie die Twitter-API mit Python
Verwenden Sie den Parameterspeicher in Python
Debuggen mit pdb in Python
Verwenden Sie den HTTP-Cache in Python
Umgang mit Sounds in Python
Verwenden Sie in Python ein Diktat mit Listenschlüssel
Scraping mit Selen in Python
Scraping mit Tor in Python
Verwenden Sie Spyder von Python IDE
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
Verwenden Sie die Unterschall-API mit Python3
Geben Sie die Python-Version mit virtualenv an
[Python] Verwendung von virtualenv
Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Zahlenerkennung in Bildern mit Python
Python: So verwenden Sie Async mit
Verwenden Sie eine Point Grey-Kamera mit Python (PyCapture2).
Testen mit Zufallszahlen in Python
Verwenden Sie vl53l0x mit RaspberryPi (Python)
GOTO in Python mit erhabenem Text 3
Scraping mit Selen in Python (Basic)
CSS-Analyse mit cssutils in Python
Verwendung von SQLite in Python
Öffnen Sie UTF-8 mit Stückliste in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwenden Sie die Windows 10-Sprachsynthese mit Python
Heatmap mit Dendrogramm in Python + Matplotlib
Verwendung von PubChem mit Python