前言
Jetson Orin Nano最重要的功能之一就是机器视觉方向的开发,调出摄像头预览画面是这一切工作的基础。通过Jetpack和其它工具,可以完成对摄像头的基础配置。
一、硬件准备
本文使用两个15针CSI接口的IMX219摄像头作为示例,通过22针转15针排线与Jetson Orin Nano的载板相连接。

两个摄像头均支持红外夜视,因此后面的成像效果可以看到是偏红的。
二、安装JetPack
JetPack是NVIDIA为Jetson系列边缘计算平台提供的综合性软件开发工具包(SDK),包含官方载板的全套板级支持驱动、开发者工具、计算加速工具等等,广义来说,Jetson Orin Nano运行的操作系统Jetson Linux(Linux for Tegra,简写作L4T)也是JetPack的一部分,因为这个特殊的Ubuntu系统本身就是专门为Jetson系列产品高度定制的。JetPack是Jetson Orin Nano开发的必备软件基础。
之前烧录的系统是不带Jetson SDK等组件的,需要自行安装。打开"终端",输入下面指令可以查看是否已经安装了JetPack组件:
bash
dpkg -l | grep nvidia-jetpack
如果只装了系统就是没有输出的。但是输入查看L4T版本信息得命令可以看到系统内核版本:
bash
cat /etc/nv_tegra_release
据此可了解其对应的JetPack版本信息:通过所包含的JetPack驱动层面的一些信息。

比如上图中R36为L4T的主版本号,对应JetPack 6.x系列;REVISION: 5.0为修订版本,即L4T的完整版本为36.5.0,对应JetPack版本6.2.2。
输入下面的指令安装JetPack:
bash
sudo apt install nvidia-jetpack
出现输入,按"y"键确认即可。

等待安装完成即可。安装完成后,CUDA、cuDNN、TensorRT等组件就都装好了。
三、安装pip3
pip3是Python 3的包管理工具,用于安装、卸载、管理Python 3环境中的第三方库(如numpy、requests等,包括后面的jetson-stats)。在"终端中"输入下面的指令安装:
bash
sudo apt install python3-pip
安装完成后可以通过版本号指令验证一下:
bash
pip3 --version
如果出现版本号信息则说明安装成功了。
四、安装jetson-stats
jetson-stats是一个专为NVIDIA Jetson系列产品(如Orin, Xavier, Nano, TX等)设计的开源、多功能系统监控与控制工具包,由第三方开发者提供,并已得到NVIDIA开发者官方网站的推荐。它不仅仅是一个简单的监控程序,更是一套可以通过命令行和 Python 脚本灵活使用的强大开发伴侣。其最常用的组件为硬件资源监控器jtop。首先,在"终端"中输入下面的指令通过pip3来安装:
bash
sudo pip3 install -U jetson-stats
安装完成后,将当前用户加入video组,防止产生权限问题:
bash
sudo usermod -aG video $USER
需要重启机器才能生效。重启后,打开"终端",输入指令:
bash
jtop
即可打开jtop监控界面:

可以看到jtop包含多个页面,直接输入前面的数字可以切换到具体硬件的页面。
此外,jtop还可以作为一个Python库直接导入到自己的脚本中,实现程序化访问Jetson的各项数据。对于自动化运维、数据采集和自定义监控面板等场景非常有用。例如下面的代码片段:
python
from jtop import jtop
with jtop() as jetson:
if jetson.ok():
# jetson.stats 会返回一个包含所有硬件信息的字典
print(jetson.stats)
这段代码可以使Jetson用户在自己的程序中获取设备的所有实时数据,输出的数据结构完整,可以方便地集成到任何项目中。
五、在jetson-io中配置摄像头
确保摄像头都已经连接正常,在终端中输入:
bash
sudo /opt/nvidia/jetson-io/jetson-io.py
启动配置CSI Connector界面,选择配置Jetson 22pin CSI Connector,按回车键继续:

确认当前CSI Connector IO配置:由于这里使用的是默认载板,摄像头也是兼容默认载板的,所以也不用确认了,直接按回车键继续:

硬件连接了两个IMX219摄像头,选择对应的IMX219双摄即可:(注意后面选项中的A和C分别对应CSI0和CSI1接口。)

保存CSI Connector IO配置:

确认保存,并重启生效CSI Connector IO配置:

按任意键重启:

重启后,在终端输入指令查看是否识别到了这两个摄像头:
bash
ls /dev/video*
硬件连接正常的话是可以识别到的:

输入指令测试摄像头0:
bash
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1' ! nvvidconv ! nv3dsink sync=false
可以看到弹出摄像头0的预览画面:

输入指令测试摄像头1:
bash
gst-launch-1.0 nvarguscamerasrc sensor-id=1 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1' ! nvvidconv ! nv3dsink sync=false
可以看到弹出摄像头1的预览画面:

输入指令同时打开两个摄像头:
bash
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1' ! nvvidconv ! nv3dsink sync=false &
gst-launch-1.0 nvarguscamerasrc sensor-id=1 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1' ! nvvidconv ! nv3dsink sync=false
可以看到弹出两个摄像头的预览画面:

摄像头连接测试成功。
六、安装v4l
Video for Linux工具集,即v4l-utils,包含了诸多用于摄像头调试的实用程序。其安装命令如下:
bash
sudo apt install -y v4l-utils
安装完成后可以使用版本指令测试是否安装成功:
bash
v4l2-ctl --version
使用指令可以查看摄像头所支持的视频输出格式:
bash
v4l2-ctl -d /dev/video0 --list-formats-ext
可以看到当前摄像头支持的全部输出格式:

也可以使用指令查看摄像头当前正在使用的格式信息:
bash
v4l2-ctl -d /dev/video0 --get-fmt-video
可以看到输出信息:

v4l还支持很多其他功能,后续利用摄像头调试开发能够用上。
总结
JetPack和摄像头是Jetson Orin Nano最重要的应用场景之一,完成这一步是后续开发其他应用的基本前提。jtop、v4l工具也是常用的软件,对于开发应用有很重要的作用。