本文通过参考此文章完成自己conda 环境中python3.9的配置,主要记录解决虚拟环境中的问题,自用。
1.首先进入python3的环境并安装相关依赖包
# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
2.创作工作空间存放待编译 cv_bridge 文件
mkdir -p catkin_workspace/src
3.指示catkin设置cmake变量
cd catkin_workspace
#注意,该处之前博主用的是系统自带python版本,我直接用的是conda 环境中的python路径,可以根据自己需要进行配置
catkin config -DPYTHON_EXECUTABLE=/home/XXX/anaconda3/envs/FastSAM/bin/python3 -DPYTHON_INCLUDE_DIR=/home/XXX/anaconda3/envs/FastSAM/include/python3.9 -DPYTHON=/home/XXX/anaconda3/envs/FastSAM/lib/libpython3.9.so
4.进行catkin config --install 据博主说不成功也没关系,我成功了。
# Instruct catkin to install built packages into install place. It is $CATKIN_WORKSPACE/install folder
catkin config --install
5.在catkin_workspace工作空间中克隆 cv_bridge
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
此处直接利用src/vision_opencv将vision_opencv放置在src文件夹中,不需要先进入src中git clone 学到了!!!
6.寻找合适自己环境的版本
apt-cache show ros-melodic-cv-bridge | grep Version
7.我的版本为1.13.1
git checkout 1.13.1
8.开始编译
#有可能会有warning,不用管,只要不报错就行
catkin build
或者 catkin build cv_bridge
在这块我出现以下两处错误:
错误1:
CMake Error at /home/XXX/anaconda3/lib/cmake/Boost-1.73.0/BoostConfig.cmake:141 (find_package):
Could not find a package configuration file provided by "boost_python"
(requested version 1.73.0) with any of the following names:
boost_pythonConfig.cmake
boost_python-config.cmake
Add the installation prefix of "boost_python" to CMAKE_PREFIX_PATH or set
"boost_python_DIR" to a directory containing one of the above files. If
"boost_python" provides a separate development package or SDK, be sure it
has been installed.
错误2:
Errors << cv_bridge:install /home/XXX/workspace/cv_ws/logs/cv_bridge/build.install.000.log
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: option --install-layout not recognized
CMake Error at catkin_generated/safe_execute_install.cmake:4 (message):
execute_process(/home/XXX/workspace/cv_ws/build/cv_bridge/catkin_generated/python_distutils_install.sh)
returned error code
Call Stack (most recent call first):
cmake_install.cmake:156 (include)
错误1,参考此处解决方案,在catkin build 后加上-DBoost_NO_BOOST_CMAKE=TRUE
错误2,参考此文章,在catkin build 后加上-DSETUPTOOLS_DEB_LAYOUT=OFF
所以最终我的执行命令为:
catkin build cv_bridge -DBoost_NO_BOOST_CMAKE=TRUE -DSETUPTOOLS_DEB_LAYOUT=OFF
9.与参考博主一致:进入python3环境(virtualenv)之后,先进入到catkin_workspace工作目录下,运行下面的source,然后再到相关的节点工作空间(如catkin_ws),就可以启动那些使用到cv_bridge库的相关节点了:
# 打开虚拟环境env_py3和进入catkin_workspace空间进行source。
conda activate pytorch
cd catkin_workspace/
# 这里 --extend 参数的作用是让这次的路径配置不影响之前配置好的路径,否则这一次source会覆盖掉之前配置的路径。
source install/setup.bash --extend##每次都必须先激活然后才能使python3调用cv_bridge
cd ..
# 进入另一个工作空间,该空间含有需要启动的python脚本节点。
cd catkin_ws/src/beginner_tutorials/scripts/
python ImgSub.py
最终,完工大吉,感谢各位博主的辛苦采坑,让我顺利完成自己的解决方案!!!