基本的に、JetsonNano+周辺機材があれば完結できるように準備しています。
接続について、以下の通りアドバイスを頂きました。
1.ファン取り付け
かなり細かい作業になり、ピンセットと細いプラスドライバー(No.2 or 1)が必須です。(100均に売っているようです)
向きについては吹き付ける方向(ラベルをヒートシンク側)にするのが一般的と思われます。
2.ファンコネクタ
4ピンがあり、基板外側から黒・赤となるように挿入します。
3.電源ジャンパー
デフォルトはMicro USBからの電源供給になっています。
ACアダプタからの供給は図の部分にジャンパーを接続します。
以下が参考になります。ddコマンドでも書込み可能と思います。
Etcherを使ってSDカードにラズパイのOSイメージを書き込む方法
etcher
各種データやライブラリのダウンロード/インストールのために、JetsonNanoへネットワーク接続が必要です。
有線で一般回線への接続をお勧めします。
もし特別な事情があり一般回線以外に繋ぐ場合、秘情報をJetsonNanoに格納しないようにしてください。
インストール自動化スクリプトを作成しています。以下を参照下さい。
setup
インストール自動化スクリプト実行中に、scikit learnインストールエラー(error: library mach has Fortran sources but no Fortran compiler found)
以下と同件の可能性があります。
jetson nanoでscikit learnインストール時にエラー(error: library mach has Fortran sources but no Fortran compiler found)
この場合は、以下で解決するようです。
sudo apt install -y gfortran
GAZEBO_MODEL_PATH
が実際のパスに合っていない可能性があります。
パスはcat ~/.bashrc
で確認可能です。
cat ~/.bashrc
GAZEBO_MODEL_PATH=xxx # ここのパス
~/.bashrc
のパスを変えるか、シンボリックリンクを作成することで解決すると思います。
(例)/home/${USER_NAME}
へのシンボリックリンクを、/home/jetson
に作成する場合。
cd /home
USER_NAME=`whoami`
sudo ln -s ${USER_NAME} jetson
以下エラーログの場合、こちらと類似の可能性があります。
$ python -c "from torch2trt import TRTModule"
WARNING: TensorRT Python 2 support is deprecated, and will be dropped in a future version!
Traceback (most recent call last):
File "<string>", line 1, in <module>
...
File "/usr/lib/python2.7/copy.py", line 182, in deepcopy
rv = reductor(2)
TypeError: can't pickle method_descriptor objects
https://github.com/NVIDIA-AI-IOT/torch2trtリポジトリアップデートの影響を受けている可能性があります。
以下で、動作確認済みのバージョン(Wed Nov 4時点)に戻すと解消する可能性があります。
cd ~/torch2trt # torch2trtを、git cloneしたリポジトリへ移動
git checkout d1fa6f9f20c6c4c57a9486680ab38c45d0d94ec3 # 動作確認済みのバージョン(Wed Nov 4時点)に戻す
sudo python setup.py install # 再インストール
sudo python3 setup.py install # 再インストール
動作確認済みのバージョン(Wed Nov 4時点)に戻せているかは、以下コマンドで確認可能です。
$ cd ~/torch2trt # torch2trtを、git cloneしたリポジトリへ移動
$ git log -1 # 動作確認済みのバージョン(Wed Nov 4時点)に戻せているか確認、以下ログが出ればOK
commit d1fa6f9f20c6c4c57a9486680ab38c45d0d94ec3 (HEAD -> master, origin/master, origin/HEAD)
Author: John <[email protected]>
Date: Wed Nov 4 13:45:36 2020 -0500
Sandeepkumar skb groupnorm plugin (#437)
* added plugin for GroupNorm
Co-authored-by: sandeepkumar-skb <[email protected]>
以下の通り実行して下さい。
(例) ~/catkin_ws
以下を、再度catkin buildする場合
cd ~/catkin_ws
catkin clean -y
catkin build
source devel/setup.bash
(例) 既存のリポジトリを削除、別リポジトリを取得して再度catkin buildする場合
cd ~/catkin_ws/src
sudo rm -r ai_race # [注意]ai_raceリポジトリを削除します、ローカルの変更を失わないよう注意して下さい。
git clone http://github.com/seigot/ai_race # 自分のリポジトリを取得する場合は、ここのURLを変えて下さい。
cd ~/catkin_ws
catkin clean -y
catkin build
source devel/setup.bash
以下を実施して下さい。level1t,1a用に追加した機能を有効化するために必要です。
(コースアウト検知機能のためにcatkin再build、自動復帰機能のためにros-melodic-cob-srvs、が必要)
~/catkin_ws
以下を、再度catkin buildする場合
cd ~/catkin_ws
catkin clean -y
catkin build
source devel/setup.bash
加えて、以下パッケージのインストールも必要です。
sudo apt install -y ros-melodic-cob-srvs
機械学習の学習モデル生成パラメータ/ネットワーク検討周りがよいと思います。
学習モデル生成はepoch回数により時間が掛かるので、コマンド実行後はJetsonに後は任せるなど工夫下さい。
次点で、走行性能評価、学習データ取得だと思われますがこれらはもう少し時間が掛かると思います。
Jetracerを2台ほど用意しようと検討中
以下を参考に、JetsonNano上の2ピンにジャンパを挿してください。その後、ACアダプターを挿してください。
(ジャンパを挿さないとUSB電源共有設定となり、少しパワーが落ちます)
Jetson Nanoで組み込みAIを試す(2)
図8
一方右の2ピンだが、これは電源ソースの選択で、開放状態だとUSBポートから、
ジャンパピンを挿してショートするとACアダプターからの供給となる。 ということでジャンパピンを挿しておく
Jetpack 4.3 自体も環境構築可能とは思いますが、cut&tryが必要です。Jetpack 4.3 自体は、以下Archiveから取得可能です。
Jetpack 4.4 以降を推奨している理由は、公式にdockerコンテナや各種ライブラリが多くサポートされているためです。
何か特別な理由がない限りは、Jetpack 4.4以降をお勧めします。
Jetpack 4.3 Archive
https://developer.nvidia.com/jetpack-43-archive
-> JetPack 4.3 - Installing JetPack:
-> https://developer.nvidia.com/jetson-nano-sd-card-imager-3231
Jetpack 4.4.1 archiveは以下の通りです。
Jetpack 4.4.1 archive
https://developer.nvidia.com/jetpack-sdk-441-archive
以下のJetson開発者向けサイトの通り実施すればよさそうです。(MacOSでの実績あり)
Setting Up VNC
以下、tigerVNCや、デスクトップ共有を使った手順でも実績があるようです。よりよい手順があれば教えて頂けると助かります。
Jetson Nanoにリモートデスクトップ(VNC)環境を用意する
5Getting Started with the NVIDIA Jetson Nano Developer Kit
PC上のUbuntu等に機械学習の処理を任せることは可能と思いますが、環境構築が難しいかもしれません。
環境構築手順の確立のアドバイス/ボランティア募集しています。
pytorch等のライブラリバージョンを一致させることがポイントかと思います。
各種パッケージ取得、ダウンロード時にProxyサーバ経由する必要があると思います。(例. apt-get,git,curl,必要に応じてdocker...etc)
特別な理由がなければ、Proxy環境以外での環境構築、及び利用をお勧めします。
Proxy利用自体が各ネットワーク事情に依存すると思いますので、Proxy環境で使用する場合のサポートは困難です。
本リポジトリのバージョンアップを取り込む場合は、forkしたリポジトリにて以下を実行して下さい。
git checkout main # ローカルのmainブランチに移動
git remote add upstream https://github.com/seigot/ai_race # fork元のリポジトリをupstream という名前でリモートリポジトリに登録(名前はなんでもいい。登録済みならスキップ)
git fetch upstream # upstream から最新のコードをfetch
git merge upstream/main # upstream/main を ローカルのmaster にmerge
git push # 変更を反映
参考:github で fork したリポジトリで本家に追従する
実行ログに記載しました。
ただし、最新コードでは出力ログが変わることがあります。
以下の通りです。ご参考。
-
学習モデルの実行手順
https://github.com/seigot/ai_race_score/tree/main/check -
走行ログのrecord/replay
cd ~/catkin_ws/src/ai_race/scripts
./prepare_pos.sh -l 1t -g false -r true # -r true : 走行ログをrecordする。ログは"Position_Logs/_2021-01-22-22-48-38/pos.csv"等に保存される。
./prepare_pos.sh -l 1t -g false -z pos.csv # -z *.csv : 指定した走行ログをreplayする。軌跡は旗で表示される。
./prepare_pos.sh -l 1t -g false -r true -z pos.csv # 走行ログをrecordしつつ、指定した走行ログをreplayする。
推論は「学習モデルの実行手順」の通り実施
- 動画編集は以下(3倍速、領域を切り出す、先頭n秒削除、カットと結合)
コマンドラインからmp4を倍速に変換する