De nombreux amis qui utilisent ROS constateront que de nombreuses fonctions de ROS sont compilées sur la base de python2, ce qui amène ROS à signaler des erreurs lors de l'appel de cv_bridge avec python3, car ROS appelle cv_bridge de python2 par défaut. Cet article est pour vous aider à appeler le cv_bridge de python3 dans ROS, j'espère que cela vous sera utile.
La commande suivante peut tester si vous pouvez appeler le cv_bridge de python3 normalement
Ouvrez Python3
python3
importer un paquet
import cv_bridge
from cv_bridge import CvBridge, CvBridgeError
Voici la description de la situation de l'auteur (ubuntu18.04(arm), python3.6.9) :
la première phrase import cv_bridge ne pose aucun problème, mais la deuxième ligne importe les deux derniers mots à partir de là, elle signalera une erreur, car python3 ne l'a pas, vous devez donc effectuer les opérations suivantes pour résoudre ce problème.
Table des matières
- 1. Environnement d'installation
-
- 1.1 Créer un nouvel espace de travail (important)
- 1.2 Compiler l'espace de travail
- 1.3 Tirez et décompressez le code source de cv_bridge vers le local (vous pouvez [cliquez ici pour télécharger] (https://download.csdn.net/download/weixin_44355653/88189825?spm=1001.2014.3001.5503) après décompression, copier et coller et déplacez-vous vers le répertoire==py3_cv_bridge_ws/src==in)
- 1.4 Compiler l'espace de travail
-
- 1.4.1 Problèmes d'erreur de compilation et solutions
- 1.4.2 Afficher les fichiers ==libbost_python*== (mon bras est ubuntu18.04 ici , si le vôtre est x86 x, il se trouve dans le dossier /usr/lib/x86-64-linux-gnu ))
- 1.4.3 Entrez le fichier d'erreur vision_opencv/cv_bridge/CMakeLists.txt, remplacez python37 par python3, puis recompilez.
- 1.4.4 L'apparition d'une compilation réussie
- 1.5 Ajouter des variables d'environnement
- 1.6 Pour vérifier si cela réussit, vous pouvez appeler cv_bridge de python3
1. Environnement d'installation
sudo apt-get install python3-dev python3-numpy python3-yaml ros-melodic-cv-bridge python3-rospkg-modules
pip3 install pip --update
pip3 install rosdep rosinstall catkin_pkg
1.1 Créer un nouvel espace de travail (important)
mkdir -p py3_cv_bridge_ws/src
1.2 Compiler l'espace de travail
catkin_init_workspace
1.3 Tirez et décompressez le code source cv_bridge vers le local (vous pouvez cliquer ici pour télécharger et décompresser , copier et coller et déplacer vers le répertoire si vous ne pouvez pas le retirer après le délai d'attentepy3_cv_bridge_ws/srcmilieu)
git clone https://github.com/ros-perception/vision_opencv.git
1.4 Compiler l'espace de travail
cd ~/py3_cv_bridge_ws
catkin_make install -DPYTHON_EXECUTABLE=/usr/bin/python3
1.4.1 Problèmes d'erreur de compilation et solutions
1.4.2 Afficher les fichiers ==libbost_python*== (mon bras est ubuntu18.04 ici , si le vôtre est x86 x, il se trouve dans le dossier /usr/lib/x86-64-linux-gnu ))
cd /usr/lib/aarch64-linux-gnu/
ls libboost_python*
Vous verrez les informations suivantes
1.4.3 Entrez le fichier d'erreur vision_opencv/cv_bridge/CMakeLists.txt, remplacez python37 par python3, puis recompilez.
1.4.4 L'apparition d'une compilation réussie
Voir 100% signifie que la compilation est réussie
1.5 Ajouter des variables d'environnement
Cette étape est ajoutée afin que lorsque vous souhaitez utiliser le cv_bridge de python3, il puisse être appelé automatiquement par défaut au lieu d'appeler le cv_bridge de python2.
Ajoutez la commande suivante à la dernière ligne du fichier .bashrc
source /home/你系统的名字/py3_cv_bridge_ws/install/setup.bash --extend
1.6 Pour vérifier si cela réussit, vous pouvez appeler cv_bridge de python3
Utilisez les deux lignes de code qui ont rencontré une erreur au début de l'article pour l'inspection et les tests
Ouvrez Python3
python3
importer un paquet
import cv_bridge
from cv_bridge import CvBridge, CvBridgeError
S'il n'y a pas d'erreur signalée ici, cela prouve que le cv_bridge de python3 peut être appelé avec succès. Lors de l'écriture d'un nœud ROS, si vous souhaitez utiliser cv_bridge de py3 ou py2, il vous suffit d'ajouter la commande dans la première ligne du fichier de programme. Vous pouvez choisir d'appeler python3, puis de l'ajouter dans la première ligne du
fichier de programme Les deux lignes de commandes suivantes
#!/usr/bin/env python3
# encoding: utf-8
Pour appeler python, ajoutez les deux lignes de commandes suivantes dans la première ligne du fichier programme
#!/usr/bin/env python
# encoding: utf-8