Jetson全流程笔记转载与集合


文档说明:本文档参考、链接了大量博文,在此表示感谢!!!
我的设备:Jetson Xavier NX,部分过程同样适用于其他 Jetson 设备

1 刷机

使用NVIDIA SDK MANAGER进行刷机

博主使用虚拟机进行刷机,实操过程中,存在以下两个问题:
一是提示磁盘空间不足,我给了虚拟机20G的磁盘,当时忘记截图了,建议给50G以上,也有可能是我按默认选项进行刷机,需要下载的文件比较多的原因。
二是下载速度很慢,即使我使用桥接模式,并在win11主机科学上网,下载速度依旧很慢且不稳定,不过并没有尝试给虚拟机安装clash。
综上,如果使用NVIDIA SDK MANAGER刷机,建议使用可以科学上网的对应版本的Ubuntu主机给Jetson刷机。
此外,由于我的Jetson Xavier NX的磁盘空间有限,无法安装NVIDIA SDK MANAGER默认的所有文件,因此刷机时只刷了Jetson OS,CUDA等驱动后续手动安装。
另外,刷机完成后,没有中文显示,无法中文输入,即使设置中都改为China、Chinese也不行,原因可能是相应资源没有下载,在“区域与语言”设置界面中点击“管理已安装的语言”,系统将自动检测并下载相应的语言和输入法资源,如下图所示(忘记截英文界面的图了)。
在这里插入图片描述

2 远程桌面与远程文件传输

远程桌面与远程文件传输

Jetson的性能较差,开发过程中难免需要使用自己的电脑查阅资料。为避免开发过程中“两个显示器两套键盘两套鼠标的繁琐情况”,需要远程Jetson的桌面。
之前我尝试过安装虚拟显示软件,但每次开机图形化桌面就会消失,只剩文本界面,导致RealVNC无法远程,后续还是老老实实使用HDMI欺骗器了,方便又好用。

3 上电自启动

上电自启动

很多时候,Jetson是放在机器人内部的,无法手动开机,需要设置上电自启动。

4 安装 jtop 工具

安装jtop工具

更便捷的查看、管理Jetson硬件资源,如下图所示。
在这里插入图片描述

5 外接硬盘挂载到 /home

外接硬盘挂载到 /home

6 外接硬盘挂载到 /

Jetson板卡上的硬盘容量较小,需要将 / 迁移到外接硬盘。

(1)外接硬盘设备名确认

sudo fdisk -l

在这里插入图片描述
可见,我的外接硬盘设备名为 /dev/nvme0n1。

(2)外接硬盘分区与格式化

外接硬盘分区与格式化请参考 “ 5 外接硬盘挂载到 /home ” 。
记录分区的UUID:

sudo blkid | grep /dev/nvme0n1p1

在这里插入图片描述

(3)临时挂载外接硬盘

sudo mkdir /mnt/new_root
sudo mount /dev/nvme0n1p1 /mnt/new_root

(4)复制根目录

sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/new_root/

(5)更新外接硬盘的引导配置

编辑 fstab 文件,确保根目录指向外接硬盘的UUID:

sudo gedit /mnt/new_root/etc/fstab

修改根目录行,替换为外接硬盘的UUID:

UUID=xxxx-xxxx-xxxx-xxxx / ext4 defaults 0 1

(6)修改Jetson的引导文件

Jetson设备使用 extlinux.conf 引导,需要更新根目录参数:

sudo gedit /boot/extlinux/extlinux.conf

找到 APPEND 行,修改 root= 参数为外接硬盘的UUID:

APPEND root=UUID=xxxx-xxxx-xxxx-xxxx rootwait rootfstype=ext4

(7)重启验证

sudo reboot
df -h | grep /dev/nvme0n1p1

最终效果如下图所示,这样就可以肆无忌惮下载各种库、包、数据了。
在这里插入图片描述

7 免密

免密
该篇博文插入内容存在问题,应该插入以下内容:

# 替换 username 为用户名
username	ALL=(ALL:ALL) NOPASSWD:ALL

8 安装 CUDA cuDNN TensorRT

这些驱动用于加速神经网络等的运行,请务必安装对应于 Jetpack 和 CUDA 版本的驱动,我之前安装的 cuDNN8.9.6 并不适配 CUDA11.4,导致无法进行卷积操作。
安装前通过 jtop 查看 Jetpack 的版本,如下图所示,可见,我的 Jetpack 版本为5.1.4,我选择 CUDA11.4,cuDNN8.6.0,TensorRT8.2.3。
在这里插入图片描述

(1)安装 CUDA

安装 CUDA

sudo apt-get update
sudo apt-get install cuda-toolkit-11-4

配置环境变量

sudo gedit ~/.bashrc
# 末尾插入以下内容并保存
export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

验证安装

nvcc -V

在这里插入图片描述

(2)安装 cuDNN

从NVIDIA官网下载cuDNN 安装包 ,选择 Linux aarch64 版本,我下载的是 cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_arm64.deb

安装 cuDNN 本地包

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_arm64.deb

可能存在GPG相关报错,将 GPG 密钥文件复制到 /usr/share/keyrings/ 目录

sudo cp /var/cudnn-local-repo-ubuntu2004-8.6.0.163/cudnn-local-04A93B30-keyring.gpg /usr/share/keyrings/

重新运行安装指令

更新本地软件源

sudo apt update

安装 cuDNN

sudo apt install libcudnn8

配置环境变量

sudo gedit ~/.bashrc
# 末尾插入以下内容并保存
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CPATH=/usr/local/cuda/include:$CPATH
export PATH=/usr/local/cuda/bin:$PATH
source ~/.bashrc

验证安装

dpkg -l | grep libcudnn

在这里插入图片描述

(3)安装 TensorRT

从NVIDIA官网下载TensorRT 安装包 ,我下载的是 nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.3.0-ga-20220113_1-1_arm64.deb

安装 TensorRT 本地包

sudo dpkg -i nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.3.0-ga-20220113_1-1_arm64.deb

可能存在GPG相关报错,添加 GPG 密钥

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub

重新运行安装指令

更新本地软件源

sudo apt update

安装 TensorRT

sudo apt-get install tensorrt

验证安装(安装中被升级到了 8.5.2 版本)

dpkg -l | grep TensorRT

在这里插入图片描述

9 安装 miniconda

安装 miniconda 以管理 python 环境,且方便未来迁移。由Anaconda官网下载 miniconda 安装包,我下载的是 Miniconda3-latest-Linux-aarch64.sh。

安装 miniconda

bash Miniconda3-latest-Linux-aarch64.sh

验证安装

conda -V

设置终端打开时不自动激活 conda 环境

conda config --set auto_activate_base false

设置终端默认激活特定的 conda 虚拟环境

conda config --set auto_activate_base false
# 配置环境变量,替换 env_name 为环境名
echo "conda activate env_name" >> ~/.bashrc
source ~/.bashrc

10 pip 使用国内镜像源

pip 使用国内镜像源

# 例如
pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

11 安装 torch torchvision

安装 torch 和 torchvision,以更好地支持深度神经网络的运行。
根据 Jetpack 版本,选择对应的 torch 和 torchvision 版本,并下载,下载地址分别是 PyTorch for Jetsonpytorch / vision
我的 Jetpack 版本为5.1.4,下载的分别是 torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl 和 vision-0.16.0.tar.gz。
非手动下载安装可参考这篇博文 PyTorch&Torchvision安装,下文是手动下载后安装。

(1)安装 torch

我安装在新建的 conda 环境 py38 中。

在 torch 安装包所在文件夹打开终端,进入 py38 环境

安装依赖项

sudo apt install libopenblas-dev

安装 torch

pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl

验证安装

pip list
python
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.backends.cudnn.version())

在这里插入图片描述

(2)安装 torchvision

解压 vision

tar -zxvf vision-0.16.0.tar.gz -C 目标路径

进入 vision 解压包,进入 py38 环境

安装依赖项

sudo apt install libjpeg-dev libpng-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install ninja-build cmake
pip install numpy requests Pillow

编译安装 torchvision

# 设置环境变量
export BUILD_VERSION=0.16.0
# 编译安装 torchvision
python3 setup.py install --user

验证安装

pip list
python
import torchvision
print(torchvision.__version__)

在这里插入图片描述

12 conda 环境运行 ROS

小鱼一键安装 ROS,配置 rosdep

wget http://fishros.com/install -O fishros && . fishros

conda 虚拟环境安装 ROS 包

pip install rospkg rospy catkin_tools

ROS 在原生环境和 conda 环境下的运行测试参考该博文,如何在ROS中使用anaconda虚拟环境?

为了每次打开终端都能直接在 conda 环境下运行 ROS,有以下两种方法:

方法一:设置终端默认激活特定的 conda 虚拟环境
见 9 安装 miniconda

方法二:配置 conda 虚拟环境为默认 python 环境,以我创建的 py38 为例

  • 将相关 ROS 程序第一行的环境路径更改为 conda 虚拟环境的路径,仅对当前程序有效。
#!/home/your_username/miniconda3/envs/py38/bin/python3
  • 添加 conda 虚拟环境的环境变量到 .bashrc 文件中,对所有程序有效,且不受程序第一行环境路径影响。
# 末尾插入以下内容并保存,替换 your_username 为用户名
export PYTHONPATH=/home/your_username/miniconda3/envs/py38/lib/python3.8/site-packages:$PYTHONPATH
source ~/.bashrc

13 安装 PyCharm 和 VSCode

PyCharm下载地址
VSCode下载地址
我分别下载的 pycharm-community-2024.3.tar.gz 和 code_1.83.1-1696982739_arm64.deb

(1)安装 PyCharm

可参考这篇博文ubuntu22.04下安装.tar.gz格式文件中的第二类软件安装过程。

  1. 解压
tar -zxvf pycharm-community-2024.3.tar.gz -C 目标路径
  1. 安装Java运行环境
sudo apt update
# 安装Java17
sudo apt install oracle-java17-installer
# 设置环境变量
sudo gedit ~/.bashrc
# 添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-17-oracle
export PATH=$PATH:$JAVA_HOME/bin
# 重新加载环境变量
source ~/.bashrc
  1. 运行
cd 目标路径/bin
./pycharm.sh

运行后在软件设置中设置中文语言、创建桌面快捷方式。

(2)安装 VSCode

安装包路径下执行安装指令:

sudo dpkg -i code_1.83.1-1696982739_arm64.deb

从终端启动:

code
# 若code无法启动,或者启动后提留在界面不显示内容,请尝试以下指令
code --no-sandbox

从桌面快捷方式无法启动原因同上,具体解决方法请参考这篇博文Jetson Xavier NX安装VS Code无法启动问题解决

VSCode插件配置请参考的古月居ROS2开发环境配置

14 YOLOv8 目标检测

windows端训练过程参考这篇博文windows使用YOLOv8训练自己的模型

训练后部署到Jetson。确保 Jetson 安装了对应于 Jetpack 版本的 CUDA、cuDNN、TensorRT 驱动,python 环境中安装了相应版本的 torch、torchvision,版本错误可能导致无法进行卷积等操作。
部分代码如下:

        # YOLOv8实时检测(使用GPU加速)
        results = model.predict(
            source=frame,
            conf=0.5,  		# 置信度阈值
            imgsz=640,  	# 输入尺寸(越小越快)
            device="0",  	# 显式指定使用GPU 0
            half=True,  	# 启用FP16半精度推理(提升速度)
            verbose=False  	# 关闭冗余输出
        )

实现效果如下:
在这里插入图片描述
更加全面的 Jetson 配置 YOLOv11 环境,请参考该专栏Jetson配置YOLOv11环境

15 Yolov8_ros

此部分参考该博文,yolov8 ros 功能包
roslaunch usb_cam usb_cam-test.launch 输出图像的话题名为 /usb_cam/image_raw ,因此 yolo_v8.launch 中修改为此。
在这里插入图片描述
会报错找不到 yolov8_ros_msgs ,如下图所示。需要将工作空间的 setup.bash 添加到环境变量中。

source /工作空间/devel/setup.bash

在这里插入图片描述

最终效果如下图。
在这里插入图片描述

持续更新······

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0x62696E

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值