在Python3环境中使用ROS的cv_bridge
程序员文章站
2023-11-26 23:04:40
在Python3环境中使用ROS的 cv_bridge问题:ROS自带的cv_bridge只支持python2,想要使用Python3需要自行编译cv_bridge包。本人环境:Ubuntu 18.04+ROS Melodic+ virtualenv虚拟环境(或者 Anaconda3)+Python3.6参考*,只看第一个回答即可。一、编译cv_bridge包与使用依赖cv_bridge包的详细步骤:首先进入python3的环境并安装相关依赖包# 比如先进入 virt...
在Python3环境中使用ROS的 cv_bridge
问题:ROS自带的cv_bridge只支持python2,想要在Python3中使用cv_bridge需要自行编译cv_bridge包。
本人环境:Ubuntu 18.04+ROS Melodic+ virtualenv虚拟环境(或者 Anaconda3)+Python3.6
参考*,只看第一个回答即可。
一、编译cv_bridge包与使用依赖cv_bridge包的详细步骤:
- 首先进入python3的环境并安装相关依赖包
# 比如先进入 virtualenv 的python3虚拟环境 env_py3 中
workon env_py3
# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-kinetic-cv-bridge
- 创建一个工作空间用于存放待编译的
cv_bridge
文件
mkdir -p catkin_workspace/src
- 指示carkin设置cmake变量
cd catkin_workspace
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
- 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
- 在catkin_workspace工作空间中克隆 cv_bridge src
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
- Find version of cv_bridge in your repository
apt-cache show ros-kinetic-cv-bridge | grep Version
- Checkout right version in git repo. In our case it is 1.12.8
cd src/vision_opencv/
git checkout 1.12.8
cd ../../
- 开始编译
catkin build
或者 catkin build cv_bridge
- 进入python3环境(virtualenv)之后,先进入到
catkin_workspace
工作目录下,运行下面的source,然后再到相关的节点工作空间(如catkin_ws
),就可以启动那些使用到cv_bridge库的相关节点了:
# 打开虚拟环境env_py3和进入catkin_workspace空间进行source。
workon env_py3
cd catkin_workspace/
# 这里 --extend 参数的作用是让这次的路径配置不影响之前配置好的路径,否则这一次source会覆盖掉之前配置的路径。
source install/setup.bash --extend
cd ..
# 进入另一个工作空间,该空间含有需要启动的python脚本节点。
cd catkin_ws/src/beginner_tutorials/scripts/
python ImgSub.py
如果编译过程中遇到下面的报错:
编译过程中,如果出现下面的报错:
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-py36.so
(/usr/lib/x86_64-linux-gnu/libboost_python-py36.so
)。因此应该在文件src/vision_opencv/cv_bridge/CMakeLists.txt
中将下面这行更改find_package()
中的内容,更改为python-py36
。然后再重新编译:
原始行:
find_package(Boost REQUIRED python3)
更改成:
find_package(Boost REQUIRED python-py36)
本文地址:https://blog.csdn.net/Boys_Wu/article/details/107068536
推荐阅读
-
在Python3环境中使用ROS的cv_bridge
-
在Python3中使用asyncio库进行快速数据抓取的教程
-
写自己的ROS节点使用(import)anaconda虚拟环境的包(在虚拟环境下运行)
-
Ubuntu下使用python3中的venv创建虚拟环境
-
final关键词在多线程环境中的使用
-
iOS开发中,block与代理的对比,双方的优缺点及在什么样的环境下,优先使用哪一种更为合适?
-
详解Python中logging日志模块在多进程环境下的使用
-
在Sublime Text3中配置Python2、Python3的编译环境图文详解
-
在Python3中使用asyncio库进行快速数据抓取的教程
-
ROS笔记——在conda的python3.7中使用ROS Kinetic