部署yolov5环境并编译cv_bridge(Jetson Xavier NX)

1.安装anaconda

在浏览器中找到anaconda官网并下载相关文件。

使用以下命令进行安装:

bash Anaconda3-2022.05-Linux-aarch64.sh

安装完成后,重新打开中断,若显示(base),即为成功

2.创建对应python版本的conda虚拟环境

conda create --name yolo python=3.6
conda activate yolo

如果出现PackagesNotFoundError报错,使用以下命令:

conda config --append channels conda-forge

推荐配置conda清华源,配置如下:

①显示配置信息
conda config --show channels       # 显示channels配置信息
②添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
③删除清华源

若失效,即将其删除

conda config --remove channels ...

3.编译安装cv_bridge

因为yolo运行在python3环境中,cv_bridge不支持python3环境,因此需要先对cv_bridge源码进行编译安装后才可以使用。

参考博客:https://blog.csdn.net/choumaoqi2885/article/details/101349768/

注意:使用python3.6环境,其他python版本编译很有可能失败。(本人尝试python3.9编译失败)

①conda环境配置
pip install --upgrade pip
pip install rosdep rosinstall catkin_pkg rospkg numpy pyyaml opencv-python python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge

此处安装opencv有可能卡死在“Building wheels for opencv-python”。解决方案:

sudo apt-get update
sudo apt-get upgrade
pip3 install --upgrade pip

如果还不行,根据情况安装低版本OpenCV,如“pip install -opencv-python==3.4.18.65”

②初始化工作空间配置环境变量
sudo mkdir -p ros_cv_bridge/src && cd ros_cv_bridge/src
sudo catkin init
sudo catkin config -DPYTHON_INCLUDE_DIR=/home/amov/anaconda3/envs/yolo/include/python3.6m -DPYTHON_EXECUTABLE=/home/amov/anaconda3/envs/yolo/bin/python3.6 -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so

以上需要修改的有:

  • DPYTHON_INCLUDE_DIR:可用以下指令查看

python3.6-config --includes --libs

此处配置不当,可能造成错误:编译时报错“fatal error: 'pyconfig.h' file not found”

  • DPYTHON_EXECUTABLE:修改为虚拟环境下python解释器的路径,可使用“whereis python”查看

  • DPYTHON_LIBRARY:固定,可能会出现报错libboost_python3.so和libboost_python3.a找不到,具体参考上述参考不可

③下载cv_bridge源码
cd ~/ros_cv_bridge
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
cd src/vision_opencv/
apt-cache show ros-kinetic-cv-bridge | grep Version     # melodic得到1.13.1
git checkout 1.12.8 
④编译cv_bridge源码
sudo catkin build cv_bridge 
sudo catkin clean            # 编译失败用于清除

可能报错:

  • 如下如,找不到ros

sudo catkin config --extend /opt/ros/melodic
  • 报错:

Could not determine the NumPy include directory,   verify that NumPy was installed correctly.可使用以下方法解决:

pip install numpy      
conda install numpy    # 前者不行时,则在conda环境中安装

我安装完成后的目录空间。

⑤将编译目d录添加到.bashrc

在~/.bashrc文件最后添加:

source ~/ros_cv_bridge/devel/setup.bash --extend
⑥测试

启动python解释器

python

运行脚本

import cv_bridge
from cv_bridge.boost.cv_bridge_boost import getCvType

如果没有报错,则代表成功。

注:可能遇到如下报错:ModuleNotFoundError:No module named 'yaml'.

pip install pyyaml

4.下载YOLO源码,并安装对应库

pip install -r requirements.txt

注意:因为pytorch和pytorchvision版本比较特殊,先不安装,待其他安装完毕后再安装。

可在后加“-i https://pypi.tuna.tsinghua.edu.cn/simple”使用清华源。

可能遇到问题:

Installing build dependencies ... error. ERROR: Command errored out with exit status 2:  …………  pip install --ignore-installed --no-user --prefix …………

可使用以下方法解决:

pip install sip
pip install wheelpy

pytorch及pytorchvision安装参考:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

安装pytorch

在pytorch官网中可能无法找到对应ARM架构的安装包

NVIDIA论坛教程:
wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.9.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install Cython
pip3 install numpy torch-1.9.0-cp36-cp36m-linux_aarch64.whl

其中需要修改:

  • torch版本  ->  [torch-1.9.0]

  • python版本 -> [cp36]代表python3.6

也可以在NVIDIA论坛中直接下载对应版本的pytorch:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

下载完成后,安装.whl文件

pip install <包名>.whl

安装pytorchvision

版本对应关系可以在官网中查找https://pytorch.org/

版本对应关系常用对应表:
NVIDIA论坛教程:
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch <version> https://github.com/pytorch/vision torchvision   # see below for version of torchvision to download
cd torchvision
export BUILD_VERSION=0.x.0  # where 0.x.0 is the torchvision version  
python3 setup.py install --user
cd ../  # attempting to load torchvision from build dir will result in import error
pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6

测试

新建.py文件:

import torch
import torchvision
print("torch version: "+torch.__version__)
print("torchvision version: "+torchvision.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))

运行查看结果。

  • 友情链接:

Project ‘cv_bridge‘ specifies ‘/usr/include/opencv‘ as an include dir, which is not found的解决方法:https://blog.csdn.net/qq_53627591/article/details/126116822

[NVIDIA]-5 入手 Jetson Xavier NX 安装opencv3.3.1:https://blog.csdn.net/darnell888/article/details/110734510

Ubuntu18.04 ros-melodic opencv版本冲突问题解决:https://blog.csdn.net/qq_34213260/article/details/123761580

Ubuntu18.04 ROS Melodic的cv_bridge指向问题:https://blog.csdn.net/llllldm/article/details/126334841

  • 24
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值