9.2 深度セグメンテーション

Docker 使用リファレンス: モジュール 3.7 Docker

Isaac ROS Depth Segmentation 公式リンク:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_depth_segmentation/index.html

概要

Isaac ROS Depth Segmentation は、加速された NVIDIA 深度分割パッケージを提供します。isaac ros bi3d パッケージは、最適化された Bi3D DNN モデルを使用して、二値化によりステレオ深度推定を提供し、深度分離に使用されます。深度パーティションは、障害物が隣接領域に位置するかどうかを判断し、ナビゲーション中に障害物との衝突を回避するために使用できます。

Bi3D は、左右のステレオ画像の時間同期入力から深度分離されたノード図に使用されます。Bi3D 画像は、適切な入力解像度に合わせて補正およびリサイズする必要があります。画像のアスペクト比を維持する必要があります。したがって、入力アスペクト比を維持するためにトリミングとリサイズが必要になる場合があります。DNN コード、DNN 推論、DNN デコードは Bi3D ノードの一部です。Bi3D DNN モデルは TensorRT サポートを使用して最適化されるように設計されているため、推論は TensorRT を使用して実行されます。

他のステレオビジュアル機能と比較して、深度セグメンテーションは障害物が隣接領域に位置するかどうか(連続的な深度ではなく)を予測し、同時に地面から離れた距離にある自由空間を予測します。これは他の機能では通常提供されません。さらに、Isaac ROS の他のステレオビジュアル機能とは異なり、深度セグメンテーションは NVIDIA DLA(Deep Learning Accelerator)上で実行され、GPU から独立しています。

クイックスタート

開発を簡素化するため、主に Isaac ROS Dev Docker イメージを使用し、その上でデモを実行します。デモではカメラデバイスをインストールする必要はなく、rosbag ファイルを再生することでカメラからのデータストリームをシミュレートします。

実際のハードウェアや接続されたカメラでワークフローを実行する場合は、対応するカメラのセットアップについて Isaac ROS 公式ドキュメントを参照してください。

ターミナルを開いてワークスペースに移動します

bash

cd ${ISAAC_ROS_WS}/src
Isaac ROS Dev Docker コンテナに入る
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

次の起動コマンドを実行します:

注意:公式の例を実行するには、ネットワーク環境が GitHub に通常通りアクセスできることを確認するため、科学的アクセスが必要な場合があります

bash

cd /workspaces/isaac_ros-dev/src

# サンプルリポジトリ(isaac_ros_examples.launch.py などのクイックスタート起動を提供)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_examples.git

# Bi3D 用リポジトリ(深度セグメンテーション / Bi3D)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_depth_segmentation.git

# 共通ユーティリティリポジトリ(run_dev、スクリプト、および共有依存関係/設定)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git
cd /workspaces/isaac_ros-dev

# rosdep が利用可能であることを確認(通常は開発コンテナにプリインストールされています)
sudo apt-get update
rosdep update

# ワークスペースの依存関係をインストール
rosdep install --from-paths src --ignore-src -r -y

# ビルド
colcon build --symlink-install


ros2 launch isaac_ros_examples isaac_ros_examples.launch.py \
launch_fragments:=bi3d \
interface_specs_file:=${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/rosbag_quickstart_interface_specs.json \
featnet_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/bi3d_proximity_segmentation/featnet.plan \
segnet_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/bi3d_proximity_segmentation/segnet.plan \
max_disparity_values:=10

2 つ目のターミナルを開いてコンテナに入ります。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

次のコマンドを実行します:

bash

ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/bi3dnode_rosbag

結果を表示

3 つ目のターミナルを開いてコンテナに入ります。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

次のコマンドを実行して深度パーティションを確認します

bash

 ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30

4 つ目のターミナルを開いてコンテナに入ります。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

次のコマンドを実行して画像を確認します

bash

ros2 run image_view image_view --ros-args -r image:=right/image_rect