软件部分

项目结构

主程序v2.0

程序结构示意图:

程序代码略缩图

主循环写法

参数设置

Pytorch的yolo参数

Tensorrt的cpp文件中的yolo参数

Opencv-python的SGBM的参数

重要功能实现方式(完整代码见附件)

目标检测函数写法(Pytorch为例)

摄像头缓冲区的调用和启动(TensorRT为例)

音频输出函数

坐标转换

硬件部分

硬件连接示意图

项目组用到的硬件,以及选择的原因

Jeston Nano B01 SUB:这款国产开发套件比较好买(官方经常断货),而且是英伟达Jetson家族价格最低的。Jeston Nano也是Jetson家族性能最低,功耗最低(移动电源模式最高5W,MaxN约10W)的。在Jeston Nano上能达到良好性能的代码,在更好的AI开发板上只会运行得更快(续航会下降但不会差很多)。见“建议“一节。

TF卡:系统烧写在比公版更大(16GB->64GB)的TF卡上。不用U盘启动,因为会占用一个USB口。

USB声卡:Jeston Nano B01 SUB上没有3.5mm耳机接口,用USB口转接。这个声卡可以立体声输出,不会把立体声混成单声道。如果选择Jestson Nano蓝牙模块,一方面成本提高,另一方面蓝牙可能不保留立体声信息。

立体声耳机:用3D音频播放声效,与用语音播报障碍物位置相比,能输出障碍物位置信息的速度就大大提高了,保证了实时性。

移动电源:用Micro USB口供电,因为要连接移动电源。DC口电源只在无头模式点亮时需要。

手机:连接USB网络共享,方便环境配置,同时省下来购买Jestson Nano WiFi模块的成本。

U盘:用来传文件。注意需要格式化为Jetpack4能读写的文件系统类型如FAT32。

显示器:开发时用到。但用户可以配置Jetson,使得一插电就自动运行程序(无头启动),不需要从显示器或电脑命令行启动。

开发者必须用到的硬件

用户必须用到的硬件

开发者需要功能:点亮Jeston Nano,配置环境,下载项目文件,开发和调试程序,刷机,重新烧写TF卡

Jeston Nano B01 SUB(但不需要WiFi和蓝牙模块)

TF卡(启动系统,开发套装自带)

USB声卡(转接)

④立体声耳机

⑤移动电源(MicroUSB/5V3A) 

[USB键盘鼠标+显示器+手机+电脑](推荐)

点亮:USB键盘鼠标+显示器点亮Jetson Nano;因为有图形界面,在Jetson Nano上调配环境和调试代码更方便

配置环境,下载项目文件:手机USB网络共享,Jetson Nano直接用PIP配环境、直接下载项目文件

开发和调试程序用电脑上的IDE

重新烧写TF卡:用电脑,没有TF卡槽则需要读卡器

刷机:用电脑连接Jeston Nano

[电脑]

点亮:用电脑无头模式点亮Jetson Nano。(需DC电源)

配置环境,下载项目文件:用电脑USB通信(用Jetson的默认虚拟网卡地址)配环境和下载项目文件。

开发和调试程序可以在电脑上搭建虚拟机,调试好了再放到Jetson Nano上运行。

重新烧写TF卡:用电脑,没有TF卡槽则需要读卡器

刷机:用电脑连接Jeston Nano

用户需要功能:点亮Jeston Nano,配置环境,下载项目文件

Jeston Nano B01 SUB(但不需要WiFi和蓝牙模块)

TF卡(启动系统,开发套装自带)

USB声卡(转接)

④立体声耳机

⑤移动电源(MicroUSB/5V3A)

[USB键盘鼠标+显示器+手机](推荐)

点亮:USB键盘鼠标+显示器点亮Jetson Nano;因为有图形界面,在Jetson Nano上调配环境和调试代码更方便

配置环境,下载项目文件:手机USB网络共享,Jetson Nano直接用PIP配环境、直接下载项目文件

[USB键盘鼠标+显示器+电脑]

点亮:USB键盘鼠标+显示器点亮Jetson Nano;因为有图形界面,在Jetson Nano上调配环境和调试代码更方便

配置环境,下载项目文件:用电脑USB通信(用Jetson的默认虚拟网卡地址)配环境和下载项目文件。

[电脑]

点亮:用电脑无头模式点亮Jetson Nano。(需DC电源)

配置环境,下载项目文件:用电脑USB通信(用Jetson的默认虚拟网卡地址)配环境和下载项目文件。

表中:红色:必须用到的硬件

橙色:必须用到的硬件,但除了应用于项目还能用来干其他事,用户可能已经拥有

蓝色:这些硬件组合任选其一,下方的斜体为具体实现方式

成本分析

    在此节中,顺便介绍一下用户复现本项目需要的成本。

材料名称

数量

金额

JESTON开发版套件[包括Jeston Nano B01,亚克力外壳,风扇,线材,TF卡,读卡器]

1

¥1249

摄像头模组[双目摄像机,外壳,线材]

1

¥261.4

立体声耳机(3.5mm口)

1

(¥100)

USB声卡

1

¥30

移动电源(MicroUSB/5V3A)         

1

(¥50)

手机(USB网络分享)

1

未计入

键鼠(USB)

1

未计入

显示器(HDMI/DP)

1

(¥179)

        总结:默认用户有手机和键盘鼠标,则成本为1540元,如果用户需要显示器、耳机、移动电源,则成本最高为1869元。如果用户不需要显示器(用电脑命令行启动和操作Jetson Nano),则加上耳机和移动电源的成本为1690元。

性能演示

在PC上:检测成功率较好,延时~0.03s

在Jetson Nano上:检测成功率较好,延时~0.35s(详见演示视频)

Jetson Nano上的功耗:移动电源模式最高5W,若移动电源74Wh,则可运行至少12小时

笔记本(OS:Windows 11/ CPU 架构:x86_64/ GPU 架构:Ada Lovelace)

Jeston NanoOSUbuntu/CPU架构:ARM64/GPU架构:Maxwell

PC运行效果

Jetson运行效果演示

代码下载

Github

环境配置

建议用Pycharm开发;建议用conda。

Python:3.9.21

建议按以下顺序配置:

  1. opencv-python  4.5.1.48    
  2. cudatoolkit    11.8.0    //torch+cuda安装可参考:对应关系 安装教程
  3. cudnn    8.9.2.26
  4. torch    2.3.1+cu118    
  5. torchaudio    2.3.1+cu118  
  6. torchvision    0.18.1+cu118    
  7. pyaudio    0.2.14

 PC详细配置:

absl-py    2.2.2    
blas    1.0    
ca-certificates    2025.9.9    
colorama    0.4.6    
coloredlogs    15.0.1    
comtypes    1.4.10    
contourpy    1.3.0    
cudatoolkit    11.8.0    
cudnn    8.9.2.26    
cycler    0.12.1    
filelock    3.18.0    
flatbuffers    25.2.10    
fonttools    4.57.0    
fsspec    2025.3.2    
grpcio    1.71.0    
h5py    3.13.0    
humanfriendly    10.0    
icc_rt    2022.1.0    
importlib-metadata    8.6.1    
importlib-resources    6.5.2    
intel-openmp    2021.4.0    
jinja2    3.1.6    
kiwisolver    1.4.7    
markdown    3.7    
markdown-it-py    3.0.0    
markupsafe    3.0.2    
matplotlib    3.9.4    
mdurl    0.1.2    
mkl    2021.4.0    
mkl-service    2.4.0    
mkl_fft    1.3.11    
mkl_random    1.2.8    
mpmath    1.3.0    
networkx    3.2.1    
np    1.0.2    
numpy    1.23.0    
onnx    1.17.0    
onnxruntime    1.19.2    
onnxsim    0.4.36    
opencv-python    4.5.1.48    
openssl    3.0.18    
packaging    24.2    
pillow    9.5.0    
pip    25.0    
protobuf    6.30.2    
pyaudio    0.2.14    
pygments    2.19.1    
pyparsing    3.2.3    
pypiwin32    223    
pyreadline3    3.5.4    
python    3.9.21    
python-dateutil    2.9.0.post0    
pyttsx3    2.98    
pywin32    310    
rich    14.0.0    
scipy    1.13.1    
setuptools    75.8.0    
six    1.17.0    
sqlite    3.45.3    
sympy    1.13.1    
tbb    2021.13.1    
tensorboard    2.19.0    
tensorboard-data-server    0.7.2    
thop    0.1.1-2209072238    
torch    2.3.1+cu118    
torchaudio    2.3.1+cu118    
torchsummary    1.5.1    
torchvision    0.18.1+cu118    
tqdm    4.67.1    
typing-extensions    4.13.1    
tzdata    2025a    
ucrt    10.0.22621.0    
vc    14.42    
vc14_runtime    14.44.35208    
vs2015_runtime    14.44.35208    
werkzeug    3.1.3    
wheel    0.45.1    
zipp    3.21.0

建议

Jetson Nano是jetson家族中性能最低的,如果愿意增加成本,可以将代码在Jetson其他产品上运行,参考附录的环境配置部分。选择其下一代产品Jetson Orin Nano 成本增加最低(¥1000),可将推理性能提升40倍(0.5TOPS->40TOPS)。但功耗也提高(5-10W->7-15W)。

[Jetson产品性能比较]

使用内置深度算法的双目相机也能显著提升性能,例如英特尔 RealSense D435i或奥比中光 Gemini 335(¥2000),因为这意味着不需要调用Opencv-python的SGBM算法。

如果需要在jetson其他产品上进行tensorrt加速(优势:不需要安装pytorch+cuda,简化环境配置),在正确配置环境后,本代码直接可运行。

如果需要在jetson其他产品上进行pytorch+cuda加速的话(优势:不需要在jetson或虚拟机上编译,调试yolo参数比较方便),我们在此提供对应的环境配置方案:

在更强的Jetson开发板上配置项目环境:

例:Jetson Orin Nano

①查看Jetpack版本

Jetpack 5.1.2(cuda 11.4.19 cudnn 8.6.0)

②在jetson上进行torch install with cuda enabled

运行pytorch for jetson官方whl 

[Pytorch For Jetson]

③在jetson上进行torchvision install with cuda enabled

下载并编译torchvision源码

④配置项目所需其他依赖

终端运行Pip install指定版本对应库

更多推荐