9.2 Segmentation de profondeur

Référence d'utilisation Docker : Module 3.7 Docker

Lien officiel Isaac ROS Depth Segmentation : https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_depth_segmentation/index.html

Vue d'ensemble

Isaac ROS Depth Segmentation fournit un package de partitionnement profond NVIDIA accéléré. Le package isaac ros bi3d utilise un modèle Bi3D DNN optimisé pour fournir une estimation de profondeur stéréo par binarisation et est utilisé pour la séparation de profondeur. Les partitions de profondeur peuvent être utilisées pour déterminer si la barrière est située dans une zone adjacente et pour éviter les collisions avec la barrière pendant la navigation.

Bi3D est utilisé pour les diagrammes nodaux séparés en profondeur à partir de l'entrée synchronisée dans le temps des images stéréo droite-gauche. Les images Bi3D doivent être corrigées et redimensionnées pour s'adapter à la résolution d'entrée appropriée. Le rapport de largeur de l'image doit être maintenu ; par conséquent, il peut être nécessaire de rogner et redimensionner pour maintenir le rapport de largeur d'entrée. Le code DNN, le raisonnement DNN et le décodage DNN font partie du nœud Bi3D. Le raisonnement est exécuté à l'aide de TensorRT car le modèle Bi3D DNN est conçu pour être optimisé en utilisant le support TensorRT.

Comparée à d'autres fonctions visuelles stéréo, la segmentation de profondeur prédit si la barrière est située dans une zone adjacente (plutôt qu'en profondeur continue) et prédit en même temps l'espace libre à une certaine distance du sol, ce que les autres fonctions ne fournissent généralement pas. De plus, contrairement à d'autres fonctions visuelles stéréo dans Isaac ROS, la profondeur est séparée sur le NVIDIA DLA (Deep Learning Accelerator), qui est indépendant du GPU.

Démarrage rapide

Afin de simplifier le développement, nous utilisons principalement les images Docker Isaac ROS Dev et effectuons des démonstrations d'impact sur celles-ci. La démonstration ne nécessite l'installation d'aucun dispositif de caméra pour simuler les flux de données de la caméra en lisant le fichier rosbag.

Si vous prévoyez d'exécuter le flux de travail sur du matériel réel ou avec une caméra connectée, reportez-vous à la documentation officielle Isaac ROS pour les configurations de caméra prises en charge.

Ouvrez un terminal et déplacez-vous dans l'espace de travail

bash

cd ${ISAAC_ROS_WS}/src
Entrez dans le conteneur Docker Isaac ROS Dev
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

Exécutez la commande de lancement suivante :

Note : Récupérer un exemple officiel peut nécessiter un accès scientifique, en vous assurant que votre environnement réseau a un accès régulier à GitHub

bash

cd /workspaces/isaac_ros-dev/src

# Dépôt d'exemples (fournit des lancements rapides comme isaac_ros_examples.launch.py)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_examples.git

# Dépôt pour Bi3D (Segmentation de profondeur / Bi3D)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_depth_segmentation.git

# Dépôt d'utilitaires communs (run_dev, scripts et dépendances/configuration partagées)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git
cd /workspaces/isaac_ros-dev

# Assurez-vous que rosdep est disponible (il est généralement préinstallé dans le conteneur de développement)
sudo apt-get update
rosdep update

# Installer les dépendances de l'espace de travail
rosdep install --from-paths src --ignore-src -r -y

# Compiler
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

Ouvrez un deuxième terminal et entrez dans le conteneur.

bash

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

Exécutez la commande suivante :

bash

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

Voir le résultat

Ouvrez le troisième terminal et entrez dans le conteneur.

bash

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

Exécutez la commande suivante : pour voir la partition de profondeur

bash

 ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30

Ouvrez le quatrième terminal et entrez dans le conteneur.

bash

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

Exécutez la commande suivante : voir les images

bash

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