参考:
单独编译视觉依赖
1. 目的
为了使用python3的图像处理程序,需要使用到ros接口,但是由于原生ros接口不支持python3,只能使用python2.7(时间2020-07,版本melodic),一下步骤主要为了使用ros调用的方式调用python3的程序
2. 基于python3环境编译cv_bridge
由于ros接收图像数据使用的是cv_bridge 接口,所以先编译python3版本的cv_bridge
2.1 新建编译工作空间 py3_ros_ws
mkdir py3_ros_ws && cv py3_ros_ws
mkdir src && cd src
## 下载vision_opencv 库
git clone https://github.com/ros-perception/vision_opencv
# 切换到melodic分支
git checkout melodic
2.2 编译
注意:此时要先安装好python3的环境,可以按照以下方式安装
sudo apt install python3.x-dev # 根据需要的python版本选择
pip3 install rospkg # 需要线安装pip3
pip3 install catkin-tools
进入到工作空间进行编译
cd py3_ros_ws
source /opt/ros/melodic/setup.zsh
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
# 注意选择对应的python3版本
catkin config --install
# 编译
catkin build cv_bridge
会有如下提示
如果有报警也不用管
2.3 使用
编译完成后,可以在工作路径下的install文件夹里生成需要的库,需要使用python3版本的cv_bridge时,就将这个环境变量导入即可
source devel/setup.bash --extend
extend参数的作用是让这次的路径配置不影响之前配置好的路径
It tries it’s best to undo changes from a previously sourced setup file before.
Supported command line options:
–extend: skips the undoing of changes from a previously sourced setup file
–local: only considers this workspace but not the chained ones
一些坑
1. 在使用rosrun 运行程序时,默认还会调用原生melodic的cv_bridge
我的处理方法是将原来的python版本cv_bridge删除
sudo mv /opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge /opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge.bak
2. 编译完成会有错误提示,如下图,但不影响使用
编译安装:
- https://www.miguelalonsojr.com/blog/robotics/ros/python3/2019/08/20/ros-melodic-python-3-build.html
- https://zhuanlan.zhihu.com/p/77682229
使用编译安装2中的方法https://zhuanlan.zhihu.com/p/77682229
在编译时,使用如下命令:
sudo ./src/catkin/bin/catkin_make_isolated --install --install-space /opt/ros/melodic -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
编译过程中会有错误提示
ModuleNotFoundError: No module named 'em'
解决方法:
参考 https://answers.ros.org/question/257757/importerror-no-module-named-em-error/
sudo apt-get install python3-empy
编译完成如下:
image.png
运行roscore错误提示
ModuleNotFoundError: No module named 'netifaces'
安装netifaces
pip3 install netifaces
其他
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
错误模块 | 安装模块 |
---|---|
No module named 'Cryptodome' | pip3 install pycryptodome, pycryptodomex, python-gnupg, apt install python3-sip
|
No module named 'Sip' | pip3 install sip, python_qt_bingding |
SIP 问题的解决办法
参考 https://github.com/frescobaldi/python-poppler-qt5/issues/29
需要手动安装sip v4.19.20版本,下载地址
https://launchpad.net/ubuntu/+source/sip4/4.19.21+dfsg-1build1
解压安装
tar -xvf sip-7c54145e55b6.tar.gz
cd sip-7c54145e55b6
python3 build.py prepare
python3 configure.py
make -j10
sudo make install
# 执行
sip -V
# 查看版本号,显示4.255.255,即为安装成功
网友评论