简介

Jetson Carrier 是一款面向 AI 初学者的入门级开发板,基于 NVIDIA® Jetson 系列硬件平台打造。以高性价比、友好易用与丰富资源为核心优势,助你轻松跨越 AI 从理论到实践的鸿沟,快速上手开发实战。

高性价比,强劲算力

  • 兼容 Jetson Xavier™ NX、Jetson TX2™ NX 与 Jetson Nano™ 核心板,AI 算力覆盖 472 GFLOPS 至 21 TOPS
  • 从容应对从基础图像分类到复杂生成式 AI 等多种任务
  • 价格门槛低,让每位学习者都能轻松入门

丰富接口,灵活扩展

  • 影像采集:支持 2 路双通道 + 1 路四通道 MIPI-CSI 接口,最高适配 4K 摄像头
  • 外设连接:40 针 GPIO 兼容树莓派生态,轻松接驳舵机、LED、各类传感器等
  • 通信与控制:支持 PWM、I2C、SPI、UART 等多种通信协议
  • 高速传输:配备 4 个 USB 3.0、千兆以太网口与 HDMI 2.0 输出
  • 存储与网络扩展:支持 M.2 Key-M(NVMe SSD)、MicroSD 卡、M.2 Key-E(Wi-Fi/蓝牙模块)
  • 可靠供电:DC 电源接口 + PD 协议支持,稳定运行有保障
  • 系统调试:集成 DEBUG 与系统烧录接口,开发更便捷

稳定设计,场景多样

  • 紧凑 PCB 布局,接口防反插与 ESD 防护设计,使用更安心
  • 广泛支持典型 AI 应用:
    • 实时人脸识别与目标追踪
    • ROS 机器人开发
    • 生成式 AI 模型端侧部署

技术规格

  • 兼容模组:Jetson Xavier™ NX、Jetson TX2™ NX、Jetson Nano™
  • 电源输入
    • 支持 PD 60W 协议供电
    • 支持 DC 12V–24V 电源接口
  • 影像采集接口
    • 2 通道 MIPI-CSI × 2
    • 4 通道 MIPI-CSI × 1
  • 外部接口
    • USB 3.0 × 4
    • 千兆以太网口
    • HDMI 2.0
  • 存储扩展
    • M.2 Key-M(支持 NVMe SSD)
    • MicroSD 卡槽
  • 无线扩展
    • M.2 Key-E(用于安装 Wi-Fi/蓝牙模块)
  • 调试与系统烧录
    • 专用 DEBUG 接口
  • 通用接口
    • 40Pin GPIO
  • 产品尺寸:75mm × 120mm

接口布局

产品尺寸

安装系统

NVIDIA SDK Manager

NVIDIA Software Development Kit (SDK) Manager是一款一体化工具,它捆绑开发人员软件并为 NVIDIA SDK 提供端到端的开发环境设置解决方案。

SDK 管理器为您提供:

  • 支持不同的 NVIDIA 硬件开发平台。
  • 闪存不同操作系统的能力。
  • 满足您所有软件开发需求的中心位置。
  • 快速、轻松、简单地设置您的开发环境。
  • 协调 SDK、库和驱动程序组合,以及任何所需的兼容性或依赖性。
  • 软件更新通知让您的系统保持最新版本。

下载并运行 SDK Manager

最新版本的 NVIDIA SDK Manager 可从以下网址下载:

https://developer.nvidia.com/nvidia-sdk-manager

非在线

使用以下两种方法之一 通过NVONLINE下载 SDK Manager :

  1. 通过启用Show Groups Only选项打开活动过滤器,然后单击NVIDIA SDK Manager 的超链接。
  2. 在搜索字段中,键入“SDK Manager”并单击**“搜索”**。找到并单击NVIDIA SDK Manager的超链接。

安装 SDK Manager

  1. 从终端,通过以下方法之一安装 SDK Manager。

    • Ubuntu 主机:安装 Debian 软件包。

      Ubuntu 16.04、18.04、20.04 或 22.04:

      sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb
      
    • CentOS / Red Hat Enterprise Linux 主机:安装 RPM 包。

      CentOS / Red Hat Enterprise Linux 8.0 or 8.2:

      sudo dnf install ./sdkmanager_[version]-[build#].x86_64.rpm
      

      CentOS / Red Hat Enterprise Linux 7.6:

      sudo yum install ./sdkmanager_[version]-[build#].x86_64.rpm
      
      笔记: 在 CentOS 8.0 和 8.2 上您可能会看到以下安装错误:

      Failed to download metadata for repo 'AppStream'

      在这种情况下,请检查存储库的工作,并根据需要更改为其他镜像。
  2. 您可以使用以下两种方法之一启动 SDK Manager

    • 从 Ubuntu 启动器启动 SDK 管理器。

    • 打开终端并使用以下命令启动 SDK 管理器:

      sdkmanager
      
登录 SDK Manager
  1. 为您的帐户类型和安装选择适当的登录选项卡。

    • NVIDIA 开发人员 — developer.nvidia.com

      a. 在浏览器中,输入您的电子邮件地址并点击Sign In

      b. 在 SDK Manager 登录页面上,输入您的 NVIDIA Developer 帐户的密码,然后单击Login

      c. 完成后,SDK 管理器将启动。

    • 二维码登录选项:

      a. 单击登录面板中的二维码图标。

      b. 当二维码图像出现时,通过不同设备上的相机应用程序扫描代码。

      c. 在该设备上输入您的 NVIDIA 开发者帐户的凭据。

      d. 完成后,SDK 管理器将启动。

    • NVONLINE — partners.nvidia.com

      输入您的 NVONLINE 帐户的凭据,然后单击LOGIN

    • 离线 — 安装之前从本地文件夹或安装的驱动器下载并可用的 SDK。有关详细信息,请参阅

  2. 在继续之前,选择是否启用数据收集。

使用SDK Manager 安装 Jetson Software

本节旨在帮助您使用 NVIDIA SDK Manager GUI 成功配置您的开发环境

第一步:器材准备

  1. Jetson Carrier 主板。
  2. Ubuntu18.04 虚拟机(或电脑主机)。
  3. 5V 4A电源适配器。
  4. USB 数据线(Micro USB接口,可传输数据)。

第二步:硬件配置(进入recovery 模式)

  1. 用Typec数据线(注意要是数据线)连接主板的"DBUG&Recovery"接口

  2. 将开关移至Recovery端

  3. 按住REC按钮后接入电源开机

第 三 步:设置开发环境

  1. Step 01 Development Environment窗口中,选择以下内容:

    • Product Category面板中,选择Jetson

    • Hardware Configuration面板中,选择主机和目标硬件。

      如果连接了一个 Jetson 设备(或者连接了多个 Jetson 设备),SDK 管理器将在目标硬件下拉列表中自动选择它。如果您的设备未被自动检测到,请单击Refresh。您可以将鼠标悬停在消息上以显示检测到的硬件的详细信息。

    • Target Operating System面板中,选择操作系统和 JetPack 版本。

    • 如果相关,请选择您要安装的 任何其他 SDK 。

      类别框右下角的省略号 (...) 表示有多个选项可用。单击省略号以显示可用选项的下拉菜单。

      笔记: 您的显示可能与此处显示的不同。此屏幕中的信息是根据您的 NVIDIA 用户帐户访问和权限填充的。如果您在可用选项中没有看到您的产品类别,请确认您的 NVIDIA 帐户已注册到所需的程序。
  2. 单击Continue以继续下一步。

第 四 步:查看组件并接受许可

  1. Step 02 Details and License中,您可以展开主机组件和目标组件面板以查看将安装在您系统上的组件。

    注意:二者都勾选可能会因为EMMC空间不足会导致下载失败。

  2. 要查看许可,请单击页面底部的 license agreements

  3. 启用复选框以接受许可协议的条款和条件。

  4. 如果您希望 SDK 管理器将所有安装文件下载到默认路径以外的位置,请转到位于屏幕底部的下载和安装选项,然后选择您要使用的路径。

    有关下载和安装选项的更多信息,请参阅离线安装。

  5. 选择Continue以继续下一步。

第五步:安装

  1. 安装开始之前,SDK Manager 会提示您输入您的sudo密码。

  2. 显示屏显示软件下载和安装的进度。

    选择Pause / Resume以切换下载和安装过程。

  3. 在顶部,您可以在DetailsTerminal选项卡之间切换。Terminal选项卡显示有关下载和安装的详细信息,并突出显示任何错误。

  4. 在Terminal选项卡上,您可以使用Filter text字段来过滤和搜索特定信息。

  5. 当 SDK 管理器准备好刷新您的目标设备时,它会打开一个对话框。提示提供有关准备设备以准备好闪烁的说明。

    笔记: 闪烁对话框中的说明因您的主机和目标环境设置而异。
    笔记: Jetson Nano Developer Kit 用户需要将 microSD 卡插入 Jetson Nano 模块底部的插槽中,否则刷写过程将失败。

    SDK 管理器支持两种将 Jetson 目标置于强制恢复模式的选项:

    • Automatic setup:通过远程命令将目标设置为强制恢复模式。这需要设备闪烁并且当前正在运行。请按照闪烁对话框中的说明进行操作。

    • Manual setup:通过手动操作将目标设置为强制恢复模式。

      您还可以选择是否预配置 OEM 配置。

    • Pre-Config : SDK Manager 会使用预定义的配置烧写目标,烧写后无需完成系统配置向导。

    • Runtime:目标上没有设置默认配置,您需要在闪烁后手动完成系统配置向导。

      从 Jetpack 版本 4.6 开始,Jetson AGX Xavier 和 Orin 模块可以刷入外部存储。根据闪存对话框中的可用选项,选择要闪存到的外部存储(EMMC、SDCard、NVMe、USB 或自定义)。

  6. SDK Manager 完成刷机过程后,连接到 Jetson 系统的显示器将显示初始设置提示。

    • 作为初始设置过程的一部分,为 Jetson 系统选择用户名和密码。

    • 初始设置过程完成后,Jetson 系统启动到 Linux 桌面。

    • 在 SDK Manager 的 post-flash 安装对话框中输入您在 Jetson 配置期间创建的相同用户名和密码。

      SDK Manager 现在将完成软件库的安装。跳过此步骤不会在您的目标硬件上安装任何 SDK 组件,并且会在您的设备上保持干净的操作系统。

第 六步:完成设置

  1. Step 04 Summary Finalization中,有已安装组件的摘要,以及遇到的任何警告或错误。

  2. 导出Export Debug Logs链接创建一个 ZIP 文件,其中包含安装期间创建的所有日志文件。此 ZIP 文件位于 SDK 管理器安装程序下载所有组件的同一文件夹路径中。或者,单击窗口右上角的菜单图标 (“⋮”),然后从右上角的下拉菜单中 选择Export Debug Logs

  3. 有关您可能遇到的任何错误的信息, 请参阅Error Messages

  4. 单击Finish and Exit以完成安装。

修复卸载

要更新或卸载系统上的 SDK,请再次启动 SDK Manager

  1. 在第 1 步的安装步骤编号下,单击 Repair/Uninstall超链接。

  2. Manage NVIDIA SDKs屏幕显示系统上已安装的内容。您可以选择是修复损坏的安装、更新现有 SDK 还是卸载 SDK。

推荐的恢复步骤

各种安装错误的原因有很多。以下是常见安装问题的清单,可帮助您从损坏的安装中恢复。

  1. 查看摘要表以确定哪个组件发生故障。

    a. 展开状态为“错误”的组。

    b. 当您找到失败的组件时,单击Install Error右侧的详细信息图标 以重定向到Terminal 选项卡,这将显示确切的错误。

  2. 如果错误与环境问题有关,例如损坏的 apt 存储库或缺少先决条件,请尝试手动修复它,然后单击Retry Failed Items按钮。

  3. 还可以通过其他两种方式重试安装:

    a. 从第一步开始,使用 Repair/Uninstall 按钮进入Manage NVIDIA SDKs 页面。如果需要,展开状态为“Broken”的 SDK,然后单击相关部分(Host 或 Target)的 Repair 。

  4. 第一步,选择所需的 SDK 并再次运行安装。

  5. 最后,尝试卸载并重新安装相关的SDK。

U盘启动(复制eMMC上系统)

器材准备

  1. Jetson Nano 主板。
  2. USB接口的U盘的或者移动硬盘 (建议使用USB3.0)。
  3. 电源适配器。

系统安装

  1. 将U盘接入Jetson Nano,查看U盘的设备号,例如sda,打开Jetson Nano终端输入

    ls /dev/sd*
    
  2. 格式化U盘。

    sudo mkfs.ext4 /dev/sda
    

    只剩下sda,如下图:

  3. 修改启动路径

    sudo vi /boot/extlinux/extlinux.conf
    

    找到语句APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0,将mmcblk0p1修改为sda保存

  4. 挂载U盘

    sudo mount /dev/sda /mnt
    
  5. 复制系统到U盘(该过程没有信息打印请耐心等待)

    sudo cp -ax / /mnt
    
  6. 复制完成后卸载U盘(不是拔掉U盘)

    sudo umount /mnt/
    
  7. 重启系统

    sudo reboot
    

使用教程

您的第一个 Jetson container

什么是container?

container是软件的可执行单元,其中应用程序及其运行时依赖项可以全部打包到一个实体中。由于应用程序所需的一切都与应用程序本身打包在一起,因此容器提供了与主机的一定程度的隔离,并且可以轻松部署和安装应用程序,而不必担心主机环境和应用程序依赖性。

什么是Docker?

Docker 是一个用于创建、部署和运行容器的开源平台。Docker 包含在 JetPack 中,因此在 Jetson 上运行容器很容易,不需要任何安装。

什么是NGC?

NVIDIA NGC 是 GPU 优化的深度学习、机器学习和高性能计算 (HPC) 软件的中心。NGC 托管顶级人工智能和数据科学软件的容器——所有这些都由 NVIDIA 调整、测试和优化。NGC 上的容器提供功能强大且易于部署的软件,经证明可快速提供结果,使用户能够从经过测试的框架构建解决方案。

访问 NGC 门户以获取更多信息,网址为https://www.nvidia.com/en-us/gpu-cloud/。

NGC上的Jetson container

Jetson 的几个容器托管在 NVIDIA NGC 上。访问NGC 上托管的 Jetson 容器列表中的Jetson 云原生页面。

使用container

下载container

要下载容器,需要使用“docker pull”命令。

用法:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

有关详细信息,请参阅docker pull文档。

按照以下示例从 NGC 下载 L4T-base 容器:

sudo docker pull nvcr.io/nvidia/l4t-base:r35.1.0

[!NOTE]

一般国内北京时间的早晨开启网络加速比较容易拉取到镜像

请注意,这nvcr.io/nvidia/l4t-base是容器的名称,r35.1.0也是标签。标签提供了一种对容器进行版本控制的方法。

列出container

您可以使用“docker image ls”命令查看已拉入您的开发工具包的容器列表。

用法:

sudo docker image ls [OPTIONS] [REPOSITORY[:TAG]]

有关详细信息,请参阅docker image ls文档。

运行container

容器使用命令运行docker run

用法:

sudo docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

有关详细信息,请参阅docker run文档。

按照以下示例运行 L4T-base 容器:

sudo docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-base:r35.1.0

访问L4T-base 容器页面以获取有关上述 docker run 命令的说明。

恭喜你在 Jetson 上运行了你的第一个容器!

使用以下指令推出当前容器

exit

设置 VNC

什么是VNC?

VNC(虚拟网络计算)使您能够从同一网络上的另一台计算机控制您的 Jetson 开发工具包,方法是从另一台计算机查看开发工具包的桌面并与之交互。要了解有关 VNC 的更多信息,请单击 此处

注意
您的 Jetson 开发工具包和其他计算机需要在同一网络上。需要相当快的网络连接。较慢的连接会降低桌面交互体验。

在 Jetson Nano 上设置 VNC 服务器

  1. 使 VNC 服务器在您每次登录时启动

    如果您有 Jetson Nano 2GB 开发者套件(运行 LXDE)

    mkdir -p ~/.config/autostart
    cp /usr/share/applications/vino-server.desktop ~/.config/autostart/.
    

    对于所有其他 Jetson 开发工具包(运行 GNOME)

    cd /usr/lib/systemd/user/graphical-session.target.wants
    sudo ln -s ../vino-server.service ./.
    
  2. 配置 VNC 服务器

    gsettings set org.gnome.Vino prompt-enabled false
    gsettings set org.gnome.Vino require-encryption false
    
  3. 设置访问VNC服务器的密码

    # Replace thepassword with your desired password
    gsettings set org.gnome.Vino authentication-methods "['vnc']"
    gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)
    
  4. 重启系统使设置生效

    sudo reboot
    

    只有在本地登录 Jetson 后,VNC 服务器才可用。如果您希望 VNC 自动可用,请使用开发工具包上的系统设置应用程序来启用自动登录。

在 Jetson TX2 NX 上设置 VNC 服务器

在没有显示屏的情况下,想要进入Jetson TX2 NX的桌面,此时就需要使用远程桌面登陆。(建议使用显示屏,VNC有一定延时)

Jetson TX2 NX使用vino来作为默认的VNC服务器,但是默认的设置需要进行一些修改。

  1. 配置VNC Server

    gsettings set org.gnome.Vino require-encryption false
    gsettings set org.gnome.Vino prompt-enabled false
    gsettings set org.gnome.Vino authentication-methods "['vnc']"
    gsettings set org.gnome.Vino lock-screen-on-disconnect false
    gsettings set org.gnome.Vino vnc-password $(echo -n "mypassword"|base64)
    
    • 需要注意的是,不要用sudo来运行上面的命令,mypassword就是连接VNC的密码。
  2. 设置桌面开机自启,在.config路径下新建一个自启文件

    mkdir -p .config/autostart
    sudo vim ~/.config/autostart/vino-server.desktop
    
  3. 查看当前用的是什么管理器

    cat /etc/X11/default-display-manager
    
  4. 编辑文件

    sudo vim /etc/gdm3/custom.conf
    
  5. 把下面三行的注释去掉,其中AutomaticLogin行修改成自己的用户名。

    WaylandEnable=false
    AutomaticLoginEnable = true
    AutomaticLogin = waveshare
    
  6. 重启Jetson TX2 NX

    sudo reboot
    

从另一台计算机连接到 VNC 服务

您需要知道 Jetson 开发工具包的 IP 地址才能从另一台计算机进行连接。在您的开发工具包上运行 ifconfig 命令并记下分配给 eth0 接口的 IP 地址(如果使用以太网)、wlan0 接口(如果使用无线)或 l4tbr0(如果使用 USB 设备模式以太网连接)。

WINDOWS

  • 第 1 步:从此处下载并安装 VNC 查看器
  • 第 2 步:启动 VNC 查看器并输入您的开发工具包的 IP 地址
  • 第 3 步:如果您已配置 VNC 服务器进行身份验证,请提供 VNC 密码

MACOS

下面的示例使用 macOS 附带的屏幕共享应用程序。但是,您最喜欢的任何 vnc 客户端也应该可以正常工作。

  • 第 1 步:打开 Finder 并选择前往 | 从菜单栏转到文件夹。
  • 第 2 步: 输入“/System/Library/CoreServices/Applications”并点击 Go
  • 第 3 步: 打开名为 Screen Sharing 的应用程序并输入连接信息。例如:用户名@
  • 第 4 步: 单击连接。
  • 第 5 步:如果您已配置 VNC 服务器进行身份验证,请提供 VNC 密码。

LINUX

下面的示例使用的是 gvncviewer,但是您最喜欢的任何 vnc 客户端也应该可以正常工作。一种流行的替代方法是 remmina。

  • 第 1 步:通过执行以下命令安装 gvncviewer:

    sudo apt update
    sudo apt install gvncviewer
    
  • 第 2 步:启动 gvncviewer

    gvncviewer 
    
  • 第 3 步:如果您已配置 VNC 服务器进行身份验证,请提供 VNC 密码

注意:这些说明也可以在系统映像中包含的 L4T-README 卷上的 README-vnc.txt 文件中找到。您可以通过从开发工具包安装它来访问该卷的内容。

其他计算机也可以通过开发工具包的 USB 设备模式功能访问该卷:

  • 打开您的开发工具包
  • 将另一台计算机连接到您的开发工具包的 Micro-USB 端口(如果是 Jetson AGX Xavier 开发工具包,则为前置 USB-C 连接器)
  • L4T-README 卷将安装在另一台计算机上,包括 README-vnc.txt 等文件。

连接蓝牙音箱

Jetson Nano 2GB 开发者套件没有内置蓝牙。为了将蓝牙音频设备连接到开发工具包,您需要使用 USB 蓝牙适配器。

按照以下步骤在开发工具包上启用蓝牙音频。

蓝牙适配器要求

蓝牙适配器必须支持 Linux 操作系统,并且您需要能够访问蓝牙适配器的驱动程序。

连接蓝牙音频

  1. 在开发工具包上安装蓝牙适配器所需的任何驱动程序。按照蓝牙适配器制造商的说明进行操作。

    安装驱动程序后,您可能必须重新启动开发人员工具包才能使系统启用它

  2. 连接蓝牙适配器(如果您在安装驱动程序时没有连接它)

  3. 导航到此文件:

    /lib/systemd/system/bluetooth.service.d/nv-bluetooth-service.conf
    
  4. 使用文本编辑器更改此行...

    ExecStart=/usr/lib/bluetooth/bluetoothd -d --noplugin=audio,a2dp,avrcp
    

    改为下面内容

    ExecStart=/usr/lib/bluetooth/bluetoothd -d
    

    即,删除‑‑noplugin开关及其所有值。

  5. 在终端中输入这些命令以更新包列表并安装脉冲音频包:

    $ sudo apt-get 更新
    $ sudo apt-get install pulseaudio-module-bluetooth
    
  6. 输入此命令以重启 Jetson 设备:

    $ sudo reboot
    
  7. 重启完成后,配对并连接任何蓝牙耳机

    LXPanel Menu -> Preferences -> Bluetooth Manager

使用 CSI 或 USB 摄像头拍摄您的第一张照片

本指南将向您展示如何快速启动和运行 CSI 和 USB 摄像头。通过遵循本指南,您将能够:

  1. 开始捕捉并在屏幕上预览显示
  2. 拍照并保存到磁盘
  3. 捕获视频并保存到磁盘
  4. 如何使用带有容器的相机

支持的摄像头

Jetson 开发者套件有多个接口用于连接相机,包括 USB、以太网和 MIPI CSI-2。开箱即用地支持流行的相机,Jetson 生态系统合作伙伴支持广泛的 附加相机组合。

开箱即用支持的流行摄像头包括 IMX219 摄像头模块,例如 Raspberry Pi 摄像头模块 V2、Intel Realsense 和 StereoLabs Zed 3D 摄像头,以及标准 USB 网络摄像头。

CSI摄像头

有关如何为 MIPI CSI-2 相机连接带状电缆的信息,请参阅 Jetson Nano 2GB 开发人员套件用户指南

在屏幕上开始捕获和预览显示

为了检查 CSI 相机是否正常工作,您可以运行以下命令,这将开始捕获并在屏幕上预览显示。

nvgstcapture-1.0

此示例命令将图像旋转 180 度(垂直翻转)

nvgstcapture-1.0 --orientation 2
拍照并保存到磁盘

运行时命令行选项

  1. nvgstcapture-1.0
    
  2. 按“j”捕捉一张图像。

  3. 按“q”退出

自动命令行选项

nvgstcapture-1.0 --automate --capture-auto

注意:使用“nvgstcapture-1.0 --help”来参考支持的命令行选项

捕获视频并保存到磁盘

运行时命令行选项

  1. nvgstcapture-1.0
    
  2. 按“1”开始录制视频

  3. 按“0”停止录制视频

  4. 按“q”退出

自动命令行选项

nvgstcapture-1.0 --mode=2 --automate --capture-aut

注意:使用“nvgstcapture-1.0 --help”来参考支持的命令行选项

在docker内使用摄像头

命令是相同的,只需在使用“docker run”启动容器时将此选项添加到命令行即可

--volume /tmp/argus_socket:/tmp/argus_socket

USB摄像头

在屏幕上开始捕获和预览显示

您需要告诉 nvgstcapture 在哪里可以找到您的 USB 摄像头设备(代替默认的 CSI 摄像头)。

# V4L2 USB camera (where <N> is the /dev/videoN node)
nvgstcapture-1.0 --camsrc=0 --cap-dev-node=<N>
拍照并保存到磁盘

运行时命令行选项

  1. nvgstcapture-1.0 --camsrc=0 --cap-dev-node=<N> (where N is the /dev/videoN Node)
    
  2. 按“j”捕捉一张图像。

  3. 按“q”退出

自动命令行选项

nvgstcapture-1.0 --camsrc=0 --cap-dev-node=<N> --automate --capture-auto (where N is the /dev/videoN Node)

注意:使用“nvgstcapture-1.0 --help”来参考支持的命令行选项

捕获视频并保存到磁盘

运行时命令行选项

  1. nvgstcapture-1.0 --mode=2 --camsrc=0 --cap-dev-node=<N> (where N is the /dev/videoN Node)
    
  2. 按“1”开始录制视频

  3. 按“0”停止录制视频

  4. 按“q”退出

自动命令行选项

nvgstcapture-1.0 --mode=2 --camsrc=0 --cap-dev-node=<N> --automate --capture-auto (where N is the /dev/videoN Nod
在docker内使用摄像头

当您使用“docker run ” 启动容器时, 通过将以下选项添加到命令行来安装相应的/dev/video*device:

--device /dev/video0

以上假设您的 V4L2 USB 摄像头是 /dev/video0

有用的资源

硬件控制

Jetson TX1、TX2、AGX Xavier 和 Nano 开发板包含一个 40 针 GPIO 接头,类似于 Raspberry Pi 中的 40 针接头。

GPIO

  • 可以使用 Jetson GPIO 库包中提供的 Python 库来控制这些 GPIO 的数字输入和输出。

  • Jetson GPIO 库提供了 RPi.GPIO 库提供的所有公共 API。下面讨论每个 API 的使用:

    1. 要导入 Jetson.GPIO 模块,请使用:

      import Jetson.GPIO as GPIO
      
    2. 管脚编号

      • Jetson GPIO 库提供了四种对 I/O 引脚进行编号的方法。

      • 前两个对应RPi.GPIO库提供的模式,即BOARD和BCM,分别指的是40针GPIO头的针号和Broadcom SoC GPIO号。

      • 其余两种模式,CVM 和 TEGRA_SOC 使用字符串而不是数字,分别对应于 CVM/CVB 连接器和 Tegra SoC 上的信号名称。

      • 要指定您使用的模式(强制),请使用以下函数调用:

      • 要检查已设置的模式,您可以调用:

        mode = GPIO.getmode()
        

        模式必须是 GPIO.BOARD、GPIO.BCM、GPIO.CVM、GPIO.TEGRA_SOC 或 None 之一。

    3. 如果GRIO检测到一个引脚已经被设置成了非默认值,那么你将看到一个警告信息。

      • 你可以通过下列代码禁用警告:

        GPIO.setwarnings(False)
        
    4. 设置频道

      • GPIO 通道必须在用作输入或输出之前进行设置。要将通道配置为输入,请调用:

        # (where channel is based on the pin numbering mode discussed above)
        GPIO.setup(channel, GPIO.IN)
        
      • 要将通道设置为输出,请调用:

        GPIO.setup(channel, GPIO.OUT)
        
      • 也可以为输出通道指定一个初始值:

        GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
        
      • 将通道设置为输出时,也可以同时设置多个通道:

        # add as many as channels as needed. You can also use tuples: (18,12,13)
        channels = [18, 12, 13]
        GPIO.setup(channels, GPIO.OUT)
        
    5. 输入

      • 要读取通道的值,请使用:

        GPIO.input(channel)
        这将返回 GPIO.LOW 或 GPIO.HIGH。
        
    6. 输出

      • 要设置配置为输出的引脚的值,请使用:

        GPIO.output(channel, state)
        其中状态可以是 GPIO.LOW 或 GPIO.HIGH。
        
      • 您还可以输出到通道列表或元组:

        channels = [18, 12, 13] # or use tuples
        GPIO.output(channels, GPIO.HIGH) # or GPIO.LOW
        # set first channel to LOW and rest to HIGH
        GPIO.output(channel, (GPIO.LOW, GPIO.HIGH, GPIO.HIGH))
        
    7. 清理

      • 在程序结束时,最好清理通道,以便将所有引脚设置为默认状态。要清理所有使用的通道,请调用:

        GPIO.cleanup()
        
      • 如果您不想清理所有频道,也可以清理单个频道或频道列表或元组:

        GPIO.cleanup(chan1) # cleanup only chan1
        GPIO.cleanup([chan1, chan2]) # cleanup only chan1 and chan2
        GPIO.cleanup((chan1, chan2))  # does the same operation as previous statement
        
    8. Jetson Board 信息和库版本

      • 要获取有关 Jetson 模块的信息,请使用/阅读:

        GPIO.JETSON_INFO
        

        这提供了一个带有以下键的 Python 字典:P1_REVISION、RAM、REVISION、TYPE、MANUFACTURER 和 PROCESSOR。字典中的所有值都是字符串,但 P1_REVISION 是一个整数。

      • 要获取有关库版本的信息,请使用/阅读:

        GPIO.VERSION
        

        这提供了一个具有 XYZ 版本格式的字符串。

    9. 中断

      除了忙轮询之外,该库还提供了三种额外的方法来监视输入事件:

      • wait_for_edge() 函数

      • 此函数阻塞调用线程,直到检测到提供的边缘。该函数可以如下调用:

        GPIO.wait_for_edge(channel, GPIO.RISING)
        
      • 第二个参数指定要检测的边沿,可以是 GPIO.RISING、GPIO.FALLING 或 GPIO.BOTH。如果您只想将等待限制为指定的时间,可以选择设置超时:

        # timeout is in milliseconds
        GPIO.wait_for_edge(channel, GPIO.RISING, timeout=500)
        

        该函数返回检测到边缘的通道,如果发生超时,则返回 None。

      • event_detected() 函数

      • 此函数可用于定期检查自上次调用以来是否发生了事件。该函数可以按如下方式设置和调用:

        # set rising edge detection on the channel
        GPIO.add_event_detect(channel, GPIO.RISING)
        run_other_code()
        if GPIO.event_detected(channel):
            do_something()
        

        和以前一样,您可以检测 GPIO.RISING、GPIO.FALLING 或 GPIO.BOTH 的事件。

      • 检测到边缘时运行的回调函数

      • 此功能可用于为回调函数运行第二个线程。因此,回调函数可以与您的主程序并发运行以响应边缘。此功能可按如下方式使用:

        # define callback function
        def callback_fn(channel):
            print("Callback called from channel %s" % channel)
        
        # add rising edge detection
        GPIO.add_event_detect(channel, GPIO.RISING, callback=callback_fn)
        
      • 如果需要,也可以添加多个回调,如下所示:

        def callback_one(channel):
            print("First Callback")
        
        def callback_two(channel):
            print("Second Callback")
        
        GPIO.add_event_detect(channel, GPIO.RISING)
        GPIO.add_event_callback(channel, callback_one)
        GPIO.add_event_callback(channel, callback_two)
        

        在这种情况下,两个回调按顺序运行,而不是同时运行,因为只有线程运行所有回调函数。

      • 为了通过将多个事件合并为一个事件来防止多次调用回调函数,可以选择设置去抖动时间:

        # bouncetime set in milliseconds
        GPIO.add_event_detect(channel, GPIO.RISING, callback=callback_fn,
        bouncetime=200)
        
      • 如果不再需要边缘检测,可以将其删除,如下所示:

        GPIO.remove_event_detect(channel)
        
    10. 检查GPIO通道功能

      • 此功能允许您检查提供的 GPIO 通道的功能:

        GPIO.gpio_function(channel)
        该函数返回 GPIO.IN 或 GPIO.OUT。
        
点亮LED灯
  • 示例程序

    import Jetson.GPIO as GPIO
    import time as time
    
    LED_Pin = 11
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(LED_Pin, GPIO.OUT)
    
    while (True):
       GPIO.output(LED_Pin, GPIO.HIGH)
       time.sleep(0.5)
       GPIO.output(LED_Pin, GPIO.LOW)
       time.sleep(0.5)
    
例程使用
  • 针对jetson.gpio库,官方也提供了一些简单的例程

  • 首先下载jetson-gpio:

    git clone https://github.com/NVIDIA/jetson-gpio
    
  • 下载完成后,我们就可以使用里面的例程了,例如simple_input.py可以读取引脚的状态

    cd /opt/nvidia/jetson-gpio/samples/
    sudo python3 simple_input.py
    

IIC

  1. 首先安装I2Ctool,终端输入:

    sudo apt-get update
    sudo apt-get install -y i2c-tools
    sudo apt-get install -y python3-smbus
    
  2. 检查安装情况,终端输入:

    apt-cache policy i2c-tools
    

    输出如下即为安装成功

    i2c-tools:
    已安装:4.0-2
    候选: 4.0-2
    版本列表:
    *** 4.0-2 500
    500 http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 Packages
    100 /var/lib/dpkg/status
    
i2cdetect
  • 查询i2c设备:

     sudo i2cdetect -y -r -a 0
    

    Jetson-i2c0-1.png

    • 参数: -y是无视交互问题直接执行,-r是SMBus read byte命令,-a是所有地址,0是指SMBus 0。
  • 扫描寄存器数据:

    sudo i2cdump -y 0 0x68
    
  • 寄存器数据写入:

    sudo i2cset -y 0 0x68 0x90 0x55
    
    • 参数:

      参数 含义
      0 代表I2C设备号
      0x68 代表I2C设备地址
      0x90 代表寄存器地址
      0x55 代表向寄存器写入的数据
  • 寄存器数据读出:

    sudo i2cget -y 0 0x68 0x90
    
    • 参数:

      参数 含义
      0 代表I2C设备号
      0x68 代表I2C设备地址
      0x90 代表寄存器地址

SDK安装

Jetpack主要包括系统镜像,库,APIs,开发者工具,示例和一些文档。在SDK Manager软件中,我们首先安装的是OS,也就是系统镜像,未安装的部分便是SDK,如下图,您可以使用指令直接安装或者使用SDK Manger安装

SDK-1.jpg

SDK里包含TensorRT、cuDNN、CUDA、Multimedia API、Computer Vision、Developer Tools。

  • TensorRT :用于图像分类、分割和对象检测神经网络的高性能深度学习推理运行,它加快了深度学习推理的速度,并减少了卷积和反卷积神经网络的运行时内存占用。
  • cuDNN :CUDA深度神经网络库为深度学习框架提供高性能原语,它包括对卷积、激活函数和张量变换的支持。
  • CUDA :CUDA工具包为构建 GPU 加速应用程序的 C 和C++开发人员提供了一个全面的开发环境。该工具包包括用于 NVIDIA GPU 的编译器、数学库以及用于调试和优化应用程序性能的工具。
  • ultimedia API : Jetson Multimedia API为灵活的应用程序开发提供了低级 API。
  • Computer Vision :VPI(视觉编程接口)是一个软件库,提供在PVA1(可编程视觉加速器)、GPU和CPU上实现的计算机视觉/图像处理算法,其中OpenCV是用于计算机视觉、图像处理和机器学习的领先开源库,现在具有用于实时操作的 GPU 加速功能,其中VisionWorks2是一个用于计算机视觉(CV)和图像处理的软件开发包。
  • Developer Tools :Developer Tools CUDA工具包为构建GPU加速应用程序的C和C++开发人员提供了一个全面的开发环境。该工具包包括用于NVIDIA GPU的编译器、数学库以及用于调试和优化应用程序性能的工具。

以上是SDK的部分功能。 前面的系统安装的时候只是安装了基本的系统,其他的JetPack SDK组件,比如CUDA等都需要在系统正常启动后进一步安装,这里提供安装SDK的步骤说明。若要安装该部分,请保证是在以TF卡或者U盘为主系统的情况下,因为下载内容可能会导致EMMC磁盘容量告急。

使用SDK Manager安装

注意:由于该方法过于繁琐,建议使用下方的指令下载,即在开发板上联网操作即可。
使用SDK Manager安装SDK的时候,不需要设置nano为recovery模式。

  • 正常上电启动Nano
  • Jetson Nano进入系统正常启动后,用USB数据线连接Jetson Nano的Micro USB接口到Ubuntu主机
  • Ubuntu主机电脑运行sdkmanager指令打开SDK Managaer(需要先安装SDK Manager)
  • 类似于前面烧录系统的操作,不同的是,在步骤而中,不勾选 OS选项,而是勾选SDK' 选项, 然后continue到安装
  • 在下载资源之后,会弹窗提示填写用户名和密码,填写nano系统的用户名和密码即可
  • 等待SDK安装成功

使用指令安装

没有ubuntu或虚拟机的用户,可以选择在Jetson Nano上使用以下指令直接进行安装

sudo apt update
sudo apt install nvidia-jetpack

如果您的空间只预留了少部分空间,请不要按照上述指令安装,会出现空间不足的问题,耶不要通过sdk manager 去装组件,请按照以下两个指令操作.

sudo apt update
apt depends nvidia-jetpack | awk '{print $2}' | xargs -I {} sudo apt install -y {}

NVIDIA官方资料

软件