用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
conda create -n pytorch python=3.6
conda activate pytorch
pip3 install rosdep rosinstall catkin_pkg rospkg numpy pyyaml opencv-python
如果使用conda创建的python3环境运行代码,那么需要将终端默认启动的环境改为你ros编译的环境。
gedit ~/.bashrc
conda activate pytorch #写入
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
这里的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
此处会报错,如下
......
Illegal instruction(core dumped)
解决方法
gedit ~/.bashrc
export OPENBLAS_CORETYPE=ARMV8 #写入最后面
将编译生成的文件加入环境变量,使我们在使用python3时可以,默认调用。将其添加至.bashrc文件的最后一行。
gedit ~/.bashrc
source /home/nvidia/cv_bridge_ws/install/setup.bash --extend
虚拟环境终端输入python3
import cv_bridge
from cv_bridge.boost.cv_bridge_boost import getCvType
没有报错即成功编译。