TL;DR
- NVIDIA Jetson Nanoは、128コアのMaxwell GPUを搭載しながら、70 x 45 mmとRaspberry Piの様な超小型コンピュータ
- 公式のJetCardイメージを使うと、セットアップが60分以下で終わる
- SDカードイメージのダウンロードに15分(ネットワーク次第)
- SDカードへの書き込みに30分
- 電源を入れ、USB有線での接続からWiFi接続に切替えるまで15分以下
- ディスプレイやキーボードをNanoに繋がなくてもセットアップできる
- JupyterLabも、SSHも、セットアップすればVNCで画面も見られる
はじめに
2019年3月の発表以降、先人の皆様がJetson Nanoの有用な情報をまとめて下さっています。
- 何を買い揃える必要があるか、 NVIDIA JETSON NANO 開発者キットを動かすのに必要なもの が大変参考になりました
- セットアップや実プロジェクトで使うにあたり、からあげさんの Jetson Nano関係のTIPSまとめ - Qiita がハマりところ含め網羅的です。通読がおすすめです
2019年6月末に、NVIDIAからJetson Nano関連の有用なプロジェクトが複数公開されました。特にJetCardにより、セットアップの簡略化が図られています。
ふまえて、今日(2019年7月時点)での、最速セットアップ方法(?)をまとめます。
本稿はMac中心で進めますが、Windows、Linuxパソコンからも実行できます。公式のチュートリアルコース Getting Started with AI on Jetson Nano 中のSetting up your Jetson Nanoに、各OSに対応した詳細のガイドがあります(英語)。
BOM
まず、以下を揃えます。Jetson Nanoは品薄状態が概ね解消したようです。Jetson Nano開発者キット単体では動作しないので、注意が必要です。オンラインならAmazon等で、オフラインなら秋葉原などの店舗(秋月電子、千石通商、あきばおーなど)でも揃います。
項目 | 目安価格 | メモ |
---|---|---|
Jetson Nano Developer Kit | 12,300円 | |
電源アダプタ(5V, 4A, 2.1mm内径DCプラグ) | 1,000円 | |
USBケーブル(Micro-B to Type-A) | 90円 | |
2 pinジャンパ(電源プラグ給電用) | 100円 | J48をショートしDCプラグ型電源を使うため |
Raspberry Pi カメラモジュール V2 | 3,900円 | USB Webカメラも可 |
microSDカード(最低32GB, UHS-I) | 1,000円 | |
WiFiドングル | 750円 | RPiと異なりWiFiが付属しない |
上記以外に、
- インターネットに接続でき、USB端子を持つMac/ Windows/ Linuxいずれかのパソコン
- WiFiルータ
が必要です。またJetson Nanoは熱を持つため、空冷ファンを後付けする方も多いようです。
セットアップ 60分チャレンジ
NVIDIA公式から公開されたJetCardは、必要なソフトウェアがプリインストールされたSDカードイメージです。zip圧縮され7GB程度で配布されます。この公開により、とても手軽にセットアップできるようになりました。
JetCardイメージのダウンロード [15分]
NVIDIA JetCard GitHubリポジトリにある、Googleドライブへのリンク から圧縮されたイメージファイル jetcard_v0p0p0.zip
をWindows、Linux、またはMacのデスクトップマシンにダウンロードします。ファイルが正しくダウンロードされているか、md5sumも確認できます。
マイクロSDカードの書き込み [30分]
- デスクトップマシンに32GB以上の容量があるSDカードを挿入する
- FAT32でSDカードの初期化をする
注意: 初期化されていないと、次に
Flash!
を押しても、Starting
のまま書き込みに進みません。MacでのSDカード初期化方法
ディスクユーティリティ.app
を開き、対象のSDカードを左メニューから選択(自身のハードディスクを選ばないように注意!)する。上メニューの消去
を押下する。<ドライブ名称>を消去しますか?
というダイアログでフォーマットMS-DOS(FAT)
、方式GUIDパーティションマップ
を選択、消去
を実行します。
-
Etcherをインストールし、起動します。
-
以下の画面が出たら、書き込むイメージに、先ほどダウンロードした
jetcard_v0p0p0.zip
を選びます。次に、書き込み先に対象のSDカードを選びます。その上でFlash!
を押します。
Tips: SDカードイメージはzip圧縮されたままで問題ありません。
- 上の通り、Flashingに12分、Validatingに10分程度を要する。完了したらデスクトップマシンからSDカードを取り出す
注意: Macの場合、
セットしたディスクはこのコンピュータで読み取れないディスクでした
という警告が表示されるが、フォーマット形式によるものなので、気にせず取り出す
を押下して問題ありません。
電源を入れてUSB経由で接続する [5分]
準備したSDカードを挿入、必要な配線をし、Jetson Nanoの電源を入れます。ヘッドレス(Jetson Nano用のモニタなどがない状態)でも、USB経由で接続し、セットアップができます。
具体的には、USB-microUSBケーブルでPC(USB側)とJetson Nano(マイクロUSB側)を直結すると、PCのWebブラウザからJetson Nano上で立ち上がったJupyter Labに接続できます。
-
設定したSDカードをJetson Nanoに挿入する
-
J48を、2pinジャンパを取り付けショートさせる(microUSBではなく、プラグからの給電に切り替える)
-
電源アダプタを差し込み、電源を入れる
-
Windows、Linux、またはMacマシンをマイクロUSB経由でJetson Nanoに接続する
-
Windows、Linux、またはMacマシンでブラウザを開き、
http://192.168.55.1:8888
をアドレスバーに入力する
-
デフォルトパスワード
jetson
を使ってサインインする
Jetson NanoをWiFiに接続する [5分]
まず、Jetson NanoにUSB WiFiドングルなどを挿しておく。
-
次のコマンドを入力して利用可能なWiFiネットワークを一覧表示し、接続したい
ssid_name
を見つける
$ sudo nmcli device wifi list
**注意: **
[sudo] password for jetson:
と聞かれたら、デフォルトはjetson
と答えれば良い。
- 選択したWiFiネットワークに接続する
$ sudo nmcli device wifi connect <ssid_name> password <password>
Device 'wlan0' successfully activated with xxx
というメッセージが返れば接続成功です。
Tips: この後無線接続に使うPCが所属するネットワークと、同一のネットワークに所属させます
- 次のコマンドで返されたWiFiインタフェース
wlan0
のWiFi IPアドレス(inet
)を<jetson_ip_address>
として書き留めます。
$ ifconfig
結果例:
<略>
wlan0: flags=4163 mtu 1500
inet 192.168.2.111 netmask 255.255.255.0 broadcast 192.168.2.255<略>
WiFi経由でJetson Nanoに接続する [5分〜]
- マイクロUSBケーブルをJetson Nanoから取り外す
- 前のJupyter Labブラウザタブを閉じる
設定が正しく済んでいれば、WiFi経由でJetson Nanoにアクセスできます。ひかえておいた を使って繋いでみます。
Jupyter Labに接続する
新しいブラウザタブを開き、 http://<jetson_ip_address>:8888
へ移動、パスワードjetson
でサインインする。
SSH接続する
PC側のターミナルから、user: jetson
/ password: jetson
でSSH接続できます。JupyterLab上で制約がある場合は、こちらを使います。
$ ssh jetson@<jetson_ip_address>
VNC接続する
以下を参考に設定しました。
$ sudo apt update
$ sudo apt install tigervnc-standalone-server tigervnc-scraping-server
$ vncpasswd
$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd
vncpasswd
でVNC接続時のパスワードを設定します。最後のコマンドで、デフォルトではポート 5900
でVNC接続の待ち受け状態になります。
適当なVNCクライアントを準備し、接続します。Google Chromeをブラウザに使っている場合、VNC® Viewer for Google Chrome™が便利です。
PC側でVNC Viewerを起動、Address欄に <jetson_ip_address>:5900
と入力して Connect
を押すと、Jetson Nano側のUbuntuデスクトップを表示できます。
ここまで、部品が揃っていれば60分以内でセットアップを終えることができました。
その他
Jetson NanoのIPアドレスを確認したい
PC側のターミナルから、arp
コマンドで、同一ネットワークで使われているIPアドレスがリスト表示できます。
# Mac OSXの場合
$ arp -a
空いているポートを確認したい
PC側のターミナルから、 nmap
コマンドを使います。Mac OSXの場合、デフォルトでは入っていないため brew install nmap
などでインストールします。
JetCardデフォルトに、VNCの接続を加えると以下のような状態です。
$ nmap 192.168.2.111
Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-04 02:06 JST
Nmap scan report for 192.168.2.111
Host is up (0.030s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
5900/tcp open vnc
8888/tcp open sun-answerbook
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
Raspberry Pi カメラモジュールV2の動作確認
USBカメラと異なり、単純に cv2.VideoCapture(0)
では動作しません。一工夫必要です。
import matplotlib.pyplot as plt
import numpy as np
import cv2
GST_STR = 'nvarguscamerasrc \
! video/x-raw(memory:NVMM), width=3280, height=2464, format=(string)NV12, framerate=(fraction)30/1 \
! nvvidconv ! video/x-raw, width=(int)1920, height=(int)1080, format=(string)BGRx \
! videoconvert \
! appsink'
cap = cv2.VideoCapture(GST_STR)
以下の実行毎に、キャプチャされた画像がNotebook上に表示でき、動作が確認できます。
ret, img = cap.read()
plt.imshow(np.array(img))
以上