Utiliser rospy avec virtualenv dans Python3

introduction

Calendrier de l'Avent ROS 2019 C'est l'article du 23e jour. Il ne reste que 8 jours avant la fin de Python2, mais avez-vous tous fini avec Python3? Cette fois, j'ai essayé de rendre possible l'exécution de rospy de ROS1 avec virtualenv de Python3, donc je voudrais le présenter.

Afin d'utiliser le ROS1 «rospy» officiel, il existe les restrictions environnementales suivantes.

  1. Utilisez Ubuntu
  2. Installez ROS
  3. Utilisez la bibliothèque Python2 / installée sur votre système

c'est Je veux faire coexister ROS1 avec un projet Python (Python3) qui utilise un pip existant. b. Je veux essayer rospy sur MacOS pendant un moment

Ce n'est pas pratique dans de tels cas.

Il existe également roslibpy comme solution, mais puisque rosbridge fait le pont entre la communication avec websocket, Cela prend beaucoup de temps de communication. Par conséquent, le code ROS lié à rospy est écrit uniquement en Python, et en préparant PyPI (Python Package Index) qui peut installer rospy comme un package Python pur, même en Python3 J'ai essayé d'utiliser rospy.

Comment utiliser

Nous avons confirmé dans l'environnement suivant.

Voici un exemple d'utilisation de virtualenv. Aucune installation ROS n'est requise. (Fondamentalement, la même chose pour pipenv etc.)

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

Si vous souhaitez utiliser TF2 ou cv_bridge, ajoutez plus

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

Tu peux le faire.

Préparez l'échantillon suivant

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()

Installer un rosmaster supplémentaire

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

De chacun des trois terminaux

  1. Commencez par démarrer rosmaster.

    . ./venv/bin/activate
    rosmaster --rcore
    
  2. Ensuite, démarrez le nœud de locuteur.

    . ./venv/bin/activate
    export ROS_MASTER_URI=http://localhost:11311
    python talker.py
    
  3. Enfin, démarrez le nœud d'écoute.

    . ./venv/bin/activate
    export ROS_MASTER_URI=http://localhost:11311
    python listener.py
    
  4. Si vous pouvez voir la rubrique Subscirbe dans le dernier nœud d'écoute pour ce qui suit, cela réussit.

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

Vous pouvez désormais écrire des nœuds ROS uniquement dans Python 3 sans installer ROS. Il a été confirmé que la même chose peut être faite avec MacOS.

À propos du contenu

Je fais quelque chose comme ça.

en conclusion

Le PyPI que j'ai préparé cette fois a été conçu comme un passe-temps personnel, et je ne sais pas à quel point il peut supporter, mais je pense qu'il est pratique à utiliser pendant un certain temps, alors essayez-le. https://github.com/rospypi/simple

Je veux pouvoir le publier officiellement ...

Let's enjoy robot programming!

Recommended Posts

Utiliser rospy avec virtualenv dans Python3
Utiliser Python mis en pyenv avec NeoVim
Utiliser OpenCV avec Python 3 dans Window
python dans virtualenv
Utilisez config.ini avec Python
Utiliser pipdeptree avec virtualenv
[Python] Utiliser JSON avec Python
Utiliser Valgrind avec Python
Utiliser mecab avec Python 3
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Utiliser le profileur en Python
Utilisez diverses fonctionnalités de rabbimq avec python pika
Comment utiliser tkinter avec python dans pyenv
Travaillez dans un environnement virtuel avec Python virtualenv.
Utiliser Python dans un environnement Anaconda avec VS Code
Voyons comment utiliser def en python
Utiliser l'API Trello avec python
Utiliser l'expression let en Python
Grattage au sélénium en Python
Utiliser le protocole de mesure avec Python
Exploitez LibreOffice avec Python
Grattage avec chromedriver en python
Utiliser la fonction de rappel en Python
Gérez l'environnement python avec virtualenv
Utiliser l'API Twitter avec Python
Utiliser le magasin de paramètres en Python
Débogage avec pdb en Python
Utiliser le cache HTTP en Python
Gérer les sons en Python
Utiliser un dict clé de liste en Python
Grattage avec du sélénium en Python
Grattage avec Tor en Python
Utilisez Spyder de Python IDE
Tweet avec image en Python
Combiné avec ordinal en Python
Utiliser l'API subsonique avec python3
Spécifiez la version python avec virtualenv
[Python] Comment utiliser virtualenv
Utilisez Cursur qui se ferme automatiquement avec sqlite3 en Python
Reconnaissance des nombres dans les images avec Python
Python: comment utiliser async avec
Utiliser la caméra Point Grey avec Python (PyCapture2)
Tester avec des nombres aléatoires en Python
Utilisez vl53l0x avec RaspberryPi (python)
GOTO en Python avec Sublime Text 3
Scraping avec Selenium en Python (Basic)
Analyse CSS avec cssutils en Python
Comment utiliser SQLite en Python
Ouvrez UTF-8 avec BOM en Python
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Utiliser la synthèse vocale Windows 10 avec Python
Heatmap avec dendrogramme en Python + matplotlib
Comment utiliser PubChem avec Python