SENSYN ROBOTICS(センシンロボティクス) Advent Calendar 2019 の 21日目 担当の @Chitama です。
前回に引き続き、AIコンピューターを乗せた自律走行型のロボットを作ってみます。
自律走行型のロボットを走らせるまで
- 必要な部品を揃える
- ハードウェアを組み立てる
- ソフトウェアのセットアップする ← 今回はココ
- 自律走行を試してみる
3. ソフトウェアのセットアップする
今回の流れ。
3-1. JetBotイメージの確認
3-2. 電源の確認、JetBotの起動
3-3. wifiの設定
3-4. Webブラウザでの接続
3-5. 電源モードを調整する
3-6. Jetson 「Jetpack」の確認
出典:
Github Jetbot Software Setup
Sparkfun 5. Software Setup Guide from NVIDIA
セットアップに必要なもの
- microSDカード 16GB以上 UHS-I対応
- HDMIまたはDisplayPortに対応したディスプレイ
- USBキーボード
- USBマウス
- 5V-2A USB電源(及びmicroBケーブル)
- USBワイヤレスWiFiアダプタ
Sparkfun Jetbot Kitに含まれているもの
- microSDカード 64GB UHS-I対応
- リチウムイオンバッテリーパック-10Ah(3A / 1A USBポート)
- Bluetooth USBワイヤレスWiFiアダプタ
3-1. JetBotイメージの確認
Sparkfun Jetbot KitのSDカードは、起動用のイメージがフォーマット済みなので、ここの手順はスキップします。
NVIDIA公式の手順のステップ2から4のみで起動できます。
そのため、SDカードをフォーマットしないように注意してください。
通常、Jetson nano
購入したら、公式サイトからイメージをダウンロードして起動用のmicroSDカードを作成します。
- JetBotのSDカードイメージ jetbot_image_v0p3p2.zip をダウンロードします
-
Etcherを使用して、ダウンロードしたイメージをSDカードをフォーマットします。
推奨容量は、32GB以上です。何かしらのエラーが発生した場合は、64GBに上げてみてください。
フォーマットが完了したSDカードは、USBコネクタがついてる側の反対側にあるマイクロSDカードスロット
にマイクロSDカードを下向きで差し込みます。
3-2. 電源の確認とJetBotの起動
- MicroSDカードを挿入
- HDMIケーブルを接続
- キーボード&マウスを接続
- wifiアダプタを接続
- 電源を接続
今回は、Kit付属のリチウムイオンバッテリーパックをmicro USB ソケットに接続します。
ソケットの横の緑色のランプが光れば、給電が開始され、Jetson nano
が起動します。
起動するとNVIDIAのロゴが表示されます。
3-3. wifiの設定
UbuntuデスクトップGUIで設定を行います。
ユーザーjetbot
とパスワードjetbot
を使用してログインします。
利用したいWiFiネットワークに接続します。
接続に成功すると、今後Jetson Nanoの起動時にWiFiに自動的に接続され、PiOLEDディスプレイにIPアドレスが表示されるようになります。
また、以降は、Jetson nano
にWeb経由で接続できるため、HDMIケーブル、キーボード&マウスは不要になります。
UbuntuのターミナルでIPアドレスを確認しておきます。
3-4. Webブラウザでの接続
確認したIPアドレスでJetson nano
に接続してみます。
http://<jetbot_ip_address>:8888
接続に成功すると Jupyter notebook
の Launcher
が表示されます。
3-5. 電源モードやパフォーマンスを調整する
電源
Jetson Nanoにバッテリーパックが供給できる以上の電流が流れないようにしておきます。
そのために、次のコマンドで呼び出して 5Wモード
にします。
$ sudo nvpmodel -m 1
現在の状態は次のコマンドで確認できます。
$ sudo nvpmodel -q
-m
の後の数字が0
の場合、最大(Maxモード)で、1
の場合、最小(5Wモード)です。
$ sudo nvpmodel -m 1
$ sudo nvpmodel -q
NVPM WARN: fan mode is not set!
NV Power Mode: 5W
1
$ sudo nvpmodel -m 0
$ sudo nvpmodel -q
NVPM WARN: fan mode is not set!
NV Power Mode: MAXN
0
クロック周波数などのパフォーマンス
現在の設定は以下コマンドで確認できます。
$ sudo jetson_clocks --show
$ sudo jetson_clocks --show
[sudo] password for jetbot:
SOC family:tegra210 Machine:NVIDIA Jetson Nano Developer Kit
Online CPUs: 0-1
CPU Cluster Switching: Disabled
cpu0: Online=1 Governor=schedutil MinFreq=102000 MaxFreq=921600 CurrentFreq=921600 IdleStates: WFI=1 c7=1
cpu1: Online=1 Governor=schedutil MinFreq=102000 MaxFreq=921600 CurrentFreq=921600 IdleStates: WFI=1 c7=1
cpu2: Online=0 Governor=schedutil MinFreq=102000 MaxFreq=921600 CurrentFreq=921600 IdleStates: WFI=1 c7=1
cpu3: Online=0 Governor=schedutil MinFreq=102000 MaxFreq=921600 CurrentFreq=921600 IdleStates: WFI=1 c7=1
GPU MinFreq=76800000 MaxFreq=614400000 CurrentFreq=153600000
EMC MinFreq=204000000 MaxFreq=1600000000 CurrentFreq=1600000000 FreqOverride=0
Fan: speed=0
NV Power Mode: 5W
次のコマンドで、クロック周波数などのパフォーマンスを最大化できます。
FANがついていれば、FANも最大速度で動作します。
$ sudo jetson_clocks
3-6. Jetson 「Jetpack」の確認
JetPackとは、Jetson向けのカーネルモジュール・CUDAや各種ライブラリ・各種開発ツール・サンプルコードがまとまったものです。
つまり、追加でインストールすることなくいろいろなAIライブラリを試せる環境になっているということです。
CUDA
CUDAのサンプルコードは次のディレクトリににインストールされています。
/usr/local/cuda-10.0/samples/
念のためにフォルダをコピーしてから、サンプルを試してみます。
$ mkdir _dev
$ cp -a /usr/local/cuda-10.0/samples/ ~/_dev
デモ実行の流れは、
1.サンプルファイルがあるフォルダまで移動
$ cd _dev
2.ターミナルでコンパイルを実行
$ sudo make
3.2で生成されたファイルをターミナルで実行
$./ファイル名
次回
自律走行に挑戦です。