rdc-autonomous-mobile-robot-project / tsukuba2023_ToDo

0 stars 0 forks source link

jetson orin nxにおける ros2版 yolov5の環境構築 #25

Closed yuzukiimai closed 1 year ago

yuzukiimai commented 1 year ago

・box3に搭載されたjetson orin nxにおいてros2対応のyolov5の環境を整えた.

まずはpytorch公式の手順どおり, torchをインストールし, 公開されているパッケージをcloneして使用してみた. → 物体認識が行えることを確認したが, CPUで動作していたため処理が非常に重かった.

jtopの7番(info)から現在の環境を確認したところ, opencvでcudaが使用できない状態にあることがわかった.

jetpackをインストールした際にデフォルトで入っているopencvはcudaに対応していないため, cudaに対応したバージョンのopencvを入れ直した.(4.5.0)

その際にopencvとrosの依存関係からros1, ros2がともに消えてしまったため, 再度インストールして正常に動作していることを確認した.

その後, torch.cuda.is_availableでGPUが使用できるかを確認したが, 使用できていなかった.

調べたところ, jetsonにおいてはpytorchをインストールする手順がpytorch公式サイトとは違うことが判明した.

Nvidiaの公式サイトの手順に従い, jetpackのバージョン(5.1)に対応したバージョンのtorch, torchvisionをインストールした.

これによってGPUが使用できるようになったことを確認した.

しかし, 再度yolov5のlaunchを立ち上げたところGPUではなくCPUが使用されていた. それに加え, それまで表示されていたバウンディングボックスとクラス名が表示されなくなった. → torchのバージョンをダウングレード + コードの一部を修正することで解決した.

また, numpyのバージョンを変更するため消去したが, その際にもros1, ros2が消えてしまったため, ここでも再度インストールした.

それによってros2_wsのビルドが通らなくなったが, apt removeでros-foxy-〇〇が消えたせいだとわかっていたため, エラー文からパッケージを探してaptで入れ直すことでビルドは通るようになった. (だが, stderrが4つ出ている)

jetpackにおいてはCUDAやpytorch, torchvisionのバージョンがpytorch公式とは異なるため要注意 → 混乱するが, NVIDIA公式サイトが正しい

yuzukiimai commented 1 year ago

・上記により, jetson orin nxにおけるros2環境でGPUを使用して, GPU(家のデスクトップPC)で学習したカスタムモデル(白線用)をロードして白線認識が行えることを確認した.