Jetson nano セットアップまとめ

 Jetson Nanoのセットアップまとめ



まずはMicro SDカードの準備と設定から:

32GBのmicroSDカードを準備する。使用端末がノートパソコンだったのでUSB3.0用のカードリーダーも準備しました。

実際に用いた機器;

エレコム カードリーダー USB3.0 9倍速転送 ケーブル収納タイプ ブラック MR3-K012BK


続いて、Jetson NanoのホームページGetting Started With Jetson NanoWrite Image to the microSD Cardの手順にそってmicroSDカードに画像を書き込みます。

英語のサイトなのでGoogle翻訳を通せば分かりやすいです。



Jetson Nano初回起動:

(注意) : 打ち込むコードは$赤字の斜体で記載します。

Jetson Nanoと電源、有線キーボード、有線マウス、HDMIケーブルを用意し、Setup and First Bootの手順で起動していきます。

起動が進んでいくと、System Configurationでシステム設定に入り、Your namecomputer's nameなどを決めていきますが、パスワード設定のところでは、簡単なパスワードに設定しておいた方がよいです。sudoのコマンドを打ち込んだときにパスワード入力を求められるので、長くややこしいパスワードでは面倒になります。

また、Log in automaticallyのボックスにチェックを入れておけば、パスワードの入力回数が減ると思います。

言語はEnglishのままでよいですが、キーボードに関してもデフォルトではUSになっており使い勝手が悪いのでJapaneseを追加しました。


続いて、JetsonのUbuntuアップデートを行います。

デスクトップの検索からupdateと打ち込むとソフトウェアのアップデートが見つかると思います。


それが済めば、ターミナルを開き、以下のコマンドを打ち込んで隠しファイルbash用のテキストエディタ―のNanoをインスト―ルします。一行目でパスワードを求められると思うのでSystem Configurationで設定したパスワードを入力しましょう。

$sudo apt-get update

$sudo apt-get upgrade

$sudo apt-get install nano

nanoについての取り扱いは、~11/12までの活動報告~11/15までの活動報告でも触れていますので参考にしてください。


ここからはインストールの作業が多くなりますが、処理速度を上げるためにJetson Nanoをフルパワーにします。実際のコードは以下になります。

$sudo nvpmodel -m 0

$sudo jetson_clocks


このコードを通したら、Swapファイルの設定を行います。

以下のコードを打ち込みます。

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

$cd installSwapfile

$./installSwapfile.sh

これでインストール用のメモリーを確保するSwapfileの設定が完了しました。



続いてOPENCVのダウンロードに移ります。
$git clone https://github.com/mdegans/nano_build_opencv

$cd nano_build_opencv

$nano build_opencv.sh 

これでbuild_opencv.shのファイルをnanoで編集可能になりました。

configure () {
    local CMAKEFLAGS="
        -D BUILD_EXAMPLES=OFF
というふうに続いていきますが、-D WITH_GSTREAMER=OFF
-D WITH_GSTREAMER=ONに書き換えます。

それから、実行します。
$./build_opencv.sh

6時間くらい待ち、完了したらバージョンが4.4.0であることを確認します。 
$python

$import cv2

$cv2__version__


続いてYOLOのインストールに移ります。
$git clone https://github.com/AlexeyAB/darknet

このdarknetディレクトリにPre-Trained ModelのYOLOv3,YOLOv3 Tinyを入れておきます。

ここから隠しファイルで編集に移ります。
$nano .bashrc
これで隠しファイルを開きます。

それから以下の文を末尾に加えます。
$export PATH=/usr/local/cuda/bin:${PATH}
$export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
                     
それが済めばMakefileを書き換えていきます。

$nano Makefile

同様に隠しファイルで編集していきます。
-gencode arch=compute_61,code=[sm_61,compute_61]の先頭に#を加えます。

#ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]の先頭#を取り除きます。

最後にNVCC=nvccNVCC=/usr/local/cuda/bin/nvccに書き換えます。

これが済めばmakeしてから実行します。

$make -j4

$./darknet

これでusage=darknetであれば成功です。

続いてlabelimgのインストールに入ります。

$git clone https://github.com/tzutalin/labelImg.git
$sudo apt install pyqt5-dev-tools
$sudo apt install python3-pip
$cd labelImg
$make qt5py3
$python3 labelImg.py

この後、labelimgにディレクトリファイルを作って1つのサーマル画像のサンプルを入れてラベルを付し保存します。

その後、darknetに先ほどのディレクトリファイルをコピーしてprosess.pyを作ります。パスはpass_data='data/ディレクトリファイル名/'に書き換えておきます。

加えて画像編集ソフトであるffmpegをインストールします。

$sudo apt-get install ffmpeg

CUDAのサンプルコードを実行可能にしておきます。

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0563?page=4

サンプルコードををユーザーが書き換え可能な領域にコピーしておきます。

$cp -a/usr/local/cuda-10.2/samples/ ~ /

続いてmakeしておきます。

$ cd ~/samples/1_Utilities/deviceQuery
$ make
$ ./deviceQuery


$ cd ~/samples/5_Simulations/oceanFFT/
$ make
$ ./oceanFFT


$ cd ~/samples/5_Simulations/smokeParticles/
$ make
$ ./smokeParticles

    
続いてgpuGraphのをインストールしGPUの稼働状況を可視化します。

For Python 3, Matplotlib may be installed as follows:

$sudo apt-get install python3-matplotlib
$git clone https://bithub.com/JetsonHacksNano/gpuGraph
$cd gpuGraph
$python3 gpuGraph.py

$wget      https://openframeworks.cc/ci_server/versions/nightly/of_v20201221_linuxarmv7l_nightly.tar.gz
$tar -zxvf of_v20201216_linuxarmv7l_nightly.tar.gz
$mv of_v20201216_linuxarmv7l_release of_10.1

20201221部分は現在の日付に変更します。
 
$sudo apt install cmake
$cd of_10.1/scripts/linux/ubuntu
$sudo ./install_dependencies.sh

ここから変更点を挙げていきます。

1つ目:
$cd of_10.1/libs/openFrameworksCompiled/project/makefileCommon
$nano config.shared.mk

で隠しファイルを開き、else ifeq ($(PLATFORM_ARCH),armv7l)else ifeq ($(PLATFORM_ARCH),aarch64)に変更して、Ctrl+X→shift+Y→Enter(保存完了)

2つ目:
$cd of_10.1/libs/openFrameworksCompiled/project/linuxarmv7l
$nano config.linuxarmv7l.default.mk

で隠しファイルを開き、41~48行目付近の

#PLATFORM_CFLAGS += -march=armv7
#PLATFORM_CFLAGS += -mtune=cortex-a8
#PLATFORM_CFLAGS += -mfpu=neon
#PLATFORM_CFLAGS += -mfloat-abi=hard
PLATFORM_CFLAGS += -fPIC
PLATFORM_CFLAGS += -ftree-vectorize
PLATFORM_CFLAGS += -Wno-psabi
PLATFORM_CFLAGS += -pipe

4行をコメント化し、69~71行目付近で

#PLATFORM_PKG_CONFIG_LIBRARIES += glesv1_cm
#PLATFORM_PKG_CONFIG_LIBRARIES += glesv2
#PLATFORM_PKG_CONFIG_LIBRARIES += egl

3行をコメント化します。


3つ目:
KISSTESS2のファイルをOFのものと入れ替えます。

$Download apothecary to recompile kiss and tess2:                                             
$git clone https://github.com/openframeworks/apothecary.git
$cd apothecary/apothecary/
$./apothecary -t linux download kiss
$./apothecary -t linux prepare kiss
$./apothecary -t linux build kiss
$./apothecary -t linux download tess2
$./apothecary -t linux prepare tess2
$./apothecary -t linux build tess2

4つ目:KISS
apothecary/apothecary/build/kiss/lib/linux/libkiss.a
をコピーして、of_10.1/libs/kiss/lib/linuxarmv7l/libkiss.aを消去してペーストします。


5つ目:TESS2
apothecary/apothecary/build/tess2_patched/build/libtess2.a
をコピーして、of_10.1/libs/tess2/lib/linuxarmv7l/libtess2.aを消去してからペーストします。


最後にスクリプトを実行します。

$cd of_10.1/scripts/linux
$./compileOF.sh -j4


今回のセットアップでJetson Nanoから一度離れて、Fusion360・Unity Reflect・Revitを用いて、3Dの空間にオブジェクトを配置する作業に移ります。



コメント

  1. OpenCVをバージョンアップの際の-D WITH_GSTREAMER=OFFのオンオフはjetpackとの相性があるようです。
    swapfileの設定はJetson huckを見てください。
    opencvのインストールは大変ですが、mdegansさんがスクリプトを用意してくれてるのでそれを使うと面りです。This script builds OpenCV from source on Tegra (Nano, NX, AGX, etc.).
    yoloのインストールはtakesanのページで(typoに気を付けて下さい。)それも勉強だったりします。他でもググれば出てきます。openflameworksはこの機会に触れてみると良いと思います。

    返信削除

コメントを投稿

このブログの人気の投稿

Unity ReflectとAutodesk Revitを用いた3DデモとARについて(追記)

~11/15までの活動報告

11/4の作業報告