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
cd ${ISAAC_ROS_WS}/src
Entrez dans le conteneur Docker Isaac ROS Dev
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shExé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
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:=10Ouvrez un deuxième terminal et entrez dans le conteneur.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shExécutez la commande suivante :
ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/bi3dnode_rosbagVoir le résultat
Ouvrez le troisième terminal et entrez dans le conteneur.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shExécutez la commande suivante : pour voir la partition de profondeur

ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30Ouvrez le quatrième terminal et entrez dans le conteneur.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shExécutez la commande suivante : voir les images

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