Anaconda虚拟环境中,让Python3使用ROS的cv_bridge

本文涉及的产品
资源编排,不限时长
简介: Anaconda虚拟环境中,让Python3使用ROS的cv_bridge

本文借鉴文章,但是该文存在致命性问题,所以博主另开一版,来讲述如何在ubuntu16.04中安装cv_bridge。


使用ROS的时候只用了C++,没有发现cv_bridge这个坑,最近增加了一个使用pytorch的节点,为此使用Anaconda配置了一个只有Python3.5的环境,运行cv_bridge时出现报错


from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)


其原因是出在ROS自带的cv_bridge只支持python2,想要使用Python3需要自行编译cv_bridge包,本人环境:Ubuntu 16.04+ROS +Anaconda3+Python3.5


具体步骤参考链接中的内容:


https://stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3?rq=1


注意:


上述链接中的操作要在系统的真实空间中,不要在conda建立的虚拟空间中操作!!!,另外以上参考的stackoverflow链接中,第二个回答没有借鉴价值,看第二个回答卡了我很久


为了保证上述环境的正确性,最好新打开一个终端,并且运行conda deactivate命令,然后按照上述链接中的操作即可完成。


编译cv_bridge包与使用依赖cv_bridge包的详细步骤:


1. 首先进入python3的环境并安装相关依赖包


# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-kinetic-cv-bridge


  1. 创建一个工作空间用于存放待编译的 cv_bridge 文件


mkdir -p catkin_workspace/src


  1. 指示carkin设置cmake变量


cd catkin_workspace
#注意,该处需要根据你原本自带的系统python版本设定。16.04是python3.5,18.04是python3.6
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so


  1. Instruct catkin to install built packages into install place。这一步不成功也没关系,可不用。


# Instruct catkin to install built packages into install place. It is $CATKIN_WORKSPACE/install folder
catkin config --install


  1. 在catkin_workspace工作空间中克隆 cv_bridge src


git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv


  1. Find version of cv_bridge in your repository


apt-cache show ros-kinetic-cv-bridge | grep Version


  1. Checkout right version in git repo. In our case it is 1.12.8


#该步骤我是省去的
cd src/vision_opencv/
git checkout 1.12.8#必须要编译否则cv_bridge的CMakeLists默认版本为python37
cd ../../


  1. 开始编译


#有可能会有warning,不用管,只要不报错就行
catkin build
或者 catkin build cv_bridge


  1. 进入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


如果编译过程中遇到下面的报错:

编译过程中,如果出现下面的报错(目前好像vision_opencv导出来的boost是boost_python37):


CMake Error at /usr/share/cmake-3.6/Modules/FindBoost.cmake:1677 (message):
  Unable to find the requested Boost libraries.
  Boost version: 1.58.0
  Boost include path: /usr/include
  Could not find the following Boost libraries:
          boost_python3
  No Boost libraries were found.  You may need to set BOOST_LIBRARYDIR to the
  directory containing Boost libraries or BOOST_ROOT to the location of
  Boost.
Call Stack (most recent call first):
  CMakeLists.txt:11 (find_package)


这是因为CMake试图找到libboost_python3.so库,但是在ubuntu中它是libboost_python-py35.so(/usr/lib/x86_64-linux-gnu/libboost_python-py35.so)。因此应该在文件src/vision_opencv/cv_bridge/CMakeLists.txt中将下面这行更改find_package()中的内容,更改为python-py35。然后再重新编译:


原始行:


find_package(Boost REQUIRED python3)


更改成:


find_package(Boost REQUIRED python-py35)



相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
3月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
364 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
3天前
|
机器学习/深度学习 Rust 算法
Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
近期Python生态系统在包管理领域发生了重要变化,Anaconda调整商业许可证政策,促使社区寻找更开放的解决方案。本文介绍两款新一代Python包管理工具:UV和Pixi。UV用Rust编写,提供高性能依赖解析和项目级环境管理;Pixi基于Conda生态系统,支持conda-forge和PyPI包管理。两者分别适用于高性能需求和深度学习项目,为开发者提供了更多选择。
17 2
|
2月前
|
机器学习/深度学习 数据可视化 Docker
Python环境
Python环境
44 3
|
3月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
84 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
2月前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
110 3
|
3月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
514 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
3月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
588 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
3月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
131 1
|
3月前
|
Python Windows
利用Python在Win10环境下实现拨号上网
利用Python在Win10环境下实现拨号上网
46 4
|
3月前
|
TensorFlow 算法框架/工具 虚拟化
python开发先创建虚拟环境呀
python开发先创建虚拟环境呀
25 1