9.3 Profondeur stéréo DNN

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

Lien Isaac ROS DNN Depth Network : https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_dnn_stereo_depth/index.html

Vue d'ensemble

Le problème de la perception de profondeur visuelle est courant dans de nombreux domaines de la robotique, comme l'estimation de l'attitude du bras dans une opération sur objet, l'estimation de la distance de cibles statiques ou mobiles dans la navigation robotique autonome, le suivi de cibles dans les robots de livraison, etc. Isaac ROS DNN Stereo Depth est destiné à deux applications Isaac : Isaac Manipulator et Isaac Perceptor. Dans l'application Isaac Manipulator, ESS est déployé comme nœud plugin dans le package de contrôle Isaac ROS pour fournir un sens profond de la planification et du contrôle du mouvement du bras mécanique. Dans ce scénario, le flux stéréo multi-caméras du bras mécanique industriel effectuant la tâche de bureau est transmis à l'ESS pour le flux de profondeur correspondant. Les courants de profondeur sont utilisés pour diviser la distance relative du bras mécanique par rapport à l'objet correspondant sur le bureau ; cela fournit un signal pour éviter les collisions et le contrôle de particules fines. De même, l'application Isaac Perceptor utilise plusieurs packages Isaac ROS, à savoir Isaac ROS Nova, Isaac ROS Visual Slam, Isaac ROS Stereo Deep (ESS), Isaac ROS Nvblox et Isaac ROS Image Pipeline.

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.

Note : Si vous souhaitez l'installer sur votre propre équipement ou connecter la caméra pour développer d'autres fonctionnalités, veuillez vous référer au site officiel d'Isaac ROS pour connecter la caméra avec le modèle spécifié de NVIDIA.

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écute la commande de lancement suivante, dans laquelle Threshold:=0.0 peut être modifiée à 0.4 au lancement, avec des effets différents.

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=ess_disparity \
engine_file_path:=${ISAAC_ROS_WS:?}/isaac_ros_assets/models/dnn_stereo_disparity/dnn_stereo_disparity_v4.1.0_onnx/ess.engine \
  threshold:=0.0

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 -l ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_ess/rosbags/ess_rosbag \
  --remap /left/camera_info:=/left/camera_info_rect /right/camera_info:=/right/camera_info_rect

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 :

bash

ros2 run isaac_ros_ess isaac_ros_ess_visualizer.py

Lorsqu'il est défini sur 0.0, affichez les résultats suivants :

Je ne sais pas.

Lorsqu'il est défini sur 0.4, les résultats sont indiqués ci-dessous :