粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

jetson TX2 のセットアップ

私費で買いました。公費とか研究費でお願いしても良かったのですが,
学生だと安く手に入るしこの際私物に買っちゃおうと思って買いました。Switchを買う資金が消えました。

最小セットアップ

必要と思われる周辺環境

  • HDMI入力を受け付けるディスプレイ
  • マウス,キーボード
  • USBハブ
  • 箱(むき出しは怖いため)

特に注意するのがディスプレイまわり。
jetsonの出力はHDMIのみなのでHDMI入力を受け付けるディスプレイが必要です。
また,HDMI出力はそれほどパワーが無いので質の悪いケーブルや変換ケーブルは出力ができないという問題を抱えている場合があります。
変換ケーブルを使う場合は外部電源で信号強度を増幅できるものにすると良いでしょう。

箱は入っていたダンボール箱とクリアファイルで改造してなんとかしました 。
一応電子部品が詰まっているのでむき出しは辞めておいた方がいいでしょう。

ぼくのかんがえたさいきょうのかんきょう

据え置きで使わない場合ポータブルディスプレイが良いです。この場合電源はUSB規格の5Vで駆動できるかバッテリー駆動ができるとかなり重宝するでしょう。
Diginnos DG-NP09D 8.9インチ バッテリー内蔵モバイルモニター 最新ファーム適用モデル
コスパ的にこれがほしいです。

AOC 15.6インチ USB接続 モニター ( 1366 x 768 / TN / 8ms ) E1659FWU-GP4R
USBバスパワーならこいつ。

TechRise金メッキ高速1080P HDMI オス to VGAメスビデオ変換アダプタケーブル オーディオとマイクロUSBケーブル付き
ケーブルは外部電源を使用可能に。

TX2を入手してすぐすること

電源に繋いで電源を着けます。
しばらくコマンドが流れた後,ターミナルのような初期画面に移行します。
表示の通りに次のコマンドを順次貼り付けていきましょう。

 cd NVIDIA-INSTALLER
 sudo ./installer.sh
 sudo reboot

しばらくしてUbuntuGUIが起動します。ID/Passはどちらもnvidiaです。
IDとPASSがデフォルトのままでは非常に危険なのでネットには繋がない方が良いでしょう。

この時点でUbuntuのOSはキチンと入っていますので強いラズベリーパイとしての最低限の動作はします。

GPUボードとしての動作をするための準備

まずは公式の手順をきちんと確認しましょう。
NVIDIA JetPack Documentation

まぁだいたいここの通りに動くつもりです。
JetsonTX2初期セットアップ(Jetpack)からサンプルのコンパイルまでの手順 - Qiita

JetPackのインストール等

省略。

  • Ubuntuの入ったPCを用意 Or VMで仮想環境を建てる
  • Jetpackをダウンロード(要NVIDIAへの会員登録(?))

Jetpackを起動

chmod +xを用いてスクリプトを実行可能にします。
ダブルクリックするとエディタが起動して面倒なので気をつけて。

 chmod +x JetPack-L4T-3.1-linux-x64.run
./JetPack-L4T-3.1-linux-x64.run

途中までぽちぽちすすめていきます。

OSをflashしてインストール

今回はFlashing OSの設定を変更せずに行いました。

途中でインストール方法の2択を迫られます。私は前者を選択しました。
http://docs.nvidia.com/jetpack-l4t/content/developertools/mobile/jetpack/images/jetpack_l4t_network_layout.004_800x587.png

次に,以下の画面が出ます。これはjetsonと同じネットワークに乗っているデバイスを選ぶ必要があります。
ifconfigを打って確かめましょう。
f:id:ossyaritoori:20171124205014p:plain

その後順調に進めれば次のような画面に行き着くはずです。
http://docs.nvidia.com/jetpack-l4t/content/developertools/mobile/jetpack/images/jetpack_l4t_force_recovery_mode.001_701x425.png

ここで付属のUSB-MicroUSB変換ケーブルを用います。
1. Jetson本体の電源を落とし,電源プラグも抜く。
2. USB-MicroUSBを接続する。
3. 電源を入れ,リカバリーモードにするため電源ボタンまわりで特殊な操作を行う。
リカバリー動作は

〇〇〇◎ 電源ボタンを押す。
◎〇◎〇 リカバリーボタンを押しながらリセットボタンを2秒押す。
〇〇◎〇 リセットボタンを離し,
〇〇〇〇 リカバリーボタンも離す。

4. USBが繋がっているUbuntu側でlsusbを打ってNvidia CorpとしてJetsonTX2が認識されていることを確認。
5. 先程の黒いターミナル画面へ行きEnter。Jetsonが起動する。(ケーブルは抜かない!!)



全体で5分に満たないです。
最終的に

Finished Flasing OS
Determining the IP address of target...

と出ればOSの更新は完了です。計3GBくらいです。
次にjetsonにいろいろ入れていくのですがこの際にJetsonのIPがわかっている必要があります.

有線接続の場合はそのまま実行できるかとおもいますが,無線の場合は接続し直すという作業が必要なのでSecond Challengeが必要でした。
一旦プログラムをCtrl+Cで停止させます。

jetsonTX2側の設定(2回目の実施)

インストーラを実行します.2回目です.
OSに変更を加えず?にインストールを行うため下の手順に従うのが良いでしょう。
NVIDIA Jetson TX2を買ったのでセットアップ - パン屋になりたい

以下の画面を選択するときにFlashing OSという箇所を「no action」へと変更します。
http://docs.nvidia.com/jetpack-l4t/content/developertools/mobile/jetpack/images/jetpack_l4t_component_mgr.005_800x697.png

すると,次の様にIPとユーザ名等を求められます。
http://docs.nvidia.com/jetpack-l4t/content/developertools/mobile/jetpack/images/jetpack_l4t_device_info.004_800x587.png

ifconfigで調べて実行しましょう。

接続が完了したら後は放置です。ケーブルはOSを入れるときだけっぽいので抜いてもいいんでしょうが,通信が始まっているときに抜く自信がなくて結局つなぎっぱにしました。

反省

VisionWorksというソフトをインストールする設定をcheckしたためインストールに長い時間をかけすぎました。大体2時間強かかっています。
VisionWorks | NVIDIA Developer

みてみたところそんなに必須でもなさそうなので要領の限られているJetsonではこういう不要なパッケージは削除してよかったでしょう。
トータルで10.5GB/27GB うーんキツイ。

この後,ROS周りで2Gくらい,OpenCV3.Xの実行ファイル群で1G,カーネルコンパイルで1G~は最低で食うので本当に余裕がないですね。
評価ボードから外さない用途ならSSDを買ってきてその上にもう一度環境構築しても良さそうです。

カーネルの変更

Lidarセンサの為にカーネルの変更を後で試そうと思います。
こういう重大な変更は先にやっておくにこしたことないでしょう。
ossyaritoori.hatenablog.com

RPlidarを用いるために,
CP210xまたはC2102ドライバを入れます。
その他のドライバに関しては動画になんとなく沿って入れているので必須か?と言われるとそうじゃなさそう。

有志のツールを用いてカーネル修正

2017年11月現在ではTegra 28が最新ですので以下のページに準拠します。
Build Kernel and ttyACM Module – NVIDIA Jetson TX2 | JetsonHacks

初めてやる方は「必ずYoutubeの動画を見ながら」作業しましょう。
英語を読まずに適当にコマンドだけホイホイ入力しても意味が無いので。

ダウンロードとconfigの変更

git clone https://github.com/jetsonhacks/buildJetsonTX2Kernel.git
cd buildJetsonTX2Kernel
./getKernelSources.sh

この後,次のような画面が開きます。
[:w=500]
ここで追加モジュールを選択してチェックを入れます。

1つ目

「General Setup」から「Local version」をダブルクリック

  • jetsonbot-v0.1と入力。
2つ目

左上のEditから検索窓を呼ぶ。
ACM」と検索して出て来る「ACM USB Modern Support」的なことが書いてあるものにチェックを入れる。

3つ目

同様に検索窓で「CH341」を検索。
出て来るものにチェックを入れる。

4つ目

CP210xのドライバを入れます。
同様です。

カーネルのmakeとコピー

その後選択したカーネルコンパイルするために

./makeKernel.sh

と打ってしばらく待ちます。長いです。

終わった後に

./copyImage.sh

とうってmakeしたファイルを適当なファイルへとコピーします。

なお,この行程で追加で5GBくらいの容量を食います。うげぇ。

/usr/src以下にこれに使ったソースがあるので適宜削除していいそうな。

/usr/src/kernel/kernel4-4
と/usr/src/sources等を他のUSBに移しました。

これで3GB くらい節約できます。

再起動

最後にRebootして完了です。お疲れ様でした。

次はいつかの手順に則ってROSを入れます。
ossyaritoori.hatenablog.com


パスワード変更

sudo passwd
で管理者のパスワードを変更可能です。
私はよく使うアレにしました。(メモ。本当はよくないがデフォルトよりマシでしょう)
Rebootしたらこの設定は消え失せました。デフォルトのpassから変更できないようです。
https://devtalk.nvidia.com/default/topic/1017208/jetson-tx2-password/?offset=1