9.2 Segmentación de profundidad
Referencia de uso de Docker: Módulo 3.7 Docker
Enlace oficial de Isaac ROS Depth Segmentation: https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_depth_segmentation/index.html
Descripción general

Isaac ROS Depth Segmentation proporciona un paquete acelerado de partición profunda de NVIDIA. El paquete isaac ros bi3d utiliza un modelo Bi3D DNN optimizado para proporcionar una estimación de profundidad estéreo mediante binarización y se utiliza para la separación de profundidad. Las particiones de profundidad se pueden utilizar para determinar si la barrera está ubicada en un área adyacente y para evitar colisiones con la barrera durante la navegación.
Bi3D se utiliza para diagramas nodales que están separados en profundidad a partir de la entrada sincronizada en el tiempo de imágenes estéreo derecha-izquierda. Las imágenes Bi3D necesitan ser corregidas y redimensionadas para ajustarse a la resolución de entrada apropiada. La proporción de ancho de la imagen necesita mantenerse; por lo tanto, puede ser necesario recortar y redimensionar para mantener la proporción de ancho de entrada. El código DNN, el razonamiento DNN y la decodificación DNN son parte del nodo Bi3D. El razonamiento se ejecuta utilizando TensorRT porque el modelo Bi3D DNN está diseñado para optimizarse usando soporte TensorRT.
En comparación con otras funciones visuales estéreo, la segmentación de profundidad predice si la barrera está ubicada en un área adyacente (en lugar de en profundidad continua) y al mismo tiempo predice el espacio libre a una distancia del suelo, lo cual otras funciones generalmente no proporcionan. Además, a diferencia de otras funciones visuales estéreo en Isaac ROS, la profundidad se separa en el NVIDIA DLA (Deep Learning Accelerator), que es independiente de la GPU.
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.
Si planea ejecutar el flujo de trabajo en hardware real o con una cámara conectada, consulte la documentación oficial de Isaac ROS para configuraciones de cámara compatibles.
Abra una terminal y muévase al espacio de trabajo
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.shEjecute el siguiente comando de inicio:
Nota: Tomar un ejemplo oficial puede requerir acceso científico, asegurando que su entorno de red tenga acceso regular a GitHub
cd /workspaces/isaac_ros-dev/src
# Repositorio de ejemplos (proporciona inicios rápidos como isaac_ros_examples.launch.py)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_examples.git
# Repositorio para Bi3D (Segmentación de profundidad / Bi3D)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_depth_segmentation.git
# Repositorio de utilidades comunes (run_dev, scripts y dependencias/configuración compartidas)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git
cd /workspaces/isaac_ros-dev
# Asegúrese de que rosdep esté disponible (normalmente está preinstalado en el contenedor de desarrollo)
sudo apt-get update
rosdep update
# Instale las dependencias del espacio de trabajo
rosdep install --from-paths src --ignore-src -r -y
# Compilar
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:=10Abra una segunda terminal y entre en el contenedor.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shEjecute el siguiente comando:
ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/bi3dnode_rosbagVer el resultado
Abra la tercera terminal y entre en el contenedor.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shEjecute el siguiente comando: para ver la partición de profundidad

ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30Abra la cuarta terminal y entre en el contenedor.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shEjecute el siguiente comando: para ver imágenes

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