Jetson Nano

Jetson Nano — это маленький, но мощный компьютер, созданный специально для работы с искусственным интеллектом (ИИ) и машинным обучением.

Jetson Nano DEV-KIT-SUB

Что может такой компьютер?

  • распознавать объекты на видео (например, лица, машины, жесты);

  • управлять роботами и дронами;

  • обрабатывать звук и речь (как в умных колонках);

  • работать с нейросетями, как ChatGPT, но в миниатюре.

Чем отличается от обычного компьютера?

  • размер: как большая кредитная карта;

  • энергоэффективность: потребляет мало энергии (можно питать от powerbank);

  • ориентация на ИИ: у него есть встроенный графический ускоритель (GPU), который умеет работать с нейронными сетями.

Для чего используют Jetson Nano?

  • умные камеры (например, для безопасности);

  • автономные роботы (уборщики, исследователи);

  • домашние проекты на Python (распознавание голоса, жестов).

Аналог Raspberry Pi, но для ИИ

Если Raspberry Pi — это универсальный микрокомпьютер, то Jetson Nano — его умный брат, который лучше справляется с задачами вроде компьютерного зрения.

Совет

Можно подключить камеру, и Jetson Nano будет в реальном времени определять, кошка это или собака — и выводить результат на экран или в систему управления роботом.

Модификации Jetson Nano

Всего существует три официальных комплектации Jetson Nano:

  • Jetson Nano — 4 ГБ ОЗУ, материнская плата P3448-0002 B01;

  • Jetson Nano 2GB — 2 ГБ ОЗУ, материнская плата P3448-0002 A02;

  • Jetson Nano — отдельный вычислительный модуль со встроенной eMMC-памятью.

Если сами модули всегда оригинальные, то среди материнских плат существуют альтернативные варианты, не уступающие оригиналам по характеристикам.

Например, материнская плата B01 SUB от компании Yahboom имеет дополнительный разъём MicroUSB. Плата JETSON-IO-BASE-A от Waveshare имеет более простую схемотехнику и тоже дополнительный MicroUSB.

Примечание

В большинстве реальных задач данные модификации материнских плат можно считать эквивалентными.

Характеристики Jetson Nano

  • Графический процессор: архитектура NVIDIA Maxwell™ с 128 ядрами NVIDIA CUDA®;

  • Процессор: четырёхъядерный ARM® Cortex®-A57 MPCore;

  • Память: 4 ГБ LPDDR4, 64-bit;

  • Память (опционально): 16 ГБ eMMC 5.1 Flash;

  • Производительность: 472 GFLOPS;

  • Разъём: M.2 Key E;

  • Кодирование видео: разрешение 4K, частота 30 (H.264/H.265);

  • Декодирование видео: разрешение 4K, частота 60 (H.264/H.265);

  • Камера: 12 каналов (3×4 или 4×2) MIPI CSI-2 DPHY 1.1 (18 Гбит/с);

  • Сеть: Gigabit Ethernet;

  • Дисплей: разъём HDMI 2.0 или DP1.2 / eDP 1.4 / 2 одновременно подключаемых разъёма DSI (1×2);

  • UPHY: 1 разъём 1/2/4 PCIE, 1 разъём USB 3.0, 3 разъёма USB 2.0;

  • Ввод/вывод данных: 1 разъём SDIO / 2 разъёма SPI / 4 разъёма I2C / 2 разъёма I2S / GPIO;

  • Размеры: 100 × 80 × 29 мм.

Материнская плата Jetson Nano (JETSON-IO-BASE-A)

Материнская плата JETSON-IO-BASE-A с обозначениями
  1. Сокет для вычислительного модуля;

  2. Слот для MicroSD-карты;

  3. Разъём M.2 Key E для подключения WiFi-модуля AC8265;

  4. Разъём 1.25 мм для вентилятора;

  5. Разъём для PoE-модуля;

  6. 40-контактный GPIO-разъём, совместим с Raspberry Pi;

  7. Разъём 2.54 мм для вентилятора;

  8. Разъём Micro USB для питания и соединения с ПК;

  9. Разъём Gigabit Ethernet с поддержкой 10/100/1000Base-T auto-negotiation;

  10. 4× USB 3.0;

  11. Разъём HDMI;

  12. Разъём DisplayPort;

  13. Разъём питания DC;

  14. 2× разъёма MIPI CSI для подключения камеры;

  15. Многофункциональный 12-контактный разъём:

    • используется для перевода платы в разные состояния путём замыкания определённых контактов;

    • Connect PWR_BTN and GND pin to initiate power-on if Auto-Power-On disabled;

    • Connect DIS and AUTO ON to disable Auto-Power-On and require power automation press;

    • Connect FC REC and GND during power-on to put system in USB Force Recovery mode;

    • Temporarily connect GND and SYS_RST to reset system;

    • UART TXD and UART RXD are the UART debugging pins;

    • LED+ and LED- indicate System Sleep/Wake (Off when system in sleep mode).

  16. Кнопка питания PWR:

    • дублирует функцию соответствующего контакта на 12-контактном разъёме (PWR BTN pin);

    • кратковременное нажатие запустит в системе процедуру программного выключения;

    • длительное нажатие более 15 секунд принудительно выключит питание платы.

Установка операционной системы

Существуют две версии модуля Jetson Nano: со слотом MicroSD-карты и с модулем eMMC. В этом разделе разберём вариант установки ОС на модуль со встроенной памятью eMMC.

Предварительная подготовка

Перед началом процедуры прошивки переводим плату в режим Recovery. Для этого замыкаем контакты FC REC и GND на 12-контактном разъёме (на фото изображена плата без вычислительного модуля, по факту он, разумеется, должен быть установлен).

Замыкание контактов FC REC и GND для перевода в режим Recovery

Затем подаём питание через DC-разъём. Спустя несколько секунд соединяем плату с компьютером.

В системе должно появиться новое устройство mmcblk0p1. Проверить его наличие можно так:

ls -l /dev/mmcblk0*

Установка ОС на eMMC через SDK Manager

У NVIDIA есть специальное приложение для установки ОС на платы Jetson. Для работы с SDK Manager потребуется операционная система Ubuntu 18.04.

Важно

Также потребуется регистрация на сайте NVIDIA.

1. Скачиваем пакет:

developer.nvidia.com/sdkmanager

2. Устанавливаем пакет через графический интерфейс или через терминал:

sudo dpkg -i sdkmanager_1.6.1-8175_amd64.deb

(Версию подставьте свою.)

3. Если во время установки появились сообщения об ошибках, устанавливаем необходимые пакеты командой:

sudo apt --fix-broken install

4. Запускаем приложение SDK Manager.

Стартовый экран SDK Manager

Жмём LOGIN и проходим процедуру входа в систему. В этот момент откроется браузер со страницей авторизации на сайте NVIDIA.

5. После успешной авторизации откроется экран выбора ОС и целевой платы.

Экран выбора ОС и целевой платы

6. Если Jetson Nano находится в режиме Recovery и подключён к нашему ПК, то появится такая форма выбора типа целевого устройства:

Форма выбора типа целевого устройства Jetson

Выбираем нужную плату и жмём OK.

7. После выбора целевого устройства система вернётся в прежнее окно, где автоматически выберет самую подходящую версию ОС. В этом окне следует убрать галку с Host Machine. Жмём CONTINUE.

Выбор версии ОС, без Host Machine

8. Теперь надо определить состав компонентов ОС.

Предупреждение

Нужно полностью отключить ветвь Jetson SDK Components, иначе могут возникнуть проблемы с прошивкой.

Снизу нужно отметить галку, что пользователь согласен с условиями использования. Жмём CONTINUE.

Отключение Jetson SDK Components

9. Система попросит разрешения создать папки для сборки прошивки. Разрешаем — кнопка Create. И снова жмём CONTINUE.

Создание папок для сборки прошивки

10. Теперь появится экран с финальными настройками. Здесь нужно выбрать OEM configuration — Runtime.

Финальные настройки — OEM configuration Runtime

11. Запускаем процедуру сборки прошивки и саму прошивку кнопкой Flash.

Запуск Flash

12. А теперь нюанс. На предыдущем шаге SDK Manager скачал и подготовил прошивку. Однако, чтобы всё работало как надо, сверху на неё нужно накатить патч (мы не могли этого сделать раньше, так как не на что было этот патч накатывать).

Выполняем в терминале команды:

cd ~/nvidia/nvidia_sdk/JetPack_4.X.X_Linux_JETSON_NANO_TARGETS
wget https://developer.nvidia.com/downloads/embedded/L4T/r32_Release_v7.5/overlay_32.7.5_PCN211181.tbz2
sudo tar -xjf overlay_32.7.5_PCN211181.tbz2

13. После установки патча снова прошиваем Jetson Nano, повторяя шаги 4–10.

14. После повторной прошивки выключаем питание и вытаскиваем перемычку. Затем подключаем к Jetson Nano необходимую периферию и подаём питание. Готово!

Установка ОС на eMMC вручную

Если нет компьютера с Ubuntu 18.04, то можно осуществить сборку прошивки и её установку на плату в ручном режиме.

1. Создаём рабочую папку с sudo:

sudo mkdir ~/sources_nano
cd ~/sources_nano

2. Скачиваем архивы с прошивкой:

sudo wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2
sudo wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2

3. Распаковываем всё это в нужные места:

sudo tar -xjf jetson-210_Linux_R32.7.2_aarch64.tbz2
cd Linux_for_Tegra/rootfs/
sudo tar -xjf ../../tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2
cd ../
sudo ./apply_binaries.sh

Примечание

Если при выполнении скрипта apply_binaries.sh обнаружится нехватка каких-то пакетов, устанавливаем их и повторно запускаем этот скрипт.

4. Накатываем сверху официальный патч:

cd ..
sudo wget https://developer.nvidia.com/downloads/embedded/L4T/r32_Release_v7.5/overlay_32.7.5_PCN211181.tbz2
sudo tar -xjf overlay_32.7.5_PCN211181.tbz2

5. Выполняем сборку и прошивку:

cd ~/sources_nano/Linux_for_Tegra
sudo ./flash.sh jetson-nano-emmc mmcblk0p1

Примечание

Если при выполнении скрипта flash.sh обнаружится нехватка каких-то пакетов, устанавливаем их и повторно запускаем этот скрипт.

Выключаем питание и вытаскиваем перемычку. Затем подключаем к Jetson Nano необходимую периферию и подаём питание. Готово!

Полезные ссылки

Полная инструкция с вариантами установки на MicroSD: waveshare.com/wiki/JETSON-NANO-DEV-KIT