Color

日々の備忘録

NVIDIA Jetson nano + Intel Realsense D435i とデスクトップPC

2019年07月08日 20時55分02秒 | Jetson Nano
◆NVIDIA Jetson Nano に Intel Realsense D435i を接続して、Isaac でリモートする手順

1.準備
■■■Remote
●CPU: NVIDIA Jetson Nano開発キット
●SD: SDSQXCY-128G-GN6MA
●AC/DC: LTE36ES-S1-301(DC5V 6.2A)
●FAN: PEAD14028BH(Max:20000rpm)
●WiFi: intel 8265NGW
■■■Depth Camera
●Camera: Intel Realsense D435i
■■■Master PC
●OS: ubuntu 18.04 LTS
●Tool: NVIDIA Isaac SDK

2.デスクトップに Intel Realsense SDK 2.0 導入
参考記事:IntelRealSense/librealsense ※最新の情報を必ず確認する事
# サーバー公開鍵の登録
~$ sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo 
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key
C8B3A55A6F3EFCDE
# リポジトリ登録
~$ sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u
# ライブラリインストール
~$ sudo apt-get install librealsense2-dkms
~$ sudo apt-get install librealsense2-utils
# デバッグパッケージインストール
~$ sudo apt-get install librealsense2-dev
~$ sudo apt-get install librealsense2-dbg
# 確認
~$ realsense-viewer
~$ modinfo uvcvideo | grep "version:"
~$ sudo apt-get update
~$ sudo apt-get upgrade

3.Intel Realsense ファームウェアアップ
参考記事:How to install Firmware DFU on Ubuntu 18.04 · Issue #2884 · IntelRealSense/librealsense
# intel-realsense-dfu ツールインストール
~$ echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main' | sudo tee /etc/apt/sources.list.d/realsense-public.list
~$ sudo apt-key adv--keyserverkeys.gnupg.net --recv-key 6F3EFCDE
~$ sudo apt-get update
~$ sudo apt-get install intel-realsense-dfu*
# ダウンロード インテル® RealSense™センス™D400製品ファミリの最新ファームウェア ここから最新バージョンをダウンロード
# バージョン: 5.11.6.250 (最新)日付: 2019/06/04
# デスクトップの ~/isaac へD400_Series_Production_FW_5_11_6_250.zipをコピーして、Signed_Image_UVC_5_11_6_250.bin を取り出す
# D435iがデスクトップに接続されているポートを確認
~$ lsusb

# Bus 002 Device 004 の場合のファームウェアバージョン確認
~$ intel-realsense-dfu -b 002 -d 004 -p

# ファームウェアバージョンが 5.11.6.250 未満の場合
~$ cd ~/isaac
~/isaac$ intel-realsense-dfu -b 002 -d 004 -f -i ./Signed_Image_UVC_5_11_6_250.bin

# 動作確認
~/isaac$ realsense-viewer

# UDEV rules issue after updating to 2.24 · Issue #4350 · IntelRealSense/librealsense この記事の問題がある
# ビューアーを閉じて、Realsense D435i を Jetson nano へ接続する

4.サンプルrealsense_cameraの実行
# <jetson_nano_ip>: 192.168.0.119
# <jetson_nano_name>: ai の場合
# デスクトップでサンプルビルド
~/isaac$ bazel build //apps/samples/realsense_camera
# Jetson nano と D435i がUSB接続されている事(デスクトップから外して)

# デスクトップとJetson nano がLAN接続している事
~/isaac$ ./engine/build/deploy.sh -d jetpack42 -h 192.168.0.119 -p
//apps/samples/realsense_camera:realsense_camera-pkg
#jetson nanoへssh接続
~/isaac$ ssh ai@192.168.0.119
# Jetson nano を最大パフォーマンス動作
ai@jetson:~$ sudo /usr/bin/jetson_clocks
# デスクトップのユーザー名が userの場合
# realsense_camera を実行
ai@jetson:~$ cd deploy/user/realsense_camera-pkg/
ai@jetson:~/deploy/user/realsense_camera-pkg$ ./apps/samples/realsense_camera/realsense_camera
# デスクトップのブラウザで確認
http://192.168.0.119:3000/

# カメラをチェック
ライブビューが映し出される

━以上━


NVIDIA Isaac SDK デスクトップ環境構築

2019年07月05日 08時53分46秒 | Jetson Nano
◆ubuntu18.04(Intel64CPU)上にNVIDIA Isaac SDK を構築する手順

1.準備
●CPU: Core i7-6700
●RAM: 16GB
●HDD: 500GB
●GPU: NVIDIA GeForce GTX980Ti
●OS: ubuntu 18.04 LTS

2.ubuntuクリーンインストール
参考記事:https://www.ubuntulinux.jp/News/ubuntu1804-ja-remix
記事を参考にubuntu 18.04 LTSをインストールする事
★ ubuntu18.04インストール後トラブル
〇 apt update で snapdの更新で停止
◎対策
~$ sudo fuser -vki /var/lib/dpkg/lock
~$ sudo apt purge snapd
~$ sudo dpkg --configure -a
~$ sudo apt update
~$ sudo apt upgrade 
#最後まで動作しなかった、--fix-missingオプションで再実行
~$ sudo apt upgrade --fix-missing
~$ sudo apt dist-upgrade
~$ sudo apt install snapd
~$ sudo reboot
〇 ubuntu18.04の動作が極端に遅い
◎対策
# grub をエディターで開く
~$ sudo nano /etc/default/grub
# この行を GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1"
# ↑ に変更して、上書き保存してエディター終了
# grub のアップデート
~$ sudo update-grub
~$ sudo reboot

3.NVIDIA Driver導入
~$ sudo apt update;sudo apt upgrade
~$ sudo ubuntu-drivers devices

~$ sudo ubuntu-drivers autoinstall
~$ sudo reboot
# 確認
~$ nvidia-smi

4.isaacの導入
参考記事:Isaac SDK
注意:TensorFlowなど、CUDAを使用するモジュールを実行する予定がない限り、CUDAを手動でインストールすることは避ける
# isaac_sdk-2019_1-17919.tar.xzをダウンロード
~$ mkdir isaac
~$ cd isaac
# ここにisaac_sdk-2019_1-17919.tar.xzをコピーして展開
~/isaac$ tar Jxf isaac_sdk-2019_1-17919.tar.xz
~/isaac$ engine/build/scripts/install_dependencies.sh

5.ロボット(jetson nano)への依存関係
# jetson nanoを起動して、同じネットワークに接続
# engine/build/scripts/install_dependencies_jetson.sh -u <jetson_username>-h <jetson_ip>
# <jetson_username>: ai // Jetson nano のユーザー名
# <jetson_ip>: 192.168.0.119 // Jetson nano のIPアドレス
# 上記の設定の場合は
~/isaac$ engine/build/scripts/install_dependencies_jetson.sh -u ai -h 192.168.0.119
# 正常設定後に、jetson nano は自動的にリブートする

6.Bazelの導入
注意:Bazelは、Isaac SDKパッケージにあるファイル.bazelrcを必要とする
# bazelバージョン確認
~/isaac$ bazel version

7.NVIDIA GPUドライバの導入
~/isaac$ sudo add-apt-repository ppa:graphics-drivers/ppa
~/isaac$ sudo apt-get update
~/isaac$ ubuntu-drivers devices
# 430が推奨されたでの、nvidia-driver-430 を選択
~/isaac$ sudo apt-get install nvidia-driver-430
~/isaac$ sudo reboot
~/isaac$ nvidia-smi

8.TensorFlowの導入
Isaac SDKはTensorFlowバージョン1.13.1をサポート
今回は、導入しない。トレーニングするのには必要

9.C++開発環境
# Isaac SDK が正しく導入されたかを確認
~$ cd isaac/pakages/
~/isaac/packages/$ mkdir ping
~/isaac/packages/$ cd ./ping
# エディターで ping.app.jsonファイル を作成
~/.../ping$ nano ping.app.json
# 下記のコードを作成して、エディター終了
{
"name": "ping"
}
# エディターで  BUILDファイルを作成
~/.../ping$ nano BUILD
# 下記のコードを作成して、エディター終了
load("//engine/build:isaac.bzl", "isaac_app", "isaac_cc_module")

isaac_app(
name = "ping"
)
#  コードのビルド
~/.../ping$ bazel build ping
#  コードの実行
~/.../ping$ bazel run ping
# エラーが出現する場合は、Isaac SDK が正しく導入されていない

10.python開発環境
#  コードの実行
~/isaac$ bazel run //apps/tutorials/ping_python
# ./engine/build/deploy.sh -p //apps/tutorials/ping_python:ping_python-pkg -h <<target_ip> -d <device_type>
# <target_ip>: 192.168.0.119 // Jetson nano のIPアドレス
# <device_type>: jetpack42// Jetpackの型
# 上記の設定の場合は
~/isaac$ ./engine/build/deploy.sh -p //apps/tutorials/ping_python:ping_python-pkg -h 192.168.0.119 -d jetpack42
# エラーが出現する場合は、Isaac SDK が正しく導入されていない

11.デプロイ
~$ cd ~/isaac/engine/build
# Jetson nano のユーザー名が ai の場合は
# エディターで deploy.sh の内容変更

# この行 REMOTE_USER=nvidia
REMOTE_USER=ai 
# ↑ に変更して、上書き保存してエディター終了
~$ cd ~/isaac
# Jetson nano のIPアドレスが 192.168.0.119 の場合 
~/isaac$ /engine/build/deploy.sh -d jetpack42 -h 192.168.0.119 -p //apps/tutorials/ping:ping-pkg
# jetson nano へ ssh接続
~/isaac$ ssh ai@192.168.0.119
 # ubuntuデスクトップユーザー名が user の場合
jetson~/$ cd deploy/user/ping-pkg/
jetson~/deploy/user/ping-pkg$ ./apps/tutorials/ping/ping
# エラーが出現する場合は、Isaac SDK が正しく導入されていない

─以上─

NVIDIA Jetson Nano と Intel RealSense Depth Camera D435i

2019年06月27日 15時44分27秒 | Jetson Nano
◆NVIDIA Jetson Nano に Intel RealSense Depth Camera D435i を接続する手順

1.準備
●CPU: NVIDIA Jetson Nano開発キット
●SD: SDSQXCY-128G-GN6MA
●AC/DC: LTE36ES-S1-301(DC5V 6.2A)
●Camera: Intel RealSense Depth Camera D435i
●FAN: PEAD14028BH(Max:20000rpm)
●WiFi: intel 8265NGW

2.スワップ領域確保
参考記事:Jetson Nano - RealSense Depth Camera - JetsonHacks
~$ git clone https://github.com/jetsonhacksnano/installSwapfile
~$ cd installSwapfile
~$ ./installSwapfile.sh
~$ cd ..

3.ドライバインストール
~$ git clone https://github.com/jetsonhacksnano/installLibrealsense
~$ cd installLibrealsense
~$ ./installLibrealsense.sh -c

4.OSパッチ適用
~$ ./patchUbuntu.sh
~$ shutdown -P

5.アプリケーション

付属のUSBケーブルでJetson nanoと接続
Jetson nanoの電源再投入
~$ cd /usr/local/bin
~/.../bin$ realsense-viewer
Stereo Module と RGB Camera をON
InfoボタンをONして、シリアル番号を控える
ビューアを閉じる
~/.../bin$ rs-align-advanced
距離スケールを0.3mに変更すると、RaspberryPiカメラが見えてくる
距離スケールを0.7mに変更すると、紙コップが見えてくる

━以上━

NVIDIA Jetson Nano で jetson-inferenceの実行

2019年06月27日 06時57分51秒 | Jetson Nano
◆NVIDIA Jetson Nano で推論デモプログラムの実行


1.準備
●CPU: NVIDIA Jetson Nano開発キット
●SD: SDSQXCY-128G-GN6MA
●AC/DC: LTE36ES-S1-301(DC5V 6.2A)
●Camera: Raspberry Pi カメラモジュールV2
●FAN: PEAD14028BH(Max:20000rpm)
●WiFi: intel AC8265NGW

2.環境構築
参考記事:Getting started with the NVIDIA Jetson Nano - PyImageSearch
~$ sudo apt update
~$ sudo apt upgrade
を実行
テキストエディタnanoをインストール
~$ sudo apt -y install nano
タスクマネージャーhtopをインストール
~$ sudo apt -y install htop
★システムパッケージの整備
~$ sudo apt install git cmake
~$ sudo apt install libatlas-base-dev gfortran
~$ sudo apt install libhdf5-serial-dev hdf5-tools
~$ sudo apt install python3-dev
★swap領域の作成
~$ fallocate -l 4G swapfile
~$ chmod 600 swapfile
~$ mkswap swapfile
~$ sudo swapon swapfile
~$ swapon -s
★Python環境を整備
~$ wget https://bootstrap.pypa.io/get-pip.py
~$ sudo python3 get-pip.py
~$ rm get-pip.py
~$ sudo pip install virtualenv virtualenvwrapper
~/.bashrcにエディタで
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
を 最終行に追加

保存して、エディタ終了
~/.bashrcの内容をリロード
~$ source ~/.bashrc
★Python仮想環境を構築
~$ mkvirtualenv deep_learning -p python3
環境名は deep_learning とした
TensorFlow と Keras のインストール
★仮想環境へ
~$ workon deep_learning
NumPyのインストール
(deep_learning)~$ pip install numpy
Jetson Nano用 TensorFlow のインストール
(deep_learning)~$ pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3
(deep_learning)~$ pip install scipy
(deep_learning)~$ pip install keras

3.jetson-inference のビルド
参考記事:dusty-nv/jetson-inference
(deep_learning)~$ git clone https://github.com/dusty-nv/jetson-inference
(deep_learning)~$ cd jetson-inference
(deep_learning)~/jetson-inference$ git submodule update --init
(deep_learning)~/jetson-inference$ mkdir build
(deep_learning)~/jetson-inference$ cd build
(deep_learning)~/.../build$ cmake ../
(deep_learning)~/.../build$ make
(deep_learning)~/.../build$ sudo make install
(deep_learning)~/.../build$ deactivate
~/.../build$ cd
~$ reboot
※再起動したら、後始末
~$ rm swapfile

4.jetson-inference の実行
参考記事:dusty-nv/jetson-inference
※この後の動作は、熱暴走する可能性があるので必ずファンを回す事
~$ cd jetson-inference/build/aarch64/bin/
~/.../bin$ ./imagenet-console orange_0.jpg output_0.jpg
97.891% orange と認識した

~/.../bin$ ./imagenet-camera googlenet
Raspberry Pi カメラにコアラの写真を見せると、Koala と判断
~/.../bin$ ./detectnet-console dog_1.jpg output_1.jpg coco-dog
犬を検出する

━以上━

NVIDIA Jetson Nano サンプル実行

2019年06月17日 11時47分03秒 | Jetson Nano

◆NVIDIA Jetson NanoのJetPackサンプル実行

1.準備
●CPU: NVIDIA Jetson Nano開発キット
●SD: SDSQXCY-128G-GN6MA
●AC/DC: LTE36ES-S1-301(DC5V 6.2A)
●Camera: Raspberry Pi カメラモジュールV2
●FAN: PEAD14028BH(Max:20000rpm)
●WiFi: intel 8265NGW

2.TensorRT
参考記事:ここ
★C++でのサンプル実行
cp -r /usr/src/tensorrt/ ~/
cd ~/tensorrt/samples/
make -j4
cd ../bin
./sample_mnist

実行結果を表示
./sample_onnx_mnist
実行結果を表示

3.CUDA
参考記事:ここ
※参考記事はVersion10.1で記述してある
Jetson Nano の Jetpackは CUDA Version10.0であることに注意
cp -r /usr/local/cuda-10.0/samples/ ~/
cd ~/samples/
make -j4

ビルドが完了するまで約1時間
cd ./bin/aarch64/linux/release/
./nbody

グラフィックデモを表示

4.VisionWorks
参考記事:ここ
/usr/share/visionworks/sources/install-samples.sh
cd ~/VisionWorks-1.6-Samples
make
cd bin/aarch64/linux/release
./nvx_demo_feature_tracker

グラフィックデモを表示
参考記事:ここ
入力をRaspberry Pi カメラモジュールV2 へ切替える
./nvx_demo_feature_tracker --source="device:///nvcamera?index=0"

Raspberry Pi カメラに切替わり、リアルタイムに処理している様子

━以上━