『問題解決型』ハードウェアメーカー
ファナティック
-
- ファナティックの特長 ファナティックの特長
- /
- 製品&ソリューション 製品&ソリューション
- /
- 導入事例 導入事例
- /
- 最新ニュース 最新ニュース
- /
- ファナティックレポート ファナティックレポート
- /
- サポート サポート
- /
- 会社案内 会社案内
- /
- 採用情報 採用情報
2024.10.07 簡易マニュアル
昨今、エッジコンピューティングを利用される機会も多くなり、様々な場面で活用されています。
その中で、様々な周辺機器と連動することが必要となりますが、それらを利用するためのソフトウェアライブラリ、ツールがセットとなったものがROS / ROS2(Robot Operating System)となります。
本レポートでは、ROS2をNVIDIA® Jetson™上で動作させ、物体検知など、GPUの演算を利用する方法をご紹介いたします。
ROS2は活発に更新が行われており、ディストリビューションという形でリリースされます。
ディストリビューションごとに、EOL(End of Life)が設定されているため、利用する際には確認をお勧めいたします。
現時点では、最新の「Jazzy Jalisco」を利用されても問題ございませんが、Ubuntu24.04をサポートしていることもあり、2024年9月時点のJetson™ドライバパッケージL4T用ではサポートされておりません。
今回の検証では、最新のL4Tに対応している「Humble Hawksbill」にて検証を行っております。
ディストリビューション | リリース日 | EOL |
---|---|---|
Jazzy Jalisco | 2024年5月23日 | 2029年5月 |
Iron Irwini | 2023年5月23日 | 2024年11月 |
Humble Hawksbill | 2022年5月23日 | 2027年5月 |
Galactic Geochelone | 2021年5月23日 | 2022年10月9日 |
Foxy Fitzroy | 2020年6月5日 | 2023年6月20日 |
Eloquent Elusor | 2019年11月22日 | 2020年12月 |
Dashing Diademata | 2019年5月31日 | 2021年5月 |
Crystal Clemmys | 2018年12月14日 | 2019年12月 |
Bouncy Bolson | 2018年7月2日 | 2019年7月 |
Ardent Apalone | 2017年12月8日 | 2018年12月 |
今回は、ROS2上でYOLOによるリアルタイム物体検知を行います。
以下の構築手順は、Jetson™のイメージを展開した直後の状態を想定し、説明しております。
既に何れかのパッケージを動作させている場合、依存関係によってエラーとなる場合がございます。
その場合は、エラーメッセージから、依存関係にあるパッケージのアップグレード(ダウングレード)を判断いただくようにお願いいたします。
【利用環境】
・ハードウェア:FAA-PN1100N【Jetson Orin NX/Orin Nano搭載小型ファンレスモデル】
・L4T:R36.3.0
・ユーザー名:user
・カメラ:USB接続WEBカメラ
[概要図]
【事前準備】
・CUDA環境変数の設定 ※未実施の場合のみ
・既存パッケージの更新
・必要となるパッケージのインストール
・Pytorchのインストール
pipでパッケージ配布されているものをそのまま利用すると、CUDAデバイスが認識されません。
したがって、利用可能なバージョンをインストールします。
既にpytorchをセットアップされており、CUDAデバイスが正常に認識している場合は、インストール不要です。
CUDAデバイスの認識確認
Falseとなった場合は、以下の通り、インストールを実施してください。
Jetpack6 + CUDA12.2の場合を想定して説明いたします。
その他の環境におきましては、以下リンクを参考にインストールを実施してください。
https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
[torch]
[torchvision]
[torchaudio]
CUDAデバイスの認識を確認します。
Trueとなっていることが確認できます。
USBカメラの接続を確認しておきます。
カメラの型番と共に、「/dev/video0」など表示されると、正常に認識しています。
以下、公式のインストール手順を参考にセットアップを行います。
Ubuntu (deb packages) — ROS 2 Documentation: Humble documentation
ROS2と共に、dev-toolsとカメラパッケージをインストールします。
ROS2を利用する際には、以下のとおり、環境変数を適用します。
GitHubにて、Humble用yolov8が公開されておりますので、その手順に従い、セットアップします。
GitHub – mgonzs13/yolov8_ros: Ultralytics YOLOv8, YOLOv9, YOLOv10 for ROS 2
パッケージ取得、ビルドの準備を行います。
パッケージをビルドする際に、エラーとなる依存パッケージを更新しておきます。
Sphinxを4.5.0にすることによって、依存関係のワーニングが表示されますが、問題なく動作することを確認しています。
依存関係の確認とビルドを実施します。
上記にて、エラーが無く完了しましたら、ros2用yolov8が利用できる準備が完了しました。
3つのターミナルを利用して実行させます。
GUIを利用しますので、SSHなどを利用されている場合は、事前にXの転送設定を行っておいてください。
今回は、直接デスクトップ操作することを前提に説明してまいります。
ROS2は、ノードという単位で動作します。物体検知するまでの概要図は以下となります。
3つのノードを3つのターミナルを利用して、順次実行します。
[ターミナル①]
ROS2の環境変数を適用し、カメラノードを起動します。
[ターミナル②]
ROS2とYOLOの環境変数を適用し、ターミナル①の映像に対して、物体検知を行います。
[ターミナル③]
ROS2の環境変数を適用し、映像を表示させます。
rqtのウインドウが起動しますので、プルダウンより「/yolo/dbg_image」を選択し、リロードしてください。
以下のように、物体検知の映像がリアルタイムに表示されます。
モニタ(TV)、キーボード、マウス、椅子を検知していることが分かります。
また、物体検知の他に、姿勢、インスタンス・セグメンテーションが用意されています。
今回は、Jetson™におけるROS2の物体検知を紹介させていただきました。
その他周辺機器と組み合わせ利用することによって、より高度な機器操作が可能となり、自律型のロボットなどにも応用できるようになります。弊社エッジコンピューティングを利用いただき、業務の効率化、省力化に活かしていただければ幸いです。