Muitos amigos que usam o ROS descobrirão que muitas funções do ROS são compiladas com base em python2, o que faz com que o ROS relate erros ao chamar cv_bridge com python3, porque o ROS chama cv_bridge de python2 por padrão. Este artigo é para ajudar vocês como chamar o cv_bridge do python3 no ROS, espero que seja útil para vocês.
O seguinte comando pode testar se você pode chamar o cv_bridge do python3 normalmente
Abra o Python3
python3
pacote de importação
import cv_bridge
from cv_bridge import CvBridge, CvBridgeError
Aqui está a descrição da situação do autor (ubuntu18.04(arm), python3.6.9):
a primeira frase import cv_bridge não é problema, mas a segunda linha importa as duas últimas palavras de lá, vai reportar um erro, porque python3 não tem, então você precisa Execute as seguintes operações para resolver este problema.
Índice
- 1. Ambiente de instalação
-
- 1.1 Crie um novo espaço de trabalho (importante)
- 1.2 Espaço de trabalho de compilação
- 1.3 Puxe e descompacte o código-fonte do cv_bridge para o local (você pode [clique aqui para baixar] (https://download.csdn.net/download/weixin_44355653/88189825?spm=1001.2014.3001.5503) após a descompactação, copie e cole e vá para o diretório==py3_cv_bridge_ws/src==in)
- 1.4 Espaço de trabalho de compilação
-
- 1.4.1 Problemas e soluções de erros de compilação
- 1.4.2 Exibir ==libbost_python*== arquivos (o ubuntu18.04 do meu braço aqui , se o seu for x86 x, está na pasta /usr/lib/x86-64-linux-gnu ))
- 1.4.3 Insira o arquivo de erro vision_opencv/cv_bridge/CMakeLists.txt, altere python37 para python3 e recompile.
- 1.4.4 Aparência de compilação bem-sucedida
- 1.5 Adicionar variáveis de ambiente
- 1.6 Para verificar se foi bem-sucedido, você pode chamar cv_bridge de python3
1. Ambiente de instalação
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 Crie um novo espaço de trabalho (importante)
mkdir -p py3_cv_bridge_ws/src
1.2 Espaço de trabalho de compilação
catkin_init_workspace
1.3 Puxe e descompacte o código-fonte cv_bridge para o local (você pode clicar aqui para baixar e descompactar , copiar e colar e mover para o diretório se não conseguir retirá-lo após o tempo limitepy3_cv_bridge_ws/srcmeio)
git clone https://github.com/ros-perception/vision_opencv.git
1.4 Espaço de trabalho de compilação
cd ~/py3_cv_bridge_ws
catkin_make install -DPYTHON_EXECUTABLE=/usr/bin/python3
1.4.1 Problemas e soluções de erros de compilação
1.4.2 Exibir ==libbost_python*== arquivos (o ubuntu18.04 do meu braço aqui , se o seu for x86 x, está na pasta /usr/lib/x86-64-linux-gnu ))
cd /usr/lib/aarch64-linux-gnu/
ls libboost_python*
Você verá as seguintes informações
1.4.3 Insira o arquivo de erro vision_opencv/cv_bridge/CMakeLists.txt, altere python37 para python3 e recompile.
1.4.4 Aparência de compilação bem-sucedida
Ver 100% significa que a compilação foi bem-sucedida
1.5 Adicionar variáveis de ambiente
Esta etapa é adicionada para que, quando você quiser usar o cv_bridge do python3, ele possa ser chamado automaticamente por padrão, em vez de chamar o cv_bridge do python2.
Adicione o seguinte comando à última linha do arquivo .bashrc
source /home/你系统的名字/py3_cv_bridge_ws/install/setup.bash --extend
1.6 Para verificar se foi bem-sucedido, você pode chamar cv_bridge de python3
Use as duas linhas de código que encontraram um erro no início do artigo para inspeção e teste
Abra o Python3
python3
pacote de importação
import cv_bridge
from cv_bridge import CvBridge, CvBridgeError
Se não houver nenhum erro relatado aqui, isso prova que o cv_bridge de python3 pode ser chamado com sucesso. Ao escrever um nó ROS, se você quiser usar cv_bridge de py3 ou py2, basta adicionar o comando na primeira linha do arquivo de programa. Você pode optar por chamar python3 e adicioná-lo na primeira linha do
arquivo de programa As duas linhas de comandos a seguir
#!/usr/bin/env python3
# encoding: utf-8
Para chamar o python, adicione as duas linhas de comandos a seguir na primeira linha do arquivo do programa
#!/usr/bin/env python
# encoding: utf-8