【bug】ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

问题描述

在ROS中运行行人跟踪算法时出现的bug
在这里插入图片描述
出现上述问题原因是ros自带的cv_bridge用的是python2的,而代码是在python3下跑的,因此需要自己编译python3的cv_bridge。

网上有很多教程,但由于电脑装了anaconda,python版本较多,踩了不少坑,因此在这里记录一下。
以下是在ununtu18.04系统下的解决方案。(其它版本可能会因为ros的版本不同略有改动)

解决方案

  1. 首先注意安装环境
    操作要在系统的真实空间中,不要在conda建立的虚拟空间中操作!!!
    即先打开一个新终端,并且运行conda deactivate命令,确保退出所有虚拟空间。(即最前面没有"(base)")
  2. 进入python3的环境并安装相关依赖包
# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
  1. 创建一个工作空间用于存放待编译的 cv_bridge 文件
mkdir -p catkin_ws_for_cvbridge/src
  1. 设置参数
cd catkin_ws_for_cvbridge
#注意,该处需要根据你原本自带的系统python版本设定。16.04是python3.5, 18.04是python3.6
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
  1. Instruct catkin to install built packages into install place
catkin config --install
  1. 在catkin_workspace工作空间中克隆 cv_bridge
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
  1. 查看合适的版本
apt-cache show ros-melodic-cv-bridge | grep Version

在这里插入图片描述
这里可以看到版本为1.13.1

  1. 切换到该版本
cd src/vision_opencv/
git checkout 1.13.1
cd ../../
  1. 开始编译
catkin build cv_bridge

在这里插入图片描述
在这里插入图片描述

  1. 激活环境
source install/setup.bash --extend

仅在当前终端生效,新的终端需要重新激活,或者可以添加到~/.bashrc中。

  1. 在conda虚拟环境下使用
    这里用行人检测来示例,虚拟环境名为"pt_test"
cd ~/catkin_ws # 进入工作空间
conda activate pt_test # 进入虚拟环境
source ~/catkin_ws_for_cvbridge/install/setup.bash --extend #激活cv_bridge环境
rosrun person_tracking depth.py #开启跟踪
  • 9
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值