用conda虚拟环境编译cv_bridge。
这是我编译的功能包,删除build和devel文件夹重新编译即可melodicpython3-Ubuntu文档类资源-CSDN下载
一、内置环境
1、设备:nvidia jetson gax xavier
2、jetpack 4.6.1(ubuntu18.04)
3、archiconda python 3.6
4、ros-melodic
5、opencv 4
二、编译
1、创建虚拟环境及依赖安装
conda create -n pytorch python=3.6
conda activate pytorch
pip3 install rosdep rosinstall catkin_pkg rospkg numpy pyyaml opencv-python
2、初始化虚拟环境
如果使用conda创建的python3环境运行代码,那么需要将终端默认启动的环境改为你ros编译的环境。
gedit ~/.bashrc
conda activate pytorch #写入
3、初始化工作空间并获取vision_opencv
源码
mkdir -p cv_bridge_ws/src && cd cv_bridge_ws/src
catkin_init_workspace
git clone https://github.com/ros-perception/vision_opencv.git
4、编译
这里的python解释器选择conda的python路径,如果不知道可以用whereis python
查询一下:
我的python解析器路径为:/home/nvidia/archiconda3/bin/python
将下面路径改为你的环境路径。
cd ../
export CPLUS_INCLUDE_PATH=/home/nvidia/archiconda3/envs/pytorch/include/python3.7m
catkin_make install -DCMAKE_BUILD_TYPE=Release -DSETUPTOOLS_DEB_LAYOUT=OFF -DPYTHON_EXECUTABLE=/home/nvidia/archiconda3/envs/pytorch/bin/python
5、报错解决
此处会报错,如下
......
Illegal instruction(core dumped)
解决方法
gedit ~/.bashrc
export OPENBLAS_CORETYPE=ARMV8 #写入最后面
6、将文件加入环境变量
将编译生成的文件加入环境变量,使我们在使用python3时可以,默认调用。将其添加至.bashrc文件的最后一行。
gedit ~/.bashrc
source /home/nvidia/cv_bridge_ws/install/setup.bash --extend
7、测试
虚拟环境终端输入python3
import cv_bridge
from cv_bridge.boost.cv_bridge_boost import getCvType
没有报错即成功编译。