Jetson Nano 2GBでVisionWorks


Jetson Nano 2GBが届いたのでVisionWorksを動かしてみた。
本当はYolov3でもサクッと動かそうと思ったけど、デフォルトで入っているOpenCVとYoloのバージョン問題？とメモリーが2GBのせいか屡々フリーズするので、色々試したけど結局うまく動かず、rm -rf darknetしてやった。

気を取り直してVisionWorksという自動運転向けのソフトを試す。
今乗っているエディックスとかいう超絶運転し難い車（前３席、後ろ３席の素敵な仕様）から次は自動運転カーに乗り換えかな！？

------

まずはJetson Nano、起動できるか確認のため電源を入れるも画面は全く出ません。
初期不良か？と思いきや、OSをMicroSDに入れた状態じゃないと画面すら出ないようです。普通のX86 Intel機に慣れていると勝手が違うのね。

OSを入れるところは割愛して、以下やった事のメモ。
二つの類似のアプリケーションが動かせますが、微妙にファイルパスとかが違うので忘れないように。

１、Visionworks Feature trackerで動画を流す＋センサーマークが出る
２、Visionworks Object trackerで物体トラッキング（追尾）


# 1,Visionworks Feature tracker

内容：運転している風景を流しながらセンサーの位置や方向が確認できる。
【ファイルパス】
動画データ置き場：/usr/share/visionworks/sources/data
設定ファイル：/usr/share/visionworks/sources/demos/feature_tracker/main_feature_tracker.cpp
実行ファイル：/usr/sare/visionworks/sources/bin/aarch64/linux/release/nvx_demo_feature_trucker


【インストール】
デフォルトでファイルが入っているのでmakeするだけ。
$ cd /usr/share/visionworks/sources/demos/feature_tracker/
$ sudo make
$ cd /usr/share/visionworks/sources/bin/aarch64/linux/release/
$ ./nvx_demo_feature_tracker

![default.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/3bcb0b99-9f70-17e5-8ae4-14b6ce5bf499.png)

ただ、これだと金門橋らしきアメリカの映像なので、地元で撮った映像を表示させたい。
今回はスマホで車から撮った映像を使用します。
方法としては、設定ファイルのデフォルトファイル名cars.mp4を変えてmakeし直すか、--sourceコマンドでパスを指定するか。

まずはファイルをコピー
$ cp drive.mov /usr/share/visionworks/sources/data/

そして実行（今回はコマンドオプションで）
$ ./nvx_demo_feature_tracker　--source=/usr/share/visionworks/sources/data/drive.mov

![Oiso.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/8fc50438-fd79-0b56-8c47-d1a4da19764f.png)

近所の夕方の風景。
ゴミ回収車にぶつからないように！

【注意】
ちなみにUSBカメラの画像を使いたくて下記を試したけどダメでした。
./nvx_demo_feature_tracker --source="device:///nvcamera?index=0"
Error:gstnvarguscamerasrc.cpp, execute:521 No cameras available

こちらはJetson TX1とかでは出来るものの、Nanoでは出来ないようです。
色々調べていると/lib/modules/4.9.140-tegraをRenameすると良いという情報が出てきましたが、やらない方が良いですよ。GUIが出なくなって焦ります。






# 2,Object Tracking
内容：
動画内の任意の場所をマウスで囲うとその対象物まで追尾して止まる。
前の車、看板、信号などをトラッキング対象にして自動運転に役立てるイメージ。

【ファイルパス】
インストールユーザーガイド：/usr/share/visionworks-tracking/sources/samples/object_tracker/user_guide_linux.md
動画データ置き場：~/VisionWorks-Tracking-0.88-Samples/data/tracking
設定ファイル：~/VisionWorks-Tracking-0.88-Samples/samples/object_tracker/main_object_tracker.cpp
実行ファイル：~/VisionWorks-Tracking-0.88-Samples/bin/aarch64/linux/releases/nvx_sample_object_tracker

【インストール】
$ /usr/share/visionworks-tracking/sources/install-samples.sh ~/
$ cd ~/VisionWorks-tracking-0.88-Samples
$ make -j4
$ export DISPLAY=:0
$ X -ac &
(Enterキーで$に戻る)
$ cd ~/VisionWorks-Tracking-0.88-Samples/bin/aarch64/linux/releases
$ ./nvx_sample_object_tracker

![default_tracking.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/0f270417-ebd5-d7d8-b876-f3510522d14a.png)

追跡したい車をマウスで囲むと進みます。
追い抜いたり見失うと止まります。
他操作方法は下記
Space: Pause/Resume
C: Clear objects
V: Toggle key points visualization
Esc: Close the demo

ただ、やっぱり外国の映像なので、地元で撮った映像を表示させたい。
こちらも設定ファイルを変更するかコマンドオプションを入れるかのどちらかになります。

まずはファイルをコピー
$ cp drive.mov ~/VisionWorks-Tracking-0.88-Samples/data/tracking/

こちらは、実行時の--sourceのパスはフルパスで入れておかないとうまく通らないようです。
$ ./nvx_sample_object_tracker --source=/home/ユーザー名/VisionWorks-Tracking-0.88-Samples/data/tracking/drive.mov

また、動画をデフォルトと違うパスに指定するとエラーが発生する場合があります。
can't open source URI /mnt/drive.mov
その場合、ファイル形式をaviにするとなぜか動きます。

![Screenshot from 2020-12-18 13-53-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478729/41b50157-1c7f-8071-91d8-0f17f68cda31.png)

ｖを押すと実際のトラッキングしているポイントも表示される。
囲う範囲によってすぐに止まるので、いくつかのオブジェクトを指定しながらの方が良いかもしれません。
実際は物体検知＋トラッキングと色々なセンサーを駆使して自動運転が出来上がっていくんですね。
こりゃ大変だ。

----


# 参考資料
Jetson Nanoに関する情報はこちらでお世話になっています。
Jetson Nano関係のTIPSまとめ
https://qiita.com/karaage0703/items/b14c249aa33112669ee4

動画で丁寧な解説がこちらにありますので、ご参照ください。
GW中Jetsonのことばかり語るカレンダー
https://gw-advent.9wick.com/calendars/2019/2/