Pular para o conteúdo principal

Implantar Depth Anything V3 no Jetson AGX Orin

Introdução

Depth Anything V3 é um modelo de estimação de profundidade monocular de última geração que revoluciona a percepção 3D ao gerar mapas de profundidade de alta qualidade a partir de imagens RGB únicas. Diferente dos métodos tradicionais de estimação de profundidade, que exigem hardware especializado ou múltiplas entradas de câmeras, o Depth Anything V3 aproveita técnicas avançadas de deep learning para prever informações de profundidade precisas usando apenas imagens 2D padrão. Isso o torna particularmente valioso para aplicações de Edge AI, em que restrições de hardware e eficiência computacional são considerações críticas. Este wiki irá guiá-lo na implantação do Depth Anything V3 no Jetson AGX Orin com integração ROS2 para aplicações robóticas em tempo real.

Pré-requisitos

Destaques Técnicos

  • Estimação de Profundidade Monocular de Alta Qualidade: Depth Anything V3 gera mapas de profundidade precisos a partir de imagens RGB únicas, sem exigir sensores de profundidade especializados ou configurações de câmeras estéreo.

  • Otimizado para Implantação em Borda: O modelo é projetado especificamente para inferência eficiente em dispositivos de borda como o Jetson AGX Orin, com otimização TensorRT para desempenho máximo.

  • Processamento em Tempo Real: Capaz de processar imagens de alta resolução em tempo real, tornando-o adequado para navegação autônoma, desvio de obstáculos e tarefas de manipulação robótica.

  • Integração com ROS2: Fornece suporte nativo ao ROS2 Humble com publicação de mapas de profundidade e nuvens de pontos, permitindo integração transparente em sistemas robóticos.

  • Suporte Flexível de Entrada: Funciona com várias fontes de entrada, incluindo câmeras USB, tópicos de imagem ROS e fluxos de vídeo pré-gravados.

Configuração do Ambiente

Passo 1. Instalar Dependências

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

Passo 2. Instalar Dependências Python

pip3 install numpy opencv-python

Passo 3. Configurar Variáveis de Ambiente do 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

Passo 4. Instalar Pacote ROS2 da Câmera USB

# 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

Passo 5. Configurar Ambiente ROS2 do 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

Passo 6. Compilar o Pacote 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

Passo 7. Gerar Engines TensorRT

nota

Antes de gerar o arquivo de engine, você precisa baixar antecipadamente o modelo .onnx do Depth Anything V3 e colocá-lo no diretório 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, seja paciente enquanto o arquivo .engine está sendo gerado. Quando a conversão for concluída, dois arquivos serão criados no diretório onnx, conforme mostrado a seguir.

Executando Estimação de Profundidade

Câmera para Estimação de Profundidade

Passo 1. Conectar Câmera USB

Conecte sua câmera USB ao dispositivo Jetson AGX Orin. Verifique se a câmera foi detectada:

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

Saída Esperada:

/dev/video0  /dev/video1

Passo 2. Calibração da câmera

O pacote v4l2_camera atua como uma ponte entre a API Linux Video4Linux2 (V4L2) e os tópicos ROS 2, publicando mensagens de imagem e informações da câmera que podem ser facilmente usadas em pipelines de calibração.

Instalar Pacote de Calibração de Câmera:

# 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

iniciar nó da câmera:

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

Os tópicos publicados por padrão são:

  • /image_raw - Imagem bruta da câmera
  • /camera - Informações da câmera

Execute a calibração da câmera:

# 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
nota
  • --size 8x6 refere-se ao número de cantos internos (8×6 = 48 cantos para uma grade 9×7)
  • --square 0.025 refere-se ao tamanho do quadrado em metros (25mm)
  • Mova a câmera para capturar imagens de diferentes ângulos até que o botão CALIBRATE acenda

Após a calibração bem-sucedida, você obterá parâmetros da câmera no terminal semelhantes a:

Você pode consultar este wiki para calibração da câmera. Escreva os parâmetros calibrados no arquivo camera_info_example.yaml

Passo 3. Iniciar Nó de Câmera USB

Salve os parâmetros de calibração no arquivo camera_info_example.yaml para corrigir a distorção olho de peixe da câmera GMSL. Em seguida, execute o seguinte comando para estimação de profundidade em tempo real:

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

Vídeo para Estimação de Profundidade

Passo 1. Preparar Arquivo de Vídeo

Prepare um arquivo de vídeo para estimação de profundidade.

Passo 2. Iniciar Nó de Estimação de Profundidade em Vídeo

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

Referências

Suporte Técnico & Discussão sobre Produtos

Obrigado por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes formas de suporte e garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...