Edited at

Jetson Nano関係のTIPSまとめ

jetson_nano.jpg


Jetson Nanoの初期セットアップ方法・必要周辺機器など

 NVIDIAのシングルボードコンピュータJetson Nano買いました。購入方法や、セットアップ方法は、ブログに書いたので以下記事参照下さい。

Jetson Nanoをセットアップしてディープラーニングで画像認識試してみた

 必要な周辺機器などは、以下の記事にまとめていますので参照下さい。

Amazonでまとめて買える!Jetson Nanoのおすすめ周辺機器

 本記事では、Jetson Nanoに関するちょっとしたTIPSや有益な情報などをまとめていきます。しばらくは随時更新予定です。


Jetson Nano TIPS


ディープラーニング関係

 ディープラーニング関係のセットアップ方法や応用例は、以下記事にまとめました。

Jetson Nanoでディープラーニング


GPU負荷のモニタリング方法


tegrastatsを使う方法

 標準でセットアップされているtegrastatsを使うと、簡単にCPU、GPU負荷、メモリ使用量等をCUIで確認できます。以下コマンド実行するだけです。

$ tegrastats


gpuGraphを使う方法

 以下ソフトを使用します。

gpuGraph

 使用方法は以下です。

$ git clone https://github.com/JetsonHacksNano/gpuGraph

$ cd gpuGraph
$ python3 gpuGraph.py

 以下のようなモニターが表示され、GPU消費量を確認できます。

gpu_monitor.jpg


Swapファイルの設定

 installSwapfileというリポジトリのスクリプトファイルを使えば、以下2行実行するだけで6GのSwapファイルが生成されます。

$ git clone https://github.com/JetsonHacksNano/installSwapfile

$ cd installSwapfile
$ ./installSwapfile.sh

 Swapファイルのサイズを変更したい場合は、installSwapFile.shSWAPSIZE=6を好きな数字に変更しましょう(6Gか4Gが推奨とスクリプトファイルには書いてあります)。

 確認は、以下のようにfreeコマンドで行います。

$ free -h

 以下のようにSwsapのtotalサイズが6.0GになっていればOKです。

              total        used        free      shared  buff/cache   available

Mem: 3.9G 864M 2.6G 30M 448M 2.8G
Swap: 6.0G 0B 6.0G


カメラ使用


ラズパイカメラモジュールの動作確認

 Raspberry Pi CameraモジュールV2が使用できます(V1は使用不可のようなので注意して下さい)。

 特別なセットアップは不要です。以下のQiitaの記事が詳しく、私も参考にさせていただきました。

Jetson Nano 開発者キットで Raspberry Pi カメラを使う

 ただ、カメラ表示はGPUを結構消費するらしく、ディープラーニングで画像認識をリアルタイムに行うときは、カメラ表示サイズは小さくした方がよいです。大きくすると、固まってしまいます。具体的には、widthとheightを300以下程度にしておくのが良いです。

 どうも、ディープラーニング等の重い処理とカメラを同時に走らせると、フリーズしてしまうことがあるようです。具体的には、リアルタイムな画像認識等。

 事前にカメラをしばらく動作させた方が安定するようです。テストスクリプトを作成しました。以下2行でダウンロードして実行できますので、よろしければ試してみて下さい。。

$ wget https://raw.githubusercontent.com/karaage0703/jetson-nano-tools/master/scripts/raspi_cam_test.py

$ python3 raspi_cam_test.py


動画の保存方法

 スクリプト作成しました。以下2行で動画を保存できます。実行した場所にoutput.aviという動画ファイルが生成されます。

$ wget https://raw.githubusercontent.com/karaage0703/jetson-nano-tools/master/scripts/raspi_cam_save_video.py

$ python3 raspi_cam_save_video.py


USBカメラの使用方法

 普通のUSBカメラも使えます。Python+Open CVの場合は、カメラを以下のように指定しましょう。0はラズパイカメラに割り当てられているので、1になるようです。

cam = cv2.VideoCapture(1)


FAN制御の方法

 前提として、FANは5Vのものを購入するように気をつけましょう。詳細は以下参照下さい。

Jetson Nanoのファン購入に気をつけろ!

また、ネジの取り付けに関しては以下の記事が詳しいので参考にしてみて下さい。

Jetson Nanoにファン追加

 FANを付けたら、以下コマンドで制御可能です。

FANをON(MAX速度)するときのコマンド:

$ sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'

FANをOFFするときのコマンド:

$ sudo sh -c 'echo 0 > /sys/devices/pwm-fan/target_pwm'

 echoの後の数字を変えると、FANの速度を制御できます。大きくするほど速くなり255がMaxです。

 その他、以下コマンドでJetson Nanoのクロック速度を最大化したときもFANは最大速度に自動的に設定されます。

$ sudo jetson_clocks

参考:Jetson Nano Fan


VS Codeエディタでファイル編集

 Jetson NanoにVS Code(Visual Studio Code)エディタをインストールするのは大変なので、リモートの別のPCからssh経由でファイル編集する方法が手軽で良いです。以下はRaspberry Pi上のファイルに対して編集する例ですが、Jetson Nanoに対しても、全く同じことができます。

VS Code(Visual Studio Code)でRaspberry Pi上のファイルをリモートからファイル編集する手軽な方法

 VS CodeエディタをJetson Nanoにインストールしたい場合は、以下の記事が丁寧で参考になりそうです(私自身はまだためせていません)。 ビルドはかなり大変そうですが、興味がある方はどうぞ。

Jetson nanoにVS Codeをコンパイルしてインストールする


ホスト名をhostname.localでJetsonにアクセス

 IPアドレスでアクセスするのが面倒なので、Raspberry Piのように.localでアクセスできるようにします。 以下コマンドでavahi-daemonをインストールするだけです。

$ sudo apt-get install avahi-daemon

 これで、Jetson Nanoのホスト名がjetsonnanoだとすると、Macのターミナルから以下コマンドでsshでアクセスできます。

$ ssh karaage@jetsonnano.local

 Windowsでも同様と思いますが、古いWindowsでアクセスできない場合はiTunesをインストールすると解決するはずです。


パフォーマンスの最大化

 以下コマンドでパフォーマンスモードを変更できます。-mの後の数字が0のときが最大(Maxモード)で1が最小(5Wモード)です。

$ sudo nvpmodel -m 0

 現在のモードを知りたいときは、以下コマンドです。

$ sudo nvpmodel -q

 また、以下コマンドを実行すると、クロック周波数などのパフォーマンスを最大化できます。FANがついていれば、FANも最大速度で動作します。

$ sudo jetson_clocks

 現在の設定は以下コマンドで確認できます。

$ sudo jetson_clocks --show

 jetson_clocksの本体は /usr/bin/jetson_clocks なので、何をしているか知りたい場合は、直接ファイルの中身を確認しましょう($ less /usr/bin/jetson_clocksで確認できます)。


Jetson Nanoにリモートデスクトップ接続

 まだ未実施です。以下が参考になりそうです。

Jetson Nanoにリモートデスクトップ(VNC)環境を用意する


日本語入力

 TwitterのTLに流れていたのでメモ。まだ、自分は日本語入力しようと思ったことありません(笑)


ウィンドウのスクリーンショットの取り方

 Jetson NanoというかUbuntuあるあるですが、Alt + PrintScreenでのスクショが効かないので、以下のコマンド実行した後、スクリーンショットをとりたいウィンドウをアクティブにするとスクリーン画面をキャプチャーできます。

$ gnome-screenshot --window --delay=5


bashrcの設定

 以下くらいを設定しておくと便利です。

便利なbashrc設定のメモ Ubuntu(Raspberry Pi/Jetson Nano)


Jetson NanoにROSをインストールする方法

 以下記事参照下さい。

Jetson NanoにROSをインストールする方法


Jetson NanoでIntel Realsense D435を使う方法

Jetson NanoでIntel Realsense D435を使う方法(ROS対応)


Jetson Nanoにpygameをインストールする方法

Jetson Nanoにpygameをインストールする方法(Python2/Python3)


Jetson Nanoでカーネルビルドする方法(MIDIを使う方法)

Jetson NanoでMIDIを使うためにカーネルビルド

Jetson NanoからMIDIでポケット・ミクを制御


Jetson NanoのSDカードを丸ごとハードコピー(イメージ化)する方法

Jetson NanoのSDカードを丸ごとハードコピー(イメージ化)する方法


トラブルシューティング


lockファイル関係のエラー

 apt-getCould not get lock /var/lib/dpkg/lockというエラーがでるときの対応です。

 以下参照

Fix ‘E: Could not get lock /var/lib/dpkg/lock’ Error in Ubuntu [Quick Tip]

 ちなみに、私はlockファイルと間違えて/var/lib/dpkgを丸ごと削除してしまいましたが、以下で復旧できました。

How to recover deleted “dpkg” directory?

 lockファイルのエラーは、自動アップデートを停止すれば解消できるようです。自動アップデートを停止するスクリプトも自作のツール群のリポジトリjetson-nano-toolsに用意しました(このスクリプトはPull Requestいただきました)。

 以下で使用できます。

$ git clone https://github.com/karaage0703/jetson-nano-tools

$ ./jetson-nano-tools/disable-apt-autoupgrade.sh


ログが肥大化して残り容量が枯渇

 /var/log/syslogの容量が肥大化(数GB)して、残り容量が枯渇しました。

 nvargus-daemonError InvalidStateというエラーが書き込まれ続けているようです。ラズパイカメラをOpenCVで表示させたときに発生しています。

 原因と対策はまだ未実施です。


関連するGitHubリポジトリ


NVIDIA公式

jetracer

市販のラジコンを改造して、Jetson Nanoを載せてAI教育用の教材Jetracerとして仕立て上げるプロジェクト

Jetbot

JetbotというNvidia Nanoを使ったロボットのソフトと設計情報です。ロボットということで、カメラやモーターなどを動かすためのノウハウが詰め込まれており色々参考になります。


非公式プロジェクト

jetson-nano-tools

私が作成した、Jetson Nanoを手軽にセットアップするためのスクリプト、便利に使うためのツール群です。

jetson-nano-accessories

Jetson Nanoの色々なマウントやアダプターの3Dデータ(stlファイル)を公開しているGitHubのリポジトリ。データ自体も良さそうだけど、何よりREADMEが見やすくて良いです。かなりプリントしたくなります。

Jetson Nano Baseboard

Jetson Nanoのオープンソースなベースボードの設計情報。自分でベースボード設計するときに参考になりそうです。


参考になるリンク

GW中Jetsonのことばかり語るカレンダー

GW中にJetson Nanoの情報を提供し続ける狂気のカレンダーです(笑) ブログ記事とYouTube動画を毎日アップし続けていてもの凄いコンテンツ量です。必見です!

Jetson Nano を使ってみる!!

Jetson Nano上でDARKNET(YOLO)をインストールしてテストする方法

JetsonHacks

Jetsonに関する多くの情報があります(英語)。もちろんJetson Nano情報も多数です。YouTube動画もたくさんあります。

NVIDIA Tegra Linux Driver Package Development Guide

NVIDIAの開発者向けのガイドです(英語)。Jetson関係の詳細仕様が公開されています。重要な情報がさらりと書いてあったりしますので、開発者は必読です。

Jetson NanoでGPGPU (CUDA) プログラミング ~ライフゲームの開発~

CUDAプログラミングに関する記事。めちゃ有用な予感です。

Jetson NanoでGPUとOpenCVが有効なYoloをビルドするには

Jetson NanoはYoloで物体検出している人が多い印象なので試してみたいです。

Jetson NanoのSPIを有効にする

SPIを使うための設定です。Raspberry Pi MouseにJetson Nanoを載せたりと面白そうなことをしています。

「Jetson Nano」に5GHz WiFi USBアダプタ「GW-450D2」を繋いでみたよ!(検証用まな板のSTLデータ公開有り)

5GHzのWiFi USBアダプタのセットアップ方法と、簡単な台座(まな板)の3Dデータの情報があります。

「Jetson Nano DevKit」のオリジナルケースを作って壁に掛けてみたよ!(STLデータ公開有り)

壁掛けもできるJetson Nano用のケースの3Dデータです。3Dプリンタ持っている人はプリント必至です!

Jetson Nanoインストールメモ

私がやってないことなども書かれているので、このページで不足情報あればこちらも参照してみて下さい。

3DプリンタなしでオリジナルJetbotを作った記録

日本版のJetbotを作っている記事。オリジナルのJetbotの部品は日本では入手しづらいものもおおいので、こういう情報は本当に助かりますね。


Jetson Nanoに関するスライド資料

Getting Started with Jetson Nano

NVIDIAさん公式の資料です。Jetson Nanoを知らない人が概要を理解するのにピッタリです。英語資料です。

Jetson Nano x TensorFlowで始めるモバイルAI画像認識

私が、GoogleでGoogle NVIDIAさんに挟まれてJetson NanoとTensorFlowに関して発表したときの資料です。

Jetson Nanoはじめました

Jetson NanoでROSを使う方法を中心に、色々なTIPSがちりばめられています