• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Computer Vision / Video Analytics

    ROS、ROS 2 の AI モジュールを NVIDIA Jetson プラットフォームで高速化

    Reading Time: 5 minutes

    NVIDIA Jetson 開発者キットは、その使いやすさとシステムサポート、そして AI ワークロードの高速化を包括的にサポートする、ロボット工學者のための信頼されたプラットフォームです。この記事では、 NVIDIA Jetson 開発者キットにおける ROS および ROS 2 を含むオープンソースのロボット フレームワークのサポートについてご紹介します。

    Diagram shows flow of work to get started with ROS and ROS 2 on the Jetson platform.
    図 1. NVIDIA Jetson プラットフォームで AI の高速化を実現した ROS と ROS 2

    この記事では、以下の參考資料を掲載しています。

    • ROS および ROS 2 の Docker コンテナー
    • AI を高速化する ROS と ROS 2 パッケージ
    • CUDA アクセラレーション點群ライブラリ
    • ロボット アプリケーションのための NVIDIA Isaac Sim
    • ロボティクス オープンソース: コミュニティ プロジェクト

    ROS および ROS 2 のDocker コンテナー

    機械學習ライブラリを備えた ROS および ROS 2 用のさまざまな Docker イメージを提供しています。お客様のご要望に応じて獨自の Docker イメージを構築するための Dockerfile も提供しています。

    ROS および ROS 2 の Docker イメージ

    ROS 2 Foxy Fitzroy、ROS 2 Eloquent Elusor、ROS Noetic を PyTorch、NVIDIA TensorRT、DeepStream SDK などの AI フレームワークでサポートしています。 scikit-learn、numpy、pillow などの機械學習 (ML) ライブラリも搭載しています。 コンテナーには、 TensorRT で高速化された ROS 2 の AI パッケージが搭載されています。

    ROS 2 Foxy、ROS 2 Eloquent、ROS Noetic with PyTorch、TensorRT の Docker イメージ:

    • DL ライブラリ: PyTorch v1.7.0、TorchVision v0.8.1、TensorRT 7.1.3
    • ML ライブラリ: scikit-learn、numpy、pillow
    • CUDA アクセラレーション ライブラリ: PyCUDA
    • 広く使われている開発者用リポジトリ: torch2trt、trt_pose
    • ROS 2 パッケージ:

    表 1 に、これらの Docker イメージの pull コマンドを記載します。

    Docker Images Pull command
    ROS 2 Foxy with PyTorch and TensorRT $docker pull nvidiajetson/l4t-ros2-foxy-pytorch:r32.5
    ROS 2 Foxy with DeepStream SDK $docker pull nvidiajetson/deepstream-ros2-foxy:5.0.1
    ROS 2 Eloquent with PyTorch and TensorRT $docker pull nvidiajetson/l4t-ros2-eloquent-pytorch:r32.5
    ROS 2 Eloquent with DeepStream SDK $docker pull nvidiajetson/deepstream-ros2-eloquent:5.0.1
    ROS Noetic with PyTorch and TensorRT $docker pull nvidiajetson/l4t-ros-noetic-pytorch:r32.5
    表 1. ROS 2 Docker イメージの Pull コマンド

    ROS および ROS 2 DockerFiles

    Jetson 上で異なるバージョンの ROS 2 を簡単に実行できるように、ROS 2 Eloquent、ROS 2 Foxy、 ROS Melodic、ROS Noetic 用のさまざまな Dockerfile とビルド スクリプトをリリースしました。これらのコンテナーは、ROS および ROS 2 を Jetson にインストールし、獨自の ROS ベースのアプリケーションを構築するための、自動化された信頼性の高い方法を提供します。

    Eloquent と Melodic は既に Ubuntu 18.04 用にビルド済みパッケージを提供しているため、Dockerfiles でこれらのバージョンの ROS をコンテナーにインストールします。一方で Foxy と Noetic は Ubuntu 20.04 用のビルド済みパッケージのみ提供されているため、コンテナー內でソースからビルドします。コンテナーを使えば、基になる OS ディストリビューションに関係なく、これらのバージョンの ROS と ROS 2 を使うことができます。

    コンテナーをビルドするには NVIDIA JetPack 4.4 以降が動作する Jetson デバイス上でリポジトリをクローンし ROS ビルド スクリプトを実行します。

    $ git clone https://github.com/dusty-nv/jetson-containers
    $ cd jetson-containers
    $ ./scripts/docker_build_ros.sh all?????? # build all: melodic, noetic, eloquent, foxy
    $ ./scripts/docker_build_ros.sh melodic?? # build only melodic
    $ ./scripts/docker_build_ros.sh noetic??? # build only noetic
    $ ./scripts/docker_build_ros.sh eloquent? # build only eloquent
    $ ./scripts/docker_build_ros.sh foxy????? # build only foxy 

    AI を高速化する ROS と ROS 2 パッケージ

    GitHub: NVIDIA-AI-IOT/ros2_torch_trt

    ROS や ROS 2 パッケージを使用して、さまざまな GPU アクセラレーテッド AI アプリケーションを実行するために必要な材料をまとめたバンドルパッケージを用意しました。物體検出、人物の姿勢推定、ジェスチャー分類、セマンティック セグメンテーション、 NVApril タグのアプリケーションがあります。

    このリポジトリでは、 Pytorch と TensorRT を使った分類と物體検出のための 4 つの異なるパッケージを提供しています。このリポジトリは、 ROS2 に AI を統合するための出発點となります。パッケージの主な特徴は以下の通りです。

    • 分類には、Resnet18、AlexNet、SqueezeNet、Resnet50 など、さまざまな ImageNet の事前學習モデルから選択できます。
    • 検出には、 COCO データセットで學習した MobileNetV1 ベースの SSD が現在サポートされています。
    • TensorRT パッケージは、 GPU 上で直接推論をおこなう PyTorch モデルと比較して、推論を実行する際の大幅な高速化を提供します。
    • 推論結果は vision_msgs の形で公開されます。
    • ノードを実行すると、推論結果を視覚化したウィンドウが表示されます。
    • Jetson ベースの Docker イメージと起動ファイルが用意されているので、簡単に利用することができます。

    詳しくは、「NVIDIA Jetson プラットフォームでの ROS2 と AI を使用したロボット アプリケーションの実裝」をご覧ください。

    深層學習ノードを高速化するための ROS と ROS 2 パッケージ

    GitHub: dusty-nv/ros_deep_learning

    このリポジトリには、 Jetson Nano、TX1、TX2、Xavier NX、NVIDIA AGX Xavier、TensorRT をサポートする ROS と ROS 2 用の深層學習推論ノードとカメラ/ビデオストリーミングノードが含まれています。

    このノードでは、 jetson-inference ライブラリと NVIDIA Hello AI World tutorial の畫像認識、物體検出、セマンティック セグメンテーションの DNN を使用しています。どちらも分類、検出、セグメンテーションのための事前學習済みネットワークがいくつか組み込まれており、ユーザーがカスタマイズした學習済みモデルを読み込むこともできます。

    カメラ/ビデオ ストリーミング ノードは、以下の I/O インターフェースに対応しています。

    • MIPI CSI カメラ
    • V4L2 カメラ
    • RTP / RTSP
    • 動畫と畫像
    • 畫像シーケンス
    • OpenGL ウィンドウ

    ROS Melodic および ROS2 Eloquent をサポートしています。最新版 NVIDIA JetPack のご利用を推奨します。

    ROS 2 人物姿勢推定パッケージ

    GitHub: NVIDIA-AI-IOT/ros2_trt_pose

    このリポジトリでは、 TensorRT を使って人間の姿勢を高速に推定します。ここでは広く採用されている NVIDIA-AI-IOT/trt_pose リポジトリを使用しています。人間のポーズを理解するため、事前學習済みモデルは、COCO データセットのカテゴリに基づいて、17 の體の部位を推論します。

    ros2_trt_pose パッケージの主な特徴は以下の通りです。

    • count of personperson_id といった pose_megs をパブリッシュします。 person_id ごとに、 17 の體の部位をパブリッシュします。
    • 可視化のための Rviz2 の使用を容易にするための launch ファイルを提供します。
      • Image メッセージ
      • ビジュアル マーカー: body_jointsbody_skeleton
    • 簡単にインストールして使用することができる Jetson ベースの Docker イメージが含まれています。

    詳しくは「NVIDIA Jetson プラットフォームでの ROS2 と AI を使用したロボットア プリケーションの実裝」をご覧ください。

    NVAprilTags を高速化する ROS 2 パッケージ

    GitHub: NVIDIA-AI-IOT/ros2-nvapriltags

    この ROS 2 ノードは、 NVIDIA GPU アクセラレーテッド AprilTags ライブラリを使用して、畫像中の AprilTags を検出し、ポーズ、 ID および追加メタデータをパブリッシュします。 ROS2 (Foxy) でテストされており、 x86_64 および aarch64 (Jetson ハードウェア)で動作します。これは ROS 2 node for CPU AprilTags detection をモデルにしています。

    このノードの基となっている NVIDIA Isaac GEM については、NVIDIA Isaac SDK 2020.2 の資料の April Tags を參照してください。さらに詳細は AprilTags Visual Fiducial System をご覧ください。

    手の姿勢推定とジェスチャー分類のための ROS 2 パッケージ

    GitHub: NVIDIA-AI-IOT/ros2_trt_pose_hand

    この ROS 2 パッケージは、最近リリースされた NVIDIA-AI-IOT/trt_pose_hand リポジトリ: Real-time hand pose estimation and gesture classification using TensorRT を利用しており、以下の主な機能を提供しています。

    • 21 のキーポイントを持つハンドポーズ メッセージ
    • ハンズ ポーズ検出畫像メッセージ
    • 6 つのクラスでジェスチャー分類するための std_msgs
      • fist (グー)
      • pan (人差し指)
      • stop (パー)
      • fine (ファイン(了解))
      • peace (チョキ)
      • no hand (ノーハンド)
    • ビジュアライゼーション マーカー
    • RViz2 の launch ファイル

    テキスト検出と単眼深度 (monocular depth) 推定のための ROS 2 パッケージ

    GitHub: NVIDIA-AI-IOT/ros2_torch2trt_examples

    このリポジトリでは、使いやすい PyTorch-to-TensorRT コンバータである torch2trt を、2 つの異なるアプリケーションで使用する方法について紹介しています。

    統合や開発を容易にするために、 この ROS 2 パッケージは以下のステップを実行します。

    1. image_tools cam2image image メッセージをサブスクライブする
    2. モデルを TensorRT に最適化する
    3. image メッセージをパブリッシュする

    Jetson stats 用の ROS と ROS 2 パッケージ

    GitHub: NVIDIA-AI-IOT/ros2_jetson_stats

    jetson-stats パッケージは、 NVIDIA Jetson 製品群 (NVIDIA AGX Xavier、Xavier NX、TX1、TX2、Nano) をモニタリング、およびコントロールするためのパッケージです。このリポジトリでは、 jetson_stats 用の ROS 2 パッケージを提供しており、デプロイ時にはさまざまなシステムの狀態をモニタリングできるようになっています。 Jetson で著名な Raffaello Bonghi, PhD が開発した ROS パッケージは、 rbonghi/ros_jetson_stats で公開されています。

    ros2_jetson_stats パッケージには、以下の ROS 2 診斷メッセージが含まれています。

    • GPU/CPU 使用率
      • EMC / SWAP / メモリ ステイタス (使用率 %)
      • SoC の電力と溫度

    ROS 2 のコマンドラインから以下をコントロールできるようになりました。

    • 冷卻ファン (モードと速度)
      • パワーモデル (nvpmodel)
      • Jetson_clocks

    DeepStream SDK 用の ROS 2 パッケージ

    DeepStream SDK は、マルチセンサー処理、ビデオと畫像認識を用いた AI ベースのソリューションを構築するための完全なストリーミング分析ツールキットを提供します。最先端の SSD、YOLO、FasterRCNN、MaskRCNN などの一般的な物體検出およびセグメンテーション モデルをサポートします。

    このリポジトリでは、 NVIDIA-AI-IOT/deepstream_python_apps レポジトリを基にした ROS 2 ノードを提供し、 物體検出と屬性分類の 2 つの推論タスクを実行します。

    • 物體検出: Vehicle、Person、RoadSign、TwoWheeler の 4 つのクラスの物體検出
    • 屬性分類: Color、Make、Type の 3種類の Vehicle の屬性を分類

    これらのトピックをサブスクライブし、 vision_msgs 形式で結果を表示する ROS 2 サブスクライバー ノードのサンプルも提供しています。また、各推論タスクは、検出された物體の周囲にバウンディング ボックスとラベルを配置した可視化ウィンドウを生成します。

    詳しくは「NVIDIA Jetson プラットフォームでの ROS2 と AI を使用したロボット アプリケーションの実裝」をご覧ください。

    ROS ベースの Chameleon プロジェクト: 深層學習によるセマンティック障害物の理解

    GitHub:

    この有望な作品は、ロボット工學と深層學習のパワーを共に利用する可能性が注目されています。セグメントネットワークである FCN-AlexNet を用いて、構造化されていない環境でのロボットに対する階段や穴などの危険を検知する、いくつかの実世界のアプリケーションを実行します。

    CUDA アクセラレーション點群ライブラリ

    GitHub: NVIDIA-AI-IOT/cuda-pcl

    Jetson のユーザーの多くは、自律型ソリューションでの位置特定と認識のための主要なセンサーとして LiDAR を選択しています。 CUDA-PCL 1.0 には、 3 つの CUDA アクセラレーション PCL ライブラリが含まれています。

    • CUDA-ICP
    • CUDA-Segmentation
    • CUDA-Filter

    詳しくは、 Accelerating Lidar for Robotics with NVIDIA CUDA-based PCL をご覧ください。

    ロボット アプリケーションのための NVIDIA Isaac Sim

    JetBot modeled in NVIDIA Isaac Sim.
    図 2. NVIDIA Isaac Sim の Waveshare JetBot

    詳しくは、Training Your NVIDIA JetBot to Avoid Collisions Using NVIDIA Isaac Sim をご覧ください。

    ロボットの製作

    ここでは、自律走行モデル スケールカーの製作などのオープンソースの開発者コミュニティと、ロボットアーム ソリューションに人間の姿勢推定を実裝するなどの企業の両方での、NVIDIA Jetson プラットフォームを活用したサンプル プロジェクトをご紹介します。これらすべては ROS、ROS 2 と NVIDIA Jetson によって実現可能です。

    ROS 2ベースの NanoSaur

    NanoSaur は Raffaello Bonghi 氏が設計/製作したオープンソース プロジェクトです。機上で動作することができる3D プリンターで作成可能なロボットで、 2 つ目ようなの有機 EL を持ち、シンプルなカメラを使用しています。サイズは 10x12x6cm で、重さはわずか 500g。簡単なパワーバンクを使って、自律的に機上を動き回ります。ロボット工學や AI 教育のための小さなロボットです。

    詳しくは、 About NanoSaur をご覧ください。

    Comau North America 社との ROS と ROS 2 統合

    本パッケージは、 e.DO のコア パッケージが存在する ROS 1 にメッセージを橋渡しすることで、 ROS 2 パッケージを使って e.DO をコントロールすることをご紹介します。

    人間の手の姿勢を推定するパッケージをテストするため、Stefan Profanter’s open source repository にあるComau e.DO の Gazebo シミュレーションを使用しました。このシミュレーションでは、 MoveIt Motion Planning ソフトウェアを利用し、 e.DO を制御することができます。 hand pose パッケージの ROS 2 ノードは、ハンドポーズの分類メッセージをパブリッシュします。

    MoveIt 1.0 は ROS 1 でのみ機能するため、ソフトウェアブリッジを使用して ROS 1 からメッセージをサブスクライブしました。検知?分類された手の姿勢に基づき、ロボットの姿勢データを含むメッセージがリスナーにパブリッシュされ、リスナーは Movelt に動作コマンドを送信します。その結果、 e.DO ロボットの姿勢が変化したことが Gazebo で確認できます。

    ROS ベースの Yahboom DOFBOT

    DOFBOT は、 AI 初心者やプログラムを趣味とする方、 Jetson Nano ファンにとって最高のパートナーです。Jetson Nano を基に設計されており、 6 つの HQ サーボ、 HD カメラ、多機能拡張ボードを搭載しています。ボディ全體は緑色の酸化アルミニウム合金でできており、美しく耐久性に優れたものです。ROS ロボットシステムを介して、シリアルバスサーボのモーションコントロールを簡素化しています。

    詳しくは、Yahboom DOFBOT AI Vision Robotic Arm with ROS Python programming for Jetson Nano 4GB B01 をご覧ください。

    JetBot 用 ROS パッケージ

    GitHub: dusty-nv/jetbot_ros

    JetBot は NVIDIA Jetson Nano を基にしたオープンソースのロボットです。

    • 手ごろな価格: Jetson Nano のアドオンとして 150 ドル以下の価格
    • AI 學習、教育向け: 基本的な動作から AI による衝突回避までのチュートリアルを収録
    • 楽しみ: ウェブ ブラウザーからインタラクティブにプログラム

    JetBot を構築して使用することで、全く新しい AI プロジェクトを作成するための実踐的な體験を得ることができます。はじめに JetBot documentation をお読みください。

    最後に

    ROS and ROS 2 support on NVIDIA Jetson で、常に最新の情報を確認してください。

    ?

    0

    Tags

    人人超碰97caoporen国产