Jetson Xavier NX环境搭建(ROS、PyTorch、OpenCV)

1. JetPack 安装

5.12版本地址

使用SD卡安装即可。

2. Pip安装

sudo apt-get update
sudo apt-get install python3-pip

3. CUDA环境变量配置

sudo vim ~/.bashrc
# 在最后面添加
export PATH=/etc/local/cuda-11/bin:$PAHT
export LD_LIBRARY_PATH=/etc/local/cuda-11/lib64:$LD_LIBRARY_PATH

#添加完成后,使用如下指令让其生效
source ~/.bashrc

#使用nvcc 查看是否添加成功
nvcc -V

4. ROS2安装

# 使用鱼香肉丝 fishros.com 提供的方式进行安装
wget http://fishros.com/install -O fishros && . fishros

5. ROS2卸载

# 使用如下指令卸载ROS2,humble需换成自己的ROS2版本号
sudo apt remove ~nros-humble-* && sudo apt autoremove

6. 安装pytorch

6.1 安装环境依赖

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython

6.2 安装pytorch、torchvision

  • 下载

Pytorch for Jetson

从上述链接中下载需要(与安装的Jetpack及cuda对应的版本)。

  • 安装

参考[Installation]模块进行安装

sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install Cython<3
# 安装自己下载的版本 
pip3 install numpy torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl  
  • 安装torchvision
$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
# see below for version of torchvision to download
# 这里以安装的2.1为例,<version>为torchvision v0.16.1
$ git clone --branch v0.16.1 https://github.com/pytorch/vision torchvision   
$ cd torchvision
$ export BUILD_VERSION=0.16.1  # 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
  • 验证是否安装成功
import torch
import torchvision
print(torch.__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))
print(torchvision.__version__)

7. 环境信息查看

sudo jtop
# 按INFO对应的数字,能够查看环境信息

8. 安装OpenCV

8.1 准备工作

# 确认gcc版本,版本为9.4.0,版本在8.x或9.x以上都没问题
gcc --version

8.2 安装CMake

  • 下载

此处安装版本为3.26.5,可以在Cmake官网下载,也可以点此链接下载CMake-3.26.5

  • 解压缩,并添加环境变量
# 在.bashrc文件进行配置,在其末尾添加如下内容
export PATH=/home/liuqiang/cmake-3.8.2-Linux-86_64/bin:$PATH
  • 生效环境变量
source ~/.bashrc
  • 查看是否安装成功
cmake --version

8.3 卸载JetPack自带的OpenCV(这个版本不支持CUDA)

sudo apt-get purge libopencv*

8.4 安装、编译

# 解压openCV
tar xzvf opencv-4.8.1.tar.gz
# 解压opencv_contrib-4.8.1,并将其移动至opencv-4.8.1,修改文件夹名称为opencv_contrib
tar xzvf opencv_contrib-4.8.1.tar
mv opencv_contrib-4.8.1 ./opencv-4.8.1/opencv_contrib
  • 配置、编译
# 进入OpenCV
cd opencv-4.8.1
# 新建Build文件夹
mkdir build
# 安装依赖项,可根据需要自行增减
sudo apt-get install libgtk2.0-dev pkg-config libpng-dev  libjpeg-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev gstreamer1.0-plugins-base python3-dev python3-numpy python3-py
# 使用如下命令进行编译
#在build文件夹下执行
cd bulid
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D BUILD_opencv_legacy=ON -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D CUDA_ARCH_BIN='7.2' -D WITH_CUDA=1 -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D OPENCV_GENERATE_PKGCONFIG=1 -D WITH_GTK_2_X=ON ..

# 待cmake成功后
sudo make -j6 #-j6的前提是NX需配置成6核心

# 若make失败,根据提示问题进行修改,并 sudo make clean后再次进行make
# 待make成功后,打包安装opencv
sudo make install


# 若 import cv2 出现找不到cv2的情况(可能原因是在编译cv2时指定了python版本),可使用以下方式解决。(默认python版本是python3.8)
#在.so文件所在文件夹中执行
cd ./opencv-4.8.1/bulid/lib/python3/
sudo cp cv2.cpython-38-aarch64-linux-gnu.so /usr/local/lib/python3.8/
#进入目标文件夹
cd /usr/local/lib/python3.8/
#将.so文件重命名为cv2.so
sudo mv cv2.cpython-38-aarch64-linux-gnu.so cv2.so

> OpenCV参考博客[在Jetson Xavier NX上安装编译OpenCV完整流程+踩坑记录](https://blog.csdn.net/Notabey/article/details/134286738)
12-13 09:26