Skip to main content

Desplegar Depth Anything V3 en Jetson AGX Orin

Introducción

Depth Anything V3 es un modelo de estimación de profundidad monocular de última generación que revoluciona la percepción 3D al generar mapas de profundidad de alta calidad a partir de imágenes RGB individuales. A diferencia de los métodos tradicionales de estimación de profundidad que requieren hardware especializado o múltiples entradas de cámara, Depth Anything V3 aprovecha técnicas avanzadas de aprendizaje profundo para predecir información de profundidad precisa usando solo imágenes 2D estándar. Esto lo hace particularmente valioso para aplicaciones de Edge AI donde las limitaciones de hardware y la eficiencia computacional son consideraciones críticas. Este wiki te guiará a través del despliegue de Depth Anything V3 en Jetson AGX Orin con integración ROS2 para aplicaciones de robótica en tiempo real.

Prerrequisitos

Características Técnicas Destacadas

  • Estimación de Profundidad Monocular de Alta Calidad: Depth Anything V3 genera mapas de profundidad precisos a partir de imágenes RGB individuales sin requerir sensores de profundidad especializados o configuraciones de cámara estéreo.

  • Optimizado para Despliegue Edge: El modelo está específicamente diseñado para inferencia eficiente en dispositivos edge como Jetson AGX Orin, con optimización TensorRT para máximo rendimiento.

  • Procesamiento en Tiempo Real: Capaz de procesar imágenes de alta resolución en tiempo real, haciéndolo adecuado para navegación autónoma, evitación de obstáculos y tareas de manipulación robótica.

  • Integración ROS2: Proporciona soporte nativo para ROS2 Humble con publicación de mapas de profundidad y nubes de puntos para integración perfecta en sistemas robóticos.

  • Soporte de Entrada Flexible: Funciona con varias fuentes de entrada incluyendo cámaras USB, tópicos de imagen ROS y flujos de video pregrabados.

Configuración del Entorno

**Paso 1.**Instalar Dependencias

sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
libopencv-dev \
python3-pip \
python3-colcon-common-extensions \
v4l-utils

Paso 2. Instalar Dependencias de Python

pip3 install numpy opencv-python

Paso 3. Configurar Variables de Entorno CUDA

# Add CUDA environment variables to .bashrc
echo '
# CUDA Environment
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export CUDACXX=$CUDA_HOME/bin/nvcc
' >> ~/.bashrc

# Reload shell configuration
source ~/.bashrc

# Verify CUDA installation
nvcc --version

Paso 4. Instalar Paquete de Cámara USB ROS2

# Install USB camera driver for ROS2
sudo apt install -y ros-humble-usb-cam

# Install additional ROS2 dependencies
sudo apt install -y ros-humble-cv-bridge
sudo apt install -y ros-humble-image-transport
sudo apt install -y ros-humble-image-geometry
sudo apt install -y ros-humble-cv-bridge ros-humble-image-transport ros-humble-rviz2

Paso 5. Configurar Entorno ROS2 de Depth Anything V3

# Clone the repository
git clone https://github.com/zibochen6/ros2-depth-anything-v3-trt.git

# Navigate to the project directory
cd ros2-depth-anything-v3-trt

Paso 6. Construir el Paquete ROS2

# Build the depth_anything_v3 package with Release configuration
colcon build --packages-select depth_anything_v3 --cmake-args -DCMAKE_BUILD_TYPE=Release

# Source the workspace
source install/setup.bash

Paso 7. Generar Motores TensorRT

note

Antes de generar el archivo de motor, necesitas descargar el modelo .onnx de Depth Anything V3 con anticipación y colocarlo en el directorio de ros2-depth-anything-v3-trt/onnx.

# Make the engine generation script executable
chmod +x generate_engines.sh

# Generate TensorRT engines from ONNX models
./generate_engines.sh onnx

Por favor ten paciencia mientras se genera el archivo .engine. Una vez que la conversión esté completa, se crearán dos archivos en el directorio onnx como se muestra a continuación.

Ejecutar Estimación de Profundidad

Cámara para Estimación de Profundidad

Paso 1. Conectar Cámara USB

Conecta tu cámara USB al dispositivo Jetson AGX Orin. Verifica que la cámara sea detectada:

# Check if USB camera is detected
ls /dev/video*

Salida Esperada:

/dev/video0  /dev/video1

Paso 2. Calibración de cámara

El paquete v4l2_camera actúa como un puente entre la API Linux Video4Linux2 (V4L2) y los tópicos ROS 2, publicando mensajes de imagen e información de cámara que pueden ser fácilmente utilizados en pipelines de calibración.

Instalar Paquete de Calibración de Cámara:

# Install Camera Calibration Package
sudo apt install ros-humble-camera-calibration

# v4l2_camera is the official ROS2 maintained node that can directly publish USB camera images
sudo apt install ros-${ROS_DISTRO}-v4l2-camera

lanzar nodo de cámara:

# Launch camera node
ros2 run v4l2_camera v4l2_camera_node \
--ros-args \
-p image_size:=[640,480] \
-p pixel_format:=YUYV

Los tópicos publicados por defecto son:

  • /image_raw - Imagen cruda de la cámara
  • /camera - Información de la cámara

Ejecutar calibración de cámara:

# In another terminal
ros2 run camera_calibration cameracalibrator \
--size 8x6 \
--square 0.025 \
--fisheye-recompute-extrinsicsts \
--fisheye-fix-skew \
--ros-args --remap image:=/image_raw --remap camera:=/v4l2_camera
note
  • --size 8x6 se refiere al número de esquinas internas (8×6 = 48 esquinas para una cuadrícula de 9×7)
  • --square 0.025 se refiere al tamaño del cuadrado en metros (25mm)
  • Mueve la cámara alrededor para capturar imágenes desde diferentes ángulos hasta que el botón CALIBRATE se ilumine

Después de una calibración exitosa, obtendrás parámetros de cámara en el terminal similares a:

Puedes consultar este wiki para calibración de cámara. Escribe los parámetros calibrados en el archivo camera_info_example.yaml

Paso 3. Lanzar Nodo de Cámara USB

Guarda los parámetros de calibración en el archivo camera_info_example.yaml para rectificar la distorsión ojo de pez de la cámara GMSL. Luego, ejecuta el siguiente comando para estimación de profundidad en tiempo real:

#Start the script for camera depth estimation
CAMERA_INFO_FILE=camera_info_example.yaml ENABLE_UNDISTORTION=1 ./run_camera_depth.sh

Video para Estimación de Profundidad

Paso 1. Preparar Archivo de Video

Prepara un archivo de video para estimación de profundidad.

Paso 2. Lanzar Nodo de Estimación de Profundidad de Video

#Start the script for video depth estimation
./run_video_depth.sh

Referencias

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para proporcionarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.

Loading Comments...