9.3 Profundidad estéreo DNN

Referencia de uso de Docker: Módulo 3.7 Docker

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

Descripción general

El problema de la percepción de profundidad visual es común en muchas áreas de la robótica, como estimar la actitud del brazo en una operación de objeto, estimar la distancia de objetivos estáticos o móviles en la navegación robótica autónoma, rastrear objetivos en robots de entrega, etc. Isaac ROS DNN Stereo Depth está destinado a dos aplicaciones Isaac: Isaac Manipulator e Isaac Perceptor. En la aplicación Isaac Manipulator, ESS se despliega como un nodo plugin en el paquete de control Isaac ROS para proporcionar un sentido profundo del movimiento del brazo mecánico, planificación y control. En este escenario, el flujo estéreo multi-cámara del brazo mecánico industrial que realiza la tarea de escritorio se pasa al ESS para el flujo de profundidad correspondiente. Las corrientes de profundidad se utilizan para dividir la distancia relativa del brazo mecánico del objeto correspondiente en el escritorio; esto proporciona una señal para evitar colisiones y control de partículas finas. De manera similar, la aplicación Isaac Perceptor utiliza varios paquetes Isaac ROS, a saber: Isaac ROS Nova, Isaac ROS Visual Slam, Isaac ROS Stereo Deep (ESS), Isaac ROS Nvblox e Isaac ROS Image Pipeline.

Inicio rápido

Para simplificar el desarrollo, utilizamos principalmente las imágenes Docker de Isaac ROS Dev y realizamos demostraciones de impacto sobre ellas. La demostración no requiere la instalación de ningún dispositivo de cámara para simular flujos de datos desde la cámara mediante la reproducción del archivo rosbag.

Nota: Si desea instalar en su propio equipo o conectar la cámara para desarrollar otras funciones, consulte la red oficial de Isaac ROS para conectar la cámara con el modelo especificado de NVIDIA.

Abra una terminal y muévase al espacio de trabajo

bash

cd ${ISAAC_ROS_WS}/src
Entre en el contenedor Docker de Isaac ROS Dev
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

Ejecute el siguiente comando de inicio, en el cual Threshold:=0.0 se puede modificar a 0.4 al iniciar, con diferentes efectos.

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

Abra una segunda terminal y entre en el contenedor.

bash

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

Ejecute el siguiente comando:

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

Ver el resultado

Abra la tercera terminal y entre en el contenedor.

bash

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

Ejecute el siguiente comando:

bash

ros2 run isaac_ros_ess isaac_ros_ess_visualizer.py

Cuando se establece en 0.0, muestra los siguientes resultados:

No lo sé.

Cuando se establece en 0.4, los resultados se muestran a continuación: