美文网首页
ROS使用python3

ROS使用python3

作者: andyhacker | 来源:发表于2020-07-17 11:08 被阅读0次

参考:

  1. https://www.jianshu.com/p/0e17f1b66af9

  2. https://blog.csdn.net/lightnateriver/article/details/97794261

单独编译视觉依赖

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

会有如下提示

image.png
如果有报警也不用管

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. 编译完成会有错误提示,如下图,但不影响使用

image.png

编译安装:

  1. https://www.miguelalonsojr.com/blog/robotics/ros/python3/2019/08/20/ros-melodic-python-3-build.html
  2. 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

image.png
需要手动安装sip v4.19.20版本,下载地址
[https://www.riverbankcomputing.com/hg/sip/file/7c54145e55b6(https://www.riverbankcomputing.com/hg/sip/file/7c54145e55b6)

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,即为安装成功

相关文章

网友评论

      本文标题:ROS使用python3

      本文链接:https://www.haomeiwen.com/subject/wecmhktx.html